204 lines
18 KiB
Plaintext
204 lines
18 KiB
Plaintext
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 |