{"version":3,"file":"input.mjs","sources":["../../src/input/input.tsx"],"sourcesContent":["import { computed, defineComponent, inject, nextTick, PropType, ref, toRefs, watch } from 'vue';\nimport {\n  BrowseIcon as TBrowseIcon,\n  BrowseOffIcon as TBrowseOffIcon,\n  CloseCircleFilledIcon as TCloseCircleFilledIcon,\n} from 'tdesign-icons-vue-next';\nimport { isFunction } from 'lodash-es';\nimport config from '../config';\nimport InputProps from './props';\nimport { InputValue } from './type';\nimport { extendAPI } from '../shared';\nimport { FormItemInjectionKey } from '../form/const';\nimport { useFormDisabled } from '../form/hooks';\nimport useVModel from '../hooks/useVModel';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport useLengthLimit from '../hooks/useLengthLimit';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n  name: `${prefix}-input`,\n  props: {\n    ...InputProps,\n    labelAlign: {\n      type: String,\n      default: 'top',\n    },\n    pattern: {\n      type: String,\n    },\n    inputmode: {\n      type: String as PropType<'search' | 'text' | 'none' | 'url' | 'tel' | 'email' | 'numeric' | 'decimal'>,\n      validator(val: string): boolean {\n        if (!val) return true;\n        return ['search', 'text', 'none', 'url', 'tel', 'email', 'numeric', 'decimal'].includes(val);\n      },\n    },\n  },\n  setup(props, context) {\n    const renderTNodeJSX = useTNodeJSX();\n    const inputClass = usePrefixClass('input');\n    const isDisabled = useFormDisabled();\n\n    const inputRef = ref();\n\n    const { value, modelValue } = toRefs(props);\n    const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n    const status = props.status || 'default';\n    const renderType = ref(props.type);\n    const focused = ref(false);\n    const formItem = inject(FormItemInjectionKey, undefined);\n\n    const inputClasses = computed(() => [\n      `${inputClass.value}__control`,\n      {\n        [`${inputClass.value}--${props.align}`]: props.align !== 'left',\n        [`${inputClass.value}--${status}`]: status,\n        [`${inputClass.value}__control--disabled`]: isDisabled.value,\n        [`${inputClass.value}--password`]: renderType.value === 'password',\n      },\n    ]);\n\n    const rootClasses = computed(() => [\n      inputClass.value,\n      {\n        [`${inputClass.value}--layout-${props.layout}`]: props.layout,\n        [`${inputClass.value}--center`]: props.labelAlign === 'center',\n        [`${inputClass.value}--border`]: !props.borderless,\n      },\n    ]);\n    const showClear = computed(() => {\n      if (isDisabled.value || props.readonly === true) return false;\n\n      if (props.clearable && innerValue.value && String(innerValue.value).length > 0) {\n        return props.clearTrigger === 'always' || (props.clearTrigger === 'focus' && focused.value);\n      }\n      return false;\n    });\n\n    const limitParams = computed(() => ({\n      value: [undefined, null].includes(innerValue.value) ? undefined : String(innerValue.value),\n      maxlength: Number(props.maxlength),\n      maxcharacter: props.maxcharacter,\n      allowInputOverMax: props.allowInputOverMax,\n      status: props.status,\n      onValidate: props.onValidate,\n    }));\n\n    const { getValueByLimitNumber } = useLengthLimit(limitParams);\n\n    const setInputValue = (v: InputValue = '') => {\n      const input = inputRef.value as HTMLInputElement;\n      const sV = String(v);\n      if (!input) {\n        return;\n      }\n      if (input.value !== sV) {\n        input.value = sV;\n      }\n    };\n\n    const handleInput = (e: Event) => {\n      // 中文输入的时候inputType是insertCompositionText所以中文输入的时候禁止触发。\n      if (e instanceof InputEvent) {\n        const checkInputType = e.inputType && e.inputType === 'insertCompositionText';\n        if (e.isComposing || checkInputType) return;\n      }\n      inputValueChangeHandle(e);\n    };\n\n    const inputValueChangeHandle = (e: Event) => {\n      const { value } = e.target as HTMLInputElement;\n      setInnerValue(getValueByLimitNumber(value));\n      nextTick(() => setInputValue(innerValue.value));\n    };\n\n    const focus = () => {\n      focused.value = true;\n      inputRef.value?.focus();\n    };\n\n    const blur = () => {\n      focused.value = false;\n      inputRef.value?.blur();\n    };\n\n    extendAPI({ focus, blur });\n\n    const handleClear = (e: TouchEvent) => {\n      e.preventDefault();\n      const val = props.type === 'number' ? undefined : '';\n      setInnerValue(val);\n      focus();\n      props.onClear?.({ e });\n    };\n\n    const handleFocus = (e: FocusEvent) => {\n      focused.value = true;\n      props.onFocus?.(innerValue.value, { e });\n    };\n\n    const handleBlur = (e: FocusEvent) => {\n      focused.value = false;\n      // 失焦时处理 format\n      if (isFunction(props.format)) {\n        setInnerValue(props.format(innerValue.value));\n        nextTick(() => {\n          setInputValue(innerValue.value);\n          props.onBlur?.(innerValue.value, { e });\n          formItem?.handleBlur();\n        });\n        return;\n      }\n\n      props.onBlur?.(innerValue.value, { e });\n      formItem?.handleBlur();\n    };\n\n    const handleCompositionend = (e: CompositionEvent) => {\n      inputValueChangeHandle(e);\n    };\n\n    const handlePwdIconClick = () => {\n      if (isDisabled.value) return;\n\n      renderType.value = renderType.value === 'password' ? 'text' : 'password';\n    };\n\n    watch(\n      () => props.autofocus,\n      (v) => {\n        if (v === true) {\n          nextTick(() => {\n            focus();\n          });\n        }\n      },\n      { immediate: true },\n    );\n\n    watch(\n      () => props.type,\n      (v) => {\n        renderType.value = v;\n      },\n      { immediate: true },\n    );\n\n    return () => {\n      const renderPrefix = () => {\n        const prefixIcon = renderTNodeJSX('prefixIcon');\n        const label = renderTNodeJSX('label');\n\n        return (\n          <div class={`${inputClass.value}__wrap--prefix`}>\n            {prefixIcon && <div class={`${inputClass.value}__icon--prefix`}>{prefixIcon}</div>}\n            <div class={`${inputClass.value}__label`}>{label}</div>\n          </div>\n        );\n      };\n      const renderClearable = () => {\n        if (showClear.value) {\n          return (\n            <div class={`${inputClass.value}__wrap--clearable-icon`} onTouchend={handleClear}>\n              <TCloseCircleFilledIcon />\n            </div>\n          );\n        }\n\n        return null;\n      };\n      const renderSuffix = () => {\n        const suffix = renderTNodeJSX('suffix');\n        if (!suffix) {\n          return null;\n        }\n        return <div class={`${inputClass.value}__wrap--suffix`}>{suffix}</div>;\n      };\n\n      const renderSuffixIcon = () => {\n        let suffixIcon = renderTNodeJSX('suffixIcon');\n        if (props.type === 'password') {\n          if (renderType.value === 'password') {\n            suffixIcon = <TBrowseOffIcon onClick={handlePwdIconClick} />;\n          } else if (renderType.value === 'text') {\n            suffixIcon = <TBrowseIcon onClick={handlePwdIconClick} />;\n          }\n        }\n\n        if (!suffixIcon) {\n          return null;\n        }\n        return <div class={`${inputClass.value}__wrap--suffix-icon`}>{suffixIcon}</div>;\n      };\n\n      const renderExtra = () => {\n        return renderTNodeJSX('extra');\n      };\n\n      const renderTips = () => {\n        const tips = renderTNodeJSX('tips');\n        if (!tips) {\n          return null;\n        }\n        return <div class={`${inputClass.value}__tips ${inputClass.value}--${props.align}`}>{tips}</div>;\n      };\n\n      // 参考： https://github.com/Tencent/tdesign-vue-next/issues/4413\n      // 不传给 input 原生元素 maxlength，浏览器默认行为会按照 unicode 进行限制，与 maxLength API 违背\n      const inputAttrs = {\n        ref: inputRef,\n        class: inputClasses.value,\n        value: innerValue.value,\n        name: props.name,\n        type: renderType.value,\n        disabled: isDisabled.value,\n        autocomplete: props.autocomplete ? 'On' : 'Off',\n        placeholder: props.placeholder,\n        readonly: props.readonly,\n        // maxlength: props.maxlength,\n        pattern: props.pattern,\n        inputmode: props.inputmode,\n        spellcheck: props.spellCheck,\n        enterkeyhint: props.enterkeyhint,\n        style: { '--td-input-cursor-color': props.cursorColor },\n        onFocus: handleFocus,\n        onBlur: handleBlur,\n        onInput: handleInput,\n        onCompositionend: handleCompositionend,\n      };\n\n      return (\n        <div class={rootClasses.value}>\n          {renderPrefix()}\n          <div class={`${inputClass.value}__wrap`}>\n            <div class={`${inputClass.value}__content ${inputClass.value}--${status || 'default'}`}>\n              <input {...inputAttrs} />\n              {renderClearable()}\n              {renderSuffix()}\n              {renderSuffixIcon()}\n            </div>\n            {renderTips()}\n          </div>\n          {renderExtra()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","defineComponent","name","props","_objectSpread","InputProps","labelAlign","type","String","default","pattern","inputmode","validator","val","includes","setup","context","renderTNodeJSX","useTNodeJSX","inputClass","usePrefixClass","isDisabled","useFormDisabled","inputRef","ref","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","innerValue","setInnerValue","status","renderType","focused","formItem","inject","FormItemInjectionKey","inputClasses","computed","concat","_defineProperty","align","rootClasses","layout","borderless","showClear","readonly","clearable","length","clearTrigger","limitParams","maxlength","Number","maxcharacter","allowInputOverMax","onValidate","_useLengthLimit","useLengthLimit","getValueByLimitNumber","setInputValue","v","arguments","undefined","input","sV","handleInput","e","InputEvent","checkInputType","inputType","isComposing","inputValueChangeHandle","target","nextTick","focus","_inputRef$value","blur","_inputRef$value2","extendAPI","handleClear","_props$onClear","preventDefault","onClear","call","handleFocus","_props$onFocus","onFocus","handleBlur","_props$onBlur2","isFunction","format","_props$onBlur","onBlur","handleCompositionend","handlePwdIconClick","watch","autofocus","immediate","renderPrefix","prefixIcon","label","_createVNode","renderClearable","TCloseCircleFilledIcon","renderSuffix","suffix","renderSuffixIcon","suffixIcon","TBrowseOffIcon","TBrowseIcon","renderExtra","renderTips","tips","inputAttrs","class","disabled","autocomplete","placeholder","spellcheck","spellCheck","enterkeyhint","style","cursorColor","onInput","onCompositionend"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAQA,SAAWC,MAAA,CAAXD;AAER,aAAeE,eAAgB,CAAA;AAC7BC,EAAAA,gBAASH,MAAA,EAAA,QAAA,CAAA;AACTI,EAAAA,KAAO,EAAAC,aAAA,CAAAA,aAAA,KACFC,UAAA,CAAA,EAAA,EAAA,EAAA;AACHC,IAAAA,UAAY,EAAA;AACVC,MAAAA,IAAM,EAAAC,MAAA;AACNC,MAAAA,OAAS,EAAA,KAAA;KACX;AACAC,IAAAA,OAAS,EAAA;AACPH,MAAAA,IAAM,EAAAC,MAAAA;KACR;AACAG,IAAAA,SAAW,EAAA;AACTJ,MAAAA,IAAM,EAAAC,MAAA;AACNI,MAAAA,WAAAA,SAAAA,UAAUC,GAAsB,EAAA;AAC9B,QAAA,IAAI,CAACA,GAAA,EAAY,OAAA,IAAA,CAAA;QACV,OAAA,CAAC,QAAU,EAAA,MAAA,EAAQ,MAAQ,EAAA,KAAA,EAAO,KAAO,EAAA,OAAA,EAAS,SAAW,EAAA,SAAS,CAAE,CAAAC,QAAA,CAASD,GAAG,CAAA,CAAA;AAC7F,OAAA;AACF,KAAA;GACF,CAAA;AACAE,EAAAA,KAAA,WAAAA,KAAAA,CAAMZ,OAAOa,OAAS,EAAA;AACpB,IAAA,IAAMC,iBAAiBC,WAAY,EAAA,CAAA;AAC7B,IAAA,IAAAC,UAAA,GAAaC,eAAe,OAAO,CAAA,CAAA;AACzC,IAAA,IAAMC,aAAaC,eAAgB,EAAA,CAAA;AAEnC,IAAA,IAAMC,WAAWC,GAAI,EAAA,CAAA;AAErB,IAAA,IAAAC,OAAA,GAA8BC,OAAOvB,KAAK,CAAA;MAAlCwB,KAAA,GAAAF,OAAA,CAAAE,KAAA;MAAOC,UAAW,GAAAH,OAAA,CAAXG,UAAW,CAAA;AACpB,IAAA,IAAAC,UAAA,GAA8BC,SAAA,CAAUH,OAAOC,UAAY,EAAAzB,KAAA,CAAM4B,YAAc,EAAA5B,KAAA,CAAM6B,QAAQ,CAAA;MAAAC,WAAA,GAAAC,cAAA,CAAAL,UAAA,EAAA,CAAA,CAAA;AAA5FM,MAAAA,UAAY,GAAAF,WAAA,CAAA,CAAA,CAAA;AAAAG,MAAAA,aAAa,GAAAH,WAAA,CAAA,CAAA,CAAA,CAAA;AAE1B,IAAA,IAAAI,MAAA,GAASlC,MAAMkC,MAAU,IAAA,SAAA,CAAA;AACzB,IAAA,IAAAC,UAAA,GAAad,GAAI,CAAArB,KAAA,CAAMI,IAAI,CAAA,CAAA;AAC3B,IAAA,IAAAgC,OAAA,GAAUf,IAAI,KAAK,CAAA,CAAA;IACnB,IAAAgB,QAAA,GAAWC,MAAO,CAAAC,oBAAA,EAAsB,KAAS,CAAA,CAAA,CAAA;IAEjD,IAAAC,YAAA,GAAeC,SAAS,YAAA;AAAA,MAAA,OAAM,CAAAC,EAAAA,CAAAA,MAAA,CAC/B1B,UAAW,CAAAQ,KAAA,EAAAmB,WAAAA,CAAAA,EAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAA,EAAA,CAAAD,MAAA,CAER1B,UAAA,CAAWQ,oBAAUxB,KAAM,CAAA4C,KAAA,CAAU5C,EAAAA,MAAM4C,KAAU,KAAA,MAAA,CAAA,EAAA,EAAA,CAAAF,MAAA,CACrD1B,UAAW,CAAAQ,KAAA,EAAA,IAAA,CAAA,CAAAkB,MAAA,CAAUR,MAAW,CAAA,EAAAA,MAAA,CAAA,EAAA,EAAA,CAAAQ,MAAA,CAChC1B,UAAW,CAAAQ,KAAA,EAA6BN,qBAAAA,CAAAA,EAAAA,UAAW,CAAAM,KAAA,CAAAkB,EAAAA,EAAAA,CAAAA,MAAA,CACnD1B,UAAW,CAAAQ,KAAA,EAAA,YAAA,CAAA,EAAoBW,WAAWX,KAAU,KAAA,UAAA,CAE3D,CAAA,CAAA;KAAA,CAAA,CAAA;IAEK,IAAAqB,WAAA,GAAcJ,SAAS,YAAA;MAAA,OAAM,CACjCzB,UAAW,CAAAQ,KAAA,EAAAmB,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAA,EAAA,CAAAD,MAAA,CAEL1B,UAAA,CAAWQ,KAAiB,EAAA,WAAA,CAAA,CAAAkB,MAAA,CAAA1C,KAAA,CAAM8C,OAAW9C,EAAAA,KAAM,CAAA8C,MAAA,CAAA,EAAA,EAAA,CAAAJ,MAAA,CACnD1B,UAAW,CAAAQ,KAAA,EAAA,UAAA,CAAA,EAAkBxB,MAAMG,UAAe,KAAA,QAAA,CAAAuC,EAAAA,EAAAA,CAAAA,MAAA,CAClD1B,UAAW,CAAAQ,KAAA,eAAkB,CAACxB,KAAM,CAAA+C,UAAA,CAE3C,CAAA,CAAA;KAAA,CAAA,CAAA;AACK,IAAA,IAAAC,SAAA,GAAYP,SAAS,YAAM;MAC3B,IAAAvB,UAAA,CAAWM,KAAS,IAAAxB,KAAA,CAAMiD,QAAa,KAAA,IAAA,EAAa,OAAA,KAAA,CAAA;AAEpD,MAAA,IAAAjD,KAAA,CAAMkD,aAAalB,UAAW,CAAAR,KAAA,IAASnB,OAAO2B,UAAW,CAAAR,KAAK,CAAE,CAAA2B,MAAA,GAAS,CAAG,EAAA;AAC9E,QAAA,OAAOnD,MAAMoD,YAAiB,KAAA,QAAA,IAAapD,KAAM,CAAAoD,YAAA,KAAiB,WAAWhB,OAAQ,CAAAZ,KAAA,CAAA;AACvF,OAAA;AACO,MAAA,OAAA,KAAA,CAAA;AACT,KAAC,CAAA,CAAA;IAEK,IAAA6B,WAAA,GAAcZ,SAAS,YAAA;MAAA,OAAO;QAClCjB,KAAO,EAAA,CAAC,KAAW,CAAA,EAAA,IAAI,CAAE,CAAAb,QAAA,CAASqB,UAAW,CAAAR,KAAK,CAAI,GAAA,KAAA,CAAA,GAAYnB,MAAO,CAAA2B,UAAA,CAAWR,KAAK,CAAA;AACzF8B,QAAAA,SAAA,EAAWC,MAAO,CAAAvD,KAAA,CAAMsD,SAAS,CAAA;QACjCE,cAAcxD,KAAM,CAAAwD,YAAA;QACpBC,mBAAmBzD,KAAM,CAAAyD,iBAAA;QACzBvB,QAAQlC,KAAM,CAAAkC,MAAA;QACdwB,YAAY1D,KAAM,CAAA0D,UAAAA;OAClB,CAAA;AAAA,KAAA,CAAA,CAAA;AAEF,IAAA,IAAAC,eAAA,GAAkCC,cAAA,CAAeP,WAAW,CAAA;MAApDQ,qBAAA,GAAAF,eAAA,CAAAE,qBAAA,CAAA;AAEF,IAAA,IAAAC,aAAA,GAAgB,SAAhBA,aAAAA,GAAwC;AAAA,MAAA,IAAvBC,CAAA,GAAAC,SAAA,CAAAb,MAAA,GAAA,CAAA,IAAAa,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAgB,EAAO,CAAA;AAC5C,MAAA,IAAME,QAAQ9C,QAAS,CAAAI,KAAA,CAAA;AACjB,MAAA,IAAA2C,EAAA,GAAK9D,OAAO0D,CAAC,CAAA,CAAA;MACnB,IAAI,CAACG,KAAO,EAAA;AACV,QAAA,OAAA;AACF,OAAA;AACI,MAAA,IAAAA,KAAA,CAAM1C,UAAU2C,EAAI,EAAA;QACtBD,KAAA,CAAM1C,KAAQ,GAAA2C,EAAA,CAAA;AAChB,OAAA;KACF,CAAA;AAEM,IAAA,IAAAC,WAAA,GAAc,SAAdA,WAAAA,CAAeC,CAAa,EAAA;MAEhC,IAAIA,aAAaC,UAAY,EAAA;QAC3B,IAAMC,cAAiB,GAAAF,CAAA,CAAEG,SAAa,IAAAH,CAAA,CAAEG,SAAc,KAAA,uBAAA,CAAA;AACtD,QAAA,IAAIH,EAAEI,WAAe,IAAAF,cAAA,EAAgB,OAAA;AACvC,OAAA;MACAG,sBAAA,CAAuBL,CAAC,CAAA,CAAA;KAC1B,CAAA;AAEM,IAAA,IAAAK,sBAAA,GAAyB,SAAzBA,sBAAAA,CAA0BL,CAAa,EAAA;AAC3C,MAAA,IAAQ7C,MAAM,GAAI6C,CAAE,CAAAM,MAAA,CAAZnD,KAAA,CAAA;AACMS,MAAAA,aAAA,CAAA4B,qBAAA,CAAsBrC,MAAK,CAAC,CAAA,CAAA;AAC1CoD,MAAAA,QAAA,CAAS,YAAA;AAAA,QAAA,OAAMd,aAAA,CAAc9B,UAAW,CAAAR,KAAK,CAAC,CAAA;OAAA,CAAA,CAAA;KAChD,CAAA;AAEA,IAAA,IAAMqD,QAAQ,SAARA,QAAc;AAAA,MAAA,IAAAC,eAAA,CAAA;MAClB1C,OAAA,CAAQZ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAA,CAAAsD,eAAA,GAAA1D,QAAA,CAASI,iDAATsD,eAAA,CAAgBD,KAAM,EAAA,CAAA;KACxB,CAAA;AAEA,IAAA,IAAME,OAAO,SAAPA,OAAa;AAAA,MAAA,IAAAC,gBAAA,CAAA;MACjB5C,OAAA,CAAQZ,KAAQ,GAAA,KAAA,CAAA;AAChB,MAAA,CAAAwD,gBAAA,GAAA5D,QAAA,CAASI,kDAATwD,gBAAA,CAAgBD,IAAK,EAAA,CAAA;KACvB,CAAA;AAEUE,IAAAA,SAAA,CAAA;AAAEJ,MAAAA,KAAO,EAAPA,KAAO;AAAAE,MAAAA,IAAA,EAAAA,IAAAA;AAAK,KAAC,CAAA,CAAA;AAEnB,IAAA,IAAAG,WAAA,GAAc,SAAdA,WAAAA,CAAeb,CAAkB,EAAA;AAAA,MAAA,IAAAc,cAAA,CAAA;MACrCd,CAAA,CAAEe,cAAe,EAAA,CAAA;MACjB,IAAM1E,GAAM,GAAAV,KAAA,CAAMI,IAAS,KAAA,QAAA,GAAW,KAAY,CAAA,GAAA,EAAA,CAAA;MAClD6B,aAAA,CAAcvB,GAAG,CAAA,CAAA;AACXmE,MAAAA,KAAA,EAAA,CAAA;AACA,MAAA,CAAAM,cAAA,GAAAnF,KAAA,CAAAqF,OAAA,MAAA,IAAA,IAAAF,cAAA,KAAA,KAAA,CAAA,IAAAA,cAAA,CAAAG,IAAA,CAAAtF,KAAA,EAAU;AAAEqE,QAAAA,CAAA,EAAAA,CAAAA;AAAE,OAAC,CAAA,CAAA;KACvB,CAAA;AAEM,IAAA,IAAAkB,WAAA,GAAc,SAAdA,WAAAA,CAAelB,CAAkB,EAAA;AAAA,MAAA,IAAAmB,cAAA,CAAA;MACrCpD,OAAA,CAAQZ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAA,CAAAgE,cAAA,GAAAxF,KAAA,CAAMyF,OAAU,cAAAD,cAAA,KAAA,KAAA,CAAA,IAAhBA,cAAA,CAAAF,IAAA,CAAAtF,KAAA,EAAgBgC,UAAA,CAAWR,KAAO,EAAA;AAAE6C,QAAAA,GAAAA,CAAAA;AAAE,OAAC,CAAA,CAAA;KACzC,CAAA;AAEM,IAAA,IAAAqB,UAAA,GAAa,SAAbA,UAAAA,CAAcrB,CAAkB,EAAA;AAAA,MAAA,IAAAsB,cAAA,CAAA;MACpCvD,OAAA,CAAQZ,KAAQ,GAAA,KAAA,CAAA;AAEZ,MAAA,IAAAoE,UAAA,CAAW5F,KAAM,CAAA6F,MAAM,CAAG,EAAA;QAC5B5D,aAAA,CAAcjC,KAAM,CAAA6F,MAAA,CAAO7D,UAAW,CAAAR,KAAK,CAAC,CAAA,CAAA;AAC5CoD,QAAAA,QAAA,CAAS,YAAM;AAAA,UAAA,IAAAkB,aAAA,CAAA;AACbhC,UAAAA,aAAA,CAAc9B,WAAWR,KAAK,CAAA,CAAA;AAC9B,UAAA,CAAAsE,aAAA,GAAA9F,KAAA,CAAM+F,MAAS,cAAAD,aAAA,KAAA,KAAA,CAAA,IAAfA,aAAA,CAAAR,IAAA,CAAAtF,KAAA,EAAegC,UAAA,CAAWR,KAAO,EAAA;AAAE6C,YAAAA,GAAAA,CAAAA;AAAE,WAAC,CAAA,CAAA;AACtChC,UAAAA,QAAA,aAAAA,QAAA,KAAA,KAAA,CAAA,IAAAA,QAAA,CAAUqD,UAAW,EAAA,CAAA;AACvB,SAAC,CAAA,CAAA;AACD,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,CAAAC,cAAA,GAAA3F,KAAA,CAAM+F,MAAS,cAAAJ,cAAA,KAAA,KAAA,CAAA,IAAfA,cAAA,CAAAL,IAAA,CAAAtF,KAAA,EAAegC,UAAA,CAAWR,KAAO,EAAA;AAAE6C,QAAAA,GAAAA,CAAAA;AAAE,OAAC,CAAA,CAAA;AACtChC,MAAAA,QAAA,aAAAA,QAAA,KAAA,KAAA,CAAA,IAAAA,QAAA,CAAUqD,UAAW,EAAA,CAAA;KACvB,CAAA;AAEM,IAAA,IAAAM,oBAAA,GAAuB,SAAvBA,oBAAAA,CAAwB3B,CAAwB,EAAA;MACpDK,sBAAA,CAAuBL,CAAC,CAAA,CAAA;KAC1B,CAAA;AAEA,IAAA,IAAM4B,qBAAqB,SAArBA,qBAA2B;MAC/B,IAAI/E,UAAW,CAAAM,KAAA,EAAO,OAAA;MAEtBW,UAAA,CAAWX,KAAQ,GAAAW,UAAA,CAAWX,KAAU,KAAA,UAAA,GAAa,MAAS,GAAA,UAAA,CAAA;KAChE,CAAA;AAEA0E,IAAAA,KAAA,CACE,YAAA;MAAA,OAAMlG,KAAM,CAAAmG,SAAA,CAAA;KACZ,EAAA,UAACpC,CAAM,EAAA;MACL,IAAIA,MAAM,IAAM,EAAA;AACda,QAAAA,QAAA,CAAS,YAAM;AACPC,UAAAA,KAAA,EAAA,CAAA;AACR,SAAC,CAAA,CAAA;AACH,OAAA;AACF,KAAA,EACA;AAAEuB,MAAAA,WAAW,IAAA;AAAK,KACpB,CAAA,CAAA;AAEAF,IAAAA,KAAA,CACE,YAAA;MAAA,OAAMlG,KAAM,CAAAI,IAAA,CAAA;KACZ,EAAA,UAAC2D,CAAM,EAAA;MACL5B,UAAA,CAAWX,KAAQ,GAAAuC,CAAA,CAAA;AACrB,KAAA,EACA;AAAEqC,MAAAA,WAAW,IAAA;AAAK,KACpB,CAAA,CAAA;AAEA,IAAA,OAAO,YAAM;AACX,MAAA,IAAMC,eAAe,SAAfA,eAAqB;AACnB,QAAA,IAAAC,UAAA,GAAaxF,eAAe,YAAY,CAAA,CAAA;AACxC,QAAA,IAAAyF,KAAA,GAAQzF,eAAe,OAAO,CAAA,CAAA;AAEpC,QAAA,OAAA0F,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAA9D,MAAA,CACiB1B,UAAW,CAAAQ,KAAA,EAAA,gBAAA,CAAA;SACvB8E,EAAAA,CAAAA,UAAA,IAAAE,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAA9D,MAAA,CAA6B1B,UAAW,CAAAQ,KAAA,EAAA,gBAAA,CAAA;SAAwB8E,EAAAA,CAAAA,WAAjD,CAAA,EAAAE,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAA9D,MAAA,CACD1B,UAAW,CAAAQ,KAAA,EAAA,SAAA,CAAA;AAAA,SAAA,EAAA,CAAiB+E;OAGjD,CAAA;AACA,MAAA,IAAME,kBAAkB,SAAlBA,kBAAwB;QAC5B,IAAIzD,UAAUxB,KAAO,EAAA;AAEjB,UAAA,OAAAgF,WAAA,CAAA,KAAA,EAAA;AAAA,YAAA,OAAA,EAAA,EAAA,CAAA9D,MAAA,CAAe1B,UAAA,CAAWQ,KAA+B,EAAA,wBAAA,CAAA;YAAA,YAAY0D,EAAAA,WAAAA;WACnEsB,EAAAA,CAAAA,WAAA,CAAAE,qBAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAGN,SAAA;AAEO,QAAA,OAAA,IAAA,CAAA;OACT,CAAA;AACA,MAAA,IAAMC,eAAe,SAAfA,eAAqB;AACnB,QAAA,IAAAC,MAAA,GAAS9F,eAAe,QAAQ,CAAA,CAAA;QACtC,IAAI,CAAC8F,MAAQ,EAAA;AACJ,UAAA,OAAA,IAAA,CAAA;AACT,SAAA;AACA,QAAA,OAAAJ,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAA9D,MAAA,CAAsB1B,UAAW,CAAAQ,KAAA,EAAA,gBAAA,CAAA;AAAA,SAAA,EAAA,CAAwBoF;OAC3D,CAAA;AAEA,MAAA,IAAMC,mBAAmB,SAAnBA,mBAAyB;AACzB,QAAA,IAAAC,UAAA,GAAahG,eAAe,YAAY,CAAA,CAAA;AACxC,QAAA,IAAAd,KAAA,CAAMI,SAAS,UAAY,EAAA;AACzB,UAAA,IAAA+B,UAAA,CAAWX,UAAU,UAAY,EAAA;YACtBsF,UAAA,GAAAN,WAAA,CAAAO,aAAA,EAAA;cAAA,SAAyBd,EAAAA,kBAAAA;aAAoB,EAAA,IAAA,CAAA,CAAA;AAC5D,WAAA,MAAA,IAAW9D,UAAW,CAAAX,KAAA,KAAU,MAAQ,EAAA;YACzBsF,UAAA,GAAAN,WAAA,CAAAQ,UAAA,EAAA;cAAA,SAAsBf,EAAAA,kBAAAA;aAAoB,EAAA,IAAA,CAAA,CAAA;AACzD,WAAA;AACF,SAAA;QAEA,IAAI,CAACa,UAAY,EAAA;AACR,UAAA,OAAA,IAAA,CAAA;AACT,SAAA;AACA,QAAA,OAAAN,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAA9D,MAAA,CAAsB1B,UAAW,CAAAQ,KAAA,EAAA,qBAAA,CAAA;AAAA,SAAA,EAAA,CAA6BsF;OAChE,CAAA;AAEA,MAAA,IAAMG,cAAc,SAAdA,cAAoB;QACxB,OAAOnG,eAAe,OAAO,CAAA,CAAA;OAC/B,CAAA;AAEA,MAAA,IAAMoG,aAAa,SAAbA,aAAmB;AACjB,QAAA,IAAAC,IAAA,GAAOrG,eAAe,MAAM,CAAA,CAAA;QAClC,IAAI,CAACqG,IAAM,EAAA;AACF,UAAA,OAAA,IAAA,CAAA;AACT,SAAA;AACO,QAAA,OAAAX,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAA9D,MAAA,CAAe1B,UAAA,CAAWQ,KAAe,aAAAkB,MAAA,CAAA1B,UAAA,CAAWQ,KAAU,EAAAkB,IAAAA,CAAAA,CAAAA,MAAA,CAAA1C,KAAA,CAAM4C,KAAU,CAAA;AAAA,SAAA,EAAA,CAAAuE,IAAA,CAAA,CAAA,CAAA;OACvF,CAAA;AAIA,MAAA,IAAMC,UAAa,GAAA;AACjB/F,QAAAA,GAAK,EAAAD,QAAA;QACLiG,OAAO7E,YAAa,CAAAhB,KAAA;QACpBA,OAAOQ,UAAW,CAAAR,KAAA;QAClBzB,MAAMC,KAAM,CAAAD,IAAA;QACZK,MAAM+B,UAAW,CAAAX,KAAA;QACjB8F,UAAUpG,UAAW,CAAAM,KAAA;AACrB+F,QAAAA,YAAA,EAAcvH,KAAM,CAAAuH,YAAA,GAAe,IAAO,GAAA,KAAA;QAC1CC,aAAaxH,KAAM,CAAAwH,WAAA;QACnBvE,UAAUjD,KAAM,CAAAiD,QAAA;QAEhB1C,SAASP,KAAM,CAAAO,OAAA;QACfC,WAAWR,KAAM,CAAAQ,SAAA;QACjBiH,YAAYzH,KAAM,CAAA0H,UAAA;QAClBC,cAAc3H,KAAM,CAAA2H,YAAA;AACpBC,QAAAA,KAAO,EAAA;UAAE,yBAA2B,EAAA5H,KAAA,CAAM6H,WAAAA;SAAY;AACtDpC,QAAAA,OAAS,EAAAF,WAAA;AACTQ,QAAAA,MAAQ,EAAAL,UAAA;AACRoC,QAAAA,OAAS,EAAA1D,WAAA;AACT2D,QAAAA,gBAAkB,EAAA/B,oBAAAA;OACpB,CAAA;AAGE,MAAA,OAAAQ,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAY3D,WAAY,CAAArB,KAAAA;AAAA,OAAA,EAAA,CACrB6E,YAAa,EAAA,EAAAG,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAA9D,MAAA,CACC1B,UAAW,CAAAQ,KAAA,EAAA,QAAA,CAAA;AAAA,OAAA,EAAA,CAAAgF,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAA9D,MAAA,CACT1B,WAAWQ,KAAkB,gBAAAkB,MAAA,CAAA1B,UAAA,CAAWQ,oBAAUU,MAAU,IAAA,SAAA,CAAA;OAAAsE,EAAAA,CAAAA,WAAA,UAC9DY,UAAY,EAAA,IAAA,CAAA,EACtBX,eAAgB,EAAA,EAChBE,YAAa,EAAA,EACbE,gBAAiB,EAAA,CAEnBK,CAAAA,EAAAA,UAAW,EAAA,CAAA,CAAA,EAEbD,WAAY,EAAA,CAAA,CAAA,CAAA;KAGnB,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}