UNPKG

tdesign-vue-next

Version:
1 lines 21.4 kB
{"version":3,"file":"tag-input.mjs","sources":["../../../components/tag-input/tag-input.tsx"],"sourcesContent":["import { defineComponent, computed, toRefs, ref, nextTick, reactive, watch } from 'vue';\nimport { CloseCircleFilledIcon as TdCloseCircleFilledIcon } from 'tdesign-icons-vue-next';\nimport TInput, { InputProps, StrInputProps, TdInputProps } from '../input';\nimport { TdTagInputProps } from './type';\nimport props from './props';\nimport { useConfig } from '../config-provider/hooks/useConfig';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { useGlobalIcon } from '../hooks/useGlobalIcon';\nimport { useTagScroll, useHover, useDragSorter, useTagList } from './hooks';\nimport useDefault from '../hooks/useDefaultValue';\nimport { isArray } from 'lodash-es';\nimport { useDisabled } from '../hooks/useDisabled';\nimport { useReadonly } from '../hooks/useReadonly';\nimport { useTNodeJSX } from '../hooks/tnode';\n\nconst useComponentClassName = () => {\n return {\n NAME_CLASS: usePrefixClass('tag-input'),\n CLEAR_CLASS: usePrefixClass('tag-input__suffix-clear'),\n BREAK_LINE_CLASS: usePrefixClass('tag-input--break-line'),\n };\n};\n\nexport default defineComponent({\n name: 'TTagInput',\n props,\n setup(props: TdTagInputProps, { slots }) {\n const renderTNodeJSX = useTNodeJSX();\n const { NAME_CLASS, CLEAR_CLASS, BREAK_LINE_CLASS } = useComponentClassName();\n const { CloseCircleFilledIcon } = useGlobalIcon({ CloseCircleFilledIcon: TdCloseCircleFilledIcon });\n\n const isDisabled = useDisabled();\n const isReadonly = useReadonly();\n\n const { inputValue, inputProps, borderless, size, tips, status, suffix, autoWidth, onPaste } = toRefs(props);\n const [tInputValue, setTInputValue] = useDefault(\n inputValue,\n props.defaultInputValue,\n props.onInputChange,\n 'inputValue',\n );\n const { excessTagsDisplayType, clearable, placeholder } = toRefs(props);\n const { isHover, addHover, cancelHover } = useHover({\n readonly: isReadonly.value,\n disabled: isDisabled.value,\n onMouseenter: props.onMouseenter,\n onMouseleave: props.onMouseleave,\n });\n const isComposition = ref(false);\n const { classPrefix } = useConfig();\n const isFocused = ref(false);\n\n // 这里不需要响应式,因此直接传递参数\n const { getDragProps } = useDragSorter({\n ...props,\n sortOnDraggable: props.dragSort,\n onDragOverCheck: {\n x: true,\n targetClassNameRegExp: new RegExp(`^${classPrefix.value}-tag`),\n },\n });\n const { scrollToRight, onWheel, scrollToRightOnEnter, scrollToLeftOnLeave, tagInputRef, isScrollable } =\n useTagScroll(props);\n // handle tag add and remove\n // 需要响应式,为了尽量的和 react 版本做法相同,这里进行响应式处理\n const { tagValue, onInnerEnter, onInputBackspaceKeyUp, onInputBackspaceKeyDown, clearAll, renderLabel, onClose } =\n useTagList(\n reactive({\n ...toRefs(props),\n getDragProps,\n }),\n );\n\n const classes = computed(() => {\n const isEmpty = !(isArray(tagValue.value) && tagValue.value.length);\n return [\n NAME_CLASS.value,\n {\n [BREAK_LINE_CLASS.value]: excessTagsDisplayType.value === 'break-line',\n [`${classPrefix.value}-is-empty`]: isEmpty,\n [`${classPrefix.value}-tag-input--with-tag`]: !isEmpty,\n },\n ];\n });\n\n const tagInputPlaceholder = computed(() => (!tagValue.value?.length ? placeholder.value : ''));\n\n const showClearIcon = computed(() =>\n Boolean(\n !isReadonly.value &&\n !isDisabled.value &&\n clearable.value &&\n isHover.value &&\n (tagValue.value?.length || tInputValue.value),\n ),\n );\n\n const onInputEnter = (value: string, context: { e: KeyboardEvent }) => {\n // 阻止 Enter 默认行为,避免在 Form 中触发 submit 事件\n context.e?.preventDefault?.();\n setTInputValue('', { e: context.e, trigger: 'enter' });\n !isComposition.value && onInnerEnter(value, context);\n nextTick(() => {\n scrollToRight();\n isComposition.value = false;\n });\n };\n\n const onInputCompositionstart = (value: string, context: { e: CompositionEvent }) => {\n isComposition.value = true;\n inputProps.value?.onCompositionstart?.(value, context);\n };\n\n const onInputCompositionend = (value: string, context: { e: CompositionEvent }) => {\n isComposition.value = false;\n inputProps.value?.onCompositionend?.(value, context);\n };\n\n const onClick: TdInputProps['onClick'] = (ctx) => {\n if (isDisabled.value) return;\n isFocused.value = true;\n tagInputRef.value?.focus();\n props.onClick?.(ctx);\n };\n\n const onClearClick = (context: { e: MouseEvent }) => {\n clearAll(context);\n setTInputValue('', { e: context.e, trigger: 'clear' });\n props.onClear?.(context);\n };\n\n const onMouseEnter: InputProps['onMouseenter'] = (context) => {\n addHover(context);\n scrollToRightOnEnter();\n };\n\n const onMouseLeave: InputProps['onMouseleave'] = (context) => {\n cancelHover(context);\n scrollToLeftOnLeave();\n };\n\n const onInnerFocus: InputProps['onFocus'] = (inputValue: string, context: { e: MouseEvent }) => {\n if (isFocused.value) return;\n isFocused.value = true;\n props.onFocus?.(tagValue.value, { e: context.e, inputValue });\n };\n\n const onInnerBlur: InputProps['onFocus'] = (inputValue: string, context: { e: MouseEvent }) => {\n isFocused.value = false;\n setTInputValue('', { e: context.e, trigger: 'blur' });\n props.onBlur?.(tagValue.value, { e: context.e, inputValue });\n };\n\n const onInnerChange: StrInputProps['onChange'] = (val, context) => {\n setTInputValue(val, { ...context, trigger: 'input' });\n };\n\n watch(\n () => isScrollable.value,\n (v) => {\n if (props.excessTagsDisplayType !== 'scroll') return;\n const scrollElementClass = `${classPrefix.value}-input__prefix`;\n const scrollElement = tagInputRef.value.$el.querySelector(`.${scrollElementClass}`);\n if (v) scrollElement.classList.add(`${scrollElementClass}--scrollable`);\n else scrollElement.classList.remove(`${scrollElementClass}--scrollable`);\n },\n );\n\n return () => {\n const suffixIconNode = showClearIcon.value ? (\n <CloseCircleFilledIcon class={CLEAR_CLASS.value} onClick={onClearClick} />\n ) : (\n renderTNodeJSX('suffixIcon')\n );\n const prefixIconNode = renderTNodeJSX('prefixIcon');\n const suffixClass = `${classPrefix.value}-tag-input__with-suffix-icon`;\n if (suffixIconNode && !classes.value.includes(suffixClass)) {\n classes.value.push(suffixClass);\n }\n // 自定义 Tag 节点\n const displayNode = renderTNodeJSX('valueDisplay', {\n params: {\n value: tagValue.value,\n onClose: (index: number) => onClose({ index }),\n },\n });\n // 左侧文本\n const label = renderTNodeJSX('label', { silent: true });\n // const inputProps = inputProps as TdTagInputProps['inputProps'];\n const readonly = isReadonly.value || inputProps.value?.readonly;\n\n return (\n <TInput\n ref={tagInputRef}\n v-slots={{\n suffix: slots.suffix,\n }}\n borderless={borderless.value}\n readonly={readonly}\n showInput={!readonly || !tagValue.value || !tagValue.value?.length}\n value={tInputValue.value}\n autoWidth={true} // 控制input_inner的宽度 设置为true让内部input不会提前换行\n size={size.value}\n disabled={isDisabled.value}\n label={() => renderLabel({ displayNode, label })}\n class={classes.value}\n tips={tips.value}\n status={status.value}\n placeholder={tagInputPlaceholder.value}\n suffix={suffix.value}\n suffixIcon={() => suffixIconNode}\n prefixIcon={() => prefixIconNode}\n keepWrapperWidth={!autoWidth.value}\n onWheel={onWheel}\n onChange={onInnerChange}\n onPaste={onPaste.value}\n onEnter={onInputEnter}\n onKeyup={onInputBackspaceKeyUp}\n onKeydown={onInputBackspaceKeyDown}\n onMouseenter={onMouseEnter}\n onMouseleave={onMouseLeave}\n onFocus={onInnerFocus}\n onBlur={onInnerBlur}\n onClick={onClick}\n onCompositionstart={onInputCompositionstart}\n onCompositionend={onInputCompositionend}\n {...inputProps.value}\n />\n );\n };\n },\n});\n"],"names":["useComponentClassName","NAME_CLASS","usePrefixClass","CLEAR_CLASS","BREAK_LINE_CLASS","defineComponent","name","props","setup","slots","_ref","renderTNodeJSX","useTNodeJSX","_useComponentClassNam","_useGlobalIcon","useGlobalIcon","CloseCircleFilledIcon","TdCloseCircleFilledIcon","isDisabled","useDisabled","isReadonly","useReadonly","_toRefs","toRefs","inputValue","inputProps","borderless","size","tips","status","suffix","autoWidth","onPaste","_useDefault","useDefault","defaultInputValue","onInputChange","_useDefault2","_slicedToArray","tInputValue","setTInputValue","_toRefs2","excessTagsDisplayType","clearable","placeholder","_useHover","useHover","readonly","value","disabled","onMouseenter","onMouseleave","isHover","addHover","cancelHover","isComposition","ref","_useConfig","useConfig","classPrefix","isFocused","_useDragSorter","useDragSorter","_objectSpread","sortOnDraggable","dragSort","onDragOverCheck","x","targetClassNameRegExp","RegExp","concat","getDragProps","_useTagScroll","useTagScroll","scrollToRight","onWheel","scrollToRightOnEnter","scrollToLeftOnLeave","tagInputRef","isScrollable","_useTagList","useTagList","reactive","tagValue","onInnerEnter","onInputBackspaceKeyUp","onInputBackspaceKeyDown","clearAll","renderLabel","onClose","classes","computed","isEmpty","isArray","length","_defineProperty","tagInputPlaceholder","_tagValue$value","showClearIcon","_tagValue$value2","Boolean","onInputEnter","context","_context$e","_context$e$preventDef","e","preventDefault","call","trigger","nextTick","onInputCompositionstart","_inputProps$value","_inputProps$value$onC","onCompositionstart","onInputCompositionend","_inputProps$value2","_inputProps$value2$on","onCompositionend","onClick","ctx","_tagInputRef$value","_props2$onClick","focus","onClearClick","_props2$onClear","onClear","onMouseEnter","onMouseLeave","onInnerFocus","_props2$onFocus","onFocus","onInnerBlur","_props2$onBlur","onBlur","onInnerChange","val","watch","v","scrollElementClass","scrollElement","$el","querySelector","classList","add","remove","_inputProps$value3","_tagValue$value3","suffixIconNode","_createVNode","prefixIconNode","suffixClass","includes","push","displayNode","params","index","label","silent","TInput","_mergeProps","suffixIcon","prefixIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAMA,wBAAwB,SAAxBA,wBAA8B;EAC3B,OAAA;AACLC,IAAAA,UAAA,EAAYC,eAAe,WAAW,CAAA;AACtCC,IAAAA,WAAA,EAAaD,eAAe,yBAAyB,CAAA;IACrDE,gBAAA,EAAkBF,eAAe,uBAAuB,CAAA;GAC1D,CAAA;AACF,CAAA,CAAA;AAEA,gBAAeG,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,WAAA;AACNC,EAAAA,KAAA,EAAAA,KAAA;AACAC,EAAAA,KAAMD,WAANC,KAAMD,CAAAA,MAAAA,EAAAA,IAAAA,EAAmC;AAAA,IAAA,IAATE,KAAA,GAAAC,IAAA,CAAAD,KAAA,CAAA;AAC9B,IAAA,IAAME,iBAAiBC,WAAY,EAAA,CAAA;AACnC,IAAA,IAAAC,qBAAA,GAAsDb,qBAAsB,EAAA;MAApEC,UAAA,GAAAY,qBAAA,CAAAZ,UAAA;MAAYE,WAAa,GAAAU,qBAAA,CAAbV,WAAa;MAAAC,gBAAA,GAAAS,qBAAA,CAAAT,gBAAA,CAAA;IACjC,IAAAU,cAAA,GAAkCC,cAAc;AAAEC,QAAAA,qBAAA,EAAuBC,qBAAAA;AAAwB,OAAC,CAAA;MAA1FD,uBAAsB,GAAAF,cAAA,CAAtBE,qBAAsB,CAAA;AAE9B,IAAA,IAAME,aAAaC,WAAY,EAAA,CAAA;AAC/B,IAAA,IAAMC,aAAaC,WAAY,EAAA,CAAA;AAE/B,IAAA,IAAAC,OAAA,GAA+FC,MAAA,CAAOhB,MAAK,CAAA;MAAnGiB,UAAA,GAAAF,OAAA,CAAAE,UAAA;MAAYC,UAAY,GAAAH,OAAA,CAAZG,UAAY;MAAAC,UAAA,GAAAJ,OAAA,CAAAI,UAAA;MAAYC,IAAM,GAAAL,OAAA,CAANK,IAAM;MAAAC,IAAA,GAAAN,OAAA,CAAAM,IAAA;MAAMC,MAAQ,GAAAP,OAAA,CAARO,MAAQ;MAAAC,MAAA,GAAAR,OAAA,CAAAQ,MAAA;MAAQC,SAAW,GAAAT,OAAA,CAAXS,SAAW;MAAAC,OAAA,GAAAV,OAAA,CAAAU,OAAA,CAAA;AAC7E,IAAA,IAAAC,WAAA,GAAgCC,eAAA,CACpCV,UAAA,EACAjB,MAAM,CAAA4B,iBAAA,EACN5B,MAAM,CAAA6B,aAAA,EACN,YACF,CAAA;MAAAC,YAAA,GAAAC,cAAA,CAAAL,WAAA,EAAA,CAAA,CAAA;AALOM,MAAAA,WAAa,GAAAF,YAAA,CAAA,CAAA,CAAA;AAAAG,MAAAA,cAAc,GAAAH,YAAA,CAAA,CAAA,CAAA,CAAA;AAMlC,IAAA,IAAAI,QAAA,GAA0DlB,OAAOhB,MAAK,CAAA;MAA9DmC,qBAAuB,GAAAD,QAAA,CAAvBC,qBAAuB;MAAAC,SAAA,GAAAF,QAAA,CAAAE,SAAA;MAAWC,WAAY,GAAAH,QAAA,CAAZG,WAAY,CAAA;IACtD,IAAAC,SAAA,GAA2CC,QAAS,CAAA;QAClDC,UAAU3B,UAAW,CAAA4B,KAAA;QACrBC,UAAU/B,UAAW,CAAA8B,KAAA;QACrBE,cAAc3C,MAAM,CAAA2C,YAAA;QACpBC,cAAc5C,MAAM,CAAA4C,YAAAA;AACtB,OAAC,CAAA;MALOC,OAAA,GAAAP,SAAA,CAAAO,OAAA;MAASC,QAAU,GAAAR,SAAA,CAAVQ,QAAU;MAAAC,WAAA,GAAAT,SAAA,CAAAS,WAAA,CAAA;AAMrB,IAAA,IAAAC,aAAA,GAAgBC,IAAI,KAAK,CAAA,CAAA;AACzB,IAAA,IAAAC,UAAA,GAAkBC,SAAU,EAAA;MAA1BC,WAAY,GAAAF,UAAA,CAAZE,WAAY,CAAA;AACd,IAAA,IAAAC,SAAA,GAAYJ,IAAI,KAAK,CAAA,CAAA;IAGrB,IAAAK,cAAA,GAAmBC,aAAc,CAAAC,aAAA,CAAAA,aAAA,KAClCxD,MAAAA,CAAAA,EAAAA,EAAAA,EAAAA;QACHyD,iBAAiBzD,MAAM,CAAA0D,QAAA;AACvBC,QAAAA,eAAiB,EAAA;AACfC,UAAAA,CAAG,EAAA,IAAA;UACHC,qBAAuB,EAAA,IAAIC,MAAO,CAAA,GAAA,CAAAC,MAAA,CAAIX,YAAYX,KAAW,EAAA,MAAA,CAAA,CAAA;AAC/D,SAAA;AAAA,OAAA,CACD,CAAA;MAPOuB,YAAa,GAAAV,cAAA,CAAbU,YAAa,CAAA;AAQf,IAAA,IAAAC,aAAA,GACJC,YAAA,CAAalE,MAAK,CAAA;MADZmE,8BAAAA;MAAeC,OAAS,GAAAH,aAAA,CAATG,OAAS;MAAAC,oBAAA,GAAAJ,aAAA,CAAAI,oBAAA;MAAsBC,oCAAAA;MAAqBC,WAAa,GAAAN,aAAA,CAAbM,WAAa;MAAAC,YAAA,GAAAP,aAAA,CAAAO,YAAA,CAAA;AAIlF,IAAA,IAAAC,WAAA,GACJC,UAAA,CACEC,QAAS,CAAAnB,aAAA,CAAAA,aAAA,CAAA,EAAA,EACJxC,OAAOhB,MAAK,CAAA,CAAA,EAAA,EAAA,EAAA;AACfgE,QAAAA,YAAA,EAAAA,YAAAA;AAAA,OAAA,CACD,CACH,CAAA;MANMY,uBAAAA;MAAUC,YAAc,GAAAJ,WAAA,CAAdI,YAAc;MAAAC,qBAAA,GAAAL,WAAA,CAAAK,qBAAA;MAAuBC,sCAAAA;MAAyBC,QAAU,GAAAP,WAAA,CAAVO,QAAU;MAAAC,WAAA,GAAAR,WAAA,CAAAQ,WAAA;MAAaC,uBAAAA;AAQjG,IAAA,IAAAC,OAAA,GAAUC,SAAS,YAAM;AAC7B,MAAA,IAAMC,UAAU,EAAEC,OAAA,CAAQV,SAASnC,KAAK,CAAA,IAAKmC,SAASnC,KAAM,CAAA8C,MAAA,CAAA,CAAA;AACrD,MAAA,OAAA,CACL7F,UAAW,CAAA+C,KAAA,EAAA+C,eAAA,CAAAA,eAAA,CAAAA,eAAA,KAER3F,gBAAA,CAAiB4C,KAAQ,EAAAN,qBAAA,CAAsBM,KAAU,KAAA,YAAA,MAAAsB,MAAA,CACtDX,WAAA,CAAYX,KAAmB,EAAA4C,WAAAA,CAAAA,EAAAA,OAAA,CAAAtB,EAAAA,EAAAA,CAAAA,MAAA,CAC/BX,WAAY,CAAAX,KAAA,EAA8B,sBAAA,CAAA,EAAA,CAAC4C,OAAA,CAEnD,CAAA,CAAA;AACF,KAAC,CAAA,CAAA;IAEK,IAAAI,mBAAA,GAAsBL,SAAS,YAAA;AAAA,MAAA,IAAAM,eAAA,CAAA;AAAA,MAAA,OAAO,GAAAA,eAAA,GAACd,SAASnC,KAAO,MAAAiD,IAAAA,IAAAA,eAAA,KAAhBA,KAAAA,CAAAA,IAAAA,eAAA,CAAgBH,MAAA,CAAA,GAASlD,WAAY,CAAAI,KAAA,GAAQ,EAAG,CAAA;KAAA,CAAA,CAAA;IAE7F,IAAMkD,aAAgB,GAAAP,QAAA,CAAS,YAAA;AAAA,MAAA,IAAAQ,gBAAA,CAAA;AAAA,MAAA,OAC7BC,OAAA,CACE,CAAChF,UAAA,CAAW4B,KACV,IAAA,CAAC9B,UAAW,CAAA8B,KAAA,IACZL,SAAU,CAAAK,KAAA,IACVI,OAAQ,CAAAJ,KAAA,KACP,EAAAmD,gBAAA,GAAAhB,QAAS,CAAAnC,KAAA,MAAAmD,IAAAA,IAAAA,gBAAA,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAAgBL,WAAUvD,WAAY,CAAAS,KAAA,CAC3C,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;IAEM,IAAAqD,YAAA,GAAe,SAAfA,YAAAA,CAAgBrD,KAAA,EAAesD,OAAkC,EAAA;MAAA,IAAAC,UAAA,EAAAC,qBAAA,CAAA;MAErE,CAAAD,UAAA,GAAAD,OAAA,CAAQG,iEAARF,UAAA,CAAWG,cAAiB,cAAAF,qBAAA,KAAA,KAAA,CAAA,IAA5BA,qBAAA,CAAAG,IAAA,CAAAJ,UAA4B,CAAA,CAAA;MAC5B/D,cAAA,CAAe,IAAI;QAAEiE,CAAA,EAAGH,QAAQG,CAAG;AAAAG,QAAAA,OAAA,EAAS,OAAA;AAAQ,OAAC,CAAA,CAAA;MACrD,CAACrD,aAAc,CAAAP,KAAA,IAASoC,YAAa,CAAApC,KAAA,EAAOsD,OAAO,CAAA,CAAA;AACnDO,MAAAA,QAAA,CAAS,YAAM;AACCnC,QAAAA,aAAA,EAAA,CAAA;QACdnB,aAAA,CAAcP,KAAQ,GAAA,KAAA,CAAA;AACxB,OAAC,CAAA,CAAA;KACH,CAAA;IAEM,IAAA8D,uBAAA,GAA0B,SAA1BA,uBAAAA,CAA2B9D,KAAA,EAAesD,OAAqC,EAAA;MAAA,IAAAS,iBAAA,EAAAC,qBAAA,CAAA;MACnFzD,aAAA,CAAcP,KAAQ,GAAA,IAAA,CAAA;MACX,CAAA+D,iBAAA,GAAAtF,UAAA,CAAAuB,KAAA,cAAA+D,iBAAA,KAAA,KAAA,CAAA,IAAA,CAAAC,qBAAA,GAAAD,iBAAA,CAAOE,kBAAqB,MAAAD,IAAAA,IAAAA,qBAAA,KAA5BA,KAAAA,CAAAA,IAAAA,qBAAA,CAAAL,IAAA,CAAAI,iBAAA,EAA4B/D,KAAA,EAAOsD,OAAO,CAAA,CAAA;KACvD,CAAA;IAEM,IAAAY,qBAAA,GAAwB,SAAxBA,qBAAAA,CAAyBlE,KAAA,EAAesD,OAAqC,EAAA;MAAA,IAAAa,kBAAA,EAAAC,qBAAA,CAAA;MACjF7D,aAAA,CAAcP,KAAQ,GAAA,KAAA,CAAA;MACX,CAAAmE,kBAAA,GAAA1F,UAAA,CAAAuB,KAAA,cAAAmE,kBAAA,KAAA,KAAA,CAAA,IAAA,CAAAC,qBAAA,GAAAD,kBAAA,CAAOE,gBAAmB,MAAAD,IAAAA,IAAAA,qBAAA,KAA1BA,KAAAA,CAAAA,IAAAA,qBAAA,CAAAT,IAAA,CAAAQ,kBAAA,EAA0BnE,KAAA,EAAOsD,OAAO,CAAA,CAAA;KACrD,CAAA;AAEM,IAAA,IAAAgB,OAAA,GAAmC,SAAnCA,OAAAA,CAAoCC,GAAQ,EAAA;MAAA,IAAAC,kBAAA,EAAAC,eAAA,CAAA;MAChD,IAAIvG,UAAW,CAAA8B,KAAA,EAAO,OAAA;MACtBY,SAAA,CAAUZ,KAAQ,GAAA,IAAA,CAAA;AAClB,MAAA,CAAAwE,kBAAA,GAAA1C,WAAA,CAAY9B,oDAAZwE,kBAAA,CAAmBE,KAAM,EAAA,CAAA;AACzBnH,MAAAA,CAAAA,eAAAA,GAAAA,MAAAA,CAAM+G,yCAAN/G,KAAAA,CAAAA,IAAAA,eAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAgBgH,GAAG,CAAA,CAAA;KACrB,CAAA;AAEM,IAAA,IAAAI,YAAA,GAAe,SAAfA,YAAAA,CAAgBrB,OAA+B,EAAA;AAAA,MAAA,IAAAsB,eAAA,CAAA;MACnDrC,QAAA,CAASe,OAAO,CAAA,CAAA;MAChB9D,cAAA,CAAe,IAAI;QAAEiE,CAAA,EAAGH,QAAQG,CAAG;AAAAG,QAAAA,OAAA,EAAS,OAAA;AAAQ,OAAC,CAAA,CAAA;AACrDrG,MAAAA,CAAAA,eAAAA,GAAAA,MAAAA,CAAMsH,yCAANtH,KAAAA,CAAAA,IAAAA,eAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAgB+F,OAAO,CAAA,CAAA;KACzB,CAAA;AAEM,IAAA,IAAAwB,YAAA,GAA2C,SAA3CA,YAAAA,CAA4CxB,OAAY,EAAA;MAC5DjD,QAAA,CAASiD,OAAO,CAAA,CAAA;AACK1B,MAAAA,oBAAA,EAAA,CAAA;KACvB,CAAA;AAEM,IAAA,IAAAmD,YAAA,GAA2C,SAA3CA,YAAAA,CAA4CzB,OAAY,EAAA;MAC5DhD,WAAA,CAAYgD,OAAO,CAAA,CAAA;AACCzB,MAAAA,mBAAA,EAAA,CAAA;KACtB,CAAA;IAEM,IAAAmD,YAAA,GAAsC,SAAtCA,YAAAA,CAAuCxG,WAAAA,EAAoB8E,OAA+B,EAAA;AAAA,MAAA,IAAA2B,eAAA,CAAA;MAC9F,IAAIrE,SAAU,CAAAZ,KAAA,EAAO,OAAA;MACrBY,SAAA,CAAUZ,KAAQ,GAAA,IAAA,CAAA;AAClBzC,MAAAA,CAAAA,eAAAA,GAAAA,MAAAA,CAAM2H,OAAU,cAAAD,eAAA,KAAA,KAAA,CAAA,IAAhB1H,eAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAgB4E,QAAA,CAASnC,KAAO,EAAA;QAAEyD,GAAGH,OAAQ,CAAAG,CAAA;AAAGjF,QAAAA,UAAAA,EAAAA,WAAAA;AAAW,OAAC,CAAA,CAAA;KAC9D,CAAA;IAEM,IAAA2G,WAAA,GAAqC,SAArCA,WAAAA,CAAsC3G,WAAAA,EAAoB8E,OAA+B,EAAA;AAAA,MAAA,IAAA8B,cAAA,CAAA;MAC7FxE,SAAA,CAAUZ,KAAQ,GAAA,KAAA,CAAA;MAClBR,cAAA,CAAe,IAAI;QAAEiE,CAAA,EAAGH,QAAQG,CAAG;AAAAG,QAAAA,OAAA,EAAS,MAAA;AAAO,OAAC,CAAA,CAAA;AACpDrG,MAAAA,CAAAA,cAAAA,GAAAA,MAAAA,CAAM8H,MAAS,cAAAD,cAAA,KAAA,KAAA,CAAA,IAAf7H,cAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAe4E,QAAA,CAASnC,KAAO,EAAA;QAAEyD,GAAGH,OAAQ,CAAAG,CAAA;AAAGjF,QAAAA,UAAAA,EAAAA,WAAAA;AAAW,OAAC,CAAA,CAAA;KAC7D,CAAA;IAEM,IAAA8G,aAAA,GAA2C,SAA3CA,aAAAA,CAA4CC,GAAA,EAAKjC,OAAY,EAAA;AACjE9D,MAAAA,cAAA,CAAe+F,qCAAUjC,OAAS,CAAA,EAAA,EAAA,EAAA;AAAAM,QAAAA,OAAA,EAAS,OAAA;QAAS,CAAA,CAAA;KACtD,CAAA;AAEA4B,IAAAA,KAAA,CACE,YAAA;MAAA,OAAMzD,YAAa,CAAA/B,KAAA,CAAA;KACnB,EAAA,UAACyF,CAAM,EAAA;AACL,MAAA,IAAIlI,OAAMmC,qBAA0B,KAAA,QAAA,EAAU,OAAA;AACxC,MAAA,IAAAgG,kBAAA,GAAApE,EAAAA,CAAAA,MAAA,CAAwBX,WAAY,CAAAX,KAAA,EAAA,gBAAA,CAAA,CAAA;AAC1C,MAAA,IAAM2F,gBAAgB7D,WAAY,CAAA9B,KAAA,CAAM4F,GAAI,CAAAC,aAAA,CAAAvE,GAAAA,CAAAA,MAAA,CAAkBoE,kBAAoB,CAAA,CAAA,CAAA;MAC9E,IAAAD,CAAA,EAAiBE,aAAA,CAAAG,SAAA,CAAUC,GAAI,CAAA,EAAA,CAAAzE,MAAA,CAAGoE,kBAAgC,EAAA,cAAA,CAAA,CAAA,CAAA,KACnDC,aAAA,CAAAG,SAAA,CAAUE,MAAO,CAAA,EAAA,CAAA1E,MAAA,CAAGoE,kBAAgC,EAAA,cAAA,CAAA,CAAA,CAAA;AACzE,KACF,CAAA,CAAA;AAEA,IAAA,OAAO,YAAM;MAAA,IAAAO,kBAAA,EAAAC,gBAAA,CAAA;MACX,IAAMC,cAAiB,GAAAjD,aAAA,CAAclD,KACnC,GAAAoG,WAAA,CAAApI,uBAAA,EAAA;QAAA,OAA8Bb,EAAAA,WAAY,CAAA6C,KAAA;QAAA,SAAgB2E,EAAAA,YAAAA;OAE1DhH,EAAAA,IAAAA,CAAAA,GAAAA,cAAA,CAAe,YAAY,CAAA,CAAA;AAEvB,MAAA,IAAA0I,cAAA,GAAiB1I,eAAe,YAAY,CAAA,CAAA;AAC5C,MAAA,IAAA2I,WAAA,GAAAhF,EAAAA,CAAAA,MAAA,CAAiBX,WAAY,CAAAX,KAAA,EAAA,8BAAA,CAAA,CAAA;MACnC,IAAImG,kBAAkB,CAACzD,OAAA,CAAQ1C,KAAM,CAAAuG,QAAA,CAASD,WAAW,CAAG,EAAA;AAClD5D,QAAAA,OAAA,CAAA1C,KAAA,CAAMwG,KAAKF,WAAW,CAAA,CAAA;AAChC,OAAA;AAEM,MAAA,IAAAG,WAAA,GAAc9I,eAAe,cAAgB,EAAA;AACjD+I,QAAAA,MAAQ,EAAA;UACN1G,OAAOmC,QAAS,CAAAnC,KAAA;AAChByC,UAAAA,SAAS,SAATA,QAAUkE,KAAA,EAAA;AAAA,YAAA,OAAkBlE,QAAQ,CAAA;AAAEkE,cAAAA,OAAAA,KAAAA;AAAM,aAAC,CAAA,CAAA;AAAA,WAAA;AAC/C,SAAA;AACF,OAAC,CAAA,CAAA;AAED,MAAA,IAAMC,SAAQjJ,cAAe,CAAA,OAAA,EAAS;AAAEkJ,QAAAA,MAAA,EAAQ,IAAA;AAAK,OAAC,CAAA,CAAA;AAEtD,MAAA,IAAM9G,QAAW,GAAA3B,UAAA,CAAW4B,KAAS,MAAAiG,kBAAA,GAAAxH,UAAA,CAAWuB,KAAO,MAAAiG,IAAAA,IAAAA,kBAAA,KAAlBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAkBlG,QAAA,CAAA,CAAA;AAEvD,MAAA,OAAAqG,WAAA,CAAAU,KAAA,EAAAC,UAAA,CAAA;AAAA,QAAA,KAAA,EAESjF,WAAA;QAAA,YAIOpD,EAAAA,UAAA,CAAWsB;oBACbD,QAAA;AAAA,QAAA,WAAA,EACC,CAACA,QAAA,IAAY,CAACoC,QAAS,CAAAnC,KAAA,IAAS,EAAA,CAAAkG,gBAAA,GAAC/D,QAAS,CAAAnC,KAAA,MAAA,IAAA,IAAAkG,gBAAA,KAATA,KAAAA,CAAAA,IAAAA,gBAAA,CAAgBpD;eACrDvD,EAAAA,WAAA,CAAYS;qBACR,IAAA;QAAA,MACLrB,EAAAA,IAAA,CAAKqB;kBACD9B,EAAAA,UAAA,CAAW8B;iBACd,SAAA4G,KAAA,GAAA;AAAA,UAAA,OAAMpE,YAAY;AAAEiE,YAAAA,WAAA,EAAAA,WAAA;AAAaG,YAAAA,OAAAA,MAAAA;AAAM,WAAC,CAAA,CAAA;AAAA,SAAA;QAAA,OACxClE,EAAAA,OAAQ,CAAA1C,KAAA;QAAA,MACTpB,EAAAA,IAAK,CAAAoB,KAAA;QAAA,QACHnB,EAAAA,MAAO,CAAAmB,KAAA;QAAA,aACFgD,EAAAA,mBAAA,CAAoBhD;gBACzBlB,EAAAA,MAAA,CAAOkB;sBACH,SAAAgH,UAAA,GAAA;AAAA,UAAA,OAAMb;;sBACN,SAAAc,UAAA,GAAA;AAAA,UAAA,OAAMZ;;0BACA,EAAA,CAACtH,UAAUiB,KAC7B;AAAA,QAAA,SAAA,EAAS2B;oBACC2D,aAAA;QAAA,SACDtG,EAAAA,OAAQ,CAAAgB,KAAA;AAAA,QAAA,SAAA,EACRqD,YAAA;AAAA,QAAA,SAAA,EACAhB,qBACT;AAAA,QAAA,WAAA,EAAWC;wBACGwC,YAAA;AAAA,QAAA,cAAA,EACAC,YACd;AAAA,QAAA,SAAA,EAASC;kBACDG,WAAA;AAAA,QAAA,SAAA,EACCb,OACT;AAAA,QAAA,oBAAA,EAAoBR;0BACFI,EAAAA,qBAAAA;OACdzF,EAAAA,WAAWuB,KACjB,CAjCW,EAAA;QACPlB,QAAQrB,KAAM,CAAAqB,MAAAA;;KAkCtB,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}