UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 26.5 kB
{"version":3,"file":"input-number2.mjs","sources":["../../../../../../packages/components/input-number/src/input-number.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n ns.b(),\n ns.m(inputNumberSize),\n ns.is('disabled', inputNumberDisabled),\n ns.is('without-controls', !controls),\n ns.is('controls-right', controlsAtRight),\n ns.is(align, !!align),\n ]\"\n @dragstart.prevent\n >\n <span\n v-if=\"controls\"\n v-repeat-click=\"decrease\"\n role=\"button\"\n :aria-label=\"t('el.inputNumber.decrease')\"\n :class=\"[ns.e('decrease'), ns.is('disabled', minDisabled)]\"\n @keydown.enter=\"decrease\"\n >\n <slot name=\"decrease-icon\">\n <el-icon>\n <arrow-down v-if=\"controlsAtRight\" />\n <minus v-else />\n </el-icon>\n </slot>\n </span>\n <span\n v-if=\"controls\"\n v-repeat-click=\"increase\"\n role=\"button\"\n :aria-label=\"t('el.inputNumber.increase')\"\n :class=\"[ns.e('increase'), ns.is('disabled', maxDisabled)]\"\n @keydown.enter=\"increase\"\n >\n <slot name=\"increase-icon\">\n <el-icon>\n <arrow-up v-if=\"controlsAtRight\" />\n <plus v-else />\n </el-icon>\n </slot>\n </span>\n <el-input\n :id=\"id\"\n ref=\"input\"\n type=\"number\"\n :step=\"step\"\n :model-value=\"displayValue\"\n :placeholder=\"placeholder\"\n :readonly=\"readonly\"\n :disabled=\"inputNumberDisabled\"\n :size=\"inputNumberSize\"\n :max=\"max\"\n :min=\"min\"\n :name=\"name\"\n :aria-label=\"ariaLabel\"\n :validate-event=\"false\"\n :inputmode=\"inputmode\"\n @keydown=\"handleKeydown\"\n @blur=\"handleBlur\"\n @focus=\"handleFocus\"\n @input=\"handleInput\"\n @change=\"handleInputChange\"\n >\n <template v-if=\"$slots.prefix\" #prefix>\n <slot name=\"prefix\" />\n </template>\n <template v-if=\"$slots.suffix\" #suffix>\n <slot name=\"suffix\" />\n </template>\n </el-input>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onMounted, onUpdated, reactive, ref, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { ElInput } from '@element-plus/components/input'\nimport { ElIcon } from '@element-plus/components/icon'\nimport {\n useFormDisabled,\n useFormItem,\n useFormSize,\n} from '@element-plus/components/form'\nimport { vRepeatClick } from '@element-plus/directives'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport {\n debugWarn,\n getEventCode,\n getEventKey,\n isNumber,\n isString,\n isUndefined,\n throwError,\n} from '@element-plus/utils'\nimport { ArrowDown, ArrowUp, Minus, Plus } from '@element-plus/icons-vue'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { inputNumberEmits, inputNumberProps } from './input-number'\n\nimport type { InputInstance } from '@element-plus/components/input'\n\ndefineOptions({\n name: 'ElInputNumber',\n})\n\nconst props = defineProps(inputNumberProps)\nconst emit = defineEmits(inputNumberEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('input-number')\nconst input = ref<InputInstance>()\n\ninterface Data {\n currentValue: number | null | undefined\n userInput: null | number | string\n}\nconst data = reactive<Data>({\n currentValue: props.modelValue,\n userInput: null,\n})\n\nconst { formItem } = useFormItem()\n\nconst minDisabled = computed(\n () => isNumber(props.modelValue) && props.modelValue <= props.min\n)\nconst maxDisabled = computed(\n () => isNumber(props.modelValue) && props.modelValue >= props.max\n)\n\nconst numPrecision = computed(() => {\n const stepPrecision = getPrecision(props.step)\n if (!isUndefined(props.precision)) {\n if (stepPrecision > props.precision) {\n debugWarn(\n 'InputNumber',\n 'precision should not be less than the decimal places of step'\n )\n }\n return props.precision\n } else {\n return Math.max(getPrecision(props.modelValue), stepPrecision)\n }\n})\nconst controlsAtRight = computed(() => {\n return props.controls && props.controlsPosition === 'right'\n})\n\nconst inputNumberSize = useFormSize()\nconst inputNumberDisabled = useFormDisabled()\n\nconst displayValue = computed(() => {\n if (data.userInput !== null) {\n return data.userInput\n }\n let currentValue: number | string | undefined | null = data.currentValue\n if (isNil(currentValue)) return ''\n if (isNumber(currentValue)) {\n if (Number.isNaN(currentValue)) return ''\n if (!isUndefined(props.precision)) {\n currentValue = currentValue.toFixed(props.precision)\n }\n }\n return currentValue\n})\nconst toPrecision = (num: number, pre?: number) => {\n if (isUndefined(pre)) pre = numPrecision.value\n if (pre === 0) return Math.round(num)\n let snum = String(num)\n const pointPos = snum.indexOf('.')\n if (pointPos === -1) return num\n const nums = snum.replace('.', '').split('')\n const datum = nums[pointPos + pre]\n if (!datum) return num\n const length = snum.length\n if (snum.charAt(length - 1) === '5') {\n snum = `${snum.slice(0, Math.max(0, length - 1))}6`\n }\n return Number.parseFloat(Number(snum).toFixed(pre))\n}\nconst getPrecision = (value: number | null | undefined) => {\n if (isNil(value)) return 0\n const valueString = value.toString()\n const dotPosition = valueString.indexOf('.')\n let precision = 0\n if (dotPosition !== -1) {\n precision = valueString.length - dotPosition - 1\n }\n return precision\n}\nconst ensurePrecision = (val: number, coefficient: 1 | -1 = 1) => {\n if (!isNumber(val)) return data.currentValue\n if (val >= Number.MAX_SAFE_INTEGER && coefficient === 1) {\n debugWarn(\n 'InputNumber',\n 'The value has reached the maximum safe integer limit.'\n )\n return val\n } else if (val <= Number.MIN_SAFE_INTEGER && coefficient === -1) {\n debugWarn(\n 'InputNumber',\n 'The value has reached the minimum safe integer limit.'\n )\n return val\n }\n\n // Solve the accuracy problem of JS decimal calculation by converting the value to integer.\n return toPrecision(val + props.step * coefficient)\n}\nconst handleKeydown = (event: KeyboardEvent | Event) => {\n const code = getEventCode(event as KeyboardEvent)\n const key = getEventKey(event as KeyboardEvent)\n\n if (props.disabledScientific && ['e', 'E'].includes(key)) {\n event.preventDefault()\n return\n }\n\n switch (code) {\n case EVENT_CODE.up: {\n event.preventDefault()\n increase()\n break\n }\n case EVENT_CODE.down: {\n event.preventDefault()\n decrease()\n break\n }\n }\n}\nconst increase = () => {\n if (props.readonly || inputNumberDisabled.value || maxDisabled.value) return\n const value = Number(displayValue.value) || 0\n const newVal = ensurePrecision(value)\n setCurrentValue(newVal)\n emit(INPUT_EVENT, data.currentValue)\n setCurrentValueToModelValue()\n}\nconst decrease = () => {\n if (props.readonly || inputNumberDisabled.value || minDisabled.value) return\n const value = Number(displayValue.value) || 0\n const newVal = ensurePrecision(value, -1)\n setCurrentValue(newVal)\n emit(INPUT_EVENT, data.currentValue)\n setCurrentValueToModelValue()\n}\nconst verifyValue = (\n value: number | string | null | undefined,\n update?: boolean\n): number | null | undefined => {\n const { max, min, step, precision, stepStrictly, valueOnClear } = props\n if (max < min) {\n throwError('InputNumber', 'min should not be greater than max.')\n }\n let newVal = Number(value)\n if (isNil(value) || Number.isNaN(newVal)) {\n return null\n }\n if (value === '') {\n if (valueOnClear === null) {\n return null\n }\n newVal = isString(valueOnClear) ? { min, max }[valueOnClear] : valueOnClear\n }\n if (stepStrictly) {\n newVal = toPrecision(\n Math.round(toPrecision(newVal / step)) * step,\n precision\n )\n if (newVal !== value) {\n update && emit(UPDATE_MODEL_EVENT, newVal)\n }\n }\n if (!isUndefined(precision)) {\n newVal = toPrecision(newVal, precision)\n }\n if (newVal > max || newVal < min) {\n newVal = newVal > max ? max : min\n update && emit(UPDATE_MODEL_EVENT, newVal)\n }\n return newVal\n}\nconst setCurrentValue = (\n value: number | string | null | undefined,\n emitChange = true\n) => {\n const oldVal = data.currentValue\n const newVal = verifyValue(value)\n if (!emitChange) {\n emit(UPDATE_MODEL_EVENT, newVal!)\n return\n }\n data.userInput = null\n if (oldVal === newVal && value) return\n emit(UPDATE_MODEL_EVENT, newVal!)\n if (oldVal !== newVal) {\n emit(CHANGE_EVENT, newVal!, oldVal!)\n }\n if (props.validateEvent) {\n formItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n data.currentValue = newVal\n}\nconst handleInput = (value: string) => {\n data.userInput = value\n const newVal = value === '' ? null : Number(value)\n emit(INPUT_EVENT, newVal)\n setCurrentValue(newVal, false)\n}\nconst handleInputChange = (value: string) => {\n const newVal = value !== '' ? Number(value) : ''\n if ((isNumber(newVal) && !Number.isNaN(newVal)) || value === '') {\n setCurrentValue(newVal)\n }\n setCurrentValueToModelValue()\n data.userInput = null\n}\n\nconst focus = () => {\n input.value?.focus?.()\n}\n\nconst blur = () => {\n input.value?.blur?.()\n}\n\nconst handleFocus = (event: MouseEvent | FocusEvent) => {\n emit('focus', event)\n}\n\nconst handleBlur = (event: MouseEvent | FocusEvent) => {\n data.userInput = null\n // When non-numeric content is entered into a numeric input box,\n // the content displayed on the page is not cleared after the value is cleared. #18533\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1398528\n if (data.currentValue === null && input.value?.input) {\n input.value.input.value = ''\n }\n emit('blur', event)\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n}\n\nconst setCurrentValueToModelValue = () => {\n if (data.currentValue !== props.modelValue) {\n data.currentValue = props.modelValue\n }\n}\nconst handleWheel = (e: WheelEvent) => {\n if (document.activeElement === e.target) e.preventDefault()\n}\n\nwatch(\n () => props.modelValue,\n (value, oldValue) => {\n const newValue = verifyValue(value, true)\n if (data.userInput === null && newValue !== oldValue) {\n data.currentValue = newValue\n }\n },\n { immediate: true }\n)\n\nwatch(\n () => props.precision,\n () => {\n data.currentValue = verifyValue(props.modelValue)\n }\n)\nonMounted(() => {\n const { min, max, modelValue } = props\n const innerInput = input.value?.input as HTMLInputElement\n innerInput.setAttribute('role', 'spinbutton')\n if (Number.isFinite(max)) {\n innerInput.setAttribute('aria-valuemax', String(max))\n } else {\n innerInput.removeAttribute('aria-valuemax')\n }\n if (Number.isFinite(min)) {\n innerInput.setAttribute('aria-valuemin', String(min))\n } else {\n innerInput.removeAttribute('aria-valuemin')\n }\n innerInput.setAttribute(\n 'aria-valuenow',\n data.currentValue || data.currentValue === 0\n ? String(data.currentValue)\n : ''\n )\n innerInput.setAttribute('aria-disabled', String(inputNumberDisabled.value))\n if (!isNumber(modelValue) && modelValue != null) {\n let val: number | null = Number(modelValue)\n if (Number.isNaN(val)) {\n val = null\n }\n emit(UPDATE_MODEL_EVENT, val!)\n }\n innerInput.addEventListener('wheel', handleWheel, { passive: false })\n})\nonUpdated(() => {\n const innerInput = input.value?.input\n innerInput?.setAttribute('aria-valuenow', `${data.currentValue ?? ''}`)\n})\ndefineExpose({\n /** @description get focus the input component */\n focus,\n /** @description remove focus the input component */\n blur,\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_unref","controls","align","_withModifiers","_withKeys","_renderSlot","_createVNode","_withCtx","_createBlock","_createCommentVNode","id","step","placeholder","readonly","max","min","name","ariaLabel","inputmode","_createSlots","$slots"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8GA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAEP,IAAA,MAAA,EAAE,CAAE,EAAA,GAAI,SAAU,EAAA,CAAA;AAClB,IAAA,MAAA,EAAA,GAAK,aAAa,cAAc,CAAA,CAAA;AACtC,IAAA,MAAM,QAAQ,GAAmB,EAAA,CAAA;AAMjC,IAAA,MAAM,OAAO,QAAe,CAAA;AAAA,MAC1B,cAAc,KAAM,CAAA,UAAA;AAAA,MACpB,SAAW,EAAA,IAAA;AAAA,KACZ,CAAA,CAAA;AAEK,IAAA,MAAA,EAAE,QAAS,EAAA,GAAI,WAAY,EAAA,CAAA;AAEjC,IAAA,MAAM,WAAc,GAAA,QAAA;AAAA,MAClB,MAAM,QAAS,CAAA,KAAA,CAAM,UAAU,CAAK,IAAA,KAAA,CAAM,cAAc,KAAM,CAAA,GAAA;AAAA,KAChE,CAAA;AACA,IAAA,MAAM,WAAc,GAAA,QAAA;AAAA,MAClB,MAAM,QAAS,CAAA,KAAA,CAAM,UAAU,CAAK,IAAA,KAAA,CAAM,cAAc,KAAM,CAAA,GAAA;AAAA,KAChE,CAAA;AAEM,IAAA,MAAA,YAAA,GAAe,SAAS,MAAM;AAC5B,MAAA,MAAA,aAAA,GAAgB,YAAa,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAC7C,MAAA,IAAI,CAAC,WAAA,CAAY,KAAM,CAAA,SAAS,CAAG,EAAA;AAC7B,QAAA,IAAA,aAAA,GAAgB,MAAM,SAAW,EAAA;AACnC,UAAA,SAAA;AAAA,YACE,aAAA;AAAA,YACA,8DAAA;AAAA,WACF,CAAA;AAAA,SACF;AACA,QAAA,OAAO,KAAM,CAAA,SAAA,CAAA;AAAA,OACR,MAAA;AACL,QAAA,OAAO,KAAK,GAAI,CAAA,YAAA,CAAa,KAAM,CAAA,UAAU,GAAG,aAAa,CAAA,CAAA;AAAA,OAC/D;AAAA,KACD,CAAA,CAAA;AACK,IAAA,MAAA,eAAA,GAAkB,SAAS,MAAM;AAC9B,MAAA,OAAA,KAAA,CAAM,QAAY,IAAA,KAAA,CAAM,gBAAqB,KAAA,OAAA,CAAA;AAAA,KACrD,CAAA,CAAA;AAED,IAAA,MAAM,kBAAkB,WAAY,EAAA,CAAA;AACpC,IAAA,MAAM,sBAAsB,eAAgB,EAAA,CAAA;AAEtC,IAAA,MAAA,YAAA,GAAe,SAAS,MAAM;AAC9B,MAAA,IAAA,IAAA,CAAK,cAAc,IAAM,EAAA;AAC3B,QAAA,OAAO,IAAK,CAAA,SAAA,CAAA;AAAA,OACd;AACA,MAAA,IAAI,eAAmD,IAAK,CAAA,YAAA,CAAA;AACxD,MAAA,IAAA,MAAM,YAAY,CAAA;AAAU,QAAA,OAAA,EAAA,CAAA;AAC5B,MAAA,IAAA,QAAA,CAAS,YAAY,CAAG,EAAA;AAC1B,QAAI,IAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AAAU,UAAA,OAAA,EAAA,CAAA;AACvC,QAAA,IAAI,CAAC,WAAA,CAAY,KAAM,CAAA,SAAS,CAAG,EAAA;AAClB,UAAA,YAAA,GAAA,YAAA,CAAa,OAAQ,CAAA,KAAA,CAAM,SAAS,CAAA,CAAA;AAAA,SACrD;AAAA,OACF;AACO,MAAA,OAAA,YAAA,CAAA;AAAA,KACR,CAAA,CAAA;AACK,IAAA,MAAA,WAAA,GAAc,CAAC,GAAA,EAAa,GAAiB,KAAA;AACjD,MAAA,IAAI,YAAY,GAAG,CAAA;AAAG,QAAA,GAAA,GAAM,YAAa,CAAA,KAAA,CAAA;AACzC,MAAA,IAAI,GAAQ,KAAA,CAAA;AAAU,QAAA,OAAA,IAAA,CAAK,MAAM,GAAG,CAAA,CAAA;AAChC,MAAA,IAAA,IAAA,GAAO,OAAO,GAAG,CAAA,CAAA;AACf,MAAA,MAAA,QAAA,GAAW,IAAK,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AAC7B,MAAA,IAAA,QAAa,KAAA,CAAA,CAAA;AAAW,QAAA,OAAA,GAAA,CAAA;AAC5B,MAAA,MAAM,OAAO,IAAK,CAAA,OAAA,CAAQ,KAAK,EAAE,CAAA,CAAE,MAAM,EAAE,CAAA,CAAA;AACrC,MAAA,MAAA,KAAA,GAAQ,KAAK,QAAW,GAAA,GAAA,CAAA,CAAA;AAC1B,MAAA,IAAA,CAAC,KAAA;AAAc,QAAA,OAAA,GAAA,CAAA;AACnB,MAAA,MAAM,SAAS,IAAK,CAAA,MAAA,CAAA;AACpB,MAAA,IAAI,IAAK,CAAA,MAAA,CAAO,MAAS,GAAA,CAAC,MAAM,GAAK,EAAA;AAC5B,QAAA,IAAA,GAAA,CAAA,EAAG,KAAK,KAAM,CAAA,CAAA,EAAG,KAAK,GAAI,CAAA,CAAA,EAAG,MAAS,GAAA,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,OACjD;AACA,MAAA,OAAO,OAAO,UAAW,CAAA,MAAA,CAAO,IAAI,CAAE,CAAA,OAAA,CAAQ,GAAG,CAAC,CAAA,CAAA;AAAA,KACpD,CAAA;AACM,IAAA,MAAA,YAAA,GAAe,CAAC,KAAqC,KAAA;AACrD,MAAA,IAAA,MAAM,KAAK,CAAA;AAAU,QAAA,OAAA,CAAA,CAAA;AACnB,MAAA,MAAA,WAAA,GAAc,MAAM,QAAS,EAAA,CAAA;AAC7B,MAAA,MAAA,WAAA,GAAc,WAAY,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AAC3C,MAAA,IAAI,SAAY,GAAA,CAAA,CAAA;AAChB,MAAA,IAAI,gBAAgB,CAAI,CAAA,EAAA;AACV,QAAA,SAAA,GAAA,WAAA,CAAY,SAAS,WAAc,GAAA,CAAA,CAAA;AAAA,OACjD;AACO,MAAA,OAAA,SAAA,CAAA;AAAA,KACT,CAAA;AACA,IAAA,MAAM,eAAkB,GAAA,CAAC,GAAa,EAAA,WAAA,GAAsB,CAAM,KAAA;AAChE,MAAI,IAAA,CAAC,SAAS,GAAG,CAAA;eAAU,IAAK,CAAA,YAAA,CAAA;AAChC,MAAA,IAAI,GAAO,IAAA,MAAA,CAAO,gBAAoB,IAAA,WAAA,KAAgB,CAAG,EAAA;AACvD,QAAA,SAAA;AAAA,UACE,aAAA;AAAA,UACA,uDAAA;AAAA,SACF,CAAA;AACO,QAAA,OAAA,GAAA,CAAA;AAAA,OACE,MAAA,IAAA,GAAA,IAAO,MAAO,CAAA,gBAAA,IAAoB,gBAAgB,CAAI,CAAA,EAAA;AAC/D,QAAA,SAAA;AAAA,UACE,aAAA;AAAA,UACA,uDAAA;AAAA,SACF,CAAA;AACO,QAAA,OAAA,GAAA,CAAA;AAAA,OACT;AAGA,MAAA,OAAO,WAAY,CAAA,GAAA,GAAM,KAAM,CAAA,IAAA,GAAO,WAAW,CAAA,CAAA;AAAA,KACnD,CAAA;AACM,IAAA,MAAA,aAAA,GAAgB,CAAC,KAAiC,KAAA;AAChD,MAAA,MAAA,IAAA,GAAO,aAAa,KAAsB,CAAA,CAAA;AAC1C,MAAA,MAAA,GAAA,GAAM,YAAY,KAAsB,CAAA,CAAA;AAE1C,MAAA,IAAA,KAAA,CAAM,sBAAsB,CAAC,GAAA,EAAK,GAAG,CAAE,CAAA,QAAA,CAAS,GAAG,CAAG,EAAA;AACxD,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,QAAA,OAAA;AAAA,OACF;AAEA,MAAQ,QAAA,IAAA;AAAA,QAAA,KACD,WAAW,EAAI,EAAA;AAClB,UAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACZ,UAAA,QAAA,EAAA,CAAA;AACT,UAAA,MAAA;AAAA,SACF;AAAA,QAAA,KACK,WAAW,IAAM,EAAA;AACpB,UAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACZ,UAAA,QAAA,EAAA,CAAA;AACT,UAAA,MAAA;AAAA,SACF;AAAA,OAAA;AAAA,KAEJ,CAAA;AACA,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,IAAI,KAAM,CAAA,QAAA,IAAY,mBAAoB,CAAA,KAAA,IAAS,WAAY,CAAA,KAAA;AAAO,QAAA,OAAA;AACtE,MAAA,MAAM,KAAQ,GAAA,MAAA,CAAO,YAAa,CAAA,KAAK,CAAK,IAAA,CAAA,CAAA;AACtC,MAAA,MAAA,MAAA,GAAS,gBAAgB,KAAK,CAAA,CAAA;AACpC,MAAA,eAAA,CAAgB,MAAM,CAAA,CAAA;AACjB,MAAA,IAAA,CAAA,WAAA,EAAa,KAAK,YAAY,CAAA,CAAA;AACP,MAAA,2BAAA,EAAA,CAAA;AAAA,KAC9B,CAAA;AACA,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,IAAI,KAAM,CAAA,QAAA,IAAY,mBAAoB,CAAA,KAAA,IAAS,WAAY,CAAA,KAAA;AAAO,QAAA,OAAA;AACtE,MAAA,MAAM,KAAQ,GAAA,MAAA,CAAO,YAAa,CAAA,KAAK,CAAK,IAAA,CAAA,CAAA;AACtC,MAAA,MAAA,MAAA,GAAS,eAAgB,CAAA,KAAA,EAAO,CAAE,CAAA,CAAA,CAAA;AACxC,MAAA,eAAA,CAAgB,MAAM,CAAA,CAAA;AACjB,MAAA,IAAA,CAAA,WAAA,EAAa,KAAK,YAAY,CAAA,CAAA;AACP,MAAA,2BAAA,EAAA,CAAA;AAAA,KAC9B,CAAA;AACM,IAAA,MAAA,WAAA,GAAc,CAClB,KAAA,EACA,MAC8B,KAAA;AAC9B,MAAA,MAAM,EAAE,GAAK,EAAA,GAAA,EAAK,MAAM,SAAW,EAAA,YAAA,EAAc,cAAiB,GAAA,KAAA,CAAA;AAClE,MAAA,IAAI,MAAM,GAAK,EAAA;AACb,QAAA,UAAA,CAAW,eAAe,qCAAqC,CAAA,CAAA;AAAA,OACjE;AACI,MAAA,IAAA,MAAA,GAAS,OAAO,KAAK,CAAA,CAAA;AACzB,MAAA,IAAI,MAAM,KAAK,CAAA,IAAK,MAAO,CAAA,KAAA,CAAM,MAAM,CAAG,EAAA;AACjC,QAAA,OAAA,IAAA,CAAA;AAAA,OACT;AACA,MAAA,IAAI,UAAU,EAAI,EAAA;AAChB,QAAA,IAAI,iBAAiB,IAAM,EAAA;AAClB,UAAA,OAAA,IAAA,CAAA;AAAA,SACT;AACS,QAAA,MAAA,GAAA,SAAS,YAAY,CAAA,GAAI,EAAE,GAAK,EAAA,GAAA,GAAM,YAAgB,CAAA,GAAA,YAAA,CAAA;AAAA,OACjE;AACA,MAAA,IAAI,YAAc,EAAA;AACP,QAAA,MAAA,GAAA,WAAA;AAAA,UACP,KAAK,KAAM,CAAA,WAAA,CAAY,MAAS,GAAA,IAAI,CAAC,CAAI,GAAA,IAAA;AAAA,UACzC,SAAA;AAAA,SACF,CAAA;AACA,QAAA,IAAI,WAAW,KAAO,EAAA;AACV,UAAA,MAAA,IAAA,IAAA,CAAK,oBAAoB,MAAM,CAAA,CAAA;AAAA,SAC3C;AAAA,OACF;AACI,MAAA,IAAA,CAAC,WAAY,CAAA,SAAS,CAAG,EAAA;AAClB,QAAA,MAAA,GAAA,WAAA,CAAY,QAAQ,SAAS,CAAA,CAAA;AAAA,OACxC;AACI,MAAA,IAAA,MAAA,GAAS,GAAO,IAAA,MAAA,GAAS,GAAK,EAAA;AACvB,QAAA,MAAA,GAAA,MAAA,GAAS,MAAM,GAAM,GAAA,GAAA,CAAA;AACpB,QAAA,MAAA,IAAA,IAAA,CAAK,oBAAoB,MAAM,CAAA,CAAA;AAAA,OAC3C;AACO,MAAA,OAAA,MAAA,CAAA;AAAA,KACT,CAAA;AACA,IAAA,MAAM,eAAkB,GAAA,CACtB,KACA,EAAA,UAAA,GAAa,IACV,KAAA;;AACH,MAAA,MAAM,SAAS,IAAK,CAAA,YAAA,CAAA;AACd,MAAA,MAAA,MAAA,GAAS,YAAY,KAAK,CAAA,CAAA;AAChC,MAAA,IAAI,CAAC,UAAY,EAAA;AACf,QAAA,IAAA,CAAK,oBAAoB,MAAO,CAAA,CAAA;AAChC,QAAA,OAAA;AAAA,OACF;AACA,MAAA,IAAA,CAAK,SAAY,GAAA,IAAA,CAAA;AACb,MAAA,IAAA,WAAW,MAAU,IAAA,KAAA;AAAO,QAAA,OAAA;AAChC,MAAA,IAAA,CAAK,oBAAoB,MAAO,CAAA,CAAA;AAChC,MAAA,IAAI,WAAW,MAAQ,EAAA;AAChB,QAAA,IAAA,CAAA,YAAA,EAAc,QAAS,MAAO,CAAA,CAAA;AAAA,OACrC;AACA,MAAA,IAAI,MAAM,aAAe,EAAA;AACb,QAAA,CAAA,EAAA,GAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,aAAA,IAAW,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,QAAA,EAAA,QAAA,CAAA,CAAU,MAAM,CAAC,GAAA,KAAQ,UAAU,GAAG,CAAA,CAAA,CAAA;AAAA,OAC7D;AACA,MAAA,IAAA,CAAK,YAAe,GAAA,MAAA,CAAA;AAAA,KACtB,CAAA;AACM,IAAA,MAAA,WAAA,GAAc,CAAC,KAAkB,KAAA;AACrC,MAAA,IAAA,CAAK,SAAY,GAAA,KAAA,CAAA;AACjB,MAAA,MAAM,MAAS,GAAA,KAAA,KAAU,EAAK,GAAA,IAAA,GAAO,OAAO,KAAK,CAAA,CAAA;AACjD,MAAA,IAAA,CAAK,aAAa,MAAM,CAAA,CAAA;AACxB,MAAA,eAAA,CAAgB,QAAQ,KAAK,CAAA,CAAA;AAAA,KAC/B,CAAA;AACM,IAAA,MAAA,iBAAA,GAAoB,CAAC,KAAkB,KAAA;AAC3C,MAAA,MAAM,MAAS,GAAA,KAAA,KAAU,EAAK,GAAA,MAAA,CAAO,KAAK,CAAI,GAAA,EAAA,CAAA;AACzC,MAAA,IAAA,QAAA,CAAS,MAAM,CAAK,IAAA,CAAC,OAAO,KAAM,CAAA,MAAM,CAAM,IAAA,KAAA,KAAU,EAAI,EAAA;AAC/D,QAAA,eAAA,CAAgB,MAAM,CAAA,CAAA;AAAA,OACxB;AAC4B,MAAA,2BAAA,EAAA,CAAA;AAC5B,MAAA,IAAA,CAAK,SAAY,GAAA,IAAA,CAAA;AAAA,KACnB,CAAA;AAEA,IAAA,MAAM,QAAQ,MAAM;;AAClB,MAAM,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,KAAA,KAAN,mBAAa,KAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,OAAO,MAAM;;AACjB,MAAM,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,KAAA,KAAN,mBAAa,IAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA;AAAA,KACF,CAAA;AAEM,IAAA,MAAA,WAAA,GAAc,CAAC,KAAmC,KAAA;AACtD,MAAA,IAAA,CAAK,SAAS,KAAK,CAAA,CAAA;AAAA,KACrB,CAAA;AAEM,IAAA,MAAA,UAAA,GAAa,CAAC,KAAmC,KAAA;;AACrD,MAAA,IAAA,CAAK,SAAY,GAAA,IAAA,CAAA;AAIjB,MAAA,IAAI,KAAK,YAAiB,KAAA,IAAA,KAAA,CAAQ,EAAM,GAAA,KAAA,CAAA,KAAA,KAAN,mBAAa,KAAO,CAAA,EAAA;AAC9C,QAAA,KAAA,CAAA,KAAA,CAAM,MAAM,KAAQ,GAAA,EAAA,CAAA;AAAA,OAC5B;AACA,MAAA,IAAA,CAAK,QAAQ,KAAK,CAAA,CAAA;AAClB,MAAA,IAAI,MAAM,aAAe,EAAA;AACb,QAAA,CAAA,EAAA,GAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,aAAA,IAAW,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,QAAA,EAAA,MAAA,CAAA,CAAQ,MAAM,CAAC,GAAA,KAAQ,UAAU,GAAG,CAAA,CAAA,CAAA;AAAA,OAC3D;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,8BAA8B,MAAM;AACpC,MAAA,IAAA,IAAA,CAAK,YAAiB,KAAA,KAAA,CAAM,UAAY,EAAA;AAC1C,QAAA,IAAA,CAAK,eAAe,KAAM,CAAA,UAAA,CAAA;AAAA,OAC5B;AAAA,KACF,CAAA;AACM,IAAA,MAAA,WAAA,GAAc,CAAC,CAAkB,KAAA;AACrC,MAAI,IAAA,QAAA,CAAS,kBAAkB,CAAE,CAAA,MAAA;UAAU,cAAe,EAAA,CAAA;AAAA,KAC5D,CAAA;AAEA,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,UAAA;AAAA,MACZ,CAAC,OAAO,QAAa,KAAA;AACb,QAAA,MAAA,QAAA,GAAW,WAAY,CAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AACxC,QAAA,IAAI,IAAK,CAAA,SAAA,KAAc,IAAQ,IAAA,QAAA,KAAa,QAAU,EAAA;AACpD,UAAA,IAAA,CAAK,YAAe,GAAA,QAAA,CAAA;AAAA,SACtB;AAAA,OACF;AAAA,MACA,EAAE,WAAW,IAAK,EAAA;AAAA,KACpB,CAAA;AAEA,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,SAAA;AAAA,MACZ,MAAM;AACC,QAAA,IAAA,CAAA,YAAA,GAAe,WAAY,CAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,OAClD;AAAA,KACF,CAAA;AACA,IAAA,SAAA,CAAU,MAAM;;AACd,MAAA,MAAM,EAAE,GAAA,EAAK,GAAK,EAAA,UAAA,EAAe,GAAA,KAAA,CAAA;AAC3B,MAAA,MAAA,UAAA,GAAA,CAAa,EAAM,GAAA,KAAA,CAAA,KAAA,KAAN,IAAa,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AACrB,MAAA,UAAA,CAAA,YAAA,CAAa,QAAQ,YAAY,CAAA,CAAA;AACxC,MAAA,IAAA,MAAA,CAAO,QAAS,CAAA,GAAG,CAAG,EAAA;AACxB,QAAA,UAAA,CAAW,YAAa,CAAA,eAAA,EAAiB,MAAO,CAAA,GAAG,CAAC,CAAA,CAAA;AAAA,OAC/C,MAAA;AACL,QAAA,UAAA,CAAW,gBAAgB,eAAe,CAAA,CAAA;AAAA,OAC5C;AACI,MAAA,IAAA,MAAA,CAAO,QAAS,CAAA,GAAG,CAAG,EAAA;AACxB,QAAA,UAAA,CAAW,YAAa,CAAA,eAAA,EAAiB,MAAO,CAAA,GAAG,CAAC,CAAA,CAAA;AAAA,OAC/C,MAAA;AACL,QAAA,UAAA,CAAW,gBAAgB,eAAe,CAAA,CAAA;AAAA,OAC5C;AACW,MAAA,UAAA,CAAA,YAAA;AAAA,QACT,eAAA;AAAA,QACA,IAAA,CAAK,gBAAgB,IAAK,CAAA,YAAA,KAAiB,IACvC,MAAO,CAAA,IAAA,CAAK,YAAY,CACxB,GAAA,EAAA;AAAA,OACN,CAAA;AACA,MAAA,UAAA,CAAW,YAAa,CAAA,eAAA,EAAiB,MAAO,CAAA,mBAAA,CAAoB,KAAK,CAAC,CAAA,CAAA;AAC1E,MAAA,IAAI,CAAC,QAAA,CAAS,UAAU,CAAA,IAAK,cAAc,IAAM,EAAA;AAC3C,QAAA,IAAA,GAAA,GAAqB,OAAO,UAAU,CAAA,CAAA;AACtC,QAAA,IAAA,MAAA,CAAO,KAAM,CAAA,GAAG,CAAG,EAAA;AACf,UAAA,GAAA,GAAA,IAAA,CAAA;AAAA,SACR;AACA,QAAA,IAAA,CAAK,oBAAoB,GAAI,CAAA,CAAA;AAAA,OAC/B;AACA,MAAA,UAAA,CAAW,iBAAiB,OAAS,EAAA,WAAA,EAAa,EAAE,OAAA,EAAS,OAAO,CAAA,CAAA;AAAA,KACrE,CAAA,CAAA;AACD,IAAA,SAAA,CAAU,MAAM;;AACR,MAAA,MAAA,UAAA,GAAA,CAAa,EAAM,GAAA,KAAA,CAAA,KAAA,KAAN,IAAa,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AAChC,MAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,YAAa,CAAA,eAAA,EAAiB,CAAG,EAAA,CAAA,EAAA,GAAA,IAAA,CAAK,iBAAL,IAAqB,GAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AACY,IAAA,QAAA,CAAA;AAAA,MAEX,KAAA;AAAA,MAEA,IAAA;AAAA,KACD,CAAA,CAAA;;AA9ZC,MAAA,OAAAA,WAAA,EAAAC,kBAAA;AAAA,QAsEM,KAAA;AAAA,QAAA;AAAA,UArEH,OAAKC,cAAA,CAAA;AAAA,YAAUC,KAAA,KAAG,CAAC,EAAA;AAAA,YAAUA,MAAA,EAAA,CAAA,CAAG,CAAE,CAAAA,KAAA,CAAe,eAAA,CAAA,CAAA;AAAA,YAASA,MAAA,EAAA,CAAA,CAAG,GAAE,UAAa,EAAAA,KAAA,CAAmB,mBAAA,CAAA,CAAA;AAAA,YAASA,MAAA,EAAA,CAAA,CAAG,GAAE,kBAAA,EAAA,CAAsBC,KAAQ,QAAA,CAAA;AAAA,YAASD,MAAA,EAAA,CAAA,CAAG,EAAE,CAAA,gBAAA,EAAmB,gBAAe,KAAA,CAAA;AAAA,YAASA,KAAA,CAAG,EAAA,CAAA,CAAA,EAAA,CAAGE,KAAK,KAAA,EAAA,CAAA,CAAIA,IAAAA,CAAK,KAAA,CAAA;AAAA,WAAA,CAAA;AAAA,UAQxN,aAAS,MAAV,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAC,cAAA,MAAA;AAAA,WAAkB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA,SAAA;AAAA;UAGVF,KAAAA,QAAAA,GAAAA,cAAAA,EAAAA,SAAAA,EAAAA,EADRH,mBAcO,MAAA,EAAA;AAAA,YAAA,GAAA,EAAA,CAAA;AAAA,YAXL,IAAK,EAAA,QAAA;AAAA,YACJ,YAAY,EAAAE,KAAA,CAAC,CAAA,CAAA,CAAA,yBAAA,CAAA;AAAA,YACb,OAAKD,gBAAGC,KAAG,CAAA,EAAA,EAAA,CAAC,CAAA,WAAc,EAAAA,KAAA,CAAG,EAAA,CAAA,CAAA,EAAA,CAAE,YAAa,WAAW,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA,YACvD,SAAO,EAAAI,QAAA,CAAQ,QAAQ,EAAA,CAAA,OAAA,CAAA,CAAA;AAAA,WAAA,EAAA;AAAA,YAExBC,WAKO,kCALP,MAKO;AAAA,cAJLC,WAGU,CAAAN,KAAA,CAAA,MAAA,CAAA,EAAA,IAAA,EAAA;AAAA,gBAAA,OAAA,EAAAO,QAFR,MAAqC;AAAA,kBAAnB,eAAA,CAAA,SAAAV,SAAA,EAAA,EAAlBW,YAAqCR,KAAA,CAAA,SAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA,KAAAH,SAAA,IACrCW,WAAgB,CAAAR,KAAA,CAAA,KAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;AAAA,iBAAA,CAAA;AAAA;;;;kCATJ,QAAQ,CAAA;AAAA,WAAA,CAAA,GAAAS,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,UAclBR,KAAAA,QAAAA,GAAAA,cAAAA,EAAAA,SAAAA,EAAAA,EADRH,mBAcO,MAAA,EAAA;AAAA,YAAA,GAAA,EAAA,CAAA;AAAA,YAXL,IAAK,EAAA,QAAA;AAAA,YACJ,YAAY,EAAAE,KAAA,CAAC,CAAA,CAAA,CAAA,yBAAA,CAAA;AAAA,YACb,OAAKD,gBAAGC,KAAG,CAAA,EAAA,EAAA,CAAC,CAAA,WAAc,EAAAA,KAAA,CAAG,EAAA,CAAA,CAAA,EAAA,CAAE,YAAa,WAAW,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA,YACvD,SAAO,EAAAI,QAAA,CAAQ,QAAQ,EAAA,CAAA,OAAA,CAAA,CAAA;AAAA,WAAA,EAAA;AAAA,YAExBC,WAKO,kCALP,MAKO;AAAA,cAJLC,WAGU,CAAAN,KAAA,CAAA,MAAA,CAAA,EAAA,IAAA,EAAA;AAAA,gBAAA,OAAA,EAAAO,QAFR,MAAmC;AAAA,kBAAnB,eAAA,CAAA,SAAAV,SAAA,EAAA,EAAhBW,YAAmCR,KAAA,CAAA,OAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA,KAAAH,SAAA,IACnCW,WAAe,CAAAR,KAAA,CAAA,IAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;AAAA,iBAAA,CAAA;AAAA;;;;kCATH,QAAQ,CAAA;AAAA,WAAA,CAAA,GAAAS,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,UAa1BH,WAAA,CA4BWN,KAAA,CAAA,OAAA,CAAA,EAAA;AAAA,YA3BR,IAAIU,IAAAA,CAAAA,EAAAA;AAAAA,YACD,OAAA,EAAA,OAAA;AAAA,YAAJ,GAAI,EAAA,KAAA;AAAA,YACJ,IAAK,EAAA,QAAA;AAAA,YACJ,MAAMC,IAAAA,CAAAA,IAAAA;AAAAA,YACN,eAAa,YAAA,CAAA,KAAA;AAAA,YACb,aAAaC,IAAAA,CAAAA,WAAAA;AAAAA,YACb,UAAUC,IAAAA,CAAAA,QAAAA;AAAAA,YACV,QAAA,EAAUb,MAAA,mBAAA,CAAA;AAAA,YACV,IAAA,EAAMA,MAAA,eAAA,CAAA;AAAA,YACN,KAAKc,IAAAA,CAAAA,GAAAA;AAAAA,YACL,KAAKC,IAAAA,CAAAA,GAAAA;AAAAA,YACL,MAAMC,IAAAA,CAAAA,IAAAA;AAAAA,YACN,cAAYC,IAAAA,CAAAA,SAAAA;AAAAA,YACZ,gBAAgB,EAAA,KAAA;AAAA,YAChB,WAAWC,IAAAA,CAAAA,SAAAA;AAAAA,YACX,SAAS,EAAA,aAAA;AAAA,YACT,MAAM,EAAA,UAAA;AAAA,YACN,OAAO,EAAA,WAAA;AAAA,YACP,OAAO,EAAA,WAAA;AAAA,YACP,QAAQ,EAAA,iBAAA;AAAA,aAAAC,WAAA,CAAA;AAAA;;YAEOC,IAAAA,CAAO,OAAA,MAAA,GAAA;AAAA,cAAS,IAAA,EAAA,QAAA;AAAA,cAAA,EAAA,EAAAb,QAC9B,MAAsB;AAAA,gBAAtBF,UAAA,CAAsB,IAAA,CAAA,MAAA,EAAA,QAAA,CAAA;AAAA,eAAA,CAAA;AAAA;;YAERe,IAAAA,CAAO,OAAA,MAAA,GAAA;AAAA,cAAS,IAAA,EAAA,QAAA;AAAA,cAAA,EAAA,EAAAb,QAC9B,MAAsB;AAAA,gBAAtBF,UAAA,CAAsB,IAAA,CAAA,MAAA,EAAA,QAAA,CAAA;AAAA,eAAA,CAAA;AAAA;;;;;;;;;;;;;"}