Files
speckle-server/scratch/edge-debug-selection/Default/Cache/Cache_Data/f_00019e
T

182 lines
16 KiB
Plaintext

import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/integrations/acc/FileSelector.vue");import { default as __nuxt_component_0 } from "/_nuxt/components/integrations/acc/FolderNode.vue";
import { default as __nuxt_component_1 } from "/_nuxt/components/integrations/acc/FolderContents.vue";
/* Injection by vite-plugin-vue-inspector Start */
import { createElementVNode as __createElementVNode,createElementBlock as __createElementBlock,createBlock as __createBlock } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"
function _interopVNode(vnode) {
if (vnode && vnode.props && 'data-v-inspector' in vnode.props) {
const data = vnode.props['data-v-inspector']
delete vnode.props['data-v-inspector']
Object.defineProperty(vnode.props, '__v_inspector', { value: data, enumerable: false })
}
return vnode
}
function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) }
function _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) }
function _createBlock(...args) { return _interopVNode(__createBlock(...args)) }
/* Injection by vite-plugin-vue-inspector End */
import { defineComponent as _defineComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
import { ref, watch } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
import { useAcc } from "/_nuxt/lib/acc/composables/useAccFiles.ts";
import { useAccFolder } from "/_nuxt/lib/acc/composables/useAccFolderData.ts";
import { computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _sfc_main = /* @__PURE__ */ _defineComponent({
__name: "IntegrationsAccFileSelector",
props: {
hubId: { type: String, required: true },
projectId: { type: String, required: true },
tokens: { type: null, required: true }
},
emits: ["file-selected"],
setup(__props, { expose: __expose, emit: __emit }) {
__expose();
const props = __props;
const emit = __emit;
const { init, rootProjectFolderId } = useAcc();
const rootFolder = useAccFolder(props.projectId, rootProjectFolderId, props.tokens);
const rootFolderChildren = computed(
() => rootFolder.value?.children?.items?.filter(
(child) => child.name === "Project Files"
) ?? []
);
const selectedFolderId = ref();
const selectedFileId = ref();
const onFolderClick = async (folderId) => {
selectedFolderId.value = folderId;
selectedFileId.value = void 0;
};
const onFileSelected = (fileId, fileVersion) => {
selectedFileId.value = fileId;
emit("file-selected", fileId, fileVersion);
};
watch(
() => props.projectId,
async (newProjectId) => {
selectedFolderId.value = void 0;
selectedFileId.value = void 0;
if (newProjectId && props.tokens) {
await init(props.hubId, newProjectId, props.tokens.access_token);
}
},
{ immediate: true }
);
watch(rootFolderChildren, (newValue) => {
selectedFolderId.value = newValue.at(0)?.id;
});
const __returned__ = { props, emit, init, rootProjectFolderId, rootFolder, rootFolderChildren, selectedFolderId, selectedFileId, onFolderClick, onFileSelected };
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
return __returned__;
}
});
import { createCommentVNode as _createCommentVNode, openBlock as _openBlock, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _hoisted_1 = {
class: "flex flex-row h-full overflow-hidden border rounded-lg bg-foundation",
"data-v-inspector": "components/integrations/acc/FileSelector.vue:2:3"
};
const _hoisted_2 = {
class: "w-1/4 p-2 pt-0 h-80 overflow-y-auto border-r",
"data-v-inspector": "components/integrations/acc/FileSelector.vue:4:5"
};
const _hoisted_3 = {
key: 0,
"data-v-inspector": "components/integrations/acc/FileSelector.vue:10:7"
};
const _hoisted_4 = {
key: 1,
class: "space-y-1 pt-1",
"data-v-inspector": "components/integrations/acc/FileSelector.vue:11:7"
};
const _hoisted_5 = {
class: "w-3/4 h-80 p-2 pt-0 overflow-y-auto",
"data-v-inspector": "components/integrations/acc/FileSelector.vue:27:5"
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_IntegrationsAccFolderNode = __nuxt_component_0;
const _component_IntegrationsAccFolderContents = __nuxt_component_1;
return _openBlock(), _createElementBlock("div", _hoisted_1, [
_createCommentVNode(" Left Pane for tree "),
_createElementVNode("div", _hoisted_2, [
_cache[0] || (_cache[0] = _createElementVNode(
"div",
{
class: "z-10 sticky top-0 bg-foundation pb-1",
"data-v-inspector": "components/integrations/acc/FileSelector.vue:5:7"
},
[
_createElementVNode("h3", {
class: "font-semibold pt-2 text-lg text-center",
"data-v-inspector": "components/integrations/acc/FileSelector.vue:6:9"
}, "Folders"),
_createElementVNode("hr", { "data-v-inspector": "components/integrations/acc/FileSelector.vue:7:9" })
],
-1
/* CACHED */
)),
!$setup.rootFolder ? (_openBlock(), _createElementBlock("div", _hoisted_3)) : $setup.rootFolder && $setup.rootFolder.children?.items.length ? (_openBlock(), _createElementBlock("ul", _hoisted_4, [
(_openBlock(true), _createElementBlock(
_Fragment,
null,
_renderList($setup.rootFolderChildren, (folder) => {
return _openBlock(), _createBlock(_component_IntegrationsAccFolderNode, {
key: folder.id,
"project-id": $props.projectId,
"folder-id": folder.id,
tokens: $props.tokens,
"selected-folder-id": $setup.selectedFolderId,
onSelect: $setup.onFolderClick,
"data-v-inspector": "components/integrations/acc/FileSelector.vue:15:9"
}, null, 8, ["project-id", "folder-id", "tokens", "selected-folder-id"]);
}),
128
/* KEYED_FRAGMENT */
))
])) : _createCommentVNode("v-if", true)
]),
_createCommentVNode(" Right Pane for content "),
_createElementVNode("div", _hoisted_5, [
_cache[1] || (_cache[1] = _createElementVNode(
"div",
{
class: "z-10 sticky top-0 bg-foundation pb-1",
"data-v-inspector": "components/integrations/acc/FileSelector.vue:28:7"
},
[
_createElementVNode("h3", {
class: "pt-2 font-semibold text-lg text-center",
"data-v-inspector": "components/integrations/acc/FileSelector.vue:29:9"
}, "Files"),
_createElementVNode("hr", { "data-v-inspector": "components/integrations/acc/FileSelector.vue:30:9" })
],
-1
/* CACHED */
)),
!!$setup.selectedFolderId ? (_openBlock(), _createBlock(_component_IntegrationsAccFolderContents, {
key: `contents-${$setup.selectedFolderId}`,
"project-id": $props.projectId,
"folder-id": $setup.selectedFolderId,
tokens: $props.tokens,
"selected-file-id": $setup.selectedFileId,
onSelect: $setup.onFileSelected,
"data-v-inspector": "components/integrations/acc/FileSelector.vue:33:7"
}, null, 8, ["project-id", "folder-id", "tokens", "selected-file-id"])) : _createCommentVNode("v-if", true)
])
]);
}
_sfc_main.__hmrId = "85ba6d90";
typeof __VUE_HMR_RUNTIME__ !== "undefined" && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main);
import.meta.hot.on("file-changed", ({ file }) => {
__VUE_HMR_RUNTIME__.CHANGED_FILE = file;
});
import.meta.hot.accept((mod) => {
if (!mod) return;
const { default: updated, _rerender_only } = mod;
if (_rerender_only) {
__VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render);
} else {
__VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated);
}
});
import _export_sfc from "/_nuxt/@id/__x00__plugin-vue:export-helper";
export default /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "D:/speckle-server/packages/frontend-2/components/integrations/acc/FileSelector.vue"]]);
//# sourceMappingURL=data:application/json;base64,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QUFXO0FBQUEsUUFDWCxRQUFRO0FBQUEsUUFDUixvQkFBa0I7QUFBQSxRQUNsQixVQUFRO0FBQUEsUUFBZ0Isb0JBQWlCO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIkZpbGVTZWxlY3Rvci52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGgtZnVsbCBvdmVyZmxvdy1oaWRkZW4gYm9yZGVyIHJvdW5kZWQtbGcgYmctZm91bmRhdGlvblwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2ludGVncmF0aW9ucy9hY2MvRmlsZVNlbGVjdG9yLnZ1ZToyOjNcIj5cclxuICAgIDwhLS0gTGVmdCBQYW5lIGZvciB0cmVlIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInctMS80IHAtMiBwdC0wIGgtODAgb3ZlcmZsb3cteS1hdXRvIGJvcmRlci1yXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaW50ZWdyYXRpb25zL2FjYy9GaWxlU2VsZWN0b3IudnVlOjQ6NVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiei0xMCBzdGlja3kgdG9wLTAgYmctZm91bmRhdGlvbiBwYi0xXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaW50ZWdyYXRpb25zL2FjYy9GaWxlU2VsZWN0b3IudnVlOjU6N1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImZvbnQtc2VtaWJvbGQgcHQtMiB0ZXh0LWxnIHRleHQtY2VudGVyXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaW50ZWdyYXRpb25zL2FjYy9GaWxlU2VsZWN0b3IudnVlOjY6OVwiPkZvbGRlcnM8L2gzPlxyXG4gICAgICAgIDxociBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9pbnRlZ3JhdGlvbnMvYWNjL0ZpbGVTZWxlY3Rvci52dWU6Nzo5XCIgLz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IHYtaWY9XCIhcm9vdEZvbGRlclwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2ludGVncmF0aW9ucy9hY2MvRmlsZVNlbGVjdG9yLnZ1ZToxMDo3XCI+PC9kaXY+XHJcbiAgICAgIDx1bFxyXG4gICAgICAgIHYtZWxzZS1pZj1cInJvb3RGb2xkZXIgJiYgcm9vdEZvbGRlci5jaGlsZHJlbj8uaXRlbXMubGVuZ3RoXCJcclxuICAgICAgICBjbGFzcz1cInNwYWNlLXktMSBwdC0xXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaW50ZWdyYXRpb25zL2FjYy9GaWxlU2VsZWN0b3IudnVlOjExOjdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPEludGVncmF0aW9uc0FjY0ZvbGRlck5vZGVcclxuICAgICAgICAgIHYtZm9yPVwiZm9sZGVyIGluIHJvb3RGb2xkZXJDaGlsZHJlblwiXHJcbiAgICAgICAgICA6a2V5PVwiZm9sZGVyLmlkXCJcclxuICAgICAgICAgIDpwcm9qZWN0LWlkPVwicHJvamVjdElkXCJcclxuICAgICAgICAgIDpmb2xkZXItaWQ9XCJmb2xkZXIuaWRcIlxyXG4gICAgICAgICAgOnRva2Vucz1cInRva2Vuc1wiXHJcbiAgICAgICAgICA6c2VsZWN0ZWQtZm9sZGVyLWlkPVwic2VsZWN0ZWRGb2xkZXJJZFwiXHJcbiAgICAgICAgICBAc2VsZWN0PVwib25Gb2xkZXJDbGlja1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2ludGVncmF0aW9ucy9hY2MvRmlsZVNlbGVjdG9yLnZ1ZToxNTo5XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIFJpZ2h0IFBhbmUgZm9yIGNvbnRlbnQgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwidy0zLzQgaC04MCBwLTIgcHQtMCBvdmVyZmxvdy15LWF1dG9cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9pbnRlZ3JhdGlvbnMvYWNjL0ZpbGVTZWxlY3Rvci52dWU6Mjc6NVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiei0xMCBzdGlja3kgdG9wLTAgYmctZm91bmRhdGlvbiBwYi0xXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaW50ZWdyYXRpb25zL2FjYy9GaWxlU2VsZWN0b3IudnVlOjI4OjdcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJwdC0yIGZvbnQtc2VtaWJvbGQgdGV4dC1sZyB0ZXh0LWNlbnRlclwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2ludGVncmF0aW9ucy9hY2MvRmlsZVNlbGVjdG9yLnZ1ZToyOTo5XCI+RmlsZXM8L2gzPlxyXG4gICAgICAgIDxociBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9pbnRlZ3JhdGlvbnMvYWNjL0ZpbGVTZWxlY3Rvci52dWU6MzA6OVwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPEludGVncmF0aW9uc0FjY0ZvbGRlckNvbnRlbnRzXHJcbiAgICAgICAgdi1pZj1cIiEhc2VsZWN0ZWRGb2xkZXJJZFwiXHJcbiAgICAgICAgOmtleT1cImBjb250ZW50cy0ke3NlbGVjdGVkRm9sZGVySWR9YFwiXHJcbiAgICAgICAgOnByb2plY3QtaWQ9XCJwcm9qZWN0SWRcIlxyXG4gICAgICAgIDpmb2xkZXItaWQ9XCJzZWxlY3RlZEZvbGRlcklkXCJcclxuICAgICAgICA6dG9rZW5zPVwidG9rZW5zXCJcclxuICAgICAgICA6c2VsZWN0ZWQtZmlsZS1pZD1cInNlbGVjdGVkRmlsZUlkXCJcclxuICAgICAgICBAc2VsZWN0PVwib25GaWxlU2VsZWN0ZWRcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9pbnRlZ3JhdGlvbnMvYWNjL0ZpbGVTZWxlY3Rvci52dWU6MzM6N1wiXHJcbiAgICAgIC8+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB0eXBlIHsgQWNjVG9rZW5zIH0gZnJvbSAnQHNwZWNrbGUvc2hhcmVkL2FjYydcclxuaW1wb3J0IHsgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSdcclxuaW1wb3J0IHsgdXNlQWNjLCB0eXBlIEFjY0l0ZW1WZXJzaW9uIH0gZnJvbSAnfi9saWIvYWNjL2NvbXBvc2FibGVzL3VzZUFjY0ZpbGVzJ1xyXG5pbXBvcnQgeyB1c2VBY2NGb2xkZXIgfSBmcm9tICd+L2xpYi9hY2MvY29tcG9zYWJsZXMvdXNlQWNjRm9sZGVyRGF0YSdcclxuXHJcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8e1xyXG4gIGh1YklkOiBzdHJpbmdcclxuICBwcm9qZWN0SWQ6IHN0cmluZ1xyXG4gIHRva2VuczogQWNjVG9rZW5zIHwgdW5kZWZpbmVkXHJcbn0+KClcclxuXHJcbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XHJcbiAgJ2ZpbGUtc2VsZWN0ZWQnOiBbZmlsZUlkOiBzdHJpbmcsIGZpbGVWZXJzaW9uOiBBY2NJdGVtVmVyc2lvbl1cclxufT4oKVxyXG5cclxuY29uc3QgeyBpbml0LCByb290UHJvamVjdEZvbGRlcklkIH0gPSB1c2VBY2MoKVxyXG5cclxuY29uc3Qgcm9vdEZvbGRlciA9IHVzZUFjY0ZvbGRlcihwcm9wcy5wcm9qZWN0SWQsIHJvb3RQcm9qZWN0Rm9sZGVySWQsIHByb3BzLnRva2VucylcclxuY29uc3Qgcm9vdEZvbGRlckNoaWxkcmVuID0gY29tcHV0ZWQoXHJcbiAgKCkgPT5cclxuICAgIHJvb3RGb2xkZXIudmFsdWU/LmNoaWxkcmVuPy5pdGVtcz8uZmlsdGVyKFxyXG4gICAgICAoY2hpbGQpID0+IGNoaWxkLm5hbWUgPT09ICdQcm9qZWN0IEZpbGVzJ1xyXG4gICAgKSA/PyBbXVxyXG4pXHJcblxyXG5jb25zdCBzZWxlY3RlZEZvbGRlcklkID0gcmVmPHN0cmluZyB8IHVuZGVmaW5lZD4oKVxyXG5jb25zdCBzZWxlY3RlZEZpbGVJZCA9IHJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KClcclxuXHJcbmNvbnN0IG9uRm9sZGVyQ2xpY2sgPSBhc3luYyAoZm9sZGVySWQ6IHN0cmluZykgPT4ge1xyXG4gIHNlbGVjdGVkRm9sZGVySWQudmFsdWUgPSBmb2xkZXJJZFxyXG4gIHNlbGVjdGVkRmlsZUlkLnZhbHVlID0gdW5kZWZpbmVkXHJcbn1cclxuXHJcbmNvbnN0IG9uRmlsZVNlbGVjdGVkID0gKGZpbGVJZDogc3RyaW5nLCBmaWxlVmVyc2lvbjogQWNjSXRlbVZlcnNpb24pID0+IHtcclxuICBzZWxlY3RlZEZpbGVJZC52YWx1ZSA9IGZpbGVJZFxyXG4gIGVtaXQoJ2ZpbGUtc2VsZWN0ZWQnLCBmaWxlSWQsIGZpbGVWZXJzaW9uKVxyXG59XHJcblxyXG4vLyBXYXRjaCBmb3IgY2hhbmdlcyBpbiBwcm9qZWN0SWQgdG8gcmUtaW5pdGlhbGl6ZSB0aGUgZm9sZGVyIHRyZWVcclxud2F0Y2goXHJcbiAgKCkgPT4gcHJvcHMucHJvamVjdElkLFxyXG4gIGFzeW5jIChuZXdQcm9qZWN0SWQpID0+IHtcclxuICAgIHNlbGVjdGVkRm9sZGVySWQudmFsdWUgPSB1bmRlZmluZWRcclxuICAgIHNlbGVjdGVkRmlsZUlkLnZhbHVlID0gdW5kZWZpbmVkXHJcbiAgICBpZiAobmV3UHJvamVjdElkICYmIHByb3BzLnRva2Vucykge1xyXG4gICAgICBhd2FpdCBpbml0KHByb3BzLmh1YklkLCBuZXdQcm9qZWN0SWQsIHByb3BzLnRva2Vucy5hY2Nlc3NfdG9rZW4pXHJcbiAgICB9XHJcbiAgfSxcclxuICB7IGltbWVkaWF0ZTogdHJ1ZSB9XHJcbilcclxuXHJcbndhdGNoKHJvb3RGb2xkZXJDaGlsZHJlbiwgKG5ld1ZhbHVlKSA9PiB7XHJcbiAgc2VsZWN0ZWRGb2xkZXJJZC52YWx1ZSA9IG5ld1ZhbHVlLmF0KDApPy5pZFxyXG59KVxyXG48L3NjcmlwdD5cclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL2NvbXBvbmVudHMvaW50ZWdyYXRpb25zL2FjYy9GaWxlU2VsZWN0b3IudnVlIn0=