import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/models/versions/Versions.vue");import { FormButton as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; import { default as __nuxt_component_1 } from "/_nuxt/components/viewer/models/versions/Card.vue"; import { default as __nuxt_component_2 } from "/_nuxt/components/viewer/resources/ObjectCard.vue"; import { default as __nuxt_component_3 } from "/_nuxt/components/viewer/layout/SidePanel.vue"; /* Injection by vite-plugin-vue-inspector Start */ import { createVNode as __createVNode,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 _createVNode(...args) { return _interopVNode(__createVNode(...args)) } 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 { useInjectedViewerLoadedResources, useInjectedViewerRequestedResources, useInjectedViewerState } from "/_nuxt/lib/viewer/composables/setup.ts"; import { SpeckleViewer } from "/_nuxt/@fs/D:/speckle-server/packages/shared/dist/esm/index.js"; import { useMixpanel } from "/_nuxt/lib/core/composables/mp.ts"; import { ViewerEvent } from "/_nuxt/@fs/D:/speckle-server/packages/viewer/dist/index.js"; import { useViewerEventListener } from "/_nuxt/lib/viewer/composables/viewer.ts"; import { ChevronLeft } from "/_nuxt/node_modules/.cache/vite/client/deps/lucide-vue-next.js?v=e4f18c29"; import { useDiffUtilities } from "/_nuxt/lib/viewer/composables/ui.ts"; import { computed, ref } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _sfc_main = /* @__PURE__ */ _defineComponent({ __name: "ViewerModelsVersions", props: { expandedModelId: { type: [String, null], required: false } }, emits: ["close"], setup(__props, { expose: __expose, emit: __emit }) { __expose(); const props = __props; const emit = __emit; const { resourceItems, modelsAndVersionIds, objects } = useInjectedViewerLoadedResources(); const { items } = useInjectedViewerRequestedResources(); const { ui: { diff: diffState } } = useInjectedViewerState(); const { endDiff } = useDiffUtilities(); const mp = useMixpanel(); const hasDiffActive = computed(() => { return !!(diffState.oldVersion.value && diffState.newVersion.value); }); const handleClose = async () => { if (hasDiffActive.value) { await endDiff(); } emit("close"); }; const removeModel = async (modelId) => { const builder = SpeckleViewer.ViewerRoute.resourceBuilder(); for (const loadedResource of resourceItems.value) { if (loadedResource.modelId) { if (loadedResource.modelId !== modelId) { builder.addModel(loadedResource.modelId, loadedResource.versionId || void 0); } } else { if (loadedResource.objectId !== modelId) builder.addObject(loadedResource.objectId); } } mp.track("Viewer Action", { type: "action", name: "federation", action: "remove" }); await items.update(builder.toResources()); }; const refhack = ref(1); useViewerEventListener(ViewerEvent.LoadComplete, () => { refhack.value++; }); const __returned__ = { props, emit, resourceItems, modelsAndVersionIds, objects, items, diffState, endDiff, mp, hasDiffActive, handleClose, removeModel, refhack, get ChevronLeft() { return ChevronLeft; } }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _hoisted_1 = { class: "flex items-center gap-x-1", "data-v-inspector": "components/viewer/models/versions/Versions.vue:4:7" }; const _hoisted_2 = { class: "flex flex-col h-full", "data-v-inspector": "components/viewer/models/versions/Versions.vue:19:5" }; const _hoisted_3 = { class: "flex-1 overflow-y-auto simple-scrollbar", "data-v-inspector": "components/viewer/models/versions/Versions.vue:22:9" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_FormButton = __nuxt_component_0; const _component_ViewerModelsVersionsCard = __nuxt_component_1; const _component_ViewerResourcesObjectCard = __nuxt_component_2; const _component_ViewerLayoutSidePanel = __nuxt_component_3; return _openBlock(), _createBlock(_component_ViewerLayoutSidePanel, { "data-v-inspector": "components/viewer/models/versions/Versions.vue:2:3" }, { title: _withCtx(() => [ _createElementVNode("div", _hoisted_1, [ _createVNode(_component_FormButton, { "icon-left": $setup.ChevronLeft, color: "subtle", class: "-ml-3", "hide-text": "", size: "sm", onClick: $setup.handleClose, "data-v-inspector": "components/viewer/models/versions/Versions.vue:5:9" }, { default: _withCtx(() => [..._cache[1] || (_cache[1] = [ _createTextVNode( " Exit versions ", -1 /* CACHED */ ) ])]), _: 1 /* STABLE */ }, 8, ["icon-left"]), _cache[2] || (_cache[2] = _createTextVNode( " Versions ", -1 /* CACHED */ )) ]) ]), default: _withCtx(() => [ _createElementVNode("div", _hoisted_2, [ $setup.resourceItems.length ? (_openBlock(), _createElementBlock( _Fragment, { key: 0 }, [ _createCommentVNode(" Versions with single scroll container for sticky headers "), _createElementVNode("div", _hoisted_3, [ (_openBlock(true), _createElementBlock( _Fragment, null, _renderList($setup.modelsAndVersionIds, ({ model, versionId }, index) => { return _openBlock(), _createElementBlock("div", { key: model.id, "data-v-inspector": "components/viewer/models/versions/Versions.vue:23:11" }, [ _createVNode(_component_ViewerModelsVersionsCard, { model, "version-id": versionId, last: index === $setup.modelsAndVersionIds.length - 1, "initially-expanded": $setup.props.expandedModelId === model.id || $setup.modelsAndVersionIds.length === 1, "data-v-inspector": "components/viewer/models/versions/Versions.vue:27:13" }, null, 8, ["model", "version-id", "last", "initially-expanded"]) ]); }), 128 /* KEYED_FRAGMENT */ )), $setup.objects.length !== 0 ? (_openBlock(true), _createElementBlock( _Fragment, { key: 0 }, _renderList($setup.objects, (object) => { return _openBlock(), _createBlock(_component_ViewerResourcesObjectCard, { key: object.objectId, object, "show-remove": false, onRemove: _cache[0] || (_cache[0] = (id) => $setup.removeModel(id)), "data-v-inspector": "components/viewer/models/versions/Versions.vue:37:13" }, null, 8, ["object"]); }), 128 /* KEYED_FRAGMENT */ )) : _createCommentVNode("v-if", true) ]) ], 64 /* STABLE_FRAGMENT */ )) : _createCommentVNode("v-if", true) ]) ]), _: 1 /* STABLE */ }); } _sfc_main.__hmrId = "619e3d30"; 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/viewer/models/versions/Versions.vue"]]); //# sourceMappingURL=data:application/json;base64,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QUFNO0FBQUEsc0JBQzFDLHNCQUFzQyxhQUFNLG9CQUFvQixNQUFNLE1BQU0sMkJBQW9CLFdBQU07QUFBQSxzQkFFckcsb0JBQWlCO0FBQUE7Ozs7OztjQUdQLGVBQVEsV0FBTSx1QkFDNUI7QUFBQSxnQkFNRTtBQUFBO0FBQUEsNEJBTGlCLGdCQUFPLENBQWpCLFdBQU07dUNBRGYsYUFNRTtBQUFBLG9CQUpDLEtBQUssT0FBTztBQUFBLG9CQUNaO0FBQUEsb0JBQ0EsZUFBYTtBQUFBLG9CQUNiLFVBQU0sMkJBQUcsT0FBZSxtQkFBWSxFQUFFO0FBQUEsb0JBQUcsb0JBQWlCO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIlZlcnNpb25zLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcbiAgPFZpZXdlckxheW91dFNpZGVQYW5lbCBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbW9kZWxzL3ZlcnNpb25zL1ZlcnNpb25zLnZ1ZToyOjNcIj5cclxuICAgIDx0ZW1wbGF0ZSAjdGl0bGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAteC0xXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21vZGVscy92ZXJzaW9ucy9WZXJzaW9ucy52dWU6NDo3XCI+XHJcbiAgICAgICAgPEZvcm1CdXR0b25cclxuICAgICAgICAgIDppY29uLWxlZnQ9XCJDaGV2cm9uTGVmdFwiXHJcbiAgICAgICAgICBjb2xvcj1cInN1YnRsZVwiXHJcbiAgICAgICAgICBjbGFzcz1cIi1tbC0zXCJcclxuICAgICAgICAgIGhpZGUtdGV4dFxyXG4gICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNsb3NlXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21vZGVscy92ZXJzaW9ucy9WZXJzaW9ucy52dWU6NTo5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBFeGl0IHZlcnNpb25zXHJcbiAgICAgICAgPC9Gb3JtQnV0dG9uPlxyXG4gICAgICAgIFZlcnNpb25zXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBoLWZ1bGxcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbW9kZWxzL3ZlcnNpb25zL1ZlcnNpb25zLnZ1ZToxOTo1XCI+XHJcbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwicmVzb3VyY2VJdGVtcy5sZW5ndGhcIj5cclxuICAgICAgICA8IS0tIFZlcnNpb25zIHdpdGggc2luZ2xlIHNjcm9sbCBjb250YWluZXIgZm9yIHN0aWNreSBoZWFkZXJzIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIHNpbXBsZS1zY3JvbGxiYXJcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbW9kZWxzL3ZlcnNpb25zL1ZlcnNpb25zLnZ1ZToyMjo5XCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIHYtZm9yPVwiKHsgbW9kZWwsIHZlcnNpb25JZCB9LCBpbmRleCkgaW4gbW9kZWxzQW5kVmVyc2lvbklkc1wiXHJcbiAgICAgICAgICAgIDprZXk9XCJtb2RlbC5pZFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9tb2RlbHMvdmVyc2lvbnMvVmVyc2lvbnMudnVlOjIzOjExXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPFZpZXdlck1vZGVsc1ZlcnNpb25zQ2FyZFxyXG4gICAgICAgICAgICAgIDptb2RlbD1cIm1vZGVsXCJcclxuICAgICAgICAgICAgICA6dmVyc2lvbi1pZD1cInZlcnNpb25JZFwiXHJcbiAgICAgICAgICAgICAgOmxhc3Q9XCJpbmRleCA9PT0gbW9kZWxzQW5kVmVyc2lvbklkcy5sZW5ndGggLSAxXCJcclxuICAgICAgICAgICAgICA6aW5pdGlhbGx5LWV4cGFuZGVkPVwiXHJcbiAgICAgICAgICAgICAgICBwcm9wcy5leHBhbmRlZE1vZGVsSWQgPT09IG1vZGVsLmlkIHx8IG1vZGVsc0FuZFZlcnNpb25JZHMubGVuZ3RoID09PSAxXHJcbiAgICAgICAgICAgICAgXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21vZGVscy92ZXJzaW9ucy9WZXJzaW9ucy52dWU6Mjc6MTNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIm9iamVjdHMubGVuZ3RoICE9PSAwXCI+XHJcbiAgICAgICAgICAgIDxWaWV3ZXJSZXNvdXJjZXNPYmplY3RDYXJkXHJcbiAgICAgICAgICAgICAgdi1mb3I9XCJvYmplY3QgaW4gb2JqZWN0c1wiXHJcbiAgICAgICAgICAgICAgOmtleT1cIm9iamVjdC5vYmplY3RJZFwiXHJcbiAgICAgICAgICAgICAgOm9iamVjdD1cIm9iamVjdFwiXHJcbiAgICAgICAgICAgICAgOnNob3ctcmVtb3ZlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIEByZW1vdmU9XCIoaWQ6IHN0cmluZykgPT4gcmVtb3ZlTW9kZWwoaWQpXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21vZGVscy92ZXJzaW9ucy9WZXJzaW9ucy52dWU6Mzc6MTNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvVmlld2VyTGF5b3V0U2lkZVBhbmVsPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHtcclxuICB1c2VJbmplY3RlZFZpZXdlckxvYWRlZFJlc291cmNlcyxcclxuICB1c2VJbmplY3RlZFZpZXdlclJlcXVlc3RlZFJlc291cmNlcyxcclxuICB1c2VJbmplY3RlZFZpZXdlclN0YXRlXHJcbn0gZnJvbSAnfn4vbGliL3ZpZXdlci9jb21wb3NhYmxlcy9zZXR1cCdcclxuaW1wb3J0IHsgU3BlY2tsZVZpZXdlciB9IGZyb20gJ0BzcGVja2xlL3NoYXJlZCdcclxuaW1wb3J0IHsgdXNlTWl4cGFuZWwgfSBmcm9tICd+fi9saWIvY29yZS9jb21wb3NhYmxlcy9tcCdcclxuaW1wb3J0IHsgVmlld2VyRXZlbnQgfSBmcm9tICdAc3BlY2tsZS92aWV3ZXInXHJcbmltcG9ydCB7IHVzZVZpZXdlckV2ZW50TGlzdGVuZXIgfSBmcm9tICd+fi9saWIvdmlld2VyL2NvbXBvc2FibGVzL3ZpZXdlcidcclxuaW1wb3J0IHsgQ2hldnJvbkxlZnQgfSBmcm9tICdsdWNpZGUtdnVlLW5leHQnXHJcbmltcG9ydCB7IHVzZURpZmZVdGlsaXRpZXMgfSBmcm9tICd+fi9saWIvdmlld2VyL2NvbXBvc2FibGVzL3VpJ1xyXG5cclxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XHJcbiAgZXhwYW5kZWRNb2RlbElkPzogc3RyaW5nIHwgbnVsbFxyXG59PigpXHJcblxyXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjbG9zZSddKVxyXG5cclxuY29uc3QgeyByZXNvdXJjZUl0ZW1zLCBtb2RlbHNBbmRWZXJzaW9uSWRzLCBvYmplY3RzIH0gPVxyXG4gIHVzZUluamVjdGVkVmlld2VyTG9hZGVkUmVzb3VyY2VzKClcclxuY29uc3QgeyBpdGVtcyB9ID0gdXNlSW5qZWN0ZWRWaWV3ZXJSZXF1ZXN0ZWRSZXNvdXJjZXMoKVxyXG5jb25zdCB7XHJcbiAgdWk6IHsgZGlmZjogZGlmZlN0YXRlIH1cclxufSA9IHVzZUluamVjdGVkVmlld2VyU3RhdGUoKVxyXG5jb25zdCB7IGVuZERpZmYgfSA9IHVzZURpZmZVdGlsaXRpZXMoKVxyXG5cclxuY29uc3QgbXAgPSB1c2VNaXhwYW5lbCgpXHJcblxyXG5jb25zdCBoYXNEaWZmQWN0aXZlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIHJldHVybiAhIShkaWZmU3RhdGUub2xkVmVyc2lvbi52YWx1ZSAmJiBkaWZmU3RhdGUubmV3VmVyc2lvbi52YWx1ZSlcclxufSlcclxuXHJcbmNvbnN0IGhhbmRsZUNsb3NlID0gYXN5bmMgKCkgPT4ge1xyXG4gIGlmIChoYXNEaWZmQWN0aXZlLnZhbHVlKSB7XHJcbiAgICBhd2FpdCBlbmREaWZmKClcclxuICB9XHJcbiAgZW1pdCgnY2xvc2UnKVxyXG59XHJcblxyXG5jb25zdCByZW1vdmVNb2RlbCA9IGFzeW5jIChtb2RlbElkOiBzdHJpbmcpID0+IHtcclxuICAvLyBDb252ZXJ0IHJlcXVlc3RlZCByZXNvdXJjZSBzdHJpbmcgdG8gcmVmZXJlbmNlcyB0byBzcGVjaWZpYyBtb2RlbHNcclxuICAvLyB0byBlbnN1cmUgcmVtb3ZlIHdvcmtzIGV2ZW4gd2hlbiB3ZSBoYXZlIFwiYWxsXCIgb3IgXCIkZm9sZGVyXCIgaW4gdGhlIFVSTFxyXG4gIGNvbnN0IGJ1aWxkZXIgPSBTcGVja2xlVmlld2VyLlZpZXdlclJvdXRlLnJlc291cmNlQnVpbGRlcigpXHJcbiAgZm9yIChjb25zdCBsb2FkZWRSZXNvdXJjZSBvZiByZXNvdXJjZUl0ZW1zLnZhbHVlKSB7XHJcbiAgICBpZiAobG9hZGVkUmVzb3VyY2UubW9kZWxJZCkge1xyXG4gICAgICBpZiAobG9hZGVkUmVzb3VyY2UubW9kZWxJZCAhPT0gbW9kZWxJZCkge1xyXG4gICAgICAgIGJ1aWxkZXIuYWRkTW9kZWwobG9hZGVkUmVzb3VyY2UubW9kZWxJZCwgbG9hZGVkUmVzb3VyY2UudmVyc2lvbklkIHx8IHVuZGVmaW5lZClcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGxvYWRlZFJlc291cmNlLm9iamVjdElkICE9PSBtb2RlbElkKVxyXG4gICAgICAgIGJ1aWxkZXIuYWRkT2JqZWN0KGxvYWRlZFJlc291cmNlLm9iamVjdElkKVxyXG4gICAgfVxyXG4gIH1cclxuICBtcC50cmFjaygnVmlld2VyIEFjdGlvbicsIHsgdHlwZTogJ2FjdGlvbicsIG5hbWU6ICdmZWRlcmF0aW9uJywgYWN0aW9uOiAncmVtb3ZlJyB9KVxyXG4gIGF3YWl0IGl0ZW1zLnVwZGF0ZShidWlsZGVyLnRvUmVzb3VyY2VzKCkpXHJcbn1cclxuXHJcbi8vIFRPRE86IHdvcmxkVHJlZSBiZWluZyBzZXQgaW4gcG9zdFNldHVwLnRzICh2aWV3ZXIpIGRvZXMgbm90IHNlZW0gdG8gY3JlYXRlIGEgcmVhY3RpdmUgZWZmZWN0XHJcbi8vIGluIGhlcmUgKGFzIGkgd2FzIGV4cGVjdGluZyBpdCB0bz8pLiBUaGVyZWZvcmUsIHJlZkhhY2srKyB0byB0cmlnZ2VyIHRoZSBjb21wdXRlZCBwcm9wIHJvb3ROb2Rlcy5cclxuLy8gUG9zc2libHkgRmFicyB3aWxsIGtub3cgbW9yZSA6KVxyXG5jb25zdCByZWZoYWNrID0gcmVmKDEpXHJcbnVzZVZpZXdlckV2ZW50TGlzdGVuZXIoVmlld2VyRXZlbnQuTG9hZENvbXBsZXRlLCAoKSA9PiB7XHJcbiAgcmVmaGFjay52YWx1ZSsrXHJcbn0pXHJcbjwvc2NyaXB0PlxyXG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvY29tcG9uZW50cy92aWV3ZXIvbW9kZWxzL3ZlcnNpb25zL1ZlcnNpb25zLnZ1ZSJ9