214 lines
22 KiB
Plaintext
214 lines
22 KiB
Plaintext
import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/filters/filter/string/ValueItem.vue");import { FormCheckbox as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
|
|
/* Injection by vite-plugin-vue-inspector Start */
|
|
import { createVNode as __createVNode,createElementBlock as __createElementBlock,createElementVNode as __createElementVNode } 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 _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) }
|
|
function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...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 { useFilterUtilities } from "/_nuxt/lib/viewer/composables/filtering/filtering.ts";
|
|
import { getFilterValueCount } from "/_nuxt/lib/viewer/helpers/filters/utils.ts";
|
|
import { useInjectedViewerState } from "/_nuxt/lib/viewer/composables/setup.ts";
|
|
import { useFilterColoringHelpers } from "/_nuxt/lib/viewer/composables/filtering/coloringHelpers.ts";
|
|
import { useHighlightedObjectsUtilities } from "/_nuxt/lib/viewer/composables/ui.ts";
|
|
|
|
import { computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
const _sfc_main = /* @__PURE__ */ _defineComponent({
|
|
__name: "ViewerFiltersFilterStringValueItem",
|
|
props: {
|
|
filter: { type: Object, required: true },
|
|
value: { type: String, required: true }
|
|
},
|
|
emits: ["toggle"],
|
|
setup(__props, { expose: __expose }) {
|
|
__expose();
|
|
const props = __props;
|
|
const { isActiveFilterValueSelected, filters } = useFilterUtilities();
|
|
const { getFilterValueColor } = useFilterColoringHelpers();
|
|
const { highlightObjects, unhighlightObjects } = useHighlightedObjectsUtilities();
|
|
const { ui } = useInjectedViewerState();
|
|
const valueGroup = computed(() => {
|
|
if (!props.filter.filter || !("valueGroups" in props.filter.filter)) return null;
|
|
const valueGroups = props.filter.filter.valueGroups;
|
|
return valueGroups.find((vg) => String(vg.value) === props.value);
|
|
});
|
|
const isSelected = computed(() => {
|
|
if (props.filter.isDefaultAllSelected && props.filter.selectedValues.length === 0) {
|
|
return true;
|
|
}
|
|
return isActiveFilterValueSelected(props.filter.id, props.value);
|
|
});
|
|
const totalCount = computed(() => {
|
|
if (!props.filter.filter) return null;
|
|
return getFilterValueCount(props.filter.filter, props.value);
|
|
});
|
|
const { isolatedObjectsSet } = ui.filters;
|
|
const availableCount = computed(() => {
|
|
if (!props.filter.filter || !totalCount.value) return null;
|
|
const appliedFilters = filters.propertyFilters.value.filter((f) => f.isApplied);
|
|
if (appliedFilters.length <= 1) {
|
|
return totalCount.value;
|
|
}
|
|
const isolatedSet = isolatedObjectsSet.value;
|
|
if (!isolatedSet) {
|
|
return totalCount.value;
|
|
}
|
|
const currentValueGroup = valueGroup.value;
|
|
if (!currentValueGroup) {
|
|
return totalCount.value;
|
|
}
|
|
const valueObjectIds = currentValueGroup.ids || [];
|
|
const availableIds = valueObjectIds.filter((id) => isolatedSet.has(id));
|
|
const result = availableIds.length;
|
|
return result;
|
|
});
|
|
const count = computed(() => {
|
|
const total = totalCount.value;
|
|
const available = availableCount.value;
|
|
if (total === null || available === null) return null;
|
|
const appliedFilters = filters.propertyFilters.value.filter((f) => f.isApplied);
|
|
if (appliedFilters.length > 1) {
|
|
return `${available} (${total})`;
|
|
}
|
|
return String(total);
|
|
});
|
|
const color = computed(() => {
|
|
if (filters.activeColorFilterId.value !== props.filter.id) {
|
|
return null;
|
|
}
|
|
return getFilterValueColor(props.value);
|
|
});
|
|
const isDefaultSelected = computed(() => {
|
|
return props.filter.isDefaultAllSelected && props.filter.selectedValues.length === 0;
|
|
});
|
|
const highlight = () => {
|
|
const objectIds = valueGroup.value?.ids;
|
|
if (objectIds && objectIds.length > 0) {
|
|
highlightObjects(objectIds);
|
|
}
|
|
};
|
|
const unhighlight = () => {
|
|
const objectIds = valueGroup.value?.ids;
|
|
if (objectIds && objectIds.length > 0) {
|
|
unhighlightObjects(objectIds);
|
|
}
|
|
};
|
|
const __returned__ = { props, isActiveFilterValueSelected, filters, getFilterValueColor, highlightObjects, unhighlightObjects, ui, valueGroup, isSelected, totalCount, isolatedObjectsSet, availableCount, count, color, isDefaultSelected, highlight, unhighlight };
|
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
return __returned__;
|
|
}
|
|
});
|
|
import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, openBlock as _openBlock, normalizeStyle as _normalizeStyle } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
const _hoisted_1 = {
|
|
class: "px-1 h-full",
|
|
"data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:5:3"
|
|
};
|
|
const _hoisted_2 = {
|
|
class: "flex items-center min-w-0",
|
|
"data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:12:7"
|
|
};
|
|
const _hoisted_3 = {
|
|
key: 0,
|
|
class: "flex-1 truncate text-foreground ml-0.5",
|
|
"data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:25:9"
|
|
};
|
|
const _hoisted_4 = {
|
|
key: 1,
|
|
class: "flex-1 text-foreground ml-0.5 italic",
|
|
"data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:28:9"
|
|
};
|
|
const _hoisted_5 = {
|
|
class: "flex items-center shrink-0",
|
|
"data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:30:7"
|
|
};
|
|
const _hoisted_6 = {
|
|
key: 0,
|
|
class: "shrink-0 text-foreground-2 text-body-3xs",
|
|
"data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:31:9"
|
|
};
|
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
const _component_FormCheckbox = __nuxt_component_0;
|
|
return _openBlock(), _createElementBlock("div", _hoisted_1, [
|
|
_createElementVNode(
|
|
"div",
|
|
{
|
|
class: "group/checkbox flex items-center justify-between gap-2 text-body-3xs py-0.5 px-2 hover:bg-highlight-1 rounded-md cursor-pointer h-full",
|
|
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("toggle")),
|
|
onMouseenter: $setup.highlight,
|
|
onMouseleave: $setup.unhighlight,
|
|
"data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:6:5"
|
|
},
|
|
[
|
|
_createElementVNode("div", _hoisted_2, [
|
|
_createCommentVNode(" Checkbox is purely visual - so pointer-events-none "),
|
|
_createVNode(_component_FormCheckbox, {
|
|
class: _normalizeClass(["pointer-events-none", {
|
|
"border-transparent group-hover/checkbox:border-outline-5": !$setup.isSelected,
|
|
"opacity-50 dark:!bg-transparent !border dark:!border-outline-5 !group-hover/checkbox:border-outline-5": $setup.isDefaultSelected
|
|
}]),
|
|
name: `filter-${$props.filter.id}-${$props.value}`,
|
|
"model-value": $setup.isSelected,
|
|
"hide-label": "",
|
|
"data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:14:9"
|
|
}, null, 8, ["class", "name", "model-value"]),
|
|
$props.value ? (_openBlock(), _createElementBlock(
|
|
"span",
|
|
_hoisted_3,
|
|
_toDisplayString($props.value),
|
|
1
|
|
/* TEXT */
|
|
)) : (_openBlock(), _createElementBlock("span", _hoisted_4, "null"))
|
|
]),
|
|
_createElementVNode("div", _hoisted_5, [
|
|
$setup.count ? (_openBlock(), _createElementBlock(
|
|
"div",
|
|
_hoisted_6,
|
|
_toDisplayString($setup.count),
|
|
1
|
|
/* TEXT */
|
|
)) : _createCommentVNode("v-if", true),
|
|
$setup.color ? (_openBlock(), _createElementBlock(
|
|
"div",
|
|
{
|
|
key: 1,
|
|
class: "w-3 h-3 rounded-full border border-outline-3 ml-2 shrink-0",
|
|
style: _normalizeStyle({ backgroundColor: $setup.color }),
|
|
"data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:34:9"
|
|
},
|
|
null,
|
|
4
|
|
/* STYLE */
|
|
)) : _createCommentVNode("v-if", true)
|
|
])
|
|
],
|
|
32
|
|
/* NEED_HYDRATION */
|
|
)
|
|
]);
|
|
}
|
|
_sfc_main.__hmrId = "e96930b6";
|
|
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/filters/filter/string/ValueItem.vue"]]);
|
|
|
|
//# sourceMappingURL=data:application/json;base64,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QUZOO0FBQUEsWUFFTSxpQkFERCxZQUFLO0FBQUE7QUFBQTtBQUFBO1VBR0YsOEJBRFI7QUFBQSxZQUlFO0FBQUE7QUFBQTtjQUZBLE9BQU07QUFBQSxjQUNMLE9BQUssbUNBQXFCLGFBQUs7QUFBQSxjQUFJLG9CQUFpQjtBQUFBIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJWYWx1ZUl0ZW0udnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjwhLS0gZXNsaW50LWRpc2FibGUgdnVlanMtYWNjZXNzaWJpbGl0eS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgLS0+XHJcbjwhLS0gZXNsaW50LWRpc2FibGUgdnVlanMtYWNjZXNzaWJpbGl0eS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzIC0tPlxyXG48IS0tIGVzbGludC1kaXNhYmxlIHZ1ZWpzLWFjY2Vzc2liaWxpdHkvbW91c2UtZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAtLT5cclxuPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJweC0xIGgtZnVsbFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9zdHJpbmcvVmFsdWVJdGVtLnZ1ZTo1OjNcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJncm91cC9jaGVja2JveCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIgdGV4dC1ib2R5LTN4cyBweS0wLjUgcHgtMiBob3ZlcjpiZy1oaWdobGlnaHQtMSByb3VuZGVkLW1kIGN1cnNvci1wb2ludGVyIGgtZnVsbFwiXHJcbiAgICAgIEBjbGljaz1cIiRlbWl0KCd0b2dnbGUnKVwiXHJcbiAgICAgIEBtb3VzZWVudGVyPVwiaGlnaGxpZ2h0XCJcclxuICAgICAgQG1vdXNlbGVhdmU9XCJ1bmhpZ2hsaWdodFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9zdHJpbmcvVmFsdWVJdGVtLnZ1ZTo2OjVcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbWluLXctMFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9zdHJpbmcvVmFsdWVJdGVtLnZ1ZToxMjo3XCI+XHJcbiAgICAgICAgPCEtLSBDaGVja2JveCBpcyBwdXJlbHkgdmlzdWFsIC0gc28gcG9pbnRlci1ldmVudHMtbm9uZSAtLT5cclxuICAgICAgICA8Rm9ybUNoZWNrYm94XHJcbiAgICAgICAgICBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmVcIlxyXG4gICAgICAgICAgOmNsYXNzPVwie1xyXG4gICAgICAgICAgICAnYm9yZGVyLXRyYW5zcGFyZW50IGdyb3VwLWhvdmVyL2NoZWNrYm94OmJvcmRlci1vdXRsaW5lLTUnOiAhaXNTZWxlY3RlZCxcclxuICAgICAgICAgICAgJ29wYWNpdHktNTAgZGFyazohYmctdHJhbnNwYXJlbnQgIWJvcmRlciBkYXJrOiFib3JkZXItb3V0bGluZS01ICFncm91cC1ob3Zlci9jaGVja2JveDpib3JkZXItb3V0bGluZS01JzpcclxuICAgICAgICAgICAgICBpc0RlZmF1bHRTZWxlY3RlZFxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgICA6bmFtZT1cImBmaWx0ZXItJHtmaWx0ZXIuaWR9LSR7dmFsdWV9YFwiXHJcbiAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJpc1NlbGVjdGVkXCJcclxuICAgICAgICAgIGhpZGUtbGFiZWwgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2ZpbHRlcnMvZmlsdGVyL3N0cmluZy9WYWx1ZUl0ZW0udnVlOjE0OjlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gdi1pZj1cInZhbHVlXCIgY2xhc3M9XCJmbGV4LTEgdHJ1bmNhdGUgdGV4dC1mb3JlZ3JvdW5kIG1sLTAuNVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9zdHJpbmcvVmFsdWVJdGVtLnZ1ZToyNTo5XCI+XHJcbiAgICAgICAgICB7eyB2YWx1ZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiB2LWVsc2UgY2xhc3M9XCJmbGV4LTEgdGV4dC1mb3JlZ3JvdW5kIG1sLTAuNSBpdGFsaWNcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvZmlsdGVycy9maWx0ZXIvc3RyaW5nL1ZhbHVlSXRlbS52dWU6Mjg6OVwiPm51bGw8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTBcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvZmlsdGVycy9maWx0ZXIvc3RyaW5nL1ZhbHVlSXRlbS52dWU6MzA6N1wiPlxyXG4gICAgICAgIDxkaXYgdi1pZj1cImNvdW50XCIgY2xhc3M9XCJzaHJpbmstMCB0ZXh0LWZvcmVncm91bmQtMiB0ZXh0LWJvZHktM3hzXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2ZpbHRlcnMvZmlsdGVyL3N0cmluZy9WYWx1ZUl0ZW0udnVlOjMxOjlcIj5cclxuICAgICAgICAgIHt7IGNvdW50IH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgdi1pZj1cImNvbG9yXCJcclxuICAgICAgICAgIGNsYXNzPVwidy0zIGgtMyByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1vdXRsaW5lLTMgbWwtMiBzaHJpbmstMFwiXHJcbiAgICAgICAgICA6c3R5bGU9XCJ7IGJhY2tncm91bmRDb2xvcjogY29sb3IgfVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9zdHJpbmcvVmFsdWVJdGVtLnZ1ZTozNDo5XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgdXNlRmlsdGVyVXRpbGl0aWVzIH0gZnJvbSAnfi9saWIvdmlld2VyL2NvbXBvc2FibGVzL2ZpbHRlcmluZy9maWx0ZXJpbmcnXHJcbmltcG9ydCB7IGdldEZpbHRlclZhbHVlQ291bnQgfSBmcm9tICd+L2xpYi92aWV3ZXIvaGVscGVycy9maWx0ZXJzL3V0aWxzJ1xyXG5pbXBvcnQgdHlwZSB7IFN0cmluZ0ZpbHRlckRhdGEgfSBmcm9tICd+L2xpYi92aWV3ZXIvaGVscGVycy9maWx0ZXJzL3R5cGVzJ1xyXG5pbXBvcnQgeyB1c2VJbmplY3RlZFZpZXdlclN0YXRlIH0gZnJvbSAnfn4vbGliL3ZpZXdlci9jb21wb3NhYmxlcy9zZXR1cCdcclxuaW1wb3J0IHsgdXNlRmlsdGVyQ29sb3JpbmdIZWxwZXJzIH0gZnJvbSAnfi9saWIvdmlld2VyL2NvbXBvc2FibGVzL2ZpbHRlcmluZy9jb2xvcmluZ0hlbHBlcnMnXHJcbmltcG9ydCB7IHVzZUhpZ2hsaWdodGVkT2JqZWN0c1V0aWxpdGllcyB9IGZyb20gJ34vbGliL3ZpZXdlci9jb21wb3NhYmxlcy91aSdcclxuXHJcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8e1xyXG4gIGZpbHRlcjogU3RyaW5nRmlsdGVyRGF0YVxyXG4gIHZhbHVlOiBzdHJpbmdcclxufT4oKVxyXG5cclxuZGVmaW5lRW1pdHM8e1xyXG4gIHRvZ2dsZTogW11cclxufT4oKVxyXG5cclxuY29uc3QgeyBpc0FjdGl2ZUZpbHRlclZhbHVlU2VsZWN0ZWQsIGZpbHRlcnMgfSA9IHVzZUZpbHRlclV0aWxpdGllcygpXHJcblxyXG5jb25zdCB7IGdldEZpbHRlclZhbHVlQ29sb3IgfSA9IHVzZUZpbHRlckNvbG9yaW5nSGVscGVycygpXHJcblxyXG5jb25zdCB7IGhpZ2hsaWdodE9iamVjdHMsIHVuaGlnaGxpZ2h0T2JqZWN0cyB9ID0gdXNlSGlnaGxpZ2h0ZWRPYmplY3RzVXRpbGl0aWVzKClcclxuXHJcbmNvbnN0IHsgdWkgfSA9IHVzZUluamVjdGVkVmlld2VyU3RhdGUoKVxyXG5cclxuY29uc3QgdmFsdWVHcm91cCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICBpZiAoIXByb3BzLmZpbHRlci5maWx0ZXIgfHwgISgndmFsdWVHcm91cHMnIGluIHByb3BzLmZpbHRlci5maWx0ZXIpKSByZXR1cm4gbnVsbFxyXG5cclxuICBjb25zdCB2YWx1ZUdyb3VwcyA9IHByb3BzLmZpbHRlci5maWx0ZXIudmFsdWVHcm91cHMgYXMgQXJyYXk8e1xyXG4gICAgdmFsdWU6IHVua25vd25cclxuICAgIGlkcz86IHN0cmluZ1tdXHJcbiAgfT5cclxuICByZXR1cm4gdmFsdWVHcm91cHMuZmluZCgodmcpID0+IFN0cmluZyh2Zy52YWx1ZSkgPT09IHByb3BzLnZhbHVlKVxyXG59KVxyXG5cclxuY29uc3QgaXNTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICBpZiAocHJvcHMuZmlsdGVyLmlzRGVmYXVsdEFsbFNlbGVjdGVkICYmIHByb3BzLmZpbHRlci5zZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDApIHtcclxuICAgIHJldHVybiB0cnVlXHJcbiAgfVxyXG4gIHJldHVybiBpc0FjdGl2ZUZpbHRlclZhbHVlU2VsZWN0ZWQocHJvcHMuZmlsdGVyLmlkLCBwcm9wcy52YWx1ZSlcclxufSlcclxuXHJcbmNvbnN0IHRvdGFsQ291bnQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgaWYgKCFwcm9wcy5maWx0ZXIuZmlsdGVyKSByZXR1cm4gbnVsbFxyXG4gIHJldHVybiBnZXRGaWx0ZXJWYWx1ZUNvdW50KHByb3BzLmZpbHRlci5maWx0ZXIsIHByb3BzLnZhbHVlKVxyXG59KVxyXG5cclxuLy8gVXNlIHNpbmdsZXRvbiBpc29sYXRlZE9iamVjdHNTZXQgZnJvbSB2aWV3ZXIgc3RhdGVcclxuY29uc3QgeyBpc29sYXRlZE9iamVjdHNTZXQgfSA9IHVpLmZpbHRlcnNcclxuXHJcbmNvbnN0IGF2YWlsYWJsZUNvdW50ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGlmICghcHJvcHMuZmlsdGVyLmZpbHRlciB8fCAhdG90YWxDb3VudC52YWx1ZSkgcmV0dXJuIG51bGxcclxuXHJcbiAgY29uc3QgYXBwbGllZEZpbHRlcnMgPSBmaWx0ZXJzLnByb3BlcnR5RmlsdGVycy52YWx1ZS5maWx0ZXIoKGYpID0+IGYuaXNBcHBsaWVkKVxyXG5cclxuICBpZiAoYXBwbGllZEZpbHRlcnMubGVuZ3RoIDw9IDEpIHtcclxuICAgIHJldHVybiB0b3RhbENvdW50LnZhbHVlXHJcbiAgfVxyXG5cclxuICBjb25zdCBpc29sYXRlZFNldCA9IGlzb2xhdGVkT2JqZWN0c1NldC52YWx1ZVxyXG4gIGlmICghaXNvbGF0ZWRTZXQpIHtcclxuICAgIHJldHVybiB0b3RhbENvdW50LnZhbHVlXHJcbiAgfVxyXG5cclxuICBjb25zdCBjdXJyZW50VmFsdWVHcm91cCA9IHZhbHVlR3JvdXAudmFsdWVcclxuICBpZiAoIWN1cnJlbnRWYWx1ZUdyb3VwKSB7XHJcbiAgICByZXR1cm4gdG90YWxDb3VudC52YWx1ZVxyXG4gIH1cclxuXHJcbiAgY29uc3QgdmFsdWVPYmplY3RJZHMgPSBjdXJyZW50VmFsdWVHcm91cC5pZHMgfHwgW11cclxuXHJcbiAgY29uc3QgYXZhaWxhYmxlSWRzID0gdmFsdWVPYmplY3RJZHMuZmlsdGVyKChpZCkgPT4gaXNvbGF0ZWRTZXQuaGFzKGlkKSlcclxuICBjb25zdCByZXN1bHQgPSBhdmFpbGFibGVJZHMubGVuZ3RoXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59KVxyXG5cclxuY29uc3QgY291bnQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgY29uc3QgdG90YWwgPSB0b3RhbENvdW50LnZhbHVlXHJcbiAgY29uc3QgYXZhaWxhYmxlID0gYXZhaWxhYmxlQ291bnQudmFsdWVcclxuXHJcbiAgaWYgKHRvdGFsID09PSBudWxsIHx8IGF2YWlsYWJsZSA9PT0gbnVsbCkgcmV0dXJuIG51bGxcclxuXHJcbiAgY29uc3QgYXBwbGllZEZpbHRlcnMgPSBmaWx0ZXJzLnByb3BlcnR5RmlsdGVycy52YWx1ZS5maWx0ZXIoKGYpID0+IGYuaXNBcHBsaWVkKVxyXG4gIGlmIChhcHBsaWVkRmlsdGVycy5sZW5ndGggPiAxKSB7XHJcbiAgICByZXR1cm4gYCR7YXZhaWxhYmxlfSAoJHt0b3RhbH0pYFxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIFN0cmluZyh0b3RhbClcclxufSlcclxuXHJcbmNvbnN0IGNvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGlmIChmaWx0ZXJzLmFjdGl2ZUNvbG9yRmlsdGVySWQudmFsdWUgIT09IHByb3BzLmZpbHRlci5pZCkge1xyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcbiAgcmV0dXJuIGdldEZpbHRlclZhbHVlQ29sb3IocHJvcHMudmFsdWUpXHJcbn0pXHJcblxyXG5jb25zdCBpc0RlZmF1bHRTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICByZXR1cm4gcHJvcHMuZmlsdGVyLmlzRGVmYXVsdEFsbFNlbGVjdGVkICYmIHByb3BzLmZpbHRlci5zZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDBcclxufSlcclxuXHJcbmNvbnN0IGhpZ2hsaWdodCA9ICgpID0+IHtcclxuICBjb25zdCBvYmplY3RJZHMgPSB2YWx1ZUdyb3VwLnZhbHVlPy5pZHNcclxuICBpZiAob2JqZWN0SWRzICYmIG9iamVjdElkcy5sZW5ndGggPiAwKSB7XHJcbiAgICBoaWdobGlnaHRPYmplY3RzKG9iamVjdElkcylcclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IHVuaGlnaGxpZ2h0ID0gKCkgPT4ge1xyXG4gIGNvbnN0IG9iamVjdElkcyA9IHZhbHVlR3JvdXAudmFsdWU/Lmlkc1xyXG4gIGlmIChvYmplY3RJZHMgJiYgb2JqZWN0SWRzLmxlbmd0aCA+IDApIHtcclxuICAgIHVuaGlnaGxpZ2h0T2JqZWN0cyhvYmplY3RJZHMpXHJcbiAgfVxyXG59XHJcbjwvc2NyaXB0PlxyXG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvY29tcG9uZW50cy92aWV3ZXIvZmlsdGVycy9maWx0ZXIvc3RyaW5nL1ZhbHVlSXRlbS52dWUifQ== |