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

169 lines
18 KiB
Plaintext

import { LogicError } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { upperFirst, values } from "/_nuxt/node_modules/.cache/vite/client/deps/lodash-es.js?v=e4f18c29";
import { computed, unref, ref, watch } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
export const useMultiStepDialog = (params) => {
const steps = computed(() => unref(params.steps).filter((s) => !s.skippable));
const stepId = ref(steps.value[0].id);
const step = computed(() => {
const currentStep = steps.value.find((s) => s.id === stepId.value);
if (!currentStep) {
throw new LogicError("Invalid steps array or stepId provided");
}
return currentStep;
});
const nextOrderedStep = computed(() => {
const currentIndex = steps.value.findIndex((s) => s.id === stepId.value);
if (currentIndex === -1) {
return void 0;
}
const nextStep2 = steps.value[currentIndex + 1];
if (nextStep2?.id === stepId.value) {
return void 0;
}
return nextStep2;
});
const previousOrderedStep = computed(() => {
const currentIndex = steps.value.findIndex((s) => s.id === stepId.value);
if (currentIndex === -1) {
return void 0;
}
const previousStep2 = steps.value[currentIndex - 1];
if (previousStep2?.id === stepId.value) {
return void 0;
}
return previousStep2;
});
const nextStep = computed(() => {
if (params.resolveNextStep) {
const nextStepId = params.resolveNextStep({
currentStep: step.value,
reset: false
});
const nextStep2 = steps.value.find((s) => s.id === nextStepId);
if (nextStep2?.id === stepId.value) {
return void 0;
}
return nextStep2;
} else {
return nextOrderedStep.value;
}
});
const previousStep = computed(() => {
if (params.resolvePreviousStep) {
const previousStepId = params.resolvePreviousStep({ currentStep: step.value });
const previousStep2 = steps.value.find((s) => s.id === previousStepId);
if (previousStep2?.id === stepId.value) {
return void 0;
}
return previousStep2;
} else {
return previousOrderedStep.value;
}
});
const walkToAdjacentStep = (forward) => {
const adjacentStep = forward ? nextOrderedStep.value : previousOrderedStep.value;
if (adjacentStep) {
stepId.value = adjacentStep.id;
}
};
const goToNextOrderedStep = () => walkToAdjacentStep(true);
const goToPreviousOrderedStep = () => walkToAdjacentStep(false);
const goToStep = (id) => {
const stepIndex = steps.value.findIndex((s) => s.id === id);
if (stepIndex === -1) {
return;
}
stepId.value = steps.value[stepIndex].id;
};
const goToNextStep = () => {
const nextStepId = nextStep.value?.id;
if (nextStepId) {
goToStep(nextStepId);
}
};
const goToPreviousStep = () => {
const previousStepId = previousStep.value?.id;
if (previousStepId) {
goToStep(previousStepId);
}
};
const resetStep = () => {
if (params.resolveNextStep) {
const nextStepId = params.resolveNextStep({
currentStep: step.value,
reset: true
});
goToStep(nextStepId);
} else {
stepId.value = steps.value[0].id;
}
};
return {
stepId,
step,
nextStep,
previousStep,
nextOrderedStep,
previousOrderedStep,
goToNextOrderedStep,
goToPreviousOrderedStep,
goToStep,
goToNextStep,
goToPreviousStep,
resetStep
};
};
export const useMultipleDialogBranching = (params) => {
const open = params.open;
const conditionOpenComputeds = Object.entries(params.conditions).reduce(
(acc, entry) => {
const key = `open${upperFirst(
entry[0]
)}`;
const condition = entry[1];
acc[key] = computed({
get: () => {
if (!condition.value) return false;
return open.value;
},
set: (value) => {
if (!value) return open.value = false;
if (!condition.value) return false;
condition.value = value;
}
});
return acc;
},
{}
);
const isDefaultBranch = computed(() => {
return !params.noDefault && values(conditionOpenComputeds).every((c) => !c.value);
});
const openDefault = computed({
get: () => {
if (!isDefaultBranch.value) return false;
return open.value;
},
set: (value) => {
if (!value) return open.value = false;
if (!isDefaultBranch.value) return false;
open.value = value;
}
});
watch(
() => values(params.conditions).map((c) => c.value.toString()).join("-"),
(newVal, oldVal) => {
if (newVal !== oldVal && open.value) {
open.value = false;
}
}
);
return {
open,
openDefault,
...conditionOpenComputeds
};
};
//# sourceMappingURL=data:application/json;base64,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QUEsUUFDQSxLQUFLLENBQUMsVUFBVTtBQUNkLGNBQUksQ0FBQyxNQUFPLFFBQVEsS0FBSyxRQUFRO0FBQ2pDLGNBQUksQ0FBQyxVQUFVLE1BQU8sUUFBTztBQUU3QixvQkFBVSxRQUFRO0FBQUEsUUFDcEI7QUFBQSxNQUNGLENBQUM7QUFDRCxhQUFPO0FBQUEsSUFDVDtBQUFBLElBQ0EsQ0FBQztBQUFBLEVBQ0g7QUFFQSxRQUFNLGtCQUFrQixTQUFTLE1BQU07QUFDckMsV0FDRSxDQUFDLE9BQU8sYUFDUixPQUFxQixzQkFBc0IsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSztBQUFBLEVBRXRFLENBQUM7QUFFRCxRQUFNLGNBQWMsU0FBUztBQUFBLElBQzNCLEtBQUssTUFBTTtBQUNULFVBQUksQ0FBQyxnQkFBZ0IsTUFBTyxRQUFPO0FBQ25DLGFBQU8sS0FBSztBQUFBLElBQ2Q7QUFBQSxJQUNBLEtBQUssQ0FBQyxVQUFVO0FBQ2QsVUFBSSxDQUFDLE1BQU8sUUFBUSxLQUFLLFFBQVE7QUFDakMsVUFBSSxDQUFDLGdCQUFnQixNQUFPLFFBQU87QUFFbkMsV0FBSyxRQUFRO0FBQUEsSUFDZjtBQUFBLEVBQ0YsQ0FBQztBQUtEO0FBQUEsSUFDRSxNQUNFLE9BQXFCLE9BQU8sVUFBVSxFQUNuQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDLEVBQzdCLEtBQUssR0FBRztBQUFBLElBQ2IsQ0FBQyxRQUFRLFdBQVc7QUFDbEIsVUFBSSxXQUFXLFVBQVUsS0FBSyxPQUFPO0FBQ25DLGFBQUssUUFBUTtBQUFBLE1BQ2Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBRztBQUFBLEVBQ0w7QUFDRiIsIm5hbWVzIjpbIm5leHRTdGVwIiwicHJldmlvdXNTdGVwIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbImRpYWxvZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dpY0Vycm9yIH0gZnJvbSAnQHNwZWNrbGUvdWktY29tcG9uZW50cydcclxuaW1wb3J0IHsgdXBwZXJGaXJzdCwgdmFsdWVzIH0gZnJvbSAnbG9kYXNoLWVzJ1xyXG5pbXBvcnQgdHlwZSB7IE1vZGVsUmVmLCBSZWYgfSBmcm9tICd2dWUnXHJcblxyXG5leHBvcnQgdHlwZSBEaWFsb2dTdGVwPElEIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9IHtcclxuICBpZDogSURcclxuICB0aXRsZTogc3RyaW5nXHJcbiAgLyoqXHJcbiAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBzdGVwIHdpbGwgYmUgc2tpcHBlZCBhbmQgdXNlciB3aWxsIGJlIHNlbnQgdG8gbmV4dCBzdGVwIGluc3RlYWRcclxuICAgKi9cclxuICBza2lwcGFibGU/OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCB1c2VNdWx0aVN0ZXBEaWFsb2cgPSA8SUQgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KHBhcmFtczoge1xyXG4gIHN0ZXBzOiBNYXliZVJlZjxBcnJheTxEaWFsb2dTdGVwPElEPj4+XHJcbiAgcmVzb2x2ZU5leHRTdGVwPzogKHBhcmFtczogeyBjdXJyZW50U3RlcDogRGlhbG9nU3RlcDxJRD47IHJlc2V0OiBib29sZWFuIH0pID0+IElEXHJcbiAgcmVzb2x2ZVByZXZpb3VzU3RlcD86IChwYXJhbXM6IHsgY3VycmVudFN0ZXA6IERpYWxvZ1N0ZXA8SUQ+IH0pID0+IElEXHJcbn0pID0+IHtcclxuICBjb25zdCBzdGVwcyA9IGNvbXB1dGVkKCgpID0+IHVucmVmKHBhcmFtcy5zdGVwcykuZmlsdGVyKChzKSA9PiAhcy5za2lwcGFibGUpKVxyXG5cclxuICBjb25zdCBzdGVwSWQgPSByZWY8SUQ+KHN0ZXBzLnZhbHVlWzBdIS5pZClcclxuICBjb25zdCBzdGVwID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgY3VycmVudFN0ZXAgPSBzdGVwcy52YWx1ZS5maW5kKChzKSA9PiBzLmlkID09PSBzdGVwSWQudmFsdWUpXHJcbiAgICBpZiAoIWN1cnJlbnRTdGVwKSB7XHJcbiAgICAgIHRocm93IG5ldyBMb2dpY0Vycm9yKCdJbnZhbGlkIHN0ZXBzIGFycmF5IG9yIHN0ZXBJZCBwcm92aWRlZCcpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbnRTdGVwXHJcbiAgfSlcclxuXHJcbiAgY29uc3QgbmV4dE9yZGVyZWRTdGVwID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gc3RlcHMudmFsdWUuZmluZEluZGV4KChzKSA9PiBzLmlkID09PSBzdGVwSWQudmFsdWUpXHJcbiAgICBpZiAoY3VycmVudEluZGV4ID09PSAtMSkge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV4dFN0ZXAgPSBzdGVwcy52YWx1ZVtjdXJyZW50SW5kZXggKyAxXVxyXG4gICAgaWYgKG5leHRTdGVwPy5pZCA9PT0gc3RlcElkLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV4dFN0ZXBcclxuICB9KVxyXG5cclxuICBjb25zdCBwcmV2aW91c09yZGVyZWRTdGVwID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gc3RlcHMudmFsdWUuZmluZEluZGV4KChzKSA9PiBzLmlkID09PSBzdGVwSWQudmFsdWUpXHJcbiAgICBpZiAoY3VycmVudEluZGV4ID09PSAtMSkge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcHJldmlvdXNTdGVwID0gc3RlcHMudmFsdWVbY3VycmVudEluZGV4IC0gMV1cclxuICAgIGlmIChwcmV2aW91c1N0ZXA/LmlkID09PSBzdGVwSWQudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwcmV2aW91c1N0ZXBcclxuICB9KVxyXG5cclxuICBjb25zdCBuZXh0U3RlcCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmIChwYXJhbXMucmVzb2x2ZU5leHRTdGVwKSB7XHJcbiAgICAgIGNvbnN0IG5leHRTdGVwSWQgPSBwYXJhbXMucmVzb2x2ZU5leHRTdGVwKHtcclxuICAgICAgICBjdXJyZW50U3RlcDogc3RlcC52YWx1ZSxcclxuICAgICAgICByZXNldDogZmFsc2VcclxuICAgICAgfSlcclxuICAgICAgY29uc3QgbmV4dFN0ZXAgPSBzdGVwcy52YWx1ZS5maW5kKChzKSA9PiBzLmlkID09PSBuZXh0U3RlcElkKVxyXG4gICAgICBpZiAobmV4dFN0ZXA/LmlkID09PSBzdGVwSWQudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBuZXh0U3RlcFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG5leHRPcmRlcmVkU3RlcC52YWx1ZVxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIGNvbnN0IHByZXZpb3VzU3RlcCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmIChwYXJhbXMucmVzb2x2ZVByZXZpb3VzU3RlcCkge1xyXG4gICAgICBjb25zdCBwcmV2aW91c1N0ZXBJZCA9IHBhcmFtcy5yZXNvbHZlUHJldmlvdXNTdGVwKHsgY3VycmVudFN0ZXA6IHN0ZXAudmFsdWUgfSlcclxuICAgICAgY29uc3QgcHJldmlvdXNTdGVwID0gc3RlcHMudmFsdWUuZmluZCgocykgPT4gcy5pZCA9PT0gcHJldmlvdXNTdGVwSWQpXHJcbiAgICAgIGlmIChwcmV2aW91c1N0ZXA/LmlkID09PSBzdGVwSWQudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHByZXZpb3VzU3RlcFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHByZXZpb3VzT3JkZXJlZFN0ZXAudmFsdWVcclxuICAgIH1cclxuICB9KVxyXG5cclxuICBjb25zdCB3YWxrVG9BZGphY2VudFN0ZXAgPSAoZm9yd2FyZDogYm9vbGVhbikgPT4ge1xyXG4gICAgY29uc3QgYWRqYWNlbnRTdGVwID0gZm9yd2FyZCA/IG5leHRPcmRlcmVkU3RlcC52YWx1ZSA6IHByZXZpb3VzT3JkZXJlZFN0ZXAudmFsdWVcclxuICAgIGlmIChhZGphY2VudFN0ZXApIHtcclxuICAgICAgc3RlcElkLnZhbHVlID0gYWRqYWNlbnRTdGVwLmlkXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBnb1RvTmV4dE9yZGVyZWRTdGVwID0gKCkgPT4gd2Fsa1RvQWRqYWNlbnRTdGVwKHRydWUpXHJcbiAgY29uc3QgZ29Ub1ByZXZpb3VzT3JkZXJlZFN0ZXAgPSAoKSA9PiB3YWxrVG9BZGphY2VudFN0ZXAoZmFsc2UpXHJcbiAgY29uc3QgZ29Ub1N0ZXAgPSAoaWQ6IElEKSA9PiB7XHJcbiAgICBjb25zdCBzdGVwSW5kZXggPSBzdGVwcy52YWx1ZS5maW5kSW5kZXgoKHMpID0+IHMuaWQgPT09IGlkKVxyXG4gICAgaWYgKHN0ZXBJbmRleCA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgc3RlcElkLnZhbHVlID0gc3RlcHMudmFsdWVbc3RlcEluZGV4XS5pZFxyXG4gIH1cclxuICBjb25zdCBnb1RvTmV4dFN0ZXAgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBuZXh0U3RlcElkID0gbmV4dFN0ZXAudmFsdWU/LmlkXHJcbiAgICBpZiAobmV4dFN0ZXBJZCkge1xyXG4gICAgICBnb1RvU3RlcChuZXh0U3RlcElkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3QgZ29Ub1ByZXZpb3VzU3RlcCA9ICgpID0+IHtcclxuICAgIGNvbnN0IHByZXZpb3VzU3RlcElkID0gcHJldmlvdXNTdGVwLnZhbHVlPy5pZFxyXG4gICAgaWYgKHByZXZpb3VzU3RlcElkKSB7XHJcbiAgICAgIGdvVG9TdGVwKHByZXZpb3VzU3RlcElkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3QgcmVzZXRTdGVwID0gKCkgPT4ge1xyXG4gICAgaWYgKHBhcmFtcy5yZXNvbHZlTmV4dFN0ZXApIHtcclxuICAgICAgY29uc3QgbmV4dFN0ZXBJZCA9IHBhcmFtcy5yZXNvbHZlTmV4dFN0ZXAoe1xyXG4gICAgICAgIGN1cnJlbnRTdGVwOiBzdGVwLnZhbHVlLFxyXG4gICAgICAgIHJlc2V0OiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICAgIGdvVG9TdGVwKG5leHRTdGVwSWQpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdGVwSWQudmFsdWUgPSBzdGVwcy52YWx1ZVswXSEuaWRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBzdGVwSWQsXHJcbiAgICBzdGVwLFxyXG4gICAgbmV4dFN0ZXAsXHJcbiAgICBwcmV2aW91c1N0ZXAsXHJcbiAgICBuZXh0T3JkZXJlZFN0ZXAsXHJcbiAgICBwcmV2aW91c09yZGVyZWRTdGVwLFxyXG4gICAgZ29Ub05leHRPcmRlcmVkU3RlcCxcclxuICAgIGdvVG9QcmV2aW91c09yZGVyZWRTdGVwLFxyXG4gICAgZ29Ub1N0ZXAsXHJcbiAgICBnb1RvTmV4dFN0ZXAsXHJcbiAgICBnb1RvUHJldmlvdXNTdGVwLFxyXG4gICAgcmVzZXRTdGVwXHJcbiAgfVxyXG59XHJcblxyXG4vLyBGb3Igc29tZSByZWFzb24gUGFzY2FsQ2FzZSBvZmYgdHlwZS1mZXN0IGJyZWFrcyB2dWUtdHNjIGluIHRoaXMgc2NlbmFyaW9cclxudHlwZSBVcHBlckZpcnN0PFMgZXh0ZW5kcyBzdHJpbmc+ID0gUyBleHRlbmRzIGAke2luZmVyIFR9JHtpbmZlciBVfWBcclxuICA/IGAke1VwcGVyY2FzZTxUPn0ke1V9YFxyXG4gIDogU1xyXG5cclxuZXhwb3J0IGNvbnN0IHVzZU11bHRpcGxlRGlhbG9nQnJhbmNoaW5nID0gPFNwZWNpYWxDb25kaXRpb25zIGV4dGVuZHMgc3RyaW5nPihwYXJhbXM6IHtcclxuICBvcGVuOiBNb2RlbFJlZjxib29sZWFuLCBzdHJpbmcsIGJvb2xlYW4sIGJvb2xlYW4+XHJcbiAgY29uZGl0aW9uczogeyBba2V5IGluIFNwZWNpYWxDb25kaXRpb25zXTogUmVmPGJvb2xlYW4+IH1cclxuICAvKipcclxuICAgKiBEZWZhdWx0IGNvbmRpdGlvbiBpcyBkaXNhYmxlZCBhbmQgd2lsbCBhbHdheXMgYmUgZmFsc2UuXHJcbiAgICogRGVmYXVsdDogZmFsc2VcclxuICAgKi9cclxuICBub0RlZmF1bHQ/OiBib29sZWFuXHJcbn0pID0+IHtcclxuICBjb25zdCBvcGVuID0gcGFyYW1zLm9wZW5cclxuICBjb25zdCBjb25kaXRpb25PcGVuQ29tcHV0ZWRzID0gT2JqZWN0LmVudHJpZXMocGFyYW1zLmNvbmRpdGlvbnMpLnJlZHVjZShcclxuICAgIChhY2MsIGVudHJ5KSA9PiB7XHJcbiAgICAgIGNvbnN0IGtleSA9IGBvcGVuJHt1cHBlckZpcnN0KFxyXG4gICAgICAgIGVudHJ5WzBdXHJcbiAgICAgICl9YCBhcyBgb3BlbiR7VXBwZXJGaXJzdDxTcGVjaWFsQ29uZGl0aW9ucz59YFxyXG4gICAgICBjb25zdCBjb25kaXRpb24gPSBlbnRyeVsxXSBhcyBSZWY8Ym9vbGVhbj5cclxuXHJcbiAgICAgIGFjY1trZXldID0gY29tcHV0ZWQoe1xyXG4gICAgICAgIGdldDogKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFjb25kaXRpb24udmFsdWUpIHJldHVybiBmYWxzZVxyXG5cclxuICAgICAgICAgIHJldHVybiBvcGVuLnZhbHVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIChvcGVuLnZhbHVlID0gZmFsc2UpXHJcbiAgICAgICAgICBpZiAoIWNvbmRpdGlvbi52YWx1ZSkgcmV0dXJuIGZhbHNlXHJcblxyXG4gICAgICAgICAgY29uZGl0aW9uLnZhbHVlID0gdmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybiBhY2NcclxuICAgIH0sXHJcbiAgICB7fSBhcyBSZWNvcmQ8YG9wZW4ke1VwcGVyRmlyc3Q8U3BlY2lhbENvbmRpdGlvbnM+fWAsIFdyaXRhYmxlQ29tcHV0ZWRSZWY8Ym9vbGVhbj4+XHJcbiAgKVxyXG5cclxuICBjb25zdCBpc0RlZmF1bHRCcmFuY2ggPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAhcGFyYW1zLm5vRGVmYXVsdCAmJlxyXG4gICAgICB2YWx1ZXM8UmVmPGJvb2xlYW4+Pihjb25kaXRpb25PcGVuQ29tcHV0ZWRzKS5ldmVyeSgoYykgPT4gIWMudmFsdWUpXHJcbiAgICApXHJcbiAgfSlcclxuXHJcbiAgY29uc3Qgb3BlbkRlZmF1bHQgPSBjb21wdXRlZCh7XHJcbiAgICBnZXQ6ICgpID0+IHtcclxuICAgICAgaWYgKCFpc0RlZmF1bHRCcmFuY2gudmFsdWUpIHJldHVybiBmYWxzZVxyXG4gICAgICByZXR1cm4gb3Blbi52YWx1ZVxyXG4gICAgfSxcclxuICAgIHNldDogKHZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICghdmFsdWUpIHJldHVybiAob3Blbi52YWx1ZSA9IGZhbHNlKVxyXG4gICAgICBpZiAoIWlzRGVmYXVsdEJyYW5jaC52YWx1ZSkgcmV0dXJuIGZhbHNlXHJcblxyXG4gICAgICBvcGVuLnZhbHVlID0gdmFsdWVcclxuICAgIH1cclxuICB9KVxyXG5cclxuICAvLyBJZiBhbnkgb2YgdGhlIGNvbmRpdGlvbnMgY2hhbmdlLCBjbG9zZSBvcGVuZXJcclxuICAvLyAoc29tZXRpbWVzIGEgZmxvdyBtYXkgZmluaXNoIGFuZCB1cGRhdGUgdG8gJ29wZW4nIG1heSBub3QgaGF2ZSBlbm91Z2ggdGltZSB0byBwcm9wYWdhdGUsXHJcbiAgLy8gc28gc29tZSBkaWFsb2cgbWF5IHN0YXkgb3BlbilcclxuICB3YXRjaChcclxuICAgICgpID0+XHJcbiAgICAgIHZhbHVlczxSZWY8Ym9vbGVhbj4+KHBhcmFtcy5jb25kaXRpb25zKVxyXG4gICAgICAgIC5tYXAoKGMpID0+IGMudmFsdWUudG9TdHJpbmcoKSlcclxuICAgICAgICAuam9pbignLScpLFxyXG4gICAgKG5ld1ZhbCwgb2xkVmFsKSA9PiB7XHJcbiAgICAgIGlmIChuZXdWYWwgIT09IG9sZFZhbCAmJiBvcGVuLnZhbHVlKSB7XHJcbiAgICAgICAgb3Blbi52YWx1ZSA9IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICApXHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBvcGVuLFxyXG4gICAgb3BlbkRlZmF1bHQsXHJcbiAgICAuLi5jb25kaXRpb25PcGVuQ29tcHV0ZWRzXHJcbiAgfVxyXG59XHJcbiJdLCJmaWxlIjoiRDovc3BlY2tsZS1zZXJ2ZXIvcGFja2FnZXMvZnJvbnRlbmQtMi9saWIvY29tbW9uL2NvbXBvc2FibGVzL2RpYWxvZy50cyJ9