{"version":3,"file":"8xT4aYdB.js","sources":["../../../../../../../app/services/discount-service.ts","../../../../../../@vueform/multiselect/dist/multiselect.mjs","../../../../../../../app/utils/formatNumber.ts","../../../../../../../app/constants/shipping-instructions.ts","../../../../../../../app/constants/package-options.ts","../../../../../../../app/constants/carriers.ts","../../../../../../../app/constants/country.ts","../../../../../../../app/composables/useAddress.ts","../../../../../../../app/constants/discount-types.ts","../../../../../../../app/composables/usePromoDisplay.ts","../../../../../../../app/utils/roundToTwo.ts"],"sourcesContent":["import { get, post } from \"./api-client\";\r\nimport type { DiscountViewModel } from '@/types/models/discount/discount-view-model';\r\nimport type { DiscountReplyViewModel } from '@/types/models/discount/discount-reply-view-model';\r\nimport type { ApplyDiscountViewModel } from '@/types/models/discount/apply-discount-view-model';\r\nimport type { CustomerCompanyDiscountViewModel } from '@/types/models/product/customer-company-discount-view-model';\r\n\r\nexport default {\r\n getAvailableDiscounts: async (isDraft: boolean) => get('/discount/getAvailableDiscount', { params: { isDraft: isDraft } }),\r\n\r\n deleteDiscount: async (discountId: number) => post('/discount/deleteDiscount/' + discountId),\r\n\r\n applyDiscount: async (data: ApplyDiscountViewModel) => post('/discount/applyDiscount', data),\r\n\r\n addDiscountToOrder: async (couponCodeId: number) => post('/discount/addDiscountToOrder', couponCodeId),\r\n\r\n removeDiscountFromOrder: async () => post('/discount/removeDiscountFromOrder'),\r\n\r\n getCustomerCompanyDiscountAsync: async (customerId: number | null = null, companyId: number | null = null) => {\r\n return get('/discount/getCustomerCompanyDiscountAsync', { params: { customerId, companyId } });\r\n }\r\n};","import { toRefs, getCurrentInstance, customRef, ref, computed, watch, nextTick, onMounted, onBeforeUnmount, shallowRef, openBlock, createElementBlock, normalizeClass, createElementVNode, mergeProps, createCommentVNode, withModifiers, Fragment, renderList, renderSlot, withKeys, toDisplayString, createBlock, Teleport } from 'vue';\n\nfunction isNullish (val) {\n return val === null || val === undefined\n}\n\nfunction useData (props, context, dep)\n{\n const { object, valueProp, mode } = toRefs(props);\n\n const $this = getCurrentInstance().proxy;\n\n // ============ DEPENDENCIES ============\n\n const iv = dep.iv;\n\n // =============== METHODS ==============\n\n const update = (val, triggerInput = true) => {\n // Setting object(s) as internal value\n iv.value = makeInternal(val);\n\n // Setting object(s) or plain value as external \n // value based on `option` setting\n const externalVal = makeExternal(val);\n\n context.emit('change', externalVal, $this);\n\n if (triggerInput) {\n context.emit('input', externalVal);\n context.emit('update:modelValue', externalVal);\n }\n }; \n\n // no export\n const makeExternal = (val) => {\n // If external value should be object\n // no transformation is required\n if (object.value) {\n return val\n }\n\n // No need to transform if empty value\n if (isNullish(val)) {\n return val\n }\n\n // If external should be plain transform\n // value object to plain values\n return !Array.isArray(val) ? val[valueProp.value] : val.map(v => v[valueProp.value])\n };\n\n // no export\n const makeInternal = (val) => {\n if (isNullish(val)) {\n return mode.value === 'single' ? {} : []\n }\n\n return val\n };\n\n return {\n update,\n }\n}\n\n// Polyfill for Vue <3.3 for getters only\n// https://vuejs.org/api/reactivity-utilities.html#toref\nfunction toRef (get) {\n return customRef(() => ({ get, set: /* istanbul ignore next */ () => { } }))\n}\n\nfunction useValue (props, context)\n{\n const { value, modelValue, mode, valueProp } = toRefs(props);\n\n // ================ DATA ================\n\n // internalValue\n const iv = ref(mode.value !== 'single' ? [] : {});\n\n // ============== COMPUTED ==============\n\n /* istanbul ignore next */\n // externalValue\n const ev = toRef(() => {\n return modelValue.value !== undefined ? modelValue.value : value.value\n });\n\n const plainValue = computed(() => {\n return mode.value === 'single' ? iv.value[valueProp.value] : iv.value.map(v=>v[valueProp.value])\n });\n\n const textValue = toRef(() => {\n return mode.value !== 'single' ? iv.value.map(v=>v[valueProp.value]).join(',') : iv.value[valueProp.value]\n });\n\n return {\n iv,\n internalValue: iv,\n ev,\n externalValue: ev,\n textValue,\n plainValue,\n }\n}\n\nfunction useSearch (props, context, dep)\n{\n const { regex } = toRefs(props);\n\n const $this = getCurrentInstance().proxy;\n\n // ============ DEPENDENCIES ============\n\n const isOpen = dep.isOpen;\n const open = dep.open;\n\n // ================ DATA ================\n\n const search = ref(null);\n\n // =============== METHODS ==============\n\n const clearSearch = () => {\n search.value = '';\n };\n\n const handleSearchInput = (e) => {\n search.value = e.target.value;\n };\n\n const handleKeypress = (e) => {\n if (regex.value) {\n let regexp = regex.value;\n\n if (typeof regexp === 'string') {\n regexp = new RegExp(regexp);\n }\n\n if (!e.key.match(regexp)) {\n e.preventDefault();\n }\n }\n };\n\n const handlePaste = (e) => {\n if (regex.value) {\n let clipboardData = e.clipboardData || /* istanbul ignore next */ window.clipboardData;\n let pastedData = clipboardData.getData('Text');\n\n let regexp = regex.value;\n\n if (typeof regexp === 'string') {\n regexp = new RegExp(regexp);\n }\n \n if (!pastedData.split('').every(c => !!c.match(regexp))) {\n e.preventDefault();\n }\n }\n\n context.emit('paste', e, $this);\n };\n\n // ============== WATCHERS ==============\n\n watch(search, (val) => {\n if (!isOpen.value && val) {\n open();\n }\n\n context.emit('search-change', val, $this);\n });\n\n return {\n search,\n clearSearch,\n handleSearchInput,\n handleKeypress,\n handlePaste,\n }\n}\n\nfunction usePointer$1 (props, context, dep)\n{\n const { groupSelect, mode, groups, disabledProp } = toRefs(props);\n\n // ================ DATA ================\n\n const pointer = ref(null);\n\n // =============== METHODS ==============\n\n const setPointer = (option) => {\n if (option === undefined || (option !== null && option[disabledProp.value])) {\n return\n }\n\n if (groups.value && option && option.group && (mode.value === 'single' || !groupSelect.value)) {\n return\n }\n\n pointer.value = option;\n };\n\n const clearPointer = () => {\n setPointer(null);\n };\n\n return {\n pointer,\n setPointer,\n clearPointer,\n }\n}\n\nfunction normalize (str, strict = true) {\n return strict\n ? String(str).toLowerCase().trim()\n : String(str).toLowerCase()\n .normalize('NFD')\n .trim()\n .replace(/æ/g, 'ae')\n .replace(/œ/g, 'oe')\n .replace(/ø/g, 'o')\n .replace(/\\p{Diacritic}/gu, '')\n}\n\nfunction isObject (variable) {\n return Object.prototype.toString.call(variable) === '[object Object]'\n}\n\nfunction arraysEqual (array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n \n const array2Sorted = array2.slice().sort();\n\n return array1.slice().sort().every(function(value, index) {\n return value === array2Sorted[index];\n })\n}\n\n/* istanbul ignore next */\nconst objectsEqual = (obj1, obj2) => {\n // If both are strictly equal, return true\n if (obj1 === obj2) {\n return true\n }\n\n // If either is not an object or is null, return false (handles primitive types and null)\n if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {\n return false\n }\n\n // Get the keys of both objects\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n // If they have a different number of keys, they're not equal\n if (keys1.length !== keys2.length) {\n return false\n }\n\n // Compare each key-value pair recursively\n for (let key of keys1) {\n // Check if both objects have the same key\n if (!keys2.includes(key)) {\n return false\n }\n\n // Recursively compare the values\n if (!objectsEqual(obj1[key], obj2[key])) {\n return false\n }\n }\n\n return true\n};\n\nfunction useOptions (props, context, dep)\n{\n const { \n options, mode, trackBy: trackBy_, limit, hideSelected, createTag, createOption: createOption_, label,\n appendNewTag, appendNewOption: appendNewOption_, multipleLabel, object, loading, delay, resolveOnLoad,\n minChars, filterResults, clearOnSearch, clearOnSelect, valueProp, allowAbsent, groupLabel,\n canDeselect, max, strict, closeOnSelect, closeOnDeselect, groups: groupped, reverse, infinite,\n groupOptions, groupHideEmpty, groupSelect, onCreate, disabledProp, searchStart, searchFilter,\n } = toRefs(props);\n\n const $this = getCurrentInstance().proxy;\n\n // ============ DEPENDENCIES ============\n\n const iv = dep.iv;\n const ev = dep.ev;\n const search = dep.search;\n const clearSearch = dep.clearSearch;\n const update = dep.update;\n const pointer = dep.pointer;\n const setPointer = dep.setPointer;\n const clearPointer = dep.clearPointer;\n const focus = dep.focus;\n const deactivate = dep.deactivate;\n const close = dep.close;\n const localize = dep.localize;\n\n // ================ DATA ================\n\n // no export\n // appendedOptions\n const ap = ref([]);\n\n // no export\n // resolvedOptions\n const ro = ref([]);\n\n const resolving = ref(false);\n\n // no export\n const searchWatcher = ref(null);\n\n const offset = ref(infinite.value && limit.value === -1 ? 10 : limit.value);\n\n // ============== COMPUTED ==============\n\n const resolvedOptions = computed({\n get: () => ro.value,\n set: (v) => ro.value = v\n });\n\n // no export\n const createOption = toRef(() => {\n return createTag.value || createOption_.value || false\n });\n\n // no export\n const appendNewOption = toRef(() => {\n if (appendNewTag.value !== undefined) {\n return appendNewTag.value\n } else if (appendNewOption_.value !== undefined) {\n return appendNewOption_.value\n }\n\n return true\n });\n\n // no export\n // extendedOptions\n const eo = computed(() => {\n if (groupped.value) {\n let groups = eg.value || /* istanbul ignore next */ [];\n\n let eo = [];\n\n groups.forEach((group) => {\n optionsToArray(group[groupOptions.value]).forEach((option) => {\n eo.push(Object.assign({}, option, group[disabledProp.value] ? { [disabledProp.value]: true } : {}));\n });\n });\n\n return eo\n } else {\n let eo = optionsToArray(ro.value || /* istanbul ignore next */ []);\n\n if (ap.value.length) {\n eo = eo.concat(ap.value);\n }\n\n return eo\n }\n });\n\n // preFilteredOptions\n const pfo = computed(() => {\n let options = eo.value;\n\n if (reverse.value) {\n options = options.reverse();\n }\n\n if (createdOption.value.length) {\n options = createdOption.value.concat(options);\n }\n\n return filterOptions(options)\n });\n\n // filteredOptions\n const fo = computed(() => {\n let options = pfo.value;\n\n if (offset.value > 0) {\n options = options.slice(0, offset.value);\n }\n\n return options\n });\n\n // no export\n // extendedGroups\n const eg = computed(() => {\n if (!groupped.value) {\n return []\n }\n\n let eg = [];\n let groups = ro.value || /* istanbul ignore next */ [];\n\n if (ap.value.length) {\n eg.push({\n [groupLabel.value]: ' ',\n [groupOptions.value]: [...ap.value],\n __CREATE__: true\n });\n }\n\n return eg.concat(groups)\n });\n\n // preFilteredGroups\n const pfg = computed(() => {\n let groups = [...eg.value].map(g => ({...g}));\n\n if (createdOption.value.length) {\n if (groups[0] && groups[0].__CREATE__) {\n groups[0][groupOptions.value] = [...createdOption.value, ...groups[0][groupOptions.value]];\n } else {\n groups = [{\n [groupLabel.value]: ' ',\n [groupOptions.value]: [...createdOption.value],\n __CREATE__: true\n }].concat(groups);\n }\n }\n\n return groups\n });\n\n // filteredGroups\n const fg = computed(() => {\n if (!groupped.value) {\n return []\n }\n\n let options = pfg.value;\n\n return filterGroups((options || /* istanbul ignore next */ []).map((group, index) => {\n const arrayOptions = optionsToArray(group[groupOptions.value]);\n\n return {\n ...group,\n index,\n group: true,\n [groupOptions.value]: filterOptions(arrayOptions, false).map(o => Object.assign({}, o, group[disabledProp.value] ? { [disabledProp.value]: true } : {})),\n __VISIBLE__: filterOptions(arrayOptions).map(o => Object.assign({}, o, group[disabledProp.value] ? { [disabledProp.value]: true } : {})),\n }\n // Difference between __VISIBLE__ and {groupOptions}: visible does not contain selected options when hideSelected=true\n }))\n });\n\n const hasSelected = computed(() => {\n switch (mode.value) {\n case 'single':\n return !isNullish(iv.value[valueProp.value])\n\n case 'multiple':\n case 'tags':\n return !isNullish(iv.value) && iv.value.length > 0\n }\n });\n\n const multipleLabelText = computed(() => {\n return multipleLabel.value !== undefined\n ? multipleLabel.value(iv.value, $this)\n : (iv.value && iv.value.length > 1 ? `${iv.value.length} options selected` : `1 option selected`)\n });\n\n const noOptions = toRef(() => {\n return !eo.value.length && !resolving.value && !createdOption.value.length\n });\n\n\n const noResults = toRef(() => {\n return eo.value.length > 0 && fo.value.length == 0 && ((search.value && groupped.value) || !groupped.value)\n });\n\n // no export\n const createdOption = computed(() => {\n if (createOption.value === false || !search.value) {\n return []\n }\n\n if (getOptionByTrackBy(search.value) !== -1) {\n return []\n }\n\n return [{\n [valueProp.value]: search.value,\n [trackBy.value[0]]: search.value,\n [label.value]: search.value,\n __CREATE__: true,\n }]\n });\n\n const trackBy = computed(() => {\n return trackBy_.value ? (Array.isArray(trackBy_.value) ? trackBy_.value : [trackBy_.value]) : [label.value]\n });\n\n // no export\n const nullValue = toRef(() => {\n switch (mode.value) {\n case 'single':\n return null\n\n case 'multiple':\n case 'tags':\n return []\n }\n });\n\n const busy = toRef(() => {\n return loading.value || resolving.value\n });\n\n // =============== METHODS ==============\n\n /**\n * @param {array|object|string|number} option \n */\n const select = (option) => {\n if (typeof option !== 'object') {\n option = getOption(option);\n }\n\n switch (mode.value) {\n case 'single':\n update(option);\n break\n\n case 'multiple':\n case 'tags':\n update((iv.value).concat(option));\n break\n }\n\n context.emit('select', finalValue(option), option, $this);\n };\n\n const deselect = (option) => {\n if (typeof option !== 'object') {\n option = getOption(option);\n }\n\n switch (mode.value) {\n case 'single':\n clear();\n break\n\n case 'tags':\n case 'multiple':\n update(Array.isArray(option)\n ? iv.value.filter(v => option.map(o => o[valueProp.value]).indexOf(v[valueProp.value]) === -1)\n : iv.value.filter(v => v[valueProp.value] != option[valueProp.value]));\n break\n }\n\n context.emit('deselect', finalValue(option), option, $this);\n };\n\n // no export\n const finalValue = (option) => {\n return object.value ? option : option[valueProp.value]\n };\n\n const remove = (option) => {\n deselect(option);\n };\n\n const handleTagRemove = (option, e) => {\n if (e.button !== 0) {\n e.preventDefault();\n return\n }\n\n remove(option);\n };\n\n const clear = () => {\n update(nullValue.value);\n context.emit('clear', $this);\n };\n\n const isSelected = (option) => {\n if (option.group !== undefined) {\n return mode.value === 'single' ? false : areAllSelected(option[groupOptions.value]) && option[groupOptions.value].length\n }\n\n switch (mode.value) {\n case 'single':\n return !isNullish(iv.value) && (\n iv.value[valueProp.value] == option[valueProp.value] ||\n (typeof iv.value[valueProp.value] === 'object' && typeof option[valueProp.value] === 'object' && objectsEqual(iv.value[valueProp.value], option[valueProp.value]))\n )\n\n case 'tags':\n case 'multiple':\n return !isNullish(iv.value) && iv.value.map(o => o[valueProp.value]).indexOf(option[valueProp.value]) !== -1\n }\n };\n\n const isDisabled = (option) => {\n return option[disabledProp.value] === true\n };\n\n const isMax = () => {\n if (max === undefined || max.value === -1 || (!hasSelected.value && max.value > 0)) {\n return false\n }\n \n return iv.value.length >= max.value\n };\n\n const handleOptionClick = (option) => {\n if (isDisabled(option)) {\n return\n }\n\n if (onCreate.value && !isSelected(option) && option.__CREATE__) {\n option = { ...option };\n delete option.__CREATE__;\n\n option = onCreate.value(option, $this);\n \n if (option instanceof Promise) {\n resolving.value = true;\n option.then((result) => {\n resolving.value = false;\n handleOptionSelect(result);\n });\n\n return\n } \n }\n\n handleOptionSelect(option);\n };\n\n const handleOptionSelect = (option) => {\n if (option.__CREATE__) {\n option = { ...option };\n delete option.__CREATE__;\n }\n \n switch (mode.value) {\n case 'single':\n if (option && isSelected(option)) {\n if (canDeselect.value) {\n deselect(option);\n }\n\n if (closeOnDeselect.value) {\n clearPointer();\n close();\n }\n return\n }\n\n if (option) {\n handleOptionAppend(option);\n }\n\n /* istanbul ignore else */\n if (clearOnSelect.value) {\n clearSearch();\n }\n\n if (closeOnSelect.value) {\n clearPointer();\n close();\n }\n\n if (option) {\n select(option);\n }\n break\n\n case 'multiple':\n if (option && isSelected(option)) {\n deselect(option);\n\n if (closeOnDeselect.value) {\n clearPointer();\n close();\n }\n return\n }\n\n if (isMax()) {\n context.emit('max', $this);\n return\n }\n\n if (option) {\n handleOptionAppend(option);\n select(option);\n }\n\n if (clearOnSelect.value) {\n clearSearch();\n }\n\n if (hideSelected.value) {\n clearPointer();\n }\n\n if (closeOnSelect.value) {\n close();\n }\n break\n\n case 'tags':\n if (option && isSelected(option)) {\n deselect(option);\n\n if (closeOnDeselect.value) {\n clearPointer();\n close();\n }\n return\n }\n\n if (isMax()) {\n context.emit('max', $this);\n return\n }\n\n if (option) {\n handleOptionAppend(option);\n }\n\n if (clearOnSelect.value) {\n clearSearch();\n }\n\n if (option) {\n select(option);\n }\n\n if (hideSelected.value) {\n clearPointer();\n }\n\n if (closeOnSelect.value) {\n close();\n }\n break\n }\n\n if (!closeOnSelect.value) {\n focus();\n }\n };\n\n const handleGroupClick = (group) => {\n if (isDisabled(group) || mode.value === 'single' || !groupSelect.value) {\n return\n }\n\n switch (mode.value) {\n case 'multiple':\n case 'tags':\n if (areAllEnabledSelected(group[groupOptions.value])) {\n deselect(group[groupOptions.value]);\n } else {\n select(group[groupOptions.value]\n .filter(o => iv.value.map(v => v[valueProp.value]).indexOf(o[valueProp.value]) === -1)\n .filter(o => !o[disabledProp.value])\n .filter((o, k) => iv.value.length + 1 + k <= max.value || max.value === -1)\n );\n }\n\n if (hideSelected.value && pointer.value) {\n // Refresh pointer because pointer.__VISIBLE__ are not reactive #354\n setPointer(fg.value.filter(g => !g[disabledProp.value])[pointer.value.index]);\n }\n break\n }\n\n if (closeOnSelect.value) {\n deactivate();\n }\n };\n\n const handleOptionAppend = (option) => {\n if (getOption(option[valueProp.value]) === undefined && createOption.value) {\n context.emit('tag', option[valueProp.value], $this);\n context.emit('option', option[valueProp.value], $this);\n context.emit('create', option[valueProp.value], $this);\n\n if (appendNewOption.value) {\n appendOption(option);\n }\n\n clearSearch();\n }\n };\n\n const selectAll = () => {\n if (mode.value === 'single') {\n return\n }\n\n select(fo.value.filter(o => !o.disabled && !isSelected(o)));\n };\n\n // no export\n const areAllEnabledSelected = (options) => {\n return options.find(o => !isSelected(o) && !o[disabledProp.value]) === undefined\n };\n\n // no export\n const areAllSelected = (options) => {\n return options.find(o => !isSelected(o)) === undefined\n };\n\n const getOption = (val) => {\n return eo.value[eo.value.map(o => String(o[valueProp.value])).indexOf(String(val))]\n };\n\n // no export\n const getOptionByTrackBy = (val) => {\n return eo.value.findIndex((o) => {\n return trackBy.value.some((track) => {\n return (parseInt(o[track]) == o[track] ? parseInt(o[track]) : o[track]) === (parseInt(val) == val ? parseInt(val) : val)\n })\n })\n };\n\n // no export\n const shouldHideOption = (option) => {\n return ['tags', 'multiple'].indexOf(mode.value) !== -1 && hideSelected.value && isSelected(option)\n };\n\n // no export\n const appendOption = (option) => {\n ap.value.push(option);\n };\n\n // no export\n const filterGroups = (groups) => {\n // If the search has value we need to filter among \n // the ones that are visible to the user to avoid\n // displaying groups which technically have options\n // based on search but that option is already selected.\n return groupHideEmpty.value\n ? groups.filter(g => search.value\n ? g.__VISIBLE__.length\n : g[groupOptions.value].length\n )\n : groups.filter(g => search.value ? g.__VISIBLE__.length : true)\n };\n\n // no export\n const filterOptions = (options, excludeHideSelected = true) => {\n let fo = options;\n \n if (search.value && filterResults.value) {\n let filter = searchFilter.value;\n\n if (!filter) {\n filter = (option, query, $this) => {\n return trackBy.value.some(track => {\n let target = normalize(localize(option[track]), strict.value);\n\n return searchStart.value\n ? target.startsWith(normalize(query, strict.value))\n : target.indexOf(normalize(query, strict.value)) !== -1;\n })\n };\n }\n\n fo = fo.filter((o) => {\n return filter(o, search.value, $this)\n });\n }\n\n if (hideSelected.value && excludeHideSelected) {\n fo = fo.filter((option) => !shouldHideOption(option));\n }\n\n return fo\n };\n\n // no export\n const optionsToArray = (options) => {\n let uo = options;\n \n // Transforming an object to an array of objects\n if (isObject(uo)) {\n uo = Object.keys(uo).map((key) => {\n let val = uo[key];\n\n return { [valueProp.value]: key, [trackBy.value[0]]: val, [label.value]: val}\n });\n }\n\n // Transforming an plain arrays to an array of objects\n uo = uo.map((val) => {\n return typeof val === 'object' ? val : { [valueProp.value]: val, [trackBy.value[0]]: val, [label.value]: val}\n });\n\n return uo\n };\n\n // no export\n const initInternalValue = () => {\n if (!isNullish(ev.value)) {\n iv.value = makeInternal(ev.value);\n }\n };\n\n const resolveOptions = (callback) => {\n resolving.value = true;\n\n return new Promise((resolve, reject) => {\n options.value(search.value, $this).then((response) => {\n ro.value = response || [];\n\n if (typeof callback == 'function') {\n callback(response);\n }\n\n resolving.value = false;\n }).catch((e) => {\n console.error(e);\n\n ro.value = [];\n\n resolving.value = false;\n }).finally(() => {\n resolve();\n });\n })\n };\n\n // no export\n const refreshLabels = () => {\n if (!hasSelected.value) {\n return\n }\n\n if (mode.value === 'single') {\n let option = getOption(iv.value[valueProp.value]);\n\n /* istanbul ignore else */\n if (option !== undefined) {\n let newLabel = option[label.value];\n\n iv.value[label.value] = newLabel;\n\n if (object.value) {\n ev.value[label.value] = newLabel;\n }\n }\n } else {\n iv.value.forEach((val, i) => {\n let option = getOption(iv.value[i][valueProp.value]);\n\n /* istanbul ignore else */\n if (option !== undefined) {\n let newLabel = option[label.value];\n\n iv.value[i][label.value] = newLabel;\n\n if (object.value) {\n ev.value[i][label.value] = newLabel;\n }\n }\n });\n }\n };\n\n const refreshOptions = (callback) => {\n resolveOptions(callback);\n };\n\n // no export\n const makeInternal = (val) => {\n if (isNullish(val)) {\n return mode.value === 'single' ? {} : []\n }\n\n if (object.value) {\n return val\n }\n\n // If external should be plain transform value object to plain values\n return mode.value === 'single' ? getOption(val) || (allowAbsent.value ? {\n [label.value]: val,\n [valueProp.value]: val,\n [trackBy.value[0]]: val,\n } : {}) : val.filter(v => !!getOption(v) || allowAbsent.value).map(v => getOption(v) || {\n [label.value]: v,\n [valueProp.value]: v,\n [trackBy.value[0]]: v,\n })\n };\n\n // no export\n const initSearchWatcher = () => {\n searchWatcher.value = watch(search, (query) => {\n if (query.length < minChars.value || (!query && minChars.value !== 0)) {\n return\n }\n\n resolving.value = true;\n\n if (clearOnSearch.value) {\n ro.value = [];\n }\n setTimeout(() => {\n if (query != search.value) {\n return\n }\n\n options.value(search.value, $this).then((response) => {\n if (query == search.value || !search.value) {\n ro.value = response;\n pointer.value = fo.value.filter(o => o[disabledProp.value] !== true)[0] || null;\n resolving.value = false;\n }\n }).catch( /* istanbul ignore next */ (e) => {\n console.error(e);\n });\n }, delay.value);\n\n }, { flush: 'sync' });\n };\n\n // ================ HOOKS ===============\n\n if (mode.value !== 'single' && !isNullish(ev.value) && !Array.isArray(ev.value)) {\n throw new Error(`v-model must be an array when using \"${mode.value}\" mode`)\n }\n\n if (options && typeof options.value == 'function') {\n if (resolveOnLoad.value) {\n resolveOptions(initInternalValue);\n } else if (object.value == true) {\n initInternalValue();\n }\n }\n else {\n ro.value = options.value;\n\n initInternalValue();\n }\n \n // ============== WATCHERS ==============\n\n if (delay.value > -1) {\n initSearchWatcher();\n }\n\n watch(delay, (value, old) => {\n /* istanbul ignore else */\n if (searchWatcher.value) {\n searchWatcher.value();\n }\n\n if (value >= 0) {\n initSearchWatcher();\n }\n });\n\n watch(ev, (newValue) => {\n if (isNullish(newValue)) {\n update(makeInternal(newValue), false);\n return\n }\n\n switch (mode.value) {\n case 'single':\n if (object.value ? newValue[valueProp.value] != iv.value[valueProp.value] : newValue != iv.value[valueProp.value]) {\n update(makeInternal(newValue), false);\n }\n break\n\n case 'multiple':\n case 'tags':\n if (!arraysEqual(object.value ? newValue.map(o => o[valueProp.value]) : newValue, iv.value.map(o => o[valueProp.value]))) {\n update(makeInternal(newValue), false);\n }\n break\n }\n }, { deep: true });\n\n watch(options, (n, o) => {\n if (typeof props.options === 'function') {\n if (resolveOnLoad.value && (!o || (n && n.toString() !== o.toString()))) {\n resolveOptions();\n }\n } else {\n ro.value = props.options;\n\n if (!Object.keys(iv.value).length) {\n initInternalValue();\n }\n\n refreshLabels();\n }\n });\n\n watch(label, refreshLabels);\n\n watch(limit, (n,o) => {\n offset.value = infinite.value && n === -1 ? 10 : n;\n });\n\n return {\n resolvedOptions,\n pfo,\n fo,\n filteredOptions: fo,\n hasSelected,\n multipleLabelText,\n eo,\n extendedOptions: eo,\n eg,\n extendedGroups: eg,\n fg,\n filteredGroups: fg,\n noOptions,\n noResults,\n resolving,\n busy,\n offset,\n select,\n deselect,\n remove,\n selectAll,\n clear,\n isSelected,\n isDisabled,\n isMax,\n getOption,\n handleOptionClick,\n handleGroupClick,\n handleTagRemove,\n refreshOptions,\n resolveOptions,\n refreshLabels,\n }\n}\n\nfunction usePointer (props, context, dep)\n{\n const {\n valueProp, showOptions, searchable, groupLabel,\n groups: groupped, mode, groupSelect, disabledProp,\n groupOptions,\n } = toRefs(props);\n\n // ============ DEPENDENCIES ============\n\n const fo = dep.fo;\n const fg = dep.fg;\n const handleOptionClick = dep.handleOptionClick;\n const handleGroupClick = dep.handleGroupClick;\n const search = dep.search;\n const pointer = dep.pointer;\n const setPointer = dep.setPointer;\n const clearPointer = dep.clearPointer;\n const multiselect = dep.multiselect;\n const isOpen = dep.isOpen;\n\n // ============== COMPUTED ==============\n\n // no export\n const options = computed(() => {\n return fo.value.filter(o => !o[disabledProp.value])\n });\n\n const groups = computed(() => {\n return fg.value.filter(g => !g[disabledProp.value])\n });\n\n const canPointGroups = toRef(() => {\n return mode.value !== 'single' && groupSelect.value\n });\n\n const isPointerGroup = toRef(() => {\n return pointer.value && pointer.value.group\n });\n\n const currentGroup = computed(() => {\n return getParentGroup(pointer.value)\n });\n\n const prevGroup = computed(() => {\n const group = isPointerGroup.value ? pointer.value : /* istanbul ignore next */ getParentGroup(pointer.value);\n const groupIndex = groups.value.map(g => g[groupLabel.value]).indexOf(group[groupLabel.value]);\n let prevGroup = groups.value[groupIndex - 1];\n\n if (prevGroup === undefined) {\n prevGroup = lastGroup.value;\n }\n\n return prevGroup\n });\n \n const nextGroup = computed(() => {\n let nextIndex = groups.value.map(g => g.label).indexOf(isPointerGroup.value\n ? pointer.value[groupLabel.value]\n : getParentGroup(pointer.value)[groupLabel.value]) + 1;\n\n if (groups.value.length <= nextIndex) {\n nextIndex = 0;\n }\n\n return groups.value[nextIndex]\n });\n\n const lastGroup = computed(() => {\n return [...groups.value].slice(-1)[0]\n });\n \n const currentGroupFirstEnabledOption = computed(() => {\n return pointer.value.__VISIBLE__.filter(o => !o[disabledProp.value])[0]\n });\n\n const currentGroupPrevEnabledOption = computed(() => {\n const options = currentGroup.value.__VISIBLE__.filter(o => !o[disabledProp.value]);\n return options[options.map(o => o[valueProp.value]).indexOf(pointer.value[valueProp.value]) - 1]\n });\n \n const currentGroupNextEnabledOption = computed(() => {\n const options = getParentGroup(pointer.value).__VISIBLE__.filter(o => !o[disabledProp.value]);\n return options[options.map(o => o[valueProp.value]).indexOf(pointer.value[valueProp.value]) + 1]\n });\n\n const prevGroupLastEnabledOption = computed(() => {\n return [...prevGroup.value.__VISIBLE__.filter(o => !o[disabledProp.value])].slice(-1)[0]\n });\n\n const lastGroupLastEnabledOption = computed(() => {\n return [...lastGroup.value.__VISIBLE__.filter(o => !o[disabledProp.value])].slice(-1)[0]\n });\n\n // =============== METHODS ==============\n\n const isPointed = (option) => {\n return (!!pointer.value && (\n (!option.group && pointer.value[valueProp.value] === option[valueProp.value]) ||\n (option.group !== undefined && pointer.value[groupLabel.value] === option[groupLabel.value])\n )) ? true : undefined\n };\n\n const setPointerFirst = () => {\n setPointer(options.value[0] || null);\n };\n\n const selectPointer = () => {\n if (!pointer.value || pointer.value[disabledProp.value] === true) {\n return\n }\n\n if (isPointerGroup.value) {\n handleGroupClick(pointer.value);\n } else {\n handleOptionClick(pointer.value);\n }\n };\n\n const forwardPointer = () => {\n if (pointer.value === null) {\n setPointer((groupped.value && canPointGroups.value ? (!groups.value[0].__CREATE__ ? groups.value[0] : options.value[0]) : options.value[0]) || null);\n }\n else if (groupped.value && canPointGroups.value) {\n let nextPointer = isPointerGroup.value ? currentGroupFirstEnabledOption.value : currentGroupNextEnabledOption.value;\n\n if (nextPointer === undefined) {\n nextPointer = nextGroup.value;\n\n if (nextPointer.__CREATE__) {\n nextPointer = nextPointer[groupOptions.value][0];\n }\n }\n\n setPointer(nextPointer || /* istanbul ignore next */ null);\n } else {\n let next = options.value.map(o => o[valueProp.value]).indexOf(pointer.value[valueProp.value]) + 1;\n\n if (options.value.length <= next) {\n next = 0;\n }\n\n setPointer(options.value[next] || null);\n }\n\n nextTick(() => {\n adjustWrapperScrollToPointer();\n });\n };\n\n const backwardPointer = () => {\n if (pointer.value === null) {\n let prevPointer = options.value[options.value.length - 1];\n\n if (groupped.value && canPointGroups.value) {\n prevPointer = lastGroupLastEnabledOption.value;\n\n if (prevPointer === undefined) {\n prevPointer = lastGroup.value;\n }\n }\n\n setPointer(prevPointer || null);\n }\n else if (groupped.value && canPointGroups.value) {\n let prevPointer = isPointerGroup.value ? prevGroupLastEnabledOption.value : currentGroupPrevEnabledOption.value;\n\n if (prevPointer === undefined) {\n prevPointer = isPointerGroup.value ? prevGroup.value : currentGroup.value;\n\n if (prevPointer.__CREATE__) {\n prevPointer = prevGroupLastEnabledOption.value;\n\n if (prevPointer === undefined) {\n prevPointer = prevGroup.value;\n }\n }\n }\n\n setPointer(prevPointer || /* istanbul ignore next */ null);\n } else {\n let prevIndex = options.value.map(o => o[valueProp.value]).indexOf(pointer.value[valueProp.value]) - 1;\n\n if (prevIndex < 0) {\n prevIndex = options.value.length - 1;\n }\n\n setPointer(options.value[prevIndex] || null);\n }\n\n nextTick(() => {\n adjustWrapperScrollToPointer();\n });\n };\n\n const getParentGroup = (option) => {\n return groups.value.find((group) => {\n return group.__VISIBLE__.map(o => o[valueProp.value]).indexOf(option[valueProp.value]) !== -1\n })\n };\n\n // no export\n /* istanbul ignore next */\n const adjustWrapperScrollToPointer = () => {\n let pointedOption = multiselect.value.querySelector(`[data-pointed]`);\n\n if (!pointedOption) {\n return\n }\n\n let wrapper = pointedOption.parentElement.parentElement;\n\n if (groupped.value) {\n wrapper = isPointerGroup.value\n ? pointedOption.parentElement.parentElement.parentElement\n : pointedOption.parentElement.parentElement.parentElement.parentElement;\n }\n\n if (pointedOption.offsetTop + pointedOption.offsetHeight > wrapper.clientHeight + wrapper.scrollTop) {\n wrapper.scrollTop = pointedOption.offsetTop + pointedOption.offsetHeight - wrapper.clientHeight;\n }\n \n if (pointedOption.offsetTop < wrapper.scrollTop) {\n wrapper.scrollTop = pointedOption.offsetTop;\n }\n };\n\n // ============== WATCHERS ==============\n\n watch(search, (val) => {\n if (searchable.value) {\n if (val.length && showOptions.value) {\n setPointerFirst();\n } else {\n clearPointer();\n }\n }\n });\n\n watch(isOpen, (val) => {\n if (val && multiselect && multiselect.value) {\n let firstSelected = multiselect.value.querySelectorAll(`[data-selected]`)[0];\n\n if (!firstSelected) {\n return\n }\n\n let wrapper = firstSelected.parentElement.parentElement;\n \n nextTick(() => {\n // Removed because of #406\n /* istanbul ignore next */\n // if (wrapper.scrollTop > 0) {\n // return\n // }\n\n wrapper.scrollTop = firstSelected.offsetTop;\n });\n }\n });\n\n return {\n pointer,\n canPointGroups,\n isPointed,\n setPointerFirst,\n selectPointer,\n forwardPointer,\n backwardPointer,\n }\n}\n\nfunction getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nvar max = Math.max;\nvar min = Math.min;\nvar round = Math.round;\n\nfunction getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}\n\nfunction isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}\n\nfunction getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}\n\nfunction getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}\n\nfunction getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}\n\nfunction getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}\n\nfunction getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}\n\nfunction getComputedStyle$1(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle$1(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nfunction getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\n// means it doesn't take into account transforms.\n\nfunction getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}\n\nfunction getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}\n\nfunction getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}\n\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nfunction listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}\n\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle$1(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\nvar top = 'top';\nvar bottom = 'bottom';\nvar right = 'right';\nvar left = 'left';\nvar auto = 'auto';\nvar basePlacements = [top, bottom, right, left];\nvar start = 'start';\nvar end = 'end';\nvar clippingParents = 'clippingParents';\nvar viewport = 'viewport';\nvar popper = 'popper';\nvar reference = 'reference';\nvar variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nvar placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nvar beforeRead = 'beforeRead';\nvar read = 'read';\nvar afterRead = 'afterRead'; // pure-logic modifiers\n\nvar beforeMain = 'beforeMain';\nvar main = 'main';\nvar afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nvar beforeWrite = 'beforeWrite';\nvar write = 'write';\nvar afterWrite = 'afterWrite';\nvar modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nfunction orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}\n\nfunction debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}\n\nfunction mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}\n\nfunction getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}\n\n// of the `` and `` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle$1(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}\n\nfunction contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}\n\nfunction rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nfunction getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}\n\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\n\nfunction getVariation(placement) {\n return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}\n\nfunction computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n }\n }\n\n return offsets;\n}\n\nfunction getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}\n\nfunction mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}\n\nfunction expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}\n\nfunction detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}\n\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nfunction popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\n\nvar passive = {\n passive: true\n};\n\nfunction effect$1(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nvar eventListeners = {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect$1,\n data: {}\n};\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nvar popperOffsets$1 = {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nfunction mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nvar computeStyles$1 = {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};\n\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nvar applyStyles$1 = {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};\n\nvar defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nfunction getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\nfunction withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min$1 = offset + overflow[mainSide];\n var max$1 = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nvar preventOverflow$1 = {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};\n\nvar hash$1 = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash$1[matched];\n });\n}\n\nvar hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}\n\nfunction computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements$1.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements$1;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nvar flip$1 = {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};\n\nfunction useDropdown (props, context, dep)\n{\n const { disabled, appendTo, appendToBody, openDirection } = toRefs(props);\n\n const $this = getCurrentInstance().proxy;\n\n // ============ DEPENDENCIES ============\n\n const multiselect = dep.multiselect;\n const dropdown = dep.dropdown;\n\n // ================ DATA ================\n\n const isOpen = ref(false);\n const popper = ref(null);\n const forcedPlacement = ref(null);\n \n // ============== COMPUTED ==============\n\n const appended = toRef(() => {\n return appendTo.value || appendToBody.value\n });\n\n const placement = toRef(() => {\n return (openDirection.value === 'top' && forcedPlacement.value === 'bottom') ||\n (openDirection.value === 'bottom' && forcedPlacement.value !== 'top')\n ? 'bottom'\n : 'top'\n });\n\n // =============== METHODS ==============\n\n const open = () => {\n if (isOpen.value || disabled.value) {\n return\n }\n\n isOpen.value = true;\n context.emit('open', $this);\n\n\n if (appended.value) {\n nextTick(() => {\n updatePopper();\n });\n }\n };\n\n const close = () => {\n if (!isOpen.value) {\n return\n }\n\n isOpen.value = false;\n context.emit('close', $this);\n };\n\n const updatePopper = () => {\n if (!popper.value) {\n return\n }\n\n let borderTopWidth = parseInt(window.getComputedStyle(dropdown.value).borderTopWidth.replace('px', ''));\n let borderBottomWidth = parseInt(window.getComputedStyle(dropdown.value).borderBottomWidth.replace('px', ''));\n \n popper.value.setOptions((options) => ({\n ...options,\n modifiers: [\n ...options.modifiers,\n {\n name: 'offset',\n options: {\n offset: [0, (placement.value === 'top' ? borderTopWidth : borderBottomWidth) * -1],\n },\n },\n ]\n }));\n\n popper.value.update();\n };\n\n /* istanbul ignore next: UI feature */\n const hasFixedParent = (element) => {\n while (element && element !== document.body) {\n const style = getComputedStyle(element);\n\n if (style.position === 'fixed') {\n return true\n }\n\n element = element.parentElement;\n }\n \n return false\n };\n\n onMounted(() => {\n if (!appended.value) {\n return\n }\n\n /* istanbul ignore next: popper mock */\n popper.value = createPopper(multiselect.value, dropdown.value, {\n strategy: hasFixedParent(multiselect.value) ? /* istanbul ignore next: UI feature */ 'fixed' : undefined,\n placement: openDirection.value,\n modifiers: [\n preventOverflow$1,\n flip$1,\n {\n name: 'sameWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: ({ state }) => {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n },\n effect: ({ state }) => {\n state.elements.popper.style.width = `${\n state.elements.reference.offsetWidth\n }px`;\n }\n },\n {\n name: 'toggleClass',\n enabled: true,\n phase: 'write',\n fn({ state }) {\n forcedPlacement.value = state.placement;\n },\n },\n ]\n });\n });\n\n onBeforeUnmount(() => {\n if (!appended.value || !popper.value) {\n return\n }\n\n popper.value.destroy();\n popper.value = null;\n });\n\n return {\n popper,\n isOpen,\n open,\n close,\n placement,\n updatePopper,\n }\n}\n\nfunction useMultiselect (props, context, dep)\n{\n const { searchable, disabled, clearOnBlur } = toRefs(props);\n\n // ============ DEPENDENCIES ============\n\n const input = dep.input;\n const open = dep.open;\n const close = dep.close;\n const clearSearch = dep.clearSearch;\n const isOpen = dep.isOpen;\n const wrapper = dep.wrapper;\n const tags = dep.tags;\n\n // ================ DATA ================\n\n const isActive = ref(false);\n\n const mouseClicked = ref(false);\n\n // ============== COMPUTED ==============\n\n const tabindex = toRef(() => {\n return searchable.value || disabled.value ? -1 : 0\n });\n\n // =============== METHODS ==============\n\n const blur = () => {\n if (searchable.value) {\n input.value.blur();\n }\n\n wrapper.value.blur();\n };\n\n const focus = () => {\n if (searchable.value && !disabled.value) {\n input.value.focus();\n }\n };\n\n const activate = (shouldOpen = true) => {\n if (disabled.value) {\n return\n }\n\n isActive.value = true;\n\n if (shouldOpen) {\n open();\n }\n };\n\n const deactivate = () => {\n isActive.value = false;\n\n setTimeout(() => {\n if (!isActive.value) {\n close();\n\n if (clearOnBlur.value) {\n clearSearch();\n }\n }\n }, 1);\n };\n\n const handleFocusIn = (e) => {\n if ((e.target.closest('[data-tags]') && e.target.nodeName !== 'INPUT') || e.target.closest('[data-clear]')) {\n return\n }\n\n activate(mouseClicked.value);\n };\n\n const handleFocusOut = () => {\n deactivate();\n };\n\n const handleCaretClick = () => {\n deactivate();\n blur();\n };\n\n /* istanbul ignore next */\n const handleMousedown = (e) => {\n mouseClicked.value = true;\n\n if (isOpen.value && (e.target.isEqualNode(wrapper.value) || e.target.isEqualNode(tags.value))) {\n setTimeout(() => {\n deactivate();\n }, 0);\n } else if (!isOpen.value \n && (document.activeElement.isEqualNode(wrapper.value)\n || document.activeElement.isEqualNode(input.value))) {\n activate(); \n }\n\n setTimeout(() => {\n mouseClicked.value = false;\n }, 0);\n };\n\n return {\n tabindex,\n isActive,\n mouseClicked,\n blur,\n focus,\n activate,\n deactivate,\n handleFocusIn,\n handleFocusOut,\n handleCaretClick,\n handleMousedown,\n }\n}\n\nfunction useKeyboard (props, context, dep)\n{\n const {\n mode, addTagOn, openDirection, searchable,\n showOptions, valueProp, groups: groupped,\n addOptionOn: addOptionOn_, createTag, createOption: createOption_,\n reverse,\n } = toRefs(props);\n\n const $this = getCurrentInstance().proxy;\n\n // ============ DEPENDENCIES ============\n\n const iv = dep.iv;\n const update = dep.update;\n const deselect = dep.deselect;\n const search = dep.search;\n const setPointer = dep.setPointer;\n const selectPointer = dep.selectPointer;\n const backwardPointer = dep.backwardPointer;\n const forwardPointer = dep.forwardPointer;\n const multiselect = dep.multiselect;\n const wrapper = dep.wrapper;\n const tags = dep.tags;\n const isOpen = dep.isOpen;\n const open = dep.open;\n const blur = dep.blur;\n const fo = dep.fo;\n\n // ============== COMPUTED ==============\n\n // no export\n const createOption = toRef(() => {\n return createTag.value || createOption_.value || false\n });\n\n // no export\n const addOptionOn = toRef(() => {\n if (addTagOn.value !== undefined) {\n return addTagOn.value\n }\n else if (addOptionOn_.value !== undefined) {\n return addOptionOn_.value\n }\n\n return ['enter']\n });\n\n // =============== METHODS ==============\n\n // no export\n const preparePointer = () => {\n // When options are hidden and creating tags is allowed\n // no pointer will be set (because options are hidden).\n // In such case we need to set the pointer manually to the \n // first option, which equals to the option created from\n // the search value.\n if (mode.value === 'tags' && !showOptions.value && createOption.value && searchable.value && !groupped.value) {\n setPointer(fo.value[fo.value.map(o => o[valueProp.value]).indexOf(search.value)]);\n }\n };\n\n const handleKeydown = (e) => {\n context.emit('keydown', e, $this);\n\n let tagList;\n let activeIndex;\n\n if (['ArrowLeft', 'ArrowRight', 'Enter'].indexOf(e.key) !== -1 && mode.value === 'tags') {\n tagList = [...(multiselect.value.querySelectorAll(`[data-tags] > *`))].filter(e => e !== tags.value);\n activeIndex = tagList.findIndex(e => e === document.activeElement);\n }\n\n switch (e.key) {\n case 'Backspace':\n if (mode.value === 'single') {\n return\n }\n\n if (searchable.value && [null, ''].indexOf(search.value) === -1) {\n return\n }\n\n if (iv.value.length === 0) {\n return\n }\n\n let deselectables = iv.value.filter(v=>!v.disabled && v.remove !== false);\n\n if (deselectables.length) {\n deselect(deselectables[deselectables.length - 1]);\n }\n break\n\n case 'Enter':\n e.preventDefault();\n\n if (e.keyCode === 229) {\n // ignore IME confirmation\n return\n }\n\n if (activeIndex !== -1 && activeIndex !== undefined) {\n update([...iv.value].filter((v, k) => k !== activeIndex));\n\n if (activeIndex === tagList.length - 1) {\n if (tagList.length - 1) {\n tagList[tagList.length - 2].focus();\n } else if (searchable.value) {\n tags.value.querySelector('input').focus();\n } else {\n wrapper.value.focus();\n }\n }\n return\n }\n\n if (addOptionOn.value.indexOf('enter') === -1 && createOption.value) {\n return\n }\n \n preparePointer();\n selectPointer();\n break\n\n case ' ':\n if (!createOption.value && !searchable.value) {\n e.preventDefault();\n \n preparePointer();\n selectPointer();\n return\n }\n\n if (!createOption.value) {\n return false\n } \n\n if (addOptionOn.value.indexOf('space') === -1 && createOption.value) {\n return\n }\n\n e.preventDefault();\n \n preparePointer();\n selectPointer();\n break\n \n case 'Tab':\n case ';':\n case ',':\n if (addOptionOn.value.indexOf(e.key.toLowerCase()) === -1 || !createOption.value) {\n return\n }\n\n preparePointer();\n selectPointer();\n e.preventDefault();\n break\n\n case 'Escape':\n blur();\n break\n\n case 'ArrowUp':\n e.preventDefault();\n\n if (!showOptions.value) {\n return\n }\n\n /* istanbul ignore else */\n if (!isOpen.value) {\n open();\n }\n \n backwardPointer();\n break\n\n case 'ArrowDown':\n e.preventDefault();\n\n if (!showOptions.value) {\n return\n }\n\n /* istanbul ignore else */\n if (!isOpen.value) {\n open();\n }\n\n forwardPointer();\n break\n\n case 'ArrowLeft':\n if (\n (searchable.value && tags.value && tags.value.querySelector('input').selectionStart)\n || e.shiftKey || mode.value !== 'tags' || !iv.value || !iv.value.length\n ) {\n return\n }\n\n e.preventDefault();\n\n if (activeIndex === -1) {\n tagList[tagList.length-1].focus();\n }\n else if (activeIndex > 0) {\n tagList[activeIndex-1].focus();\n }\n break\n\n case 'ArrowRight':\n if (activeIndex === -1 || e.shiftKey || mode.value !== 'tags' || !iv.value || !iv.value.length) {\n return\n }\n\n e.preventDefault();\n \n /* istanbul ignore else */\n if (tagList.length > activeIndex + 1) {\n tagList[activeIndex+1].focus();\n }\n else if (searchable.value) {\n tags.value.querySelector('input').focus();\n }\n else if (!searchable.value) {\n wrapper.value.focus();\n }\n \n break\n }\n };\n\n const handleKeyup = (e) => {\n context.emit('keyup', e, $this);\n };\n\n return {\n handleKeydown,\n handleKeyup,\n preparePointer,\n }\n}\n\nfunction useClasses (props, context, dependencies)\n{const { \n classes: classes_, disabled, showOptions, breakTags\n } = toRefs(props);\n\n // ============ DEPENDENCIES ============\n\n const isOpen = dependencies.isOpen;\n const isPointed = dependencies.isPointed;\n const isSelected = dependencies.isSelected;\n const isDisabled = dependencies.isDisabled;\n const isActive = dependencies.isActive;\n const canPointGroups = dependencies.canPointGroups;\n const resolving = dependencies.resolving;\n const fo = dependencies.fo;\n const placement = dependencies.placement;\n\n // ============== COMPUTED ==============\n\n const classes = toRef(() => ({\n container: 'multiselect',\n containerDisabled: 'is-disabled',\n containerOpen: 'is-open',\n containerOpenTop: 'is-open-top',\n containerActive: 'is-active',\n wrapper: 'multiselect-wrapper',\n singleLabel: 'multiselect-single-label',\n singleLabelText: 'multiselect-single-label-text',\n multipleLabel: 'multiselect-multiple-label',\n search: 'multiselect-search',\n tags: 'multiselect-tags',\n tag: 'multiselect-tag',\n tagWrapper: 'multiselect-tag-wrapper',\n tagWrapperBreak: 'multiselect-tag-wrapper-break',\n tagDisabled: 'is-disabled',\n tagRemove: 'multiselect-tag-remove',\n tagRemoveIcon: 'multiselect-tag-remove-icon',\n tagsSearchWrapper: 'multiselect-tags-search-wrapper',\n tagsSearch: 'multiselect-tags-search',\n tagsSearchCopy: 'multiselect-tags-search-copy',\n placeholder: 'multiselect-placeholder',\n caret: 'multiselect-caret',\n caretOpen: 'is-open',\n clear: 'multiselect-clear',\n clearIcon: 'multiselect-clear-icon',\n spinner: 'multiselect-spinner',\n inifinite: 'multiselect-inifite',\n inifiniteSpinner: 'multiselect-inifite-spinner',\n dropdown: 'multiselect-dropdown',\n dropdownTop: 'is-top',\n dropdownHidden: 'is-hidden',\n options: 'multiselect-options',\n optionsTop: 'is-top',\n group: 'multiselect-group',\n groupLabel: 'multiselect-group-label',\n groupLabelPointable: 'is-pointable',\n groupLabelPointed: 'is-pointed',\n groupLabelSelected: 'is-selected',\n groupLabelDisabled: 'is-disabled',\n groupLabelSelectedPointed: 'is-selected is-pointed',\n groupLabelSelectedDisabled: 'is-selected is-disabled',\n groupOptions: 'multiselect-group-options',\n option: 'multiselect-option',\n optionPointed: 'is-pointed',\n optionSelected: 'is-selected',\n optionDisabled: 'is-disabled',\n optionSelectedPointed: 'is-selected is-pointed',\n optionSelectedDisabled: 'is-selected is-disabled',\n noOptions: 'multiselect-no-options',\n noResults: 'multiselect-no-results',\n fakeInput: 'multiselect-fake-input',\n assist: 'multiselect-assistive-text',\n spacer: 'multiselect-spacer',\n ...classes_.value,\n }));\n\n const showDropdown = toRef(() => {\n return !!(isOpen.value && showOptions.value && (!resolving.value || (resolving.value && fo.value.length)))\n });\n\n const classList = computed(() => {\n const c = classes.value;\n\n return {\n container: [c.container]\n .concat(disabled.value ? c.containerDisabled : [])\n .concat(showDropdown.value && placement.value === 'top' ? c.containerOpenTop : [])\n .concat(showDropdown.value && placement.value !== 'top' ? c.containerOpen : [])\n .concat(isActive.value ? c.containerActive : []),\n wrapper: c.wrapper,\n spacer: c.spacer,\n singleLabel: c.singleLabel,\n singleLabelText: c.singleLabelText,\n multipleLabel: c.multipleLabel,\n search: c.search,\n tags: c.tags,\n tag: [c.tag]\n .concat(disabled.value ? c.tagDisabled : []),\n tagWrapper: [c.tagWrapper, breakTags.value ? c.tagWrapperBreak : null],\n tagDisabled: c.tagDisabled,\n tagRemove: c.tagRemove,\n tagRemoveIcon: c.tagRemoveIcon,\n tagsSearchWrapper: c.tagsSearchWrapper,\n tagsSearch: c.tagsSearch,\n tagsSearchCopy: c.tagsSearchCopy,\n placeholder: c.placeholder,\n caret: [c.caret]\n .concat(isOpen.value ? c.caretOpen : []),\n clear: c.clear,\n clearIcon: c.clearIcon,\n spinner: c.spinner,\n inifinite: c.inifinite,\n inifiniteSpinner: c.inifiniteSpinner,\n dropdown: [c.dropdown]\n .concat(placement.value === 'top' ? c.dropdownTop : [])\n .concat(!isOpen.value || !showOptions.value || !showDropdown.value ? c.dropdownHidden : []),\n options: [c.options]\n .concat(placement.value === 'top' ? c.optionsTop : []),\n group: c.group,\n groupLabel: (g) => {\n let groupLabel = [c.groupLabel];\n\n if (isPointed(g)) {\n groupLabel.push(isSelected(g) ? c.groupLabelSelectedPointed : c.groupLabelPointed);\n } else if (isSelected(g) && canPointGroups.value) {\n groupLabel.push(isDisabled(g) ? c.groupLabelSelectedDisabled : c.groupLabelSelected);\n } else if (isDisabled(g)) {\n groupLabel.push(c.groupLabelDisabled);\n }\n\n if (canPointGroups.value) {\n groupLabel.push(c.groupLabelPointable);\n }\n\n return groupLabel\n },\n groupOptions: c.groupOptions,\n option: (o, g) => {\n let option = [c.option];\n\n if (isPointed(o)) {\n option.push(isSelected(o) ? c.optionSelectedPointed : c.optionPointed);\n } else if (isSelected(o)) {\n option.push(isDisabled(o) ? c.optionSelectedDisabled : c.optionSelected);\n } else if (isDisabled(o) || (g && isDisabled(g))) {\n option.push(c.optionDisabled);\n }\n\n return option\n },\n noOptions: c.noOptions,\n noResults: c.noResults,\n assist: c.assist,\n fakeInput: c.fakeInput,\n }\n });\n\n return {\n classList,\n showDropdown,\n }\n}\n\nfunction useScroll (props, context, dep)\n{\n const {\n limit, infinite,\n } = toRefs(props);\n\n // ============ DEPENDENCIES ============\n\n const isOpen = dep.isOpen;\n const offset = dep.offset;\n const search = dep.search;\n const pfo = dep.pfo;\n const eo = dep.eo;\n\n // ================ DATA ================\n\n // no export\n const observer = ref(null);\n\n const infiniteLoader = shallowRef(null);\n\n // ============== COMPUTED ==============\n\n const hasMore = toRef(() => {\n return offset.value < pfo.value.length\n });\n\n // =============== METHODS ==============\n\n // no export\n /* istanbul ignore next */\n const handleIntersectionObserver = (entries) => {\n const { isIntersecting, target } = entries[0];\n\n if (isIntersecting) {\n const parent = target.offsetParent;\n const scrollTop = parent.scrollTop;\n\n offset.value += limit.value == -1 ? 10 : limit.value;\n\n nextTick(() => {\n parent.scrollTop = scrollTop;\n });\n }\n };\n\n const observe = () => {\n /* istanbul ignore else */\n if (isOpen.value && offset.value < pfo.value.length) {\n observer.value.observe(infiniteLoader.value);\n } else if (!isOpen.value && observer.value) {\n observer.value.disconnect();\n }\n };\n\n // ============== WATCHERS ==============\n\n watch(isOpen, () => {\n if (!infinite.value) {\n return\n }\n\n observe();\n });\n\n watch(search, () => {\n if (!infinite.value) {\n return\n }\n\n offset.value = limit.value;\n\n observe();\n }, { flush: 'post' });\n\n watch(eo, () => {\n if (!infinite.value) {\n return\n }\n\n observe();\n }, { immediate: false, flush: 'post' });\n\n // ================ HOOKS ===============\n\n onMounted(() => {\n /* istanbul ignore else */\n if (window && window.IntersectionObserver) {\n observer.value = new IntersectionObserver(handleIntersectionObserver);\n }\n });\n\n return {\n hasMore,\n infiniteLoader,\n }\n}\n\nfunction useA11y (props, context, dep)\n{\n const {\n placeholder, id, valueProp, label: labelProp, mode, groupLabel, aria, searchable ,\n } = toRefs(props);\n\n // ============ DEPENDENCIES ============\n\n const pointer = dep.pointer;\n const iv = dep.iv;\n const hasSelected = dep.hasSelected;\n const multipleLabelText = dep.multipleLabelText;\n\n // ================ DATA ================\n\n const label = ref(null);\n\n // ============== COMPUTED ==============\n\n const ariaAssist = toRef(() => (\n `${id.value ? id.value + '-' : ''}assist`\n ));\n\n const ariaControls = toRef(() => (\n `${id.value ? id.value + '-' : ''}multiselect-options`\n ));\n\n const ariaActiveDescendant = toRef(() => {\n if (pointer.value) {\n let texts = id.value\n ? `${id.value}-`\n : '';\n\n texts += `${pointer.value.group ? 'multiselect-group' : 'multiselect-option'}-`;\n\n texts += pointer.value.group ? pointer.value.index : pointer.value[valueProp.value];\n\n return texts\n }\n });\n\n const ariaPlaceholder = toRef(() => {\n return placeholder.value\n });\n\n const ariaMultiselectable = toRef(() => {\n return mode.value !== 'single'\n });\n\n const ariaLabel = computed(() => {\n if (mode.value === 'single' && hasSelected.value) {\n return iv.value[labelProp.value]\n }\n\n if (mode.value === 'multiple' && hasSelected.value) {\n return multipleLabelText.value\n }\n\n if (mode.value === 'tags' && hasSelected.value) {\n return iv.value.map(v => v[labelProp.value]).join(', ')\n }\n\n return ''\n });\n\n const arias = computed(() => {\n let arias = { ...aria.value };\n \n // Need to add manually because focusing\n // the input won't read the selected value\n if (searchable.value) {\n arias['aria-labelledby'] = arias['aria-labelledby']\n ? `${ariaAssist.value} ${arias['aria-labelledby']}`\n : ariaAssist.value;\n \n if (ariaLabel.value && arias['aria-label']) {\n arias['aria-label'] = `${ariaLabel.value}, ${arias['aria-label']}`;\n }\n }\n\n return arias\n });\n\n // =============== METHODS ==============\n\n const ariaOptionId = (option) => (\n `${id.value ? id.value + '-' : ''}multiselect-option-${option[valueProp.value]}`\n );\n\n const ariaGroupId = (option) => (\n `${id.value ? id.value + '-' : ''}multiselect-group-${option.index}`\n );\n\n const ariaOptionLabel = (label) => `${label}`;\n\n const ariaGroupLabel = (label) => `${label}`;\n\n const ariaTagLabel = (label) => `${label} ❎`;\n\n // =============== HOOKS ================\n\n onMounted(() => {\n /* istanbul ignore next */\n if (id.value && document && document.querySelector) {\n let forTag = document.querySelector(`[for=\"${id.value}\"]`);\n label.value = forTag ? forTag.innerText : null;\n }\n });\n\n return {\n arias,\n ariaLabel,\n ariaAssist,\n ariaControls,\n ariaPlaceholder,\n ariaMultiselectable,\n ariaActiveDescendant,\n ariaOptionId,\n ariaOptionLabel,\n ariaGroupId,\n ariaGroupLabel,\n ariaTagLabel,\n }\n}\n\nfunction useI18n (props, context, dep)\n{\n const {\n locale, fallbackLocale,\n } = toRefs(props);\n\n // =============== METHODS ==============\n\n const localize = (target) => {\n if (!target || typeof target !== 'object') {\n return target\n }\n\n if (target && target[locale.value]) {\n return target[locale.value]\n } else if (target && locale.value && target[locale.value.toUpperCase()]) {\n return target[locale.value.toUpperCase()]\n } else if (target && target[fallbackLocale.value]) {\n return target[fallbackLocale.value]\n } else if (target && fallbackLocale.value && target[fallbackLocale.value.toUpperCase()]) {\n return target[fallbackLocale.value.toUpperCase()]\n } else if (target && Object.keys(target)[0]) {\n return target[Object.keys(target)[0]]\n } else {\n return ''\n }\n };\n\n return {\n localize,\n }\n}\n\nfunction useRefs (props, context, dep)\n{\n // ================ DATA ================\n\n const multiselect = shallowRef(null);\n \n const wrapper = shallowRef(null);\n\n const tags = shallowRef(null);\n\n const input = shallowRef(null);\n\n const dropdown = shallowRef(null);\n\n return {\n multiselect,\n wrapper,\n tags,\n input,\n dropdown,\n }\n}\n\nfunction resolveDeps (props, context, features, deps = {}) {\n features.forEach((composable) => {\n deps = {\n ...deps,\n ...composable(props, context, deps)\n };\n });\n \n return deps\n}\n\nvar script = {\n name: 'Multiselect',\n emits: [\n 'paste', 'open', 'close', 'select', 'deselect', \n 'input', 'search-change', 'tag', 'option', 'update:modelValue',\n 'change', 'clear', 'keydown', 'keyup', 'max', 'create',\n ],\n props: {\n value: {\n required: false,\n },\n modelValue: {\n required: false,\n },\n options: {\n type: [Array, Object, Function],\n required: false,\n default: () => ([])\n },\n id: {\n type: [String, Number],\n required: false,\n default: undefined,\n },\n name: {\n type: [String, Number],\n required: false,\n default: 'multiselect',\n },\n disabled: {\n type: Boolean,\n required: false,\n default: false,\n },\n label: {\n type: String,\n required: false,\n default: 'label',\n },\n trackBy: {\n type: [String, Array],\n required: false,\n default: undefined,\n },\n valueProp: {\n type: String,\n required: false,\n default: 'value',\n },\n placeholder: {\n type: String,\n required: false,\n default: null,\n },\n mode: {\n type: String,\n required: false,\n default: 'single', // single|multiple|tags\n },\n searchable: {\n type: Boolean,\n required: false,\n default: false,\n },\n limit: {\n type: Number,\n required: false,\n default: -1,\n },\n hideSelected: {\n type: Boolean,\n required: false,\n default: true,\n },\n createTag: {\n type: Boolean,\n required: false,\n default: undefined,\n },\n createOption: {\n type: Boolean,\n required: false,\n default: undefined,\n },\n appendNewTag: {\n type: Boolean,\n required: false,\n default: undefined,\n },\n appendNewOption: {\n type: Boolean,\n required: false,\n default: undefined,\n },\n addTagOn: {\n type: Array,\n required: false,\n default: undefined,\n },\n addOptionOn: {\n type: Array,\n required: false,\n default: undefined,\n },\n caret: {\n type: Boolean,\n required: false,\n default: true,\n },\n loading: {\n type: Boolean,\n required: false,\n default: false,\n },\n noOptionsText: {\n type: [String, Object],\n required: false,\n default: 'The list is empty',\n },\n noResultsText: {\n type: [String, Object],\n required: false,\n default: 'No results found',\n },\n multipleLabel: {\n type: Function,\n required: false,\n default: undefined,\n },\n object: {\n type: Boolean,\n required: false,\n default: false,\n },\n delay: {\n type: Number,\n required: false,\n default: -1,\n },\n minChars: {\n type: Number,\n required: false,\n default: 0,\n },\n resolveOnLoad: {\n type: Boolean,\n required: false,\n default: true,\n },\n filterResults: {\n type: Boolean,\n required: false,\n default: true,\n },\n clearOnSearch: {\n type: Boolean,\n required: false,\n default: false,\n },\n clearOnSelect: {\n type: Boolean,\n required: false,\n default: true,\n },\n canDeselect: {\n type: Boolean,\n required: false,\n default: true,\n },\n canClear: {\n type: Boolean,\n required: false,\n default: true,\n },\n max: {\n type: Number,\n required: false,\n default: -1,\n },\n showOptions: {\n type: Boolean,\n required: false,\n default: true,\n },\n required: {\n type: Boolean,\n required: false,\n default: false,\n },\n openDirection: {\n type: String,\n required: false,\n default: 'bottom',\n },\n nativeSupport: {\n type: Boolean,\n required: false,\n default: false,\n },\n classes: {\n type: Object,\n required: false,\n default: () => ({})\n },\n strict: {\n type: Boolean,\n required: false,\n default: true,\n },\n closeOnSelect: {\n type: Boolean,\n required: false,\n default: true,\n },\n closeOnDeselect: {\n type: Boolean,\n required: false,\n default: false,\n },\n autocomplete: {\n type: String,\n required: false,\n default: undefined,\n },\n groups: {\n type: Boolean,\n required: false,\n default: false,\n },\n groupLabel: {\n type: String,\n required: false,\n default: 'label',\n },\n groupOptions: {\n type: String,\n required: false,\n default: 'options',\n },\n groupHideEmpty: {\n type: Boolean,\n required: false,\n default: false,\n },\n groupSelect: {\n type: Boolean,\n required: false,\n default: true,\n },\n inputType: {\n type: String,\n required: false,\n default: 'text',\n },\n attrs: {\n required: false,\n type: Object,\n default: () => ({}),\n },\n onCreate: {\n required: false,\n type: Function,\n default: undefined,\n },\n disabledProp: {\n type: String,\n required: false,\n default: 'disabled',\n },\n searchStart: {\n type: Boolean,\n required: false,\n default: false,\n },\n reverse: {\n type: Boolean,\n required: false,\n default: false,\n },\n regex: {\n type: [Object, String, RegExp],\n required: false,\n default: undefined,\n },\n rtl: {\n type: Boolean,\n required: false,\n default: false,\n },\n infinite: {\n type: Boolean,\n required: false,\n default: false,\n },\n aria: {\n required: false,\n type: Object,\n default: () => ({}),\n },\n clearOnBlur: {\n required: false,\n type: Boolean,\n default: true,\n },\n locale: {\n required: false,\n type: String,\n default: null,\n },\n fallbackLocale: {\n required: false,\n type: String,\n default: 'en',\n },\n searchFilter: {\n required: false,\n type: Function,\n default: null,\n },\n allowAbsent: {\n required: false,\n type: Boolean,\n default: false,\n },\n appendToBody: {\n required: false,\n type: Boolean,\n default: false,\n },\n closeOnScroll: {\n required: false,\n type: Boolean,\n default: false,\n },\n breakTags: {\n required: false,\n type: Boolean,\n default: false,\n },\n appendTo: {\n required: false,\n type: String,\n default: undefined,\n },\n },\n setup(props, context)\n { \n return resolveDeps(props, context, [\n useRefs,\n useI18n,\n useValue,\n usePointer$1,\n useDropdown,\n useSearch,\n useData,\n useMultiselect,\n useOptions,\n useScroll,\n usePointer,\n useKeyboard,\n useClasses,\n useA11y,\n ])\n },\n beforeMount() {\n if ((this.$root.constructor && this.$root.constructor.version && this.$root.constructor.version.match(/^2\\./)) || this.vueVersionMs === 2) {\n if (!this.$options.components.Teleport) {\n this.$options.components.Teleport = {\n render() {\n return this.$slots.default ? this.$slots.default[0] : null\n }\n };\n }\n }\n }\n };\n\nconst _hoisted_1 = [\"id\", \"dir\"];\nconst _hoisted_2 = [\"tabindex\", \"aria-controls\", \"aria-placeholder\", \"aria-expanded\", \"aria-activedescendant\", \"aria-multiselectable\", \"role\"];\nconst _hoisted_3 = [\"type\", \"modelValue\", \"value\", \"autocomplete\", \"id\", \"aria-controls\", \"aria-placeholder\", \"aria-expanded\", \"aria-activedescendant\", \"aria-multiselectable\"];\nconst _hoisted_4 = [\"onKeyup\", \"aria-label\"];\nconst _hoisted_5 = [\"onClick\"];\nconst _hoisted_6 = [\"type\", \"modelValue\", \"value\", \"id\", \"autocomplete\", \"aria-controls\", \"aria-placeholder\", \"aria-expanded\", \"aria-activedescendant\", \"aria-multiselectable\"];\nconst _hoisted_7 = [\"innerHTML\"];\nconst _hoisted_8 = [\"id\"];\nconst _hoisted_9 = [\"id\"];\nconst _hoisted_10 = [\"id\", \"aria-label\", \"aria-selected\"];\nconst _hoisted_11 = [\"data-pointed\", \"onMouseenter\", \"onClick\"];\nconst _hoisted_12 = [\"innerHTML\"];\nconst _hoisted_13 = [\"aria-label\"];\nconst _hoisted_14 = [\"data-pointed\", \"data-selected\", \"onMouseenter\", \"onClick\", \"id\", \"aria-selected\", \"aria-label\"];\nconst _hoisted_15 = [\"data-pointed\", \"data-selected\", \"onMouseenter\", \"onClick\", \"id\", \"aria-selected\", \"aria-label\"];\nconst _hoisted_16 = [\"innerHTML\"];\nconst _hoisted_17 = [\"innerHTML\"];\nconst _hoisted_18 = [\"value\"];\nconst _hoisted_19 = [\"name\", \"value\"];\nconst _hoisted_20 = [\"name\", \"value\"];\nconst _hoisted_21 = [\"id\"];\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (openBlock(), createElementBlock(\"div\", {\n ref: \"multiselect\",\n class: normalizeClass(_ctx.classList.container),\n id: $props.searchable ? undefined : $props.id,\n dir: $props.rtl ? 'rtl' : undefined,\n onFocusin: _cache[12] || (_cache[12] = (...args) => (_ctx.handleFocusIn && _ctx.handleFocusIn(...args))),\n onFocusout: _cache[13] || (_cache[13] = (...args) => (_ctx.handleFocusOut && _ctx.handleFocusOut(...args))),\n onKeyup: _cache[14] || (_cache[14] = (...args) => (_ctx.handleKeyup && _ctx.handleKeyup(...args))),\n onKeydown: _cache[15] || (_cache[15] = (...args) => (_ctx.handleKeydown && _ctx.handleKeydown(...args)))\n }, [\n createElementVNode(\"div\", mergeProps({\n class: _ctx.classList.wrapper,\n onMousedown: _cache[9] || (_cache[9] = (...args) => (_ctx.handleMousedown && _ctx.handleMousedown(...args))),\n ref: \"wrapper\",\n tabindex: _ctx.tabindex,\n \"aria-controls\": !$props.searchable ? _ctx.ariaControls : undefined,\n \"aria-placeholder\": !$props.searchable ? _ctx.ariaPlaceholder : undefined,\n \"aria-expanded\": !$props.searchable ? _ctx.isOpen : undefined,\n \"aria-activedescendant\": !$props.searchable ? _ctx.ariaActiveDescendant : undefined,\n \"aria-multiselectable\": !$props.searchable ? _ctx.ariaMultiselectable : undefined,\n role: !$props.searchable ? 'combobox' : undefined\n }, !$props.searchable ? _ctx.arias : {}), [\n createCommentVNode(\" Search \"),\n ($props.mode !== 'tags' && $props.searchable && !$props.disabled)\n ? (openBlock(), createElementBlock(\"input\", mergeProps({\n key: 0,\n type: $props.inputType,\n modelValue: _ctx.search,\n value: _ctx.search,\n class: _ctx.classList.search,\n autocomplete: $props.autocomplete,\n id: $props.searchable ? $props.id : undefined,\n onInput: _cache[0] || (_cache[0] = (...args) => (_ctx.handleSearchInput && _ctx.handleSearchInput(...args))),\n onKeypress: _cache[1] || (_cache[1] = (...args) => (_ctx.handleKeypress && _ctx.handleKeypress(...args))),\n onPaste: _cache[2] || (_cache[2] = withModifiers((...args) => (_ctx.handlePaste && _ctx.handlePaste(...args)), [\"stop\"])),\n ref: \"input\",\n \"aria-controls\": _ctx.ariaControls,\n \"aria-placeholder\": _ctx.ariaPlaceholder,\n \"aria-expanded\": _ctx.isOpen,\n \"aria-activedescendant\": _ctx.ariaActiveDescendant,\n \"aria-multiselectable\": _ctx.ariaMultiselectable,\n role: \"combobox\"\n }, {\n ...$props.attrs,\n ..._ctx.arias,\n }), null, 16 /* FULL_PROPS */, _hoisted_3))\n : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" Tags (with search) \"),\n ($props.mode == 'tags')\n ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(_ctx.classList.tags),\n \"data-tags\": \"\"\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.iv, (option, i, key) => {\n return renderSlot(_ctx.$slots, \"tag\", {\n option: option,\n handleTagRemove: _ctx.handleTagRemove,\n disabled: $props.disabled\n }, () => [\n (openBlock(), createElementBlock(\"span\", {\n class: normalizeClass([\n _ctx.classList.tag,\n option.disabled ? _ctx.classList.tagDisabled : null,\n ]),\n tabindex: \"-1\",\n onKeyup: withKeys($event => (_ctx.handleTagRemove(option, $event)), [\"enter\"]),\n key: key,\n \"aria-label\": _ctx.ariaTagLabel(_ctx.localize(option[$props.label]))\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.classList.tagWrapper)\n }, toDisplayString(_ctx.localize(option[$props.label])), 3 /* TEXT, CLASS */),\n (!$props.disabled && !option.disabled)\n ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass(_ctx.classList.tagRemove),\n onClick: withModifiers($event => (_ctx.handleTagRemove(option, $event)), [\"stop\"])\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.classList.tagRemoveIcon)\n }, null, 2 /* CLASS */)\n ], 10 /* CLASS, PROPS */, _hoisted_5))\n : createCommentVNode(\"v-if\", true)\n ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_4))\n ])\n }), 256 /* UNKEYED_FRAGMENT */)),\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.classList.tagsSearchWrapper),\n ref: \"tags\"\n }, [\n createCommentVNode(\" Used for measuring search width \"),\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.classList.tagsSearchCopy)\n }, toDisplayString(_ctx.search), 3 /* TEXT, CLASS */),\n createCommentVNode(\" Actual search input \"),\n ($props.searchable && !$props.disabled)\n ? (openBlock(), createElementBlock(\"input\", mergeProps({\n key: 0,\n type: $props.inputType,\n modelValue: _ctx.search,\n value: _ctx.search,\n class: _ctx.classList.tagsSearch,\n id: $props.searchable ? $props.id : undefined,\n autocomplete: $props.autocomplete,\n onInput: _cache[3] || (_cache[3] = (...args) => (_ctx.handleSearchInput && _ctx.handleSearchInput(...args))),\n onKeypress: _cache[4] || (_cache[4] = (...args) => (_ctx.handleKeypress && _ctx.handleKeypress(...args))),\n onPaste: _cache[5] || (_cache[5] = withModifiers((...args) => (_ctx.handlePaste && _ctx.handlePaste(...args)), [\"stop\"])),\n ref: \"input\",\n \"aria-controls\": _ctx.ariaControls,\n \"aria-placeholder\": _ctx.ariaPlaceholder,\n \"aria-expanded\": _ctx.isOpen,\n \"aria-activedescendant\": _ctx.ariaActiveDescendant,\n \"aria-multiselectable\": _ctx.ariaMultiselectable,\n role: \"combobox\"\n }, {\n ...$props.attrs,\n ..._ctx.arias,\n }), null, 16 /* FULL_PROPS */, _hoisted_6))\n : createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */)\n ], 2 /* CLASS */))\n : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" Single label \"),\n ($props.mode == 'single' && _ctx.hasSelected && !_ctx.search && _ctx.iv)\n ? renderSlot(_ctx.$slots, \"singlelabel\", {\n key: 2,\n value: _ctx.iv\n }, () => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.classList.singleLabel)\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.classList.singleLabelText)\n }, toDisplayString(_ctx.localize(_ctx.iv[$props.label])), 3 /* TEXT, CLASS */)\n ], 2 /* CLASS */)\n ])\n : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" Multiple label \"),\n ($props.mode == 'multiple' && _ctx.hasSelected && !_ctx.search)\n ? renderSlot(_ctx.$slots, \"multiplelabel\", {\n key: 3,\n values: _ctx.iv\n }, () => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.classList.multipleLabel),\n innerHTML: _ctx.multipleLabelText\n }, null, 10 /* CLASS, PROPS */, _hoisted_7)\n ])\n : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" Placeholder \"),\n ($props.placeholder && !_ctx.hasSelected && !_ctx.search)\n ? renderSlot(_ctx.$slots, \"placeholder\", { key: 4 }, () => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.classList.placeholder),\n \"aria-hidden\": \"true\"\n }, toDisplayString($props.placeholder), 3 /* TEXT, CLASS */)\n ])\n : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" Spinner \"),\n ($props.loading || _ctx.resolving)\n ? renderSlot(_ctx.$slots, \"spinner\", { key: 5 }, () => [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.classList.spinner),\n \"aria-hidden\": \"true\"\n }, null, 2 /* CLASS */)\n ])\n : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" Clear \"),\n (_ctx.hasSelected && !$props.disabled && $props.canClear && !_ctx.busy)\n ? renderSlot(_ctx.$slots, \"clear\", {\n key: 6,\n clear: _ctx.clear\n }, () => [\n createElementVNode(\"span\", {\n \"aria-hidden\": \"true\",\n tabindex: \"0\",\n role: \"button\",\n \"data-clear\": \"\",\n \"aria-roledescription\": \"❎\",\n class: normalizeClass(_ctx.classList.clear),\n onClick: _cache[6] || (_cache[6] = (...args) => (_ctx.clear && _ctx.clear(...args))),\n onKeyup: _cache[7] || (_cache[7] = withKeys((...args) => (_ctx.clear && _ctx.clear(...args)), [\"enter\"]))\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.classList.clearIcon)\n }, null, 2 /* CLASS */)\n ], 34 /* CLASS, NEED_HYDRATION */)\n ])\n : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" Caret \"),\n ($props.caret && $props.showOptions)\n ? renderSlot(_ctx.$slots, \"caret\", {\n key: 7,\n handleCaretClick: _ctx.handleCaretClick,\n isOpen: _ctx.isOpen\n }, () => [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.classList.caret),\n onClick: _cache[8] || (_cache[8] = (...args) => (_ctx.handleCaretClick && _ctx.handleCaretClick(...args))),\n \"aria-hidden\": \"true\"\n }, null, 2 /* CLASS */)\n ])\n : createCommentVNode(\"v-if\", true)\n ], 16 /* FULL_PROPS */, _hoisted_2),\n createCommentVNode(\" Options \"),\n (openBlock(), createBlock(Teleport, {\n to: $props.appendTo || 'body',\n disabled: !$props.appendToBody && !$props.appendTo\n }, [\n createElementVNode(\"div\", {\n id: $props.id ? `${$props.id}-dropdown` : undefined,\n class: normalizeClass(_ctx.classList.dropdown),\n tabindex: \"-1\",\n ref: \"dropdown\",\n onFocusin: _cache[10] || (_cache[10] = (...args) => (_ctx.handleFocusIn && _ctx.handleFocusIn(...args))),\n onFocusout: _cache[11] || (_cache[11] = (...args) => (_ctx.handleFocusOut && _ctx.handleFocusOut(...args)))\n }, [\n renderSlot(_ctx.$slots, \"beforelist\", { options: _ctx.fo }),\n createElementVNode(\"ul\", {\n class: normalizeClass(_ctx.classList.options),\n id: _ctx.ariaControls,\n role: \"listbox\"\n }, [\n ($props.groups)\n ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.fg, (group, i, key) => {\n return (openBlock(), createElementBlock(\"li\", {\n class: normalizeClass(_ctx.classList.group),\n key: key,\n id: _ctx.ariaGroupId(group),\n \"aria-label\": _ctx.ariaGroupLabel(_ctx.localize(group[$props.groupLabel])),\n \"aria-selected\": _ctx.isSelected(group),\n role: \"option\"\n }, [\n (!group.__CREATE__)\n ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(_ctx.classList.groupLabel(group)),\n \"data-pointed\": _ctx.isPointed(group),\n onMouseenter: $event => (_ctx.setPointer(group, i)),\n onClick: $event => (_ctx.handleGroupClick(group))\n }, [\n renderSlot(_ctx.$slots, \"grouplabel\", {\n group: group,\n isSelected: _ctx.isSelected,\n isPointed: _ctx.isPointed\n }, () => [\n createElementVNode(\"span\", {\n innerHTML: _ctx.localize(group[$props.groupLabel])\n }, null, 8 /* PROPS */, _hoisted_12)\n ])\n ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_11))\n : createCommentVNode(\"v-if\", true),\n createElementVNode(\"ul\", {\n class: normalizeClass(_ctx.classList.groupOptions),\n \"aria-label\": _ctx.ariaGroupLabel(_ctx.localize(group[$props.groupLabel])),\n role: \"group\"\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(group.__VISIBLE__, (option, i, key) => {\n return (openBlock(), createElementBlock(\"li\", {\n class: normalizeClass(_ctx.classList.option(option, group)),\n \"data-pointed\": _ctx.isPointed(option),\n \"data-selected\": _ctx.isSelected(option) || undefined,\n key: key,\n onMouseenter: $event => (_ctx.setPointer(option)),\n onClick: $event => (_ctx.handleOptionClick(option)),\n id: _ctx.ariaOptionId(option),\n \"aria-selected\": _ctx.isSelected(option),\n \"aria-label\": _ctx.ariaOptionLabel(_ctx.localize(option[$props.label])),\n role: \"option\"\n }, [\n renderSlot(_ctx.$slots, \"option\", {\n option: option,\n isSelected: _ctx.isSelected,\n isPointed: _ctx.isPointed,\n search: _ctx.search\n }, () => [\n createElementVNode(\"span\", null, toDisplayString(_ctx.localize(option[$props.label])), 1 /* TEXT */)\n ])\n ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_14))\n }), 128 /* KEYED_FRAGMENT */))\n ], 10 /* CLASS, PROPS */, _hoisted_13)\n ], 10 /* CLASS, PROPS */, _hoisted_10))\n }), 128 /* KEYED_FRAGMENT */))\n : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(_ctx.fo, (option, i, key) => {\n return (openBlock(), createElementBlock(\"li\", {\n class: normalizeClass(_ctx.classList.option(option)),\n \"data-pointed\": _ctx.isPointed(option),\n \"data-selected\": _ctx.isSelected(option) || undefined,\n key: key,\n onMouseenter: $event => (_ctx.setPointer(option)),\n onClick: $event => (_ctx.handleOptionClick(option)),\n id: _ctx.ariaOptionId(option),\n \"aria-selected\": _ctx.isSelected(option),\n \"aria-label\": _ctx.ariaOptionLabel(_ctx.localize(option[$props.label])),\n role: \"option\"\n }, [\n renderSlot(_ctx.$slots, \"option\", {\n option: option,\n isSelected: _ctx.isSelected,\n isPointed: _ctx.isPointed,\n search: _ctx.search\n }, () => [\n createElementVNode(\"span\", null, toDisplayString(_ctx.localize(option[$props.label])), 1 /* TEXT */)\n ])\n ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_15))\n }), 128 /* KEYED_FRAGMENT */))\n ], 10 /* CLASS, PROPS */, _hoisted_9),\n (_ctx.noOptions)\n ? renderSlot(_ctx.$slots, \"nooptions\", { key: 0 }, () => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.classList.noOptions),\n innerHTML: _ctx.localize($props.noOptionsText)\n }, null, 10 /* CLASS, PROPS */, _hoisted_16)\n ])\n : createCommentVNode(\"v-if\", true),\n (_ctx.noResults)\n ? renderSlot(_ctx.$slots, \"noresults\", { key: 1 }, () => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.classList.noResults),\n innerHTML: _ctx.localize($props.noResultsText)\n }, null, 10 /* CLASS, PROPS */, _hoisted_17)\n ])\n : createCommentVNode(\"v-if\", true),\n ($props.infinite && _ctx.hasMore)\n ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass(_ctx.classList.inifinite),\n ref: \"infiniteLoader\"\n }, [\n renderSlot(_ctx.$slots, \"infinite\", {}, () => [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.classList.inifiniteSpinner)\n }, null, 2 /* CLASS */)\n ])\n ], 2 /* CLASS */))\n : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"afterlist\", { options: _ctx.fo })\n ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_8)\n ], 8 /* PROPS */, [\"to\", \"disabled\"])),\n createCommentVNode(\" Hacky input element to show HTML5 required warning \"),\n ($props.required)\n ? (openBlock(), createElementBlock(\"input\", {\n key: 0,\n class: normalizeClass(_ctx.classList.fakeInput),\n tabindex: \"-1\",\n value: _ctx.textValue,\n required: \"\"\n }, null, 10 /* CLASS, PROPS */, _hoisted_18))\n : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" Native input support \"),\n ($props.nativeSupport)\n ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n ($props.mode == 'single')\n ? (openBlock(), createElementBlock(\"input\", {\n key: 0,\n type: \"hidden\",\n name: $props.name,\n value: _ctx.plainValue !== undefined ? _ctx.plainValue : ''\n }, null, 8 /* PROPS */, _hoisted_19))\n : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(_ctx.plainValue, (v, i) => {\n return (openBlock(), createElementBlock(\"input\", {\n type: \"hidden\",\n name: `${$props.name}[]`,\n value: v,\n key: i\n }, null, 8 /* PROPS */, _hoisted_20))\n }), 128 /* KEYED_FRAGMENT */))\n ], 64 /* STABLE_FRAGMENT */))\n : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" Screen reader assistive text \"),\n ($props.searchable && _ctx.hasSelected)\n ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass(_ctx.classList.assist),\n id: _ctx.ariaAssist,\n \"aria-hidden\": \"true\"\n }, toDisplayString(_ctx.ariaLabel), 11 /* TEXT, CLASS, PROPS */, _hoisted_21))\n : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" Create height for empty input \"),\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.classList.spacer)\n }, null, 2 /* CLASS */)\n ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_1))\n}\n\nscript.render = render;\nscript.__file = \"src/Multiselect.vue\";\n\nexport { script as default };\n","export default function format(value: number) {\r\n return value.toFixed(2).replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n}","export enum ShippingInstructions {\r\n None = 0,\r\n AvoidFreezing = 1,\r\n AvoidHeating = 2\r\n}","export enum PackageOptions {\r\n all = 0,\r\n smallPackage = 1,\r\n freight = 2\r\n}","export enum CarrierType {\r\n None = 0,\r\n UPS,\r\n Fedex,\r\n FreightTranz,\r\n YRC,\r\n Custom,\r\n UPSFreight,\r\n FedexFreight\r\n}\r\n\r\nexport const CarrierLabel = new Map([\r\n [CarrierType.UPS, 'UPS Ground'],\r\n [CarrierType.UPSFreight, 'UPS Freight'],\r\n [CarrierType.Fedex, 'FedEx Ground'],\r\n [CarrierType.FedexFreight, 'FedEx Freight'],\r\n [CarrierType.FreightTranz, 'Freight Tranz'],\r\n [CarrierType.YRC, 'YRC'],\r\n [CarrierType.Custom, 'Custom'],\r\n [CarrierType.None, 'None']\r\n]);\r\n\r\nexport const ShipmentCarrierOption = new Map([\r\n [CarrierType.UPS, 'UPS'],\r\n [CarrierType.Fedex, 'FedEx'],\r\n [CarrierType.YRC, 'YRC']\r\n]);","export enum Country {\r\n USA = 1,\r\n Canada = 153,\r\n France = 125\r\n}","import type { SelectListOption } from '@/types/models/select-list-item';\r\nimport type { AddressFormViewModel } from '@/types/models/address/address-form-view-model';\r\nimport type { OrderDuplicateAddressModel } from '@/types/models/order/order-duplicate-addres-model';\r\nimport type { OrderAddressModel } from '@/types/models/order/order-addres-model';\r\nimport { AddressType } from '@/constants/address-type';\r\nimport type { OrderAddressEditFormViewModel } from '@/types/models/address/order-address-edit-form-view-model';\r\nimport { Country } from \"@/constants/country\";\r\nimport { addressService, orderService } from '@/services';\r\n\r\nexport const useAddress = () => {\r\n const selectedCountry = ref>(null);\r\n const countries = ref([]);\r\n const selectedState = ref>(null);\r\n const states = ref([]);\r\n const zipCode = ref('');\r\n const city = ref('');\r\n const street = ref('');\r\n const county = ref>(null);\r\n const preselectedAddress = ref>(null);\r\n const useExistingAddress = ref(false);\r\n const useExistingAddressId = ref>(null);\r\n const additionalInformation = ref>(null);\r\n const billSameAddress = ref(true);\r\n const isValidPhoneNumber = ref(false);\r\n const suite = ref>(null);\r\n const firstName = ref>(null);\r\n const lastName = ref>(null);\r\n const company = ref>(null);\r\n const phone = ref>(null);\r\n const email = ref>(null);\r\n const existingAddress = ref>(null);\r\n\r\n const router = useRouter();\r\n\r\n const showStateDropdown = computed(() => {\r\n return selectedCountry.value === Country.USA.toString() || selectedCountry.value === Country.Canada.toString()\r\n });\r\n\r\n async function updateExistingSelection(address: AddressFormViewModel) {\r\n existingAddress.value = address;\r\n useExistingAddressId.value = address.id;\r\n useExistingAddress.value = true;\r\n preselectAddress(address);\r\n preselectedAddress.value = address;\r\n }\r\n\r\n async function preselectAddress(address: AddressFormViewModel) {\r\n if (countries.value.length === 0)\r\n countries.value = await orderService.createCountryData();\r\n\r\n additionalInformation.value = address.additionalInformation;\r\n selectedCountry.value = countries.value.find((country: SelectListOption) => parseInt(country.value) === address.countryId)!.value;\r\n\r\n await getCountryStates(selectedCountry.value);\r\n\r\n if (address.stateId)\r\n selectedState.value = states.value.find((state: SelectListOption) => parseInt(state.value) === address.stateId)?.value;\r\n\r\n county.value = address.county;\r\n city.value = address.city;\r\n street.value = address.street;\r\n suite.value = address.suite;\r\n zipCode.value = address.zipCode;\r\n firstName.value = address.firstName;\r\n lastName.value = address.lastName;\r\n phone.value = address.phone;\r\n email.value = address.email;\r\n company.value = address.company;\r\n\r\n existingAddress.value = address;\r\n useExistingAddressId.value = address.id;\r\n useExistingAddress.value = true;\r\n preselectedAddress.value = address;\r\n }\r\n\r\n function useNewAddress() {\r\n useExistingAddress.value = false;\r\n useExistingAddressId.value = null;\r\n street.value = '';\r\n city.value = '';\r\n zipCode.value = '';\r\n suite.value = null;\r\n }\r\n\r\n async function getAddressByZipCode() {\r\n const address = await addressService.getZipCodeAddress(zipCode.value);\r\n\r\n if (!address)\r\n return;\r\n\r\n selectedCountry.value = Country.USA.toString();\r\n await getCountryStates(selectedCountry.value);\r\n\r\n selectedState.value = states.value.find((state: SelectListOption) => state.text === address.state)?.value;\r\n\r\n city.value = address.city;\r\n }\r\n\r\n async function getCountryStates(selectedCountry?: string) {\r\n if (!selectedCountry)\r\n return;\r\n\r\n const countryId = parseInt(selectedCountry);\r\n selectedState.value = null;\r\n states.value = await orderService.createStateData(countryId);\r\n }\r\n\r\n async function useExistingAdressSaveNew(sumbitSave: boolean, isDraft: boolean, customerId: number) {\r\n let addressId: number;\r\n\r\n const dataDuplicate: OrderDuplicateAddressModel = {\r\n id: existingAddress.value!.id!,\r\n addressType: existingAddress.value!.addressType!\r\n };\r\n\r\n const data: OrderAddressModel = {\r\n id: addressId!,\r\n addressType: existingAddress.value!.addressType!\r\n };\r\n\r\n if (!isDraft)\r\n await orderService.addAddressToOrder({\r\n id: existingAddress.value!.id!,\r\n addressType: AddressType.Shipping\r\n });\r\n\r\n if (existingAddress.value?.addressType === AddressType.Shipping) {\r\n if (billSameAddress.value) {\r\n if (!isDraft) {\r\n const duplicateId = await addressService.checkDuplicateBillingAddress(existingAddress.value.id!, customerId);\r\n\r\n if (duplicateId != null) {\r\n data.id = duplicateId;\r\n data.addressType = AddressType.Billing;\r\n await orderService.addAddressToOrder(data);\r\n } else {\r\n dataDuplicate.addressType = AddressType.Billing;\r\n addressId = await addressService.createDuplicateAddress(dataDuplicate);\r\n\r\n data.id = addressId;\r\n data.addressType = AddressType.Billing;\r\n await orderService.addAddressToOrder(data);\r\n }\r\n }\r\n\r\n if (!sumbitSave)\r\n router.push({ name: 'add-product' });\r\n }\r\n else {\r\n router.push({ name: 'billing-address' });\r\n }\r\n } else {\r\n if (!sumbitSave)\r\n router.push({ name: 'add-product' });\r\n }\r\n }\r\n\r\n async function validateAddress() {\r\n const validation = await addressService.verifyAddress(parseInt(selectedCountry.value!),\r\n city.value, street.value, suite.value, zipCode.value,\r\n selectedState.value ? parseInt(selectedState.value) : undefined);\r\n\r\n return {\r\n address: validation?.address,\r\n fedExClassificationType: validation.addressType,\r\n error: validation?.error\r\n }\r\n }\r\n\r\n async function updateExistingSelectionById(addressId: number) {\r\n const address = await addressService.getAddress(addressId);\r\n\r\n existingAddress.value = address;\r\n useExistingAddressId.value = addressId;\r\n useExistingAddress.value = true;\r\n\r\n preselectAddress(address);\r\n\r\n preselectedAddress.value = address;\r\n }\r\n\r\n async function editExistingOrder(orderId: number, newAddress: AddressFormViewModel) {\r\n const data: OrderAddressEditFormViewModel = {\r\n orderId: orderId,\r\n address: newAddress,\r\n addressType: newAddress.addressType!\r\n };\r\n\r\n await orderService.editOrderAddress(data);\r\n }\r\n\r\n function isAddressesSame(addressOne: AddressFormViewModel, addressTwo: AddressFormViewModel) {\r\n const oneAddress = {\r\n customerId: addressOne.customerId,\r\n countryId: addressOne.countryId,\r\n stateId: addressOne.stateId,\r\n county: addressOne.county,\r\n city: addressOne.city,\r\n street: addressOne.street,\r\n suite: addressOne.suite,\r\n zipCode: addressOne.zipCode,\r\n firstName: addressOne.firstName,\r\n lastName: addressOne.lastName,\r\n phone: addressOne.phone,\r\n email: addressOne.email,\r\n company: addressOne.company\r\n };\r\n\r\n const twoAddress = {\r\n customerId: addressTwo.customerId,\r\n countryId: addressTwo.countryId,\r\n stateId: addressTwo.stateId,\r\n county: addressTwo.county,\r\n city: addressTwo.city,\r\n street: addressTwo.street,\r\n suite: addressTwo.suite,\r\n zipCode: addressTwo.zipCode,\r\n firstName: addressTwo.firstName,\r\n lastName: addressTwo.lastName,\r\n phone: addressTwo.phone,\r\n email: addressTwo.email,\r\n company: addressTwo.company\r\n };\r\n\r\n return (JSON.stringify(oneAddress) === JSON.stringify(twoAddress));\r\n }\r\n\r\n function isAddressEdited(currentAddress: AddressFormViewModel) {\r\n if (!preselectedAddress.value)\r\n return true;\r\n\r\n const originalAddress = {\r\n customerId: preselectedAddress.value.customerId,\r\n countryId: preselectedAddress.value.countryId,\r\n stateId: preselectedAddress.value.stateId,\r\n county: preselectedAddress.value.county,\r\n city: preselectedAddress.value.city,\r\n street: preselectedAddress.value.street,\r\n suite: preselectedAddress.value.suite,\r\n zipCode: preselectedAddress.value.zipCode,\r\n firstName: preselectedAddress.value.firstName,\r\n lastName: preselectedAddress.value.lastName,\r\n phone: preselectedAddress.value.phone,\r\n email: preselectedAddress.value.email,\r\n company: preselectedAddress.value.company,\r\n addressType: preselectedAddress.value.addressType\r\n };\r\n\r\n return (JSON.stringify(currentAddress) !== JSON.stringify(originalAddress));\r\n }\r\n\r\n function getCountryById(countryId: string) {\r\n return countries.value.find((country: SelectListOption) => country.value === countryId);\r\n }\r\n\r\n function getStateById(stateId: string) {\r\n return states.value.find((state: SelectListOption) => state.value === stateId);\r\n }\r\n\r\n function setPhoneNumberValidation(value: string, numberObject: any) {\r\n if (numberObject) {\r\n isValidPhoneNumber.value = numberObject.valid;\r\n return;\r\n }\r\n\r\n isValidPhoneNumber.value = false;\r\n }\r\n\r\n return {\r\n showStateDropdown,\r\n updateExistingSelection,\r\n preselectAddress,\r\n useNewAddress,\r\n getAddressByZipCode,\r\n getCountryStates,\r\n useExistingAdressSaveNew,\r\n validateAddress,\r\n updateExistingSelectionById,\r\n editExistingOrder,\r\n isAddressesSame,\r\n isAddressEdited,\r\n getCountryById,\r\n getStateById,\r\n selectedCountry,\r\n countries,\r\n selectedState,\r\n states,\r\n zipCode,\r\n city,\r\n street,\r\n county,\r\n preselectedAddress,\r\n useExistingAddress,\r\n useExistingAddressId,\r\n additionalInformation,\r\n billSameAddress,\r\n suite,\r\n firstName,\r\n lastName,\r\n company,\r\n phone,\r\n email,\r\n existingAddress,\r\n setPhoneNumberValidation,\r\n isValidPhoneNumber\r\n }\r\n};","export enum DiscountTypes {\r\n AssignedToOrderTotal = 1,\r\n AssignedToSkus = 2,\r\n AssignedToManufacturers = 6,\r\n AssignedToShipping = 10,\r\n AssignedToOrderSubTotal = 20,\r\n AssignedToPartner = 30\r\n}\r\n\r\nexport enum DiscountLimitationTypes {\r\n Unlimited = 0,\r\n NTimesOnly = 15,\r\n NTimesPerCustomer = 25\r\n}\r\n\r\nexport enum DiscountConditionTypes {\r\n NotRequired = 0,\r\n MinAmount = 1\r\n}","import type { OrderViewModel } from '@/types/models/order/order-view-model';\r\nimport type { DiscountReplyViewModel } from '@/types/models/discount/discount-reply-view-model';\r\nimport type { DiscountViewModel } from '@/types/models/discount/discount-view-model';\r\nimport { DiscountTypes, DiscountConditionTypes } from '@/constants/discount-types';\r\nimport type { DiscountUsedViewModel } from '@/types/models/discount/discount-used-view-model';\r\nimport type { ProductViewModel } from '@/types/models/product/product-view-model';\r\nimport type { DiscountTempProductViewModel } from '@/types/models/discount/discount-temp-product-view-model';\r\n\r\nexport const usePromoDisplay = () => {\r\n const availableDiscounts = ref([]);\r\n const order = ref(null);\r\n const appliedDiscount = ref(null);\r\n const productDiscountPromotion = ref(0);\r\n const shippingDiscountPromotion = ref(0);\r\n const orderSubTotalDiscountPromotion = ref(0);\r\n const productPriceAfterDiscount = ref(0);\r\n const baseProductTotalPrice = ref(0);\r\n const shippingPriceAfterDiscount = ref(0);\r\n const baseShippingPrice = ref(0);\r\n const usedDiscounts = ref([]);\r\n const discountedPromoProducts = ref([]);\r\n const appliedManualDiscounts = ref([]);\r\n const products = ref([]);\r\n const discountTempProductValues = ref([]);\r\n const subTotalPriceTempApplied = ref(0);\r\n const shippingPriceTempApplied = ref(0);\r\n const discountError = ref(null);\r\n\r\n const continueAsGuest = computed(() => {\r\n return useCookie('continue-as-guest')?.value ?? false;\r\n });\r\n\r\n const shippingDiscounts = computed(() => {\r\n return availableDiscounts.value.filter((discount: DiscountViewModel) => {\r\n return discount.discountTypeId === DiscountTypes.AssignedToShipping;\r\n });\r\n });\r\n\r\n const appliedShippingDiscounts = computed(() => {\r\n return usedDiscounts.value.filter((discount: DiscountUsedViewModel) => {\r\n return discount.discountTypeId === DiscountTypes.AssignedToShipping && discount.discountActualAmount > 0;\r\n });\r\n });\r\n\r\n const appliedSubTotalDiscounts = computed(() => {\r\n return usedDiscounts.value.filter((discount: DiscountUsedViewModel) => {\r\n return discount.discountTypeId === DiscountTypes.AssignedToOrderSubTotal && discount.discountActualAmount > 0;\r\n });\r\n });\r\n\r\n function incrementDiscount(discount: DiscountUsedViewModel) {\r\n if (discount.discountTypeId === DiscountTypes.AssignedToOrderSubTotal)\r\n orderSubTotalDiscountPromotion.value += discount.discountActualAmount;\r\n\r\n if (discount.discountTypeId === DiscountTypes.AssignedToShipping)\r\n shippingDiscountPromotion.value += discount.discountActualAmount;\r\n\r\n if (discount.discountTypeId === DiscountTypes.AssignedToSkus)\r\n productDiscountPromotion.value += discount.discountActualAmount;\r\n }\r\n\r\n function parseDiscounts(isCoupon = false) {\r\n if (isCoupon) {\r\n appliedManualDiscounts.value.forEach((discount: DiscountUsedViewModel) => {\r\n incrementDiscount(discount);\r\n });\r\n } else {\r\n usedDiscounts.value.forEach((discount: DiscountUsedViewModel) => {\r\n incrementDiscount(discount);\r\n });\r\n }\r\n }\r\n\r\n function recheckAvailableDiscount() {\r\n let subTotalPrice = baseProductTotalPrice.value;\r\n let shippingPrice = baseShippingPrice.value;\r\n let discountAmountReduced = 0;\r\n\r\n usedDiscounts.value = availableDiscounts.value.map((discount: DiscountViewModel) => {\r\n discountAmountReduced = calculateAppliedDiscounts(discount, shippingPrice, subTotalPrice, false);\r\n\r\n if (discount.discountTypeId === DiscountTypes.AssignedToOrderSubTotal ||\r\n discount.discountTypeId === DiscountTypes.AssignedToSkus ||\r\n discount.discountTypeId === DiscountTypes.AssignedToPartner) {\r\n subTotalPrice -= discountAmountReduced;\r\n return {\r\n discountId: discount.id,\r\n discountActualAmount: discountAmountReduced,\r\n couponCode: discount.couponCode,\r\n discountName: discount.name,\r\n discountTypeId: discount.discountTypeId\r\n };\r\n }\r\n\r\n if (discount.discountTypeId === DiscountTypes.AssignedToShipping &&\r\n discount.discountConditionTypeId === DiscountConditionTypes.NotRequired) {\r\n shippingPrice -= discountAmountReduced;\r\n return {\r\n discountId: discount.id,\r\n discountActualAmount: discountAmountReduced,\r\n couponCode: discount.couponCode,\r\n discountName: discount.name,\r\n discountTypeId: discount.discountTypeId\r\n }\r\n }\r\n\r\n if (discount.discountTypeId === DiscountTypes.AssignedToShipping &&\r\n discount.discountConditionTypeId === DiscountConditionTypes.MinAmount &&\r\n isMaxApplicableDiscount(discount)) {\r\n shippingPrice -= discountAmountReduced;\r\n return {\r\n discountId: discount.id,\r\n discountActualAmount: discountAmountReduced,\r\n couponCode: discount.couponCode,\r\n discountName: discount.name,\r\n discountTypeId: discount.discountTypeId\r\n };\r\n }\r\n }).filter((discount) => discount !== undefined);\r\n\r\n subTotalPriceTempApplied.value = subTotalPrice;\r\n shippingPriceTempApplied.value = shippingPrice;\r\n }\r\n\r\n function calculateAppliedDiscounts(discount: DiscountReplyViewModel, shippingPrice: number, subTotalPrice: number, isManualDiscount: boolean) {\r\n let amount = getDiscountTypeAmount(discount.discountTypeId);\r\n let amountDiscount = discount.usePercentage ? amount * (discount.discountPercentage / 100) : discount.discountAmount;\r\n let realDiscount = discount.usePercentage ?\r\n (discount.maximumDiscountAmount != null && amountDiscount > discount.maximumDiscountAmount ? discount.maximumDiscountAmount : amountDiscount)\r\n : amountDiscount;\r\n\r\n let actualDiscount = 0;\r\n\r\n if (discount.discountTypeId === DiscountTypes.AssignedToShipping) {\r\n actualDiscount = shippingPrice > 0 ?\r\n ((shippingPrice - realDiscount) >= 0 ? realDiscount : shippingPrice)\r\n : 0;\r\n }\r\n\r\n if (discount.discountTypeId === DiscountTypes.AssignedToOrderSubTotal ||\r\n discount.discountAmount === DiscountTypes.AssignedToPartner) {\r\n actualDiscount = subTotalPrice > 0 ?\r\n ((subTotalPrice - realDiscount) >= 0 ? realDiscount : subTotalPrice)\r\n : 0;\r\n }\r\n if (discount.discountTypeId === DiscountTypes.AssignedToSkus) {\r\n products.value.forEach((product: ProductViewModel) => {\r\n const productIdsUsed = discount.selectedProductIds.split(',');\r\n if (productIdsUsed.includes(product.productVariantId.toString())) {\r\n const tempProduct = discountTempProductValues.value.find((u: DiscountTempProductViewModel) => u.productId === product.productVariantId);\r\n const subProductPrice = tempProduct?.actualSum ?? 0;\r\n const exceedsQuantityLimits = discount.maximumDiscountedQuantity != null && product.quantity > discount.maximumDiscountedQuantity;\r\n amount = exceedsQuantityLimits ? product.price * discount.maximumDiscountedQuantity! : product.priceTotal;\r\n const checkMaxAmount = discount.discountAmount > product.price ? product.price : discount.discountAmount;\r\n\r\n amountDiscount = discount.usePercentage ? amount * (discount.discountPercentage / 100) :\r\n (exceedsQuantityLimits ?\r\n checkMaxAmount * discount.maximumDiscountedQuantity!\r\n : (checkMaxAmount * product.quantity));\r\n\r\n realDiscount = discount.usePercentage ?\r\n (discount.maximumDiscountAmount != null && amountDiscount > discount.maximumDiscountAmount ? checkSubtotal(subTotalPrice, discount.maximumDiscountAmount) :\r\n checkSubtotal(subTotalPrice, amountDiscount))\r\n : checkSubtotal(subTotalPrice, amountDiscount);\r\n\r\n const productActualDiscount = subProductPrice > 0 ? ((subProductPrice - realDiscount) >= 0 ? realDiscount : subProductPrice) : 0;\r\n\r\n actualDiscount += productActualDiscount;\r\n\r\n if (tempProduct)\r\n tempProduct.actualSum -= productActualDiscount;\r\n\r\n if (productActualDiscount > 0 && !isManualDiscount) {\r\n discountedPromoProducts.value.push({\r\n discountId: discount.id,\r\n discountActualAmount: productActualDiscount,\r\n productName: product.productVariantName,\r\n couponCode: discount.couponCode,\r\n discountName: discount.name,\r\n discountTypeId: discount.discountTypeId\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n return actualDiscount;\r\n }\r\n\r\n function getDiscountTypeAmount(discountType: DiscountTypes) {\r\n if (discountType === DiscountTypes.AssignedToOrderSubTotal ||\r\n discountType === DiscountTypes.AssignedToPartner)\r\n return baseProductTotalPrice.value;\r\n\r\n if (discountType === DiscountTypes.AssignedToShipping)\r\n return baseShippingPrice.value;\r\n\r\n return 0;\r\n }\r\n\r\n function checkSubtotal(subTotalPrice: number, amountDiscount: number) {\r\n return (subTotalPrice - amountDiscount) > 0 ? amountDiscount : subTotalPrice;\r\n }\r\n\r\n function isMaxApplicableDiscount(discount: DiscountViewModel) {\r\n const product = products.value.find((p: ProductViewModel) => p.productVariantId === discount.shippingProductId);\r\n if (product === undefined)\r\n return false;\r\n\r\n const shippingProductDiscounts = shippingDiscounts.value.filter((d: DiscountViewModel) => d.shippingProductId === discount.shippingProductId && product.quantity >= (d.productAmount ?? 0));\r\n if (shippingProductDiscounts.length === 0)\r\n return false;\r\n\r\n const maxApplicableDiscount = shippingProductDiscounts.reduce((max: any, discount: any) => max.productAmount > discount.productAmount ? max : discount);\r\n\r\n return discount.id === maxApplicableDiscount.id\r\n }\r\n\r\n function hasMinProductAmount(discount: DiscountReplyViewModel) {\r\n return products.value.some((u: ProductViewModel) => u.productVariantId === discount.shippingProductId && u.quantity >= (discount.productAmount ?? 0));\r\n }\r\n\r\n function isRightProductType(discount: DiscountReplyViewModel, isProductDiscount: boolean = false) {\r\n if (isProductDiscount)\r\n return products.value.some((p: ProductViewModel) => discount.selectedProductIds?.trim().split(',').some(d => p.productVariantId.toString() === d))\r\n else\r\n return products.value.some((p: ProductViewModel) => p.productVariantId === discount.shippingProductId);\r\n }\r\n\r\n function recheckAppliedDiscount() {\r\n if (!appliedDiscount.value)\r\n return;\r\n\r\n discountError.value = null;\r\n\r\n if (appliedDiscount.value.discountConditionTypeId === DiscountConditionTypes.MinAmount && !isRightProductType(appliedDiscount.value)) {\r\n discountError.value = \"Wrong product type!\";\r\n return;\r\n }\r\n\r\n if (appliedDiscount.value.discountTypeId === DiscountTypes.AssignedToSkus && !isRightProductType(appliedDiscount.value, true)) {\r\n discountError.value = \"Wrong product type!\";\r\n return;\r\n }\r\n\r\n if (appliedDiscount.value.discountConditionTypeId === DiscountConditionTypes.MinAmount && !hasMinProductAmount(appliedDiscount.value)) {\r\n discountError.value = \"Product amount is less than required!\";\r\n return;\r\n }\r\n\r\n const discountAmountReduced = calculateAppliedDiscounts(appliedDiscount.value, shippingPriceTempApplied.value, subTotalPriceTempApplied.value, true);\r\n\r\n appliedManualDiscounts.value.push({\r\n discountId: appliedDiscount.value.id,\r\n discountActualAmount: discountAmountReduced,\r\n couponCode: appliedDiscount.value.couponCode,\r\n discountName: appliedDiscount.value.name,\r\n discountTypeId: appliedDiscount.value.discountTypeId\r\n });\r\n }\r\n\r\n function setGuestCookie() {\r\n const cookie = useCookie('continue-as-guest', { maxAge: 7948800 });\r\n cookie.value = \"true\";\r\n }\r\n\r\n return {\r\n availableDiscounts, order, appliedDiscount, productDiscountPromotion, shippingDiscountPromotion, orderSubTotalDiscountPromotion, productPriceAfterDiscount,\r\n baseProductTotalPrice, shippingPriceAfterDiscount, baseShippingPrice, discountedPromoProducts, appliedManualDiscounts, products, discountTempProductValues,\r\n discountError, appliedShippingDiscounts, appliedSubTotalDiscounts, parseDiscounts, recheckAvailableDiscount, getDiscountTypeAmount, hasMinProductAmount,\r\n isRightProductType, recheckAppliedDiscount, continueAsGuest, setGuestCookie\r\n }\r\n}","export default function roundToTwo(value: number) {\r\n return parseFloat(value.toFixed(2));\r\n}\r\n"],"names":["discountService","isDraft","get","discountId","post","data","couponCodeId","isNullish","val","useData","props","context","dep","object","valueProp","mode","toRefs","$this","getCurrentInstance","iv","update","triggerInput","makeInternal","externalVal","makeExternal","v","toRef","customRef","useValue","value","modelValue","ref","ev","plainValue","computed","textValue","useSearch","regex","isOpen","open","search","clearSearch","handleSearchInput","e","handleKeypress","regexp","handlePaste","pastedData","c","watch","usePointer$1","groupSelect","groups","disabledProp","pointer","setPointer","option","normalize","str","strict","isObject","variable","arraysEqual","array1","array2","array2Sorted","index","objectsEqual","obj1","obj2","keys1","keys2","key","useOptions","options","trackBy_","limit","hideSelected","createTag","createOption_","label","appendNewTag","appendNewOption_","multipleLabel","loading","delay","resolveOnLoad","minChars","filterResults","clearOnSearch","clearOnSelect","allowAbsent","groupLabel","canDeselect","max","closeOnSelect","closeOnDeselect","groupped","reverse","infinite","groupOptions","groupHideEmpty","onCreate","searchStart","searchFilter","clearPointer","focus","deactivate","close","localize","ap","ro","resolving","searchWatcher","offset","resolvedOptions","createOption","appendNewOption","eo","eg","group","optionsToArray","pfo","createdOption","filterOptions","fo","pfg","g","fg","filterGroups","arrayOptions","o","hasSelected","multipleLabelText","noOptions","noResults","getOptionByTrackBy","trackBy","nullValue","busy","select","getOption","finalValue","deselect","clear","remove","handleTagRemove","isSelected","areAllSelected","isDisabled","isMax","handleOptionClick","result","handleOptionSelect","handleOptionAppend","handleGroupClick","areAllEnabledSelected","k","appendOption","selectAll","track","shouldHideOption","excludeHideSelected","filter","query","target","uo","initInternalValue","resolveOptions","callback","resolve","reject","response","refreshLabels","newLabel","i","refreshOptions","initSearchWatcher","old","newValue","n","usePointer","showOptions","searchable","multiselect","canPointGroups","isPointerGroup","currentGroup","getParentGroup","prevGroup","groupIndex","lastGroup","nextGroup","nextIndex","currentGroupFirstEnabledOption","currentGroupPrevEnabledOption","currentGroupNextEnabledOption","prevGroupLastEnabledOption","lastGroupLastEnabledOption","isPointed","setPointerFirst","selectPointer","forwardPointer","nextPointer","next","nextTick","adjustWrapperScrollToPointer","backwardPointer","prevPointer","prevIndex","pointedOption","wrapper","firstSelected","getWindow","node","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","min","round","getUAString","uaData","item","isLayoutViewport","getBoundingClientRect","element","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","_ref","visualViewport","addVisualOffsets","x","y","width","height","getWindowScroll","win","scrollLeft","scrollTop","getHTMLElementScroll","getNodeScroll","getNodeName","getDocumentElement","getWindowScrollBarX","getComputedStyle$1","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","isElementScaled","rect","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","documentElement","scroll","offsets","getLayoutRect","getParentNode","getScrollParent","listScrollParents","list","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","css","getOffsetParent","window","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","order","modifiers","map","visited","modifier","sort","requires","depModifier","orderModifiers","orderedModifiers","phase","debounce","fn","pending","mergeByName","merged","current","existing","getViewportRect","strategy","html","layoutViewport","getDocumentRect","winScroll","body","contains","parent","child","rootNode","rectToClientRect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","len","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","keys","hashMap","detectOverflow","state","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","popperRect","clippingClientRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","DEFAULT_OPTIONS","areValidElements","_len","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","instance","setOptionsAction","cleanupModifierEffects","m","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","name","_ref$options","effect","cleanupFn","noopFn","passive","effect$1","_options$scroll","_options$resize","resize","scrollParents","eventListeners","popperOffsets$1","unsetSides","roundOffsetsByDPR","dpr","mapToStyles","_ref2","_Object$assign2","position","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","applyStyles","style","attributes","initialStyles","styleProperties","property","attribute","applyStyles$1","createPopper","getAltAxis","within","min$1","max$1","withinMaxClamp","preventOverflow","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","altAxis","referenceRect","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","hash$1","getOppositePlacement","matched","hash","getOppositeVariationPlacement","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","placements$1","allowedPlacements","overflows","a","b","getExpandedFallbackPlacements","oppositePlacement","flip","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","fallbackPlacements","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","useDropdown","disabled","appendTo","appendToBody","openDirection","dropdown","forcedPlacement","appended","updatePopper","borderTopWidth","borderBottomWidth","hasFixedParent","onMounted","onBeforeUnmount","useMultiselect","clearOnBlur","input","tags","isActive","mouseClicked","tabindex","blur","activate","shouldOpen","useKeyboard","addTagOn","addOptionOn_","addOptionOn","preparePointer","tagList","activeIndex","deselectables","useClasses","dependencies","classes_","breakTags","classes","showDropdown","useScroll","observer","infiniteLoader","shallowRef","hasMore","handleIntersectionObserver","entries","isIntersecting","observe","useA11y","placeholder","id","labelProp","aria","ariaAssist","ariaControls","ariaActiveDescendant","texts","ariaPlaceholder","ariaMultiselectable","ariaLabel","arias","ariaOptionId","ariaGroupId","ariaOptionLabel","ariaGroupLabel","ariaTagLabel","forTag","useI18n","locale","fallbackLocale","useRefs","resolveDeps","features","deps","composable","script","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","normalizeClass","createElementVNode","mergeProps","createCommentVNode","withModifiers","Fragment","renderList","renderSlot","withKeys","$event","toDisplayString","createBlock","Teleport","format","ShippingInstructions","PackageOptions","CarrierType","CarrierType2","Country","useAddress","selectedCountry","countries","selectedState","states","zipCode","city","street","county","preselectedAddress","useExistingAddress","useExistingAddressId","additionalInformation","billSameAddress","isValidPhoneNumber","suite","firstName","lastName","company","phone","email","existingAddress","router","useRouter","showStateDropdown","updateExistingSelection","address","preselectAddress","orderService","country","getCountryStates","_a","useNewAddress","getAddressByZipCode","addressService","selectedCountry2","countryId","useExistingAdressSaveNew","sumbitSave","customerId","addressId","dataDuplicate","AddressType","duplicateId","validateAddress","validation","updateExistingSelectionById","editExistingOrder","orderId","newAddress","isAddressesSame","addressOne","oneAddress","addressTwo","twoAddress","currentAddress","originalAddress","getCountryById","getStateById","stateId","setPhoneNumberValidation","numberObject","isAddressEdited","DiscountTypes","DiscountConditionTypes","usePromoDisplay","availableDiscounts","appliedDiscount","productDiscountPromotion","shippingDiscountPromotion","orderSubTotalDiscountPromotion","productPriceAfterDiscount","baseProductTotalPrice","shippingPriceAfterDiscount","baseShippingPrice","usedDiscounts","discountedPromoProducts","appliedManualDiscounts","products","discountTempProductValues","subTotalPriceTempApplied","shippingPriceTempApplied","discountError","continueAsGuest","useCookie","shippingDiscounts","discount","appliedShippingDiscounts","appliedSubTotalDiscounts","incrementDiscount","parseDiscounts","isCoupon","recheckAvailableDiscount","subTotalPrice","shippingPrice","discountAmountReduced","calculateAppliedDiscounts","isMaxApplicableDiscount","isManualDiscount","amount","getDiscountTypeAmount","amountDiscount","realDiscount","actualDiscount","product","tempProduct","u","subProductPrice","exceedsQuantityLimits","checkMaxAmount","checkSubtotal","productActualDiscount","discountType","p","shippingProductDiscounts","d","maxApplicableDiscount","discount2","hasMinProductAmount","isProductDiscount","recheckAppliedDiscount","isRightProductType","setGuestCookie","cookie","roundToTwo"],"mappings":"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mBACV,EACD,cAAe,CACb,KAAM,CAAC,OAAQ,MAAM,EACrB,SAAU,GACV,QAAS,kBACV,EACD,cAAe,CACb,KAAM,SACN,SAAU,GACV,QAAS,MACV,EACD,OAAQ,CACN,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,MAAO,CACL,KAAM,OACN,SAAU,GACV,QAAS,EACV,EACD,SAAU,CACR,KAAM,OACN,SAAU,GACV,QAAS,CACV,EACD,cAAe,CACb,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,cAAe,CACb,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,cAAe,CACb,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,cAAe,CACb,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,YAAa,CACX,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,SAAU,CACR,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,IAAK,CACH,KAAM,OACN,SAAU,GACV,QAAS,EACV,EACD,YAAa,CACX,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,SAAU,CACR,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,cAAe,CACb,KAAM,OACN,SAAU,GACV,QAAS,QACV,EACD,cAAe,CACb,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,QAAS,CACP,KAAM,OACN,SAAU,GACV,QAAS,KAAO,CAAE,EACnB,EACD,OAAQ,CACN,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,cAAe,CACb,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,gBAAiB,CACf,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,aAAc,CACZ,KAAM,OACN,SAAU,GACV,QAAS,MACV,EACD,OAAQ,CACN,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,WAAY,CACV,KAAM,OACN,SAAU,GACV,QAAS,OACV,EACD,aAAc,CACZ,KAAM,OACN,SAAU,GACV,QAAS,SACV,EACD,eAAgB,CACd,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,YAAa,CACX,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,UAAW,CACT,KAAM,OACN,SAAU,GACV,QAAS,MACV,EACD,MAAO,CACL,SAAU,GACV,KAAM,OACN,QAAS,KAAO,CAAA,EACjB,EACD,SAAU,CACR,SAAU,GACV,KAAM,SACN,QAAS,MACV,EACD,aAAc,CACZ,KAAM,OACN,SAAU,GACV,QAAS,UACV,EACD,YAAa,CACX,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,QAAS,CACP,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,MAAO,CACL,KAAM,CAAC,OAAQ,OAAQ,MAAM,EAC7B,SAAU,GACV,QAAS,MACV,EACD,IAAK,CACH,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,SAAU,CACR,KAAM,QACN,SAAU,GACV,QAAS,EACV,EACD,KAAM,CACJ,SAAU,GACV,KAAM,OACN,QAAS,KAAO,CAAA,EACjB,EACD,YAAa,CACX,SAAU,GACV,KAAM,QACN,QAAS,EACV,EACD,OAAQ,CACN,SAAU,GACV,KAAM,OACN,QAAS,IACV,EACD,eAAgB,CACd,SAAU,GACV,KAAM,OACN,QAAS,IACV,EACD,aAAc,CACZ,SAAU,GACV,KAAM,SACN,QAAS,IACV,EACD,YAAa,CACX,SAAU,GACV,KAAM,QACN,QAAS,EACV,EACD,aAAc,CACZ,SAAU,GACV,KAAM,QACN,QAAS,EACV,EACD,cAAe,CACb,SAAU,GACV,KAAM,QACN,QAAS,EACV,EACD,UAAW,CACT,SAAU,GACV,KAAM,QACN,QAAS,EACV,EACD,SAAU,CACR,SAAU,GACV,KAAM,OACN,QAAS,MACV,CACF,EACD,MAAM7mB,EAAOC,EACb,CACE,OAAOwmB,GAAYzmB,EAAOC,EAAS,CACjCumB,GACAH,GACAnlB,GACAsB,GACA2f,GACAzgB,GACA3B,GACAkjB,GACAlf,GACA0gB,GACA9Z,GACAgZ,GACAQ,GACAe,EACD,CAAA,CACF,EACD,aAAc,EACP,KAAK,MAAM,aAAe,KAAK,MAAM,YAAY,SAAW,KAAK,MAAM,YAAY,QAAQ,MAAM,MAAM,GAAM,KAAK,eAAiB,KACjI,KAAK,SAAS,WAAW,WAC5B,KAAK,SAAS,WAAW,SAAW,CAClC,QAAS,CACP,OAAO,KAAK,OAAO,QAAU,KAAK,OAAO,QAAQ,CAAC,EAAI,IACpE,CACW,GAGX,CACG,EAEH,MAAM4B,GAAa,CAAC,KAAM,KAAK,EACzBC,GAAa,CAAC,WAAY,gBAAiB,mBAAoB,gBAAiB,wBAAyB,uBAAwB,MAAM,EACvIC,GAAa,CAAC,OAAQ,aAAc,QAAS,eAAgB,KAAM,gBAAiB,mBAAoB,gBAAiB,wBAAyB,sBAAsB,EACxKC,GAAa,CAAC,UAAW,YAAY,EACrCC,GAAa,CAAC,SAAS,EACvBC,GAAa,CAAC,OAAQ,aAAc,QAAS,KAAM,eAAgB,gBAAiB,mBAAoB,gBAAiB,wBAAyB,sBAAsB,EACxKC,GAAa,CAAC,WAAW,EACzBC,GAAa,CAAC,IAAI,EAClBC,GAAa,CAAC,IAAI,EAClBC,GAAc,CAAC,KAAM,aAAc,eAAe,EAClDC,GAAc,CAAC,eAAgB,eAAgB,SAAS,EACxDC,GAAc,CAAC,WAAW,EAC1BC,GAAc,CAAC,YAAY,EAC3BC,GAAc,CAAC,eAAgB,gBAAiB,eAAgB,UAAW,KAAM,gBAAiB,YAAY,EAC9GC,GAAc,CAAC,eAAgB,gBAAiB,eAAgB,UAAW,KAAM,gBAAiB,YAAY,EAC9GC,GAAc,CAAC,WAAW,EAC1BC,GAAc,CAAC,WAAW,EAC1BC,GAAc,CAAC,OAAO,EACtBC,GAAc,CAAC,OAAQ,OAAO,EAC9BC,GAAc,CAAC,OAAQ,OAAO,EAC9BC,GAAc,CAAC,IAAI,EAEzB,SAASC,GAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAC7D,OAAQC,EAAS,EAAIC,GAAmB,MAAO,CAC7C,IAAK,cACL,MAAOC,EAAeR,EAAK,UAAU,SAAS,EAC9C,GAAIE,EAAO,WAAa,OAAYA,EAAO,GAC3C,IAAKA,EAAO,IAAM,MAAQ,OAC1B,UAAWD,EAAO,EAAE,IAAMA,EAAO,EAAE,EAAI,IAAIlQ,IAAUiQ,EAAK,eAAiBA,EAAK,cAAc,GAAGjQ,CAAI,GACrG,WAAYkQ,EAAO,EAAE,IAAMA,EAAO,EAAE,EAAI,IAAIlQ,IAAUiQ,EAAK,gBAAkBA,EAAK,eAAe,GAAGjQ,CAAI,GACxG,QAASkQ,EAAO,EAAE,IAAMA,EAAO,EAAE,EAAI,IAAIlQ,IAAUiQ,EAAK,aAAeA,EAAK,YAAY,GAAGjQ,CAAI,GAC/F,UAAWkQ,EAAO,EAAE,IAAMA,EAAO,EAAE,EAAI,IAAIlQ,IAAUiQ,EAAK,eAAiBA,EAAK,cAAc,GAAGjQ,CAAI,EACzG,EAAK,CACD0Q,EAAmB,MAAOC,GAAW,CACnC,MAAOV,EAAK,UAAU,QACtB,YAAaC,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIlQ,IAAUiQ,EAAK,iBAAmBA,EAAK,gBAAgB,GAAGjQ,CAAI,GACzG,IAAK,UACL,SAAUiQ,EAAK,SACf,gBAAkBE,EAAO,WAAiC,OAApBF,EAAK,aAC3C,mBAAqBE,EAAO,WAAoC,OAAvBF,EAAK,gBAC9C,gBAAkBE,EAAO,WAA2B,OAAdF,EAAK,OAC3C,wBAA0BE,EAAO,WAAyC,OAA5BF,EAAK,qBACnD,uBAAyBE,EAAO,WAAwC,OAA3BF,EAAK,oBAClD,KAAOE,EAAO,WAA0B,OAAb,UACjC,EAAQA,EAAO,WAA0B,CAAE,EAAfF,EAAK,KAAU,EAAG,CACxCW,EAAmB,UAAU,EAC5BT,EAAO,OAAS,QAAUA,EAAO,YAAc,CAACA,EAAO,UACnDI,IAAaC,GAAmB,QAASG,GAAW,CACnD,IAAK,EACL,KAAMR,EAAO,UACb,WAAYF,EAAK,OACjB,MAAOA,EAAK,OACZ,MAAOA,EAAK,UAAU,OACtB,aAAcE,EAAO,aACrB,GAAIA,EAAO,WAAaA,EAAO,GAAK,OACpC,QAASD,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIlQ,IAAUiQ,EAAK,mBAAqBA,EAAK,kBAAkB,GAAGjQ,CAAI,GACzG,WAAYkQ,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIlQ,IAAUiQ,EAAK,gBAAkBA,EAAK,eAAe,GAAGjQ,CAAI,GACtG,QAASkQ,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAIW,GAAc,IAAI7Q,IAAUiQ,EAAK,aAAeA,EAAK,YAAY,GAAGjQ,CAAI,EAAI,CAAC,MAAM,CAAC,GACvH,IAAK,QACL,gBAAiBiQ,EAAK,aACtB,mBAAoBA,EAAK,gBACzB,gBAAiBA,EAAK,OACtB,wBAAyBA,EAAK,qBAC9B,uBAAwBA,EAAK,oBAC7B,KAAM,UAClB,EAAa,CACD,GAAGE,EAAO,MACV,GAAGF,EAAK,KACpB,CAAW,EAAG,KAAM,GAAqBpB,EAAU,GACzC+B,EAAmB,OAAQ,EAAI,EACnCA,EAAmB,sBAAsB,EACxCT,EAAO,MAAQ,QACXI,EAAW,EAAEC,GAAmB,MAAO,CACtC,IAAK,EACL,MAAOC,EAAeR,EAAK,UAAU,IAAI,EACzC,YAAa,EACzB,EAAa,EACAM,EAAU,EAAI,EAAGC,GAAmBM,GAAU,KAAMC,GAAWd,EAAK,GAAI,CAACtlB,EAAQuH,EAAGvG,IAC5EqlB,GAAWf,EAAK,OAAQ,MAAO,CACpC,OAAQtlB,EACR,gBAAiBslB,EAAK,gBACtB,SAAUE,EAAO,QACjC,EAAiB,IAAM,EACNI,EAAW,EAAEC,GAAmB,OAAQ,CACvC,MAAOC,EAAe,CACxBR,EAAK,UAAU,IACftlB,EAAO,SAAWslB,EAAK,UAAU,YAAc,IAC/D,CAAe,EACG,SAAU,KACV,QAASgB,GAASC,GAAWjB,EAAK,gBAAgBtlB,EAAQumB,CAAM,EAAI,CAAC,OAAO,CAAC,EAC7E,IAAKvlB,EACL,aAAcskB,EAAK,aAAaA,EAAK,SAAStlB,EAAOwlB,EAAO,KAAK,CAAC,CAAC,CACrF,EAAmB,CACDO,EAAmB,OAAQ,CACzB,MAAOD,EAAeR,EAAK,UAAU,UAAU,CACnE,EAAqBkB,GAAgBlB,EAAK,SAAStlB,EAAOwlB,EAAO,KAAK,CAAC,CAAC,EAAG,CAAoB,EAC5E,CAACA,EAAO,UAAY,CAACxlB,EAAO,UACxB4lB,EAAW,EAAEC,GAAmB,OAAQ,CACvC,IAAK,EACL,MAAOC,EAAeR,EAAK,UAAU,SAAS,EAC9C,QAASY,GAAcK,GAAWjB,EAAK,gBAAgBtlB,EAAQumB,CAAM,EAAI,CAAC,MAAM,CAAC,CACzG,EAAyB,CACDR,EAAmB,OAAQ,CACzB,MAAOD,EAAeR,EAAK,UAAU,aAAa,CACnD,EAAE,KAAM,CAAC,CAClC,EAAyB,GAAuBlB,EAAU,GACpC6B,EAAmB,OAAQ,EAAI,CACrD,EAAmB,GAAuC9B,EAAU,EACrD,CAAA,CACF,EAAG,GAA2B,GAC/B4B,EAAmB,MAAO,CACxB,MAAOD,EAAeR,EAAK,UAAU,iBAAiB,EACtD,IAAK,MACnB,EAAe,CACDW,EAAmB,mCAAmC,EACtDF,EAAmB,OAAQ,CACzB,MAAOD,EAAeR,EAAK,UAAU,cAAc,CACpD,EAAEkB,GAAgBlB,EAAK,MAAM,EAAG,CAAoB,EACrDW,EAAmB,uBAAuB,EACzCT,EAAO,YAAc,CAACA,EAAO,UACzBI,IAAaC,GAAmB,QAASG,GAAW,CACnD,IAAK,EACL,KAAMR,EAAO,UACb,WAAYF,EAAK,OACjB,MAAOA,EAAK,OACZ,MAAOA,EAAK,UAAU,WACtB,GAAIE,EAAO,WAAaA,EAAO,GAAK,OACpC,aAAcA,EAAO,aACrB,QAASD,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIlQ,IAAUiQ,EAAK,mBAAqBA,EAAK,kBAAkB,GAAGjQ,CAAI,GACzG,WAAYkQ,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIlQ,IAAUiQ,EAAK,gBAAkBA,EAAK,eAAe,GAAGjQ,CAAI,GACtG,QAASkQ,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAIW,GAAc,IAAI7Q,IAAUiQ,EAAK,aAAeA,EAAK,YAAY,GAAGjQ,CAAI,EAAI,CAAC,MAAM,CAAC,GACvH,IAAK,QACL,gBAAiBiQ,EAAK,aACtB,mBAAoBA,EAAK,gBACzB,gBAAiBA,EAAK,OACtB,wBAAyBA,EAAK,qBAC9B,uBAAwBA,EAAK,oBAC7B,KAAM,UAC1B,EAAqB,CACL,GAAGE,EAAO,MACV,GAAGF,EAAK,KACxB,CAAe,EAAG,KAAM,GAAqBjB,EAAU,GACrC4B,EAAmB,OAAQ,EAAI,CACjD,EAAe,CAAC,CACL,EAAE,CAAc,GACjBA,EAAmB,OAAQ,EAAI,EACnCA,EAAmB,gBAAgB,EAClCT,EAAO,MAAQ,UAAYF,EAAK,aAAe,CAACA,EAAK,QAAUA,EAAK,GACjEe,GAAWf,EAAK,OAAQ,cAAe,CACrC,IAAK,EACL,MAAOA,EAAK,EACxB,EAAa,IAAM,CACPS,EAAmB,MAAO,CACxB,MAAOD,EAAeR,EAAK,UAAU,WAAW,CAC9D,EAAe,CACDS,EAAmB,OAAQ,CACzB,MAAOD,EAAeR,EAAK,UAAU,eAAe,CACpE,EAAiBkB,GAAgBlB,EAAK,SAASA,EAAK,GAAGE,EAAO,KAAK,CAAC,CAAC,EAAG,CAAC,CACzE,EAAe,CAAC,CACL,CAAA,EACDS,EAAmB,OAAQ,EAAI,EACnCA,EAAmB,kBAAkB,EACpCT,EAAO,MAAQ,YAAcF,EAAK,aAAe,CAACA,EAAK,OACpDe,GAAWf,EAAK,OAAQ,gBAAiB,CACvC,IAAK,EACL,OAAQA,EAAK,EACzB,EAAa,IAAM,CACPS,EAAmB,MAAO,CACxB,MAAOD,EAAeR,EAAK,UAAU,aAAa,EAClD,UAAWA,EAAK,iBAC9B,EAAe,KAAM,GAAuBhB,EAAU,CAC3C,CAAA,EACD2B,EAAmB,OAAQ,EAAI,EACnCA,EAAmB,eAAe,EACjCT,EAAO,aAAe,CAACF,EAAK,aAAe,CAACA,EAAK,OAC9Ce,GAAWf,EAAK,OAAQ,cAAe,CAAE,IAAK,CAAC,EAAI,IAAM,CACvDS,EAAmB,MAAO,CACxB,MAAOD,EAAeR,EAAK,UAAU,WAAW,EAChD,cAAe,MAChB,EAAEkB,GAAgBhB,EAAO,WAAW,EAAG,CAAC,CAC1C,CAAA,EACDS,EAAmB,OAAQ,EAAI,EACnCA,EAAmB,WAAW,EAC7BT,EAAO,SAAWF,EAAK,UACpBe,GAAWf,EAAK,OAAQ,UAAW,CAAE,IAAK,CAAC,EAAI,IAAM,CACnDS,EAAmB,OAAQ,CACzB,MAAOD,EAAeR,EAAK,UAAU,OAAO,EAC5C,cAAe,MAChB,EAAE,KAAM,CAAC,CACX,CAAA,EACDW,EAAmB,OAAQ,EAAI,EACnCA,EAAmB,SAAS,EAC3BX,EAAK,aAAe,CAACE,EAAO,UAAYA,EAAO,UAAY,CAACF,EAAK,KAC9De,GAAWf,EAAK,OAAQ,QAAS,CAC/B,IAAK,EACL,MAAOA,EAAK,KACxB,EAAa,IAAM,CACPS,EAAmB,OAAQ,CACzB,cAAe,OACf,SAAU,IACV,KAAM,SACN,aAAc,GACd,uBAAwB,IACxB,MAAOD,EAAeR,EAAK,UAAU,KAAK,EAC1C,QAASC,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIlQ,IAAUiQ,EAAK,OAASA,EAAK,MAAM,GAAGjQ,CAAI,GACjF,QAASkQ,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAIe,GAAS,IAAIjR,IAAUiQ,EAAK,OAASA,EAAK,MAAM,GAAGjQ,CAAI,EAAI,CAAC,OAAO,CAAC,EACrH,EAAe,CACD0Q,EAAmB,OAAQ,CACzB,MAAOD,EAAeR,EAAK,UAAU,SAAS,CAC/C,EAAE,KAAM,CAAC,CACxB,EAAe,EAAE,CACN,CAAA,EACDW,EAAmB,OAAQ,EAAI,EACnCA,EAAmB,SAAS,EAC3BT,EAAO,OAASA,EAAO,YACpBa,GAAWf,EAAK,OAAQ,QAAS,CAC/B,IAAK,EACL,iBAAkBA,EAAK,iBACvB,OAAQA,EAAK,MACzB,EAAa,IAAM,CACPS,EAAmB,OAAQ,CACzB,MAAOD,EAAeR,EAAK,UAAU,KAAK,EAC1C,QAASC,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIlQ,IAAUiQ,EAAK,kBAAoBA,EAAK,iBAAiB,GAAGjQ,CAAI,GACvG,cAAe,MAChB,EAAE,KAAM,CAAC,CACX,CAAA,EACD4Q,EAAmB,OAAQ,EAAI,CACzC,EAAO,GAAqBhC,EAAU,EAClCgC,EAAmB,WAAW,GAC7BL,EAAW,EAAEa,GAAYC,GAAU,CAClC,GAAIlB,EAAO,UAAY,OACvB,SAAU,CAACA,EAAO,cAAgB,CAACA,EAAO,QAChD,EAAO,CACDO,EAAmB,MAAO,CACxB,GAAIP,EAAO,GAAK,GAAGA,EAAO,EAAE,YAAc,OAC1C,MAAOM,EAAeR,EAAK,UAAU,QAAQ,EAC7C,SAAU,KACV,IAAK,WACL,UAAWC,EAAO,EAAE,IAAMA,EAAO,EAAE,EAAI,IAAIlQ,IAAUiQ,EAAK,eAAiBA,EAAK,cAAc,GAAGjQ,CAAI,GACrG,WAAYkQ,EAAO,EAAE,IAAMA,EAAO,EAAE,EAAI,IAAIlQ,IAAUiQ,EAAK,gBAAkBA,EAAK,eAAe,GAAGjQ,CAAI,EAChH,EAAS,CACDgR,GAAWf,EAAK,OAAQ,aAAc,CAAE,QAASA,EAAK,GAAI,EAC1DS,EAAmB,KAAM,CACvB,MAAOD,EAAeR,EAAK,UAAU,OAAO,EAC5C,GAAIA,EAAK,aACT,KAAM,SAChB,EAAW,CACAE,EAAO,QACHI,EAAU,EAAI,EAAGC,GAAmBM,GAAU,CAAE,IAAK,CAAG,EAAEC,GAAWd,EAAK,GAAI,CAACthB,EAAOuD,EAAGvG,KAChF4kB,EAAS,EAAIC,GAAmB,KAAM,CAC5C,MAAOC,EAAeR,EAAK,UAAU,KAAK,EAC1C,IAAKtkB,EACL,GAAIskB,EAAK,YAAYthB,CAAK,EAC1B,aAAcshB,EAAK,eAAeA,EAAK,SAASthB,EAAMwhB,EAAO,UAAU,CAAC,CAAC,EACzE,gBAAiBF,EAAK,WAAWthB,CAAK,EACtC,KAAM,QACxB,EAAmB,CACCA,EAAM,WAkBJiiB,EAAmB,OAAQ,EAAI,GAjB9BL,EAAW,EAAEC,GAAmB,MAAO,CACtC,IAAK,EACL,MAAOC,EAAeR,EAAK,UAAU,WAAWthB,CAAK,CAAC,EACtD,eAAgBshB,EAAK,UAAUthB,CAAK,EACpC,aAAcuiB,GAAWjB,EAAK,WAAWthB,EAAOuD,CAAC,EACjD,QAASgf,GAAWjB,EAAK,iBAAiBthB,CAAK,CACvE,EAAyB,CACDqiB,GAAWf,EAAK,OAAQ,aAAc,CACpC,MAAOthB,EACP,WAAYshB,EAAK,WACjB,UAAWA,EAAK,SAC1C,EAA2B,IAAM,CACPS,EAAmB,OAAQ,CACzB,UAAWT,EAAK,SAASthB,EAAMwhB,EAAO,UAAU,CAAC,CAC7E,EAA6B,KAAM,EAAeb,EAAW,CACpC,CAAA,CACzB,EAAyB,GAAuCD,EAAW,GAEzDqB,EAAmB,KAAM,CACvB,MAAOD,EAAeR,EAAK,UAAU,YAAY,EACjD,aAAcA,EAAK,eAAeA,EAAK,SAASthB,EAAMwhB,EAAO,UAAU,CAAC,CAAC,EACzE,KAAM,OAC1B,EAAqB,EACAI,EAAU,EAAI,EAAGC,GAAmBM,GAAU,KAAMC,GAAWpiB,EAAM,YAAa,CAAChE,EAAQuH,EAAGvG,KACrF4kB,EAAS,EAAIC,GAAmB,KAAM,CAC5C,MAAOC,EAAeR,EAAK,UAAU,OAAOtlB,EAAQgE,CAAK,CAAC,EAC1D,eAAgBshB,EAAK,UAAUtlB,CAAM,EACrC,gBAAiBslB,EAAK,WAAWtlB,CAAM,GAAK,OAC5C,IAAKgB,EACL,aAAculB,GAAWjB,EAAK,WAAWtlB,CAAM,EAC/C,QAASumB,GAAWjB,EAAK,kBAAkBtlB,CAAM,EACjD,GAAIslB,EAAK,aAAatlB,CAAM,EAC5B,gBAAiBslB,EAAK,WAAWtlB,CAAM,EACvC,aAAcslB,EAAK,gBAAgBA,EAAK,SAAStlB,EAAOwlB,EAAO,KAAK,CAAC,CAAC,EACtE,KAAM,QAC9B,EAAyB,CACDa,GAAWf,EAAK,OAAQ,SAAU,CAChC,OAAQtlB,EACR,WAAYslB,EAAK,WACjB,UAAWA,EAAK,UAChB,OAAQA,EAAK,MACvC,EAA2B,IAAM,CACPS,EAAmB,OAAQ,KAAMS,GAAgBlB,EAAK,SAAStlB,EAAOwlB,EAAO,KAAK,CAAC,CAAC,EAAG,CAAC,CACzF,CAAA,CACzB,EAAyB,GAAuCX,EAAW,EACtD,EAAG,GAAyB,EAC9B,EAAE,GAAuBD,EAAW,CACvD,EAAmB,GAAuBH,EAAW,EACtC,EAAG,GAAyB,IAC5BmB,EAAU,EAAI,EAAGC,GAAmBM,GAAU,CAAE,IAAK,CAAG,EAAEC,GAAWd,EAAK,GAAI,CAACtlB,EAAQuH,EAAGvG,KACjF4kB,EAAS,EAAIC,GAAmB,KAAM,CAC5C,MAAOC,EAAeR,EAAK,UAAU,OAAOtlB,CAAM,CAAC,EACnD,eAAgBslB,EAAK,UAAUtlB,CAAM,EACrC,gBAAiBslB,EAAK,WAAWtlB,CAAM,GAAK,OAC5C,IAAKgB,EACL,aAAculB,GAAWjB,EAAK,WAAWtlB,CAAM,EAC/C,QAASumB,GAAWjB,EAAK,kBAAkBtlB,CAAM,EACjD,GAAIslB,EAAK,aAAatlB,CAAM,EAC5B,gBAAiBslB,EAAK,WAAWtlB,CAAM,EACvC,aAAcslB,EAAK,gBAAgBA,EAAK,SAAStlB,EAAOwlB,EAAO,KAAK,CAAC,CAAC,EACtE,KAAM,QACxB,EAAmB,CACDa,GAAWf,EAAK,OAAQ,SAAU,CAChC,OAAQtlB,EACR,WAAYslB,EAAK,WACjB,UAAWA,EAAK,UAChB,OAAQA,EAAK,MACjC,EAAqB,IAAM,CACPS,EAAmB,OAAQ,KAAMS,GAAgBlB,EAAK,SAAStlB,EAAOwlB,EAAO,KAAK,CAAC,CAAC,EAAG,CAAC,CACzF,CAAA,CACnB,EAAmB,GAAuCV,EAAW,EACtD,EAAG,GAAyB,EAC3C,EAAW,GAAuBN,EAAU,EACnCc,EAAK,UACFe,GAAWf,EAAK,OAAQ,YAAa,CAAE,IAAK,CAAC,EAAI,IAAM,CACrDS,EAAmB,MAAO,CACxB,MAAOD,EAAeR,EAAK,UAAU,SAAS,EAC9C,UAAWA,EAAK,SAASE,EAAO,aAAa,CAC7D,EAAiB,KAAM,GAAuBT,EAAW,CAC5C,CAAA,EACDkB,EAAmB,OAAQ,EAAI,EAClCX,EAAK,UACFe,GAAWf,EAAK,OAAQ,YAAa,CAAE,IAAK,CAAC,EAAI,IAAM,CACrDS,EAAmB,MAAO,CACxB,MAAOD,EAAeR,EAAK,UAAU,SAAS,EAC9C,UAAWA,EAAK,SAASE,EAAO,aAAa,CAC7D,EAAiB,KAAM,GAAuBR,EAAW,CAC5C,CAAA,EACDiB,EAAmB,OAAQ,EAAI,EAClCT,EAAO,UAAYF,EAAK,SACpBM,EAAW,EAAEC,GAAmB,MAAO,CACtC,IAAK,EACL,MAAOC,EAAeR,EAAK,UAAU,SAAS,EAC9C,IAAK,gBACnB,EAAe,CACDe,GAAWf,EAAK,OAAQ,WAAY,CAAE,EAAE,IAAM,CAC5CS,EAAmB,OAAQ,CACzB,MAAOD,EAAeR,EAAK,UAAU,gBAAgB,CACtD,EAAE,KAAM,CAAC,CACX,CAAA,CACF,EAAE,CAAc,GACjBW,EAAmB,OAAQ,EAAI,EACnCI,GAAWf,EAAK,OAAQ,YAAa,CAAE,QAASA,EAAK,EAAI,CAAA,CAC1D,EAAE,GAAuCf,EAAU,CACrD,EAAE,EAAe,CAAC,KAAM,UAAU,CAAC,GACpC0B,EAAmB,sDAAsD,EACxET,EAAO,UACHI,EAAW,EAAEC,GAAmB,QAAS,CACxC,IAAK,EACL,MAAOC,EAAeR,EAAK,UAAU,SAAS,EAC9C,SAAU,KACV,MAAOA,EAAK,UACZ,SAAU,EACpB,EAAW,KAAM,GAAuBL,EAAW,GAC3CgB,EAAmB,OAAQ,EAAI,EACnCA,EAAmB,wBAAwB,EAC1CT,EAAO,eACHI,EAAS,EAAIC,GAAmBM,GAAU,CAAE,IAAK,CAAC,EAAI,CACpDX,EAAO,MAAQ,UACXI,EAAW,EAAEC,GAAmB,QAAS,CACxC,IAAK,EACL,KAAM,SACN,KAAML,EAAO,KACb,MAAOF,EAAK,aAAe,OAAYA,EAAK,WAAa,EACzE,EAAiB,KAAM,EAAeJ,EAAW,IAClCU,EAAU,EAAI,EAAGC,GAAmBM,GAAU,CAAE,IAAK,CAAG,EAAEC,GAAWd,EAAK,WAAY,CAACrnB,EAAGsJ,KACjFqe,EAAS,EAAIC,GAAmB,QAAS,CAC/C,KAAM,SACN,KAAM,GAAGL,EAAO,IAAI,KACpB,MAAOvnB,EACP,IAAKsJ,CACvB,EAAmB,KAAM,EAAe4d,EAAW,EACpC,EAAG,GAAyB,EAClC,EAAE,EAAyB,GAC5Bc,EAAmB,OAAQ,EAAI,EACnCA,EAAmB,gCAAgC,EAClDT,EAAO,YAAcF,EAAK,aACtBM,EAAW,EAAEC,GAAmB,MAAO,CACtC,IAAK,EACL,MAAOC,EAAeR,EAAK,UAAU,MAAM,EAC3C,GAAIA,EAAK,WACT,cAAe,MAChB,EAAEkB,GAAgBlB,EAAK,SAAS,EAAG,GAA6BF,EAAW,GAC5Ea,EAAmB,OAAQ,EAAI,EACnCA,EAAmB,iCAAiC,EACpDF,EAAmB,MAAO,CACxB,MAAOD,EAAeR,EAAK,UAAU,MAAM,CAC5C,EAAE,KAAM,CAAC,CACd,EAAK,GAAuCtB,EAAU,CACtD,CAEAD,GAAO,OAASsB,GAChBtB,GAAO,OAAS,wlBClrJhB,SAAwB4C,GAAOtoB,EAAe,CAC1C,OAAOA,EAAM,QAAQ,CAAC,EAAE,QAAQ,wBAAyB,GAAG,CAChE,CCFY,IAAAuoB,QACRA,EAAAA,EAAA,KAAO,CAAP,EAAA,OACAA,EAAAA,EAAA,cAAgB,CAAhB,EAAA,gBACAA,EAAAA,EAAA,aAAe,CAAf,EAAA,eAHQA,IAAAA,IAAA,CAAA,CAAA,ECAAC,QACRA,EAAAA,EAAA,IAAM,CAAN,EAAA,MACAA,EAAAA,EAAA,aAAe,CAAf,EAAA,eACAA,EAAAA,EAAA,QAAU,CAAV,EAAA,UAHQA,IAAAA,IAAA,CAAA,CAAA,ECAAC,QACRA,EAAAA,EAAA,KAAO,CAAP,EAAA,OACAA,EAAAC,EAAA,IAAA,CAAA,EAAA,MACAD,EAAAC,EAAA,MAAA,CAAA,EAAA,QACAD,EAAAC,EAAA,aAAA,CAAA,EAAA,eACAD,EAAAC,EAAA,IAAA,CAAA,EAAA,MACAD,EAAAC,EAAA,OAAA,CAAA,EAAA,SACAD,EAAAC,EAAA,WAAA,CAAA,EAAA,aACAD,EAAAC,EAAA,aAAA,CAAA,EAAA,eARQD,IAAAA,IAAA,CAAA,CAAA,ECAAE,QACRA,EAAAA,EAAA,IAAM,CAAN,EAAA,MACAA,EAAAA,EAAA,OAAS,GAAT,EAAA,SACAA,EAAAA,EAAA,OAAS,GAAT,EAAA,SAHQA,IAAAA,IAAA,CAAA,CAAA,ECSL,MAAMC,GAAa,IAAM,CACtB,MAAAC,EAAkB3oB,EAAsB,IAAI,EAC5C4oB,EAAY5oB,EAAwB,EAAE,EACtC6oB,EAAgB7oB,EAAsB,IAAI,EAC1C8oB,EAAS9oB,EAAwB,EAAE,EACnC+oB,EAAU/oB,EAAI,EAAE,EAChBgpB,EAAOhpB,EAAI,EAAE,EACbipB,EAASjpB,EAAI,EAAE,EACfkpB,EAASlpB,EAAsB,IAAI,EACnCmpB,EAAqBnpB,EAAoC,IAAI,EAC7DopB,EAAqBppB,EAAI,EAAK,EAC9BqpB,EAAuBrpB,EAAsB,IAAI,EACjDspB,EAAwBtpB,EAAsB,IAAI,EAClDupB,EAAkBvpB,EAAI,EAAI,EAC1BwpB,EAAqBxpB,EAAI,EAAK,EAC9BypB,EAAQzpB,EAAsB,IAAI,EAClC0pB,EAAY1pB,EAAsB,IAAI,EACtC2pB,EAAW3pB,EAAsB,IAAI,EACrC4pB,EAAU5pB,EAAsB,IAAI,EACpC6pB,EAAQ7pB,EAAsB,IAAI,EAClC8pB,EAAQ9pB,EAAsB,IAAI,EAClC+pB,EAAkB/pB,EAAoC,IAAI,EAE1DgqB,EAASC,GAAU,EAEnBC,EAAoB/pB,EAAS,IACxBwoB,EAAgB,QAAUF,GAAQ,IAAI,YAAcE,EAAgB,QAAUF,GAAQ,OAAO,SAAS,CAChH,EAED,eAAe0B,EAAwBC,EAA+B,CAClEL,EAAgB,MAAQK,EACxBf,EAAqB,MAAQe,EAAQ,GACrChB,EAAmB,MAAQ,GAC3BiB,EAAiBD,CAAO,EACxBjB,EAAmB,MAAQiB,CAAA,CAG/B,eAAeC,EAAiBD,EAA+B,OACvDxB,EAAU,MAAM,SAAW,IAAAA,EAAA,MAAA,MAAA0B,GAAA,kBAAA,GACjBhB,EAAc,MAAAc,EAAA,sBAE5BzB,EAAA,QAAsC,MAAA,KAAA4B,GAAA,SAAAA,EAAA,KAAA,IAAAH,EAAA,SAAA,EAAA,MACtC,MAAAI,EAAwB7B,EAAgB,KAAA,EAElCyB,EAAA,UAAAvB,SAAsC4B,EAAA3B,EAAA,MAAA,KAAA1T,GAAA,SAAAA,EAAA,KAAA,IAAAgV,EAAA,OAAA,IAAA,YAAAK,EAAA,OAE5CvB,EAAY,MAAAkB,EAAA,OACRpB,EAAA,MAAAoB,EAAsB,KAE1BnB,EAAO,MAAQmB,EAAQ,OACvBX,QAAqBW,EAAA,MACrBrB,QAAuBqB,EAAA,QACvBV,QAAsBU,EAAA,UACtBT,QAAwBS,EAAA,SACxBP,EAAA,QAA0B,MAC1BC,EAAA,QAAyB,MACzBF,QAAsBQ,EAAA,QACtBL,EAAsB,MAAAK,EACtBf,EAAwB,MAAAe,EAAA,GAExBhB,EAAwB,MAAA,GACxBD,EAAA,OACA,CACA,SAAAuB,GAA2B,CAC/BtB,EAAA,MAAA,GAEAC,EAAyB,MAAA,KACrBJ,EAAA,MAAA,GACAD,EAAA,MAAA,GACAD,EAAe,MAAA,GACfU,EAAa,MAAA,IACb,CACA,eAAckB,GAAA,OAClB,MAAAP,EAAA,MAAAQ,GAAA,kBAAA7B,EAAA,KAAA,EAEAqB,IACIzB,EAAgB,MAAqBF,GAAA,IAAA,SAAA,EAErC,MAAK+B,EAAA7B,EAAA,KAAA,EACDE,EAAA,OAAA4B,EAAA3B,EAAA,MAAA,KAAA1T,GAAAA,EAAA,OAAAgV,EAAA,KAAA,IAAA,YAAAK,EAAA,MAEYzB,EAAA,MAAAoB,EAAA,KAChB,CAEc,eAAAI,EAAeK,GAE7B,GAAA,CAAKA,EAAgB,OACzB,MAAAC,EAAA,SAAAD,CAAA,EAEAhC,aACIC,EAAKH,MAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,CACD,CAEE,eAAAoC,EAAoCC,EAAA9sB,EAAA+sB,EAAA,OAC1C,IAAAC,EACA,MAAAC,EAAkC,CACtC,GAAApB,EAAA,MAAA,GAEe,YAAAA,EAAA,MAAA,WACP,EAEEzrB,EAA4C,CAC9C,GAAI4sB,EACJ,YAAanB,EAAgB,MAAO,WACxC,EAOA,GALA7rB,GAAgC,MAAAosB,GAAA,kBAAA,CAC5B,GAAIP,EAAA,MAAA,GACJ,YAAaqB,WAAuB,CACxC,IAEIX,EAAAV,EAAC,QAAD,YAAAU,EAAC,eAAAW,GAAA,SACD,GAAA7B,EAAqC,MAAA,CACjC,GAAI,YACqB,MAAAqB,GAAA,6BAAAb,EAAA,MAAA,GAAAkB,CAAA,EAC5BI,GAAA,MAEe/sB,EAAA,GAAA+sB,gBACWD,GAAA,QACnB,MAAUd,GAAA,kBAAAhsB,CAAA,IAGV6sB,cAAyBC,GAAA,QACrBF,EAAU,MAAAN,GAAA,uBAAAO,CAAA,EACV7sB,EAAK,KACCA,EAAA,YAAa8sB,WAChB,MAAAd,GAAA,kBAAAhsB,CAAA,EAEH,CAEA0sB,GAAUhB,EAAA,KAAA,CACV,KAAA,aACA,CAAM,CAAmC,MAEjDA,EAAA,KAAA,CAEA,KAAK,iBACD,CAAA,OAIRgB,GAAAhB,EAAA,KAAA,CACG,KAAA,aACH,CAAA,CACuC,CAE/C,eAAAsB,GAAA,CAEA,MAAAC,EAAiC,MAAAX,GAAA,cAAA,SAAAjC,EAAA,KAAA,EAAAK,EAAA,MAAAC,EAAA,MAAAQ,EAAA,MAAAV,EAAA,MAAAF,EAAA,MAAA,SAAAA,EAAA,KAAA,EAAA,MAAA,EACvB,MAAA,CAAgD,QAAS0C,GAAA,YAAAA,UAC3D,wBAAKA,EAAA,YAAO,MAAOA,GAAA,YAAAA,EAAA,KAAA,CAAa,CAAe,eACjCC,EAAiBN,EAAmB,CAAa,MAAAd,EAAA,MAAAQ,GAAA,WAAAM,CAAA,EAE5DnB,EAAA,MAAAK,EAAAf,EACkB,MAAA6B,EAAA9B,QACI,GAAWiB,EACjBD,CAAA,EACvBjB,EAAA,MAAAiB,CAAA,CAGJ,eAAeqB,OAA+C,CAC1D,MAAMntB,EAAU,CAEhB,QAAAotB,EACA,QAAAC,EACA,YAAAA,EAA2B,WAE3B,EAEA,MAAArB,GAAmB,iBAAQhsB,CAAA,CAAA,CAGhB,SAAAstB,EAAAC,IAAqE,CAChF,MAAMC,EAAsC,CACxC,WAAAD,EAAA,WACA,UAASA,EAAA,UACT,UAAwB,QAC5B,OAAAA,EAAA,OAEM,KAAAA,EAAa,KACvB,OAAAA,EAAA,OAES,MAAAA,EAAA,MACL,QAAmBA,EAAA,QACf,YAAuB,UACvB,WAAsB,SACtB,QAAoB,MACpB,QAAmB,MACnB,QAAiBA,EAAA,OAAA,IAEC,CAClB,WAAoBE,EAAA,WACpB,UAAWA,EAAW,UACtB,UAAqB,QACrB,OAAkBA,EAAA,OAClB,OAAkB,KAClB,SAAoB,OACxB,MAAAA,EAAA,MAEA,QAAmBA,EAAA,QACf,YAAuB,UACvB,WAAsB,SACtB,QAAoB,MACpB,QAAmB,MACnB,QAAiBA,EAAA,OAAA,EACE,YACD,UAAAD,CAAA,IAAA,KAAA,UAAAE,CAAA,CAAA,CACE,WACEC,EAAA,CAAA,MACD,MAAA,MAAA,GAAA,QACH,CAClB,WAAkB9C,EAAA,MAAA,WAClB,UAAoBA,EAAA,MAAA,UACxB,QAAAA,EAAA,MAAA,QAEA,SAAuB,MAAgB,OAC3C,KAAAA,EAAA,MAAA,KAEA,SAA+D,MAAA,OAC3D,MAAwBA,EAAA,MAAA,MACb,QAAAA,EAAA,MAAA,QAEX,UAAwBA,EAAA,MAAA,UACpB,SAAAA,QAAqC,SACrC,MAAAA,QAAoC,MACpC,MAAAA,QAAkC,MAClC,UAAiC,MAAA,QACjC,cAA+B,MAAA,WAC/B,EACA,OAAA,gBAAgC,IAAA,KAAA,UAAA+C,CAAA,CAAA,CAEhC,SAAAC,IAAoC,CACpC,OAAAvD,gBAAmC2B,EAAA,QAAAO,CAAA,CAAA,CAEnC,SAAAsB,IAAgC,CAChC,OAAAtD,gBAAkC1T,EAAA,QAAAiX,CAAA,CAAA,CAEtC,SAAAC,EAAAxsB,EAAAysB,EAAA,CAEA,GAAAA,EAAuB,CAC3B/C,EAAA,MAAA+C,EAAA,MAEA,MACI,CACJ/C,EAAA,MAAA,EAEA,CACI,MAAA,CACJ,kBAAAU,EAES,wBAAAC,EACL,iBAAAE,EACI,cAAAK,EACA,oBAAAC,EACJ,iBAAAH,EAEA,yBAAAO,EACJ,gBAAAO,EAEO,4BAAAE,EACH,kBAAAC,GACA,gBAAAG,EACA,gBAAAY,EACA,eAAAL,EACA,aAAAC,EACA,gBAAAzD,EACA,UAAAC,EACA,cAAAC,EACA,OAAAC,EACA,QAAAC,EACA,KAAAC,EACA,OAAAC,EACA,OAAAC,EACA,mBAAAC,EACA,mBAAAC,EACA,qBAAAC,EACA,sBAAAC,EACA,gBAAAC,EACA,MAAAE,EACA,UAAAC,EACA,SAAAC,EACA,QAAAC,EACA,MAAAC,EACA,MAAAC,EACA,gBAAAC,EACA,yBAAAuC,EACA,mBAAA9C,CACA,CAAA,ECxSI,IAAAiD,QACRA,EAAAA,EAAA,qBAAuB,CAAvB,EAAA,uBACAA,EAAAA,EAAA,eAAiB,CAAjB,EAAA,iBACAA,EAAAA,EAAA,wBAA0B,CAA1B,EAAA,0BACAA,EAAAA,EAAA,mBAAqB,EAArB,EAAA,qBACAA,EAAAA,EAAA,wBAA0B,EAA1B,EAAA,0BACAA,EAAAA,EAAA,kBAAoB,EAApB,EAAA,oBANQA,IAAAA,IAAA,CAAA,CAAA,EAeAC,QACRA,EAAAA,EAAA,YAAc,CAAd,EAAA,cACAA,EAAAA,EAAA,UAAY,CAAZ,EAAA,YAFQA,IAAAA,IAAA,CAAA,CAAA,ECPL,MAAMC,GAAkB,IAAM,CAC3B,MAAAC,EAAqB5sB,EAAyB,EAAE,EAChDwR,EAAQxR,EAA2B,IAAI,EACvC6sB,EAAkB7sB,EAAmC,IAAI,EACzD8sB,EAA2B9sB,EAAI,CAAC,EAChC+sB,EAA4B/sB,EAAI,CAAC,EACjCgtB,EAAiChtB,EAAI,CAAC,EACtCitB,EAA4BjtB,EAAI,CAAC,EACjCktB,EAAwBltB,EAAI,CAAC,EAC7BmtB,EAA6BntB,EAAI,CAAC,EAClCotB,EAAoBptB,EAAI,CAAC,EACzBqtB,EAAgBrtB,EAA6B,EAAE,EAC/CstB,EAA0BttB,EAA6B,EAAE,EACzDutB,EAAyBvtB,EAA6B,EAAE,EACxDwtB,EAAWxtB,EAAwB,EAAE,EACrCytB,EAA4BztB,EAAoC,EAAE,EAClE0tB,EAA2B1tB,EAAI,CAAC,EAChC2tB,EAA2B3tB,EAAI,CAAC,EAChC4tB,EAAgB5tB,EAAmB,IAAI,EAEvC6tB,EAAkB1tB,EAAS,IAAM,OAC5B,QAAAsqB,EAAAqD,GAAU,mBAAmB,IAA7B,YAAArD,EAAgC,QAAS,EAAA,CACnD,EAEKsD,EAAoB5tB,EAAS,IACxBysB,EAAmB,MAAM,OAAOoB,GAC5BA,EAAS,iBAAmBvB,GAAc,kBACpD,CACJ,EAEKwB,EAA2B9tB,EAAS,IAC/BktB,EAAc,MAAM,OAAOW,GACvBA,EAAS,iBAAmBvB,GAAc,oBAAsBuB,EAAS,qBAAuB,CAC1G,CACJ,EAEKE,EAA2B/tB,EAAS,IAC/BktB,EAAc,MAAM,OAAOW,GACvBA,EAAS,iBAAmBvB,GAAc,yBAA2BuB,EAAS,qBAAuB,CAC/G,CACJ,EAED,SAASG,EAAkBH,EAAiC,CACpDA,EAAS,iBAAmBvB,GAAc,0BAAAO,EAAA,OAAAgB,EAAA,sBAC1CA,EAAA,iBAAAvB,GAAiD,qBAAAM,EAAA,OAAAiB,EAAA,sBAEjDA,EAAS,iBAAmBvB,GAAc,iBAAAK,EAAA,OAAAkB,EAAA,qBAC1C,CAEA,SAAAI,IAA0C,GAAA,CAC1CC,EACRd,EAAA,MAAA,QAAAS,GAAA,CAESG,EAAeH,EACpB,CAAA,EAEQX,EAAA,MAAkB,QAAQW,GAAA,CAC7BG,EAAAH,CAAA,CAAA,CACE,CAEC,CAA0B,SAC7BM,GAAA,CACL,IAAAC,EAAArB,EAAA,MACJsB,EAAApB,EAAA,MAEAqB,EAAoC,EAChCpB,QAA0CT,EAAA,MAAA,IAAAoB,GAAA,CAE1C,GADAS,EAAsCC,EAAAV,EAAAQ,EAAAD,EAAA,EAAA,EACVP,EAAA,iBAAAvB,GAAA,yBAAAuB,EAAA,iBAAAvB,GAAA,gBAAAuB,EAAA,iBAAAvB,GAAA,kBAE5B,OAAA8B,GAAsBE,EAClB,CAEI,WAA4BT,EAAA,GAGX,qBAAAS,EACa,WAAAT,EAAA,WAC1B,aAAqBA,EAAA,KACrB,eAAsBA,EAAA,cAAA,EAEC,GACvBA,mBAAyBvB,GAAA,oBAAAuB,EAAA,0BAAAtB,GAAA,YAC7B,OAAA8B,GAAAC,EACJ,CAEI,WAA4BT,EAAA,GAEX,qBAAAS,EACa,WAAAT,EAAA,WAC1B,aAAqBA,EAAA,KACrB,eAAsBA,EAAA,cAAA,EAEC,GACvBA,mBAAyBvB,GAAA,oBAAAuB,EAAA,0BAAAtB,GAAA,WAAAiC,EAAAX,CAAA,EAC7B,OAAAQ,GAAAC,EACJ,CAEI,WAA4BT,EAAA,GAGX,qBAAAS,EACa,WAAAT,EAAA,WAC1B,aAAqBA,EAAA,KACrB,eAAsBA,EAAA,cAAA,CAEC,CAAA,EAAA,UACPA,IAAS,MAAA,EAC7BN,EAAA,MAAAa,EACJZ,EAAA,MAAAa,CAAA,CAGJ,SAAAE,EAAiCV,EAAAQ,EAAAD,EAAAK,EAAA,CACjC,IAAAC,EAAAC,EAAiCd,EAAA,cAAA,EACrCe,EAAAf,EAAA,cAAAa,GAAAb,EAAA,mBAAA,KAAAA,EAAA,eAEAgB,EAAmChB,EAAA,eAAyDA,EAAA,uBAAkD,MAAAe,EAAAf,EAAA,sBAAAA,EAAA,sBAAAe,EACtIE,EAA+B,EACnC,OAAIjB,mBAA0BvB,GAAgB,qBAC1CwC,EAAeT,EAAS,EAAAA,EACdQ,GAAA,EAAAA,EAAiCR,EAA0B,IAKrER,EAAS,iBAAmBvB,GAAc,yBAAoBuB,EAAA,iBAAAvB,GAAA,qBAC9DwC,EAAiBV,EAAgB,EAC3BA,EAAgBS,GAAiB,EAAIA,EAAeT,EACpD,GAGNP,EAAS,iBAAmBvB,GAAc,gBAE1Ce,EAAA,MAAA,WACM,CAGN,GADJQ,EAAA,mBAAA,MAAA,GAAA,EACgC,SAAAkB,EAAA,iBAA8B,SAAA,CAAA,EAAA,CACjD,MAAAC,EAAe1B,EAA8B,MAAA,KAAA2B,IAAAA,GAAA,YAAAF,EAAA,gBAAA,EAC3BG,GAAAF,GAAA,YAAAA,EAA4B,YAAA,KACvBnB,EAAyB,2BAAa,MAAAkB,EAAA,SAAAlB,EAAA,0BACxDa,EAAAS,WAA8CtB,EAAM,0BAAoDkB,EAAwB,WAChI,MAAAK,GAAAvB,iBAA4CkB,EAAA,MAAAA,EAAA,MAAAlB,EAAA,eAClDe,kBAAuCF,GAAAb,EAAA,mBAAqC,QAA4BuB,GAAAvB,EAAA,0BAAAuB,GAAAL,EAAA,SACxGF,EAAiChB,EAAA,eAAAA,EAAgB,+BAA8CA,EAAA,sBAAAwB,EAAAjB,EAAAP,EAAA,qBAAA,EAAAwB,EAAAjB,EAAAQ,CAAA,EAC/F,MAAMU,GAA0BJ,EAAA,IAAiCL,GAAyB,EAAAA,EAAAK,EAAA,EAEzEJ,GAAAQ,GAKjBN,MACK,WAAAM,IAILA,MAAgD,CAAAb,GAE9BtB,EAAA,MAAA,KAAA,CAEd,WAAAU,EAAA,GACA,qBAAyByB,GAEzB,YAAAP,EAAA,mBACA,WAAAlB,EAAA,WACI,aAAqBA,EAAA,KACrB,eAAsBA,EAAA,cAAA,CAAA,CAED,CACE,CAAA,EAG/BiB,CAAA,CACJ,SACHH,EAAAY,EAAA,CACL,OAAAA,IAAAjD,GAAA,yBAAAiD,IAAAjD,GAAA,kBAAAS,EAAA,MAEOwC,IAAAjD,GAAA,mBAAAW,EAAA,MACX,CAEA,CACI,SAAqBoC,EAAAjB,EACjBQ,EAAA,CACA,OAAAR,EAA6BQ,EAAA,EAAAA,EAAAR,CAEjC,CACI,SAAAI,EAAyBX,EAAA,CAEtB,MAAAkB,EAAA1B,EAAA,MAAA,KAAAmC,GAAAA,EAAA,mBAAA3B,EAAA,iBAAA,EACX,GAAAkB,IAAA,OAAA,MAAA,GAES,MAAAU,IAA6D,MAAA,OAAAC,GAAAA,EAAA,oBAAA7B,EAAA,mBAAAkB,EAAA,WAAAW,EAAA,eAAA,EAAA,EAC1D,GAAAD,EAAkC,SAAA,EAAA,MAAqB,GACnE,MAAAE,EAAAF,EAAA,OAAA,CAAA7rB,EAAAgsB,IAAAhsB,EAAA,cAAAgsB,EAAA,cAAAhsB,EAAAgsB,CAAA,EAEA,OAAS/B,SAAqD,EAC1D,CACA,SAAgBgC,EAAAhC,EAAA,CACL,OAAAR,EAAA,MAAA,KAAA4B,GAAAA,EAAA,mBAAApB,EAAA,mBAAAoB,EAAA,WAAApB,EAAA,eAAA,EAAA,CAEX,CACA,aAAwCiC,EAAA,GAAA,CAC7B,OAAAA,EAAAzC,EAAA,MAAA,KAAAmC,GAAA,OAAA,OAAAlF,EAAAuD,EAAA,qBAAA,YAAAvD,EAAA,OAAA,MAAA,KAAA,KAAAoF,GAAAF,EAAA,iBAAA,SAAA,IAAAE,GAAA,EAAArC,EAAA,MAAA,KAAAmC,GAAAA,EAAA,mBAAA3B,EAAA,iBAAA,CAEX,CAEO,SAAAkC,IAAsC,CACjD,GAAA,CAAArD,EAAA,MAAA,OAGI,GADJe,aACIf,EAAgB,MAAW,0BAAgDH,GAA8B,WAAe,CAAAyD,EAAAtD,OAA4B,EAAA,CACxJe,EAAA,MAAA,sBAES,MACL,CACI,GAAAf,EAAsB,MAAA,iBAAuCJ,oBAAiC0D,EAAiBtD,QAA0B,EAAA,EAAA,CAAQe,EAAA,MAAA,sBAE1I,MAA8F,CAG7G,GAAAf,EAAkC,MAAA,0BAAAH,GAAA,WAAA,CAAAsD,EAAAnD,EAAA,KAAA,EAAA,CAC9Be,EAAqB,MAAA,wCACjB,MAEJ,CAEI,MAAAa,EAAkDC,EAAA7B,EAAA,QAAqC,MAAmCa,EAAQ,MAAA,EAAA,EAClIH,EAAsB,MAAA,KAAA,CACtB,WAAAV,EAAA,MAAA,GACJ,qBAAA4B,EAEI,WAAA5B,EAAsB,MAAA,WACtB,aAAcA,EAAQ,MAAA,KACtB,eAAAA,EAAA,MAAA,cAAA,CACJ,CAEA,CACI,SAAAuD,GAAsB,CACtB,MAAAC,EAAAvC,GAAA,oBAAA,CACJ,OAAA,OAEA,CAAM,EAENuC,EAAA,MAAA,MAAyD,CACnB,MACZ,CACtB,mBAAAzD,EACA,MAAApb,EACA,gBAAAqb,EACJ,yBAAAC,EACJ,0BAAAC,EAEA,+BAAAC,EACI,0BAAAC,EACA,sBAAAC,EACJ,2BAAAC,EAEO,kBAAAC,EACH,wBAAAE,EAAoB,uBAAAC,EAAO,SAAAC,EAAiB,0BAAAC,EAA0B,cAAAG,EAA2B,yBAAAK,EAAgC,yBAAAC,EACjI,eAAAE,EAAuB,yBAAAE,EAA4B,sBAAAQ,EAAmB,oBAAAkB,EAAyB,mBAAAG,EAAwB,uBAAAD,GAAU,gBAAArC,EACjI,eAAAuC,CAAe,CAAA,EC7QvB,SAAwBE,GAAWxwB,EAAe,CAC9C,OAAO,WAAWA,EAAM,QAAQ,CAAC,CAAC,CACtC"}