tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 26.3 kB
Source Map (JSON)
{"version":3,"file":"rate.mjs","sources":["../../src/rate/rate.tsx"],"sourcesContent":["import { computed, defineComponent, ref, toRefs, h } from 'vue';\nimport { StarFilledIcon } from 'tdesign-icons-vue-next';\nimport { onClickOutside } from '@vueuse/core';\nimport props from './props';\nimport config from '../config';\nimport { TdRateProps } from './type';\nimport useVModel from '../hooks/useVModel';\nimport { useFormDisabled } from '../form/hooks';\nimport { usePrefixClass, useConfig } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-rate`,\n props,\n setup(props, context) {\n const rateClass = usePrefixClass('rate');\n const { t, globalConfig } = useConfig('rate');\n const isDisabled = useFormDisabled();\n\n const rateWrapper = ref<HTMLElement>();\n const { value, modelValue } = toRefs(props);\n const [actualVal, setActualVal] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n const rateText = computed(() => {\n if (Array.isArray(props.texts) && props.texts.length > 0) {\n return props.texts[actualVal.value - 1];\n }\n\n return actualVal.value > 0\n ? t(globalConfig.value.valueText, { value: actualVal.value })\n : globalConfig.value.noValueText;\n });\n const colors = computed(() => {\n const { color } = props;\n if (Array.isArray(color) && color.length === 2) {\n return {\n '--td-rate-selected-color': color[0],\n '--td-rate-unselected-color': color[1],\n };\n }\n if (typeof color === 'string') {\n return {\n '--td-rate-selected-color': color,\n };\n }\n return {};\n });\n\n const regSize = (val: string | number) => {\n return `${val}`.includes('px') ? val : `${val}px`;\n };\n const unitConvert = (value: number | string): number => {\n if (typeof value === 'string') {\n return parseInt(value, 10);\n }\n return value;\n };\n\n const icon = (isSelect: boolean) => {\n const { icon } = props;\n const startComponent = StarFilledIcon;\n let select = startComponent;\n let unSelect = startComponent;\n\n if (Array.isArray(icon)) {\n const [_select, _unSelect] = icon;\n if (typeof _select === 'function') {\n select = _select(h);\n } else {\n select = _select;\n }\n if (typeof _unSelect === 'function') {\n unSelect = _unSelect(h);\n } else {\n unSelect = _unSelect;\n }\n }\n if (isSelect) {\n return select || startComponent;\n }\n return unSelect || startComponent;\n };\n\n const rootClasses = computed(() => [`${rateClass.value}`, { [`${rateClass.value}--disabled`]: isDisabled.value }]);\n\n const classes = (n: number) => {\n const classPrefix = `${rateClass.value}__icon`;\n\n return {\n [classPrefix]: true,\n [`${classPrefix}--current`]: scaleIndex.value === Math.ceil(n),\n [`${classPrefix}--${actualVal.value >= n ? 'selected' : 'unselected'}`]: true,\n };\n };\n\n const ratePopoverRef = ref<HTMLElement>();\n const scaleIndex = ref(-1);\n const popoverValue = ref(0);\n const timer = ref<any>(null);\n const touchEnd = ref(false);\n const tipsVisible = ref(false);\n const tipsLeft = ref(0);\n const actionType = ref<'move' | 'tap'>('tap');\n const touchStartTime = ref(0);\n\n onClickOutside(ratePopoverRef, (event) => {\n hideTips();\n });\n\n const hideTips = (delay = false) => {\n if (delay) {\n timer.value = setTimeout(() => {\n handleCloseTips();\n }, 3000);\n } else {\n handleCloseTips();\n }\n };\n\n const handleCloseTips = () => {\n tipsVisible.value = false;\n scaleIndex.value = -1;\n if (timer.value) {\n clearTimeout(timer.value);\n }\n };\n\n const onClick = (event: MouseEvent) => {\n if (isDisabled.value) return;\n // if (Date.now() - touchStartTime.value > 200) return;\n getRect(event, 'tap');\n };\n\n const onTouch = (e: TouchEvent, eventType: 'move') => {\n const [touch] = e.touches;\n getRect(touch, eventType);\n };\n\n const onTouchstart = (e: TouchEvent) => {\n if (isDisabled.value) return;\n touchStartTime.value = Date.now();\n touchEnd.value = false;\n };\n\n const onTouchmove = (e: TouchEvent) => {\n if (isDisabled.value) return;\n if (Date.now() - touchStartTime.value <= 200) return;\n onTouch(e, 'move');\n };\n\n const onTouchEnd = (e: TouchEvent) => {\n if (isDisabled.value) return;\n touchEnd.value = true;\n hideTips();\n };\n\n const getRect = (event: Touch | MouseEvent, eventType: 'move' | 'tap') => {\n if (rateWrapper.value) {\n const { count, allowHalf, gap, value: currentValue, size } = props;\n const margin = unitConvert(gap);\n const { width, left } = rateWrapper.value.getBoundingClientRect();\n const starWidth = (width - (count - 1) * margin) / count;\n const offsetX = event.pageX - left;\n const num = (offsetX + margin) / (starWidth + margin);\n const remainder = num % 1;\n const integral = num - remainder;\n let value = remainder <= 0.5 && allowHalf ? integral + 0.5 : integral + 1;\n\n if (value > count) {\n value = count;\n } else if (value < 0) {\n value = 0;\n }\n\n popoverValue.value = value;\n const fontSize = size || getComputedStyle(rateWrapper.value).getPropertyValue('font-size');\n const leftDis = Math.ceil(value - 1) * (unitConvert(gap) + unitConvert(fontSize)) + unitConvert(fontSize) * 0.5;\n tipsVisible.value = true;\n tipsLeft.value = Math.max(leftDis, unitConvert(fontSize) * 0.5);\n scaleIndex.value = Math.ceil(value);\n actionType.value = eventType;\n\n if (value !== currentValue) {\n setActualVal(value);\n }\n\n if (touchEnd.value) {\n hideTips(true);\n }\n }\n };\n\n const onSelect = (value: number) => {\n setActualVal(value);\n hideTips();\n };\n\n return () => {\n const iconComponent = (n: number, value: number) => {\n const classPrefix = `${rateClass.value}__icon-left`;\n const select = value >= n;\n const selectHalf = Math.ceil(value) >= n;\n const SelectIcon = icon(select);\n const SelectHalfIcon = icon(selectHalf);\n return (\n <div style={{ fontSize: regSize(props.size) }}>\n {props.allowHalf ? (\n <div class={`${classPrefix} ${selectHalf ? `${classPrefix}--selected` : `${classPrefix}--unselected`}`}>\n {<SelectHalfIcon />}\n </div>\n ) : null}\n {<SelectIcon />}\n </div>\n );\n };\n\n const renderRateWrapper = () => {\n const countList = Array.from(Array(props.count), (_, k) => k + 1);\n return (\n <div\n ref={rateWrapper}\n class={`${rateClass.value}__wrapper`}\n onTouchstart={onTouchstart}\n onTouchmove={onTouchmove}\n onTouchend={onTouchEnd}\n onTouchcancel={onTouchEnd}\n >\n {countList.map((n) => {\n // 这里没有好的代替component组件的方法,用h函数代替\n return h(iconComponent(n, actualVal.value), {\n key: n,\n class: classes(n),\n style: { marginRight: `${props.count > n ? props.gap : 0}px`, ...colors.value },\n onClick,\n });\n })}\n </div>\n );\n };\n\n const renderRateText = () => {\n if (!props.showText) return null;\n return (\n <span\n class={{ [`${rateClass.value}__text`]: true, [`${rateClass.value}__text--active`]: actualVal.value > 0 }}\n >\n {rateText.value}\n </span>\n );\n };\n\n const renderRateTips = () => {\n if (!tipsVisible.value || props.placement === '') return null;\n return (\n <div\n ref={ratePopoverRef}\n class={{\n [`${rateClass.value}__tips`]: true,\n [`${rateClass.value}__tips--${props.placement}`]: props.placement,\n }}\n style={{ left: `${tipsLeft.value}px` }}\n >\n {actionType.value === 'tap' ? (\n <div style=\"display: flex\">\n {props.allowHalf && (\n <div\n class={{\n [`${rateClass.value}__tips-item`]: true,\n [`${rateClass.value}__tips-item--active`]:\n actualVal.value === Math.ceil(popoverValue.value) - 0.5,\n }}\n onClick={() => onSelect(Math.ceil(popoverValue.value) - 0.5)}\n >\n {h(iconComponent(Math.ceil(popoverValue.value), Math.ceil(popoverValue.value) - 0.5), {\n style: { ...colors.value },\n class: `${rateClass.value}__icon ${rateClass.value}__icon--unselected`,\n })}\n <span class={`${rateClass.value}__tips-text`}>{Math.ceil(popoverValue.value) - 0.5}</span>\n </div>\n )}\n <div\n class={{\n [`${rateClass.value}__tips-item`]: true,\n [`${rateClass.value}__tips-item--active`]:\n props.allowHalf && actualVal.value === Math.ceil(popoverValue.value),\n }}\n onClick={() => onSelect(Math.ceil(popoverValue.value))}\n >\n {h(iconComponent(Math.ceil(popoverValue.value), Math.ceil(popoverValue.value)), {\n style: { ...colors.value },\n class: `${rateClass.value}__icon ${rateClass.value}__icon--selected`,\n })}\n <span class={`${rateClass.value}__tips-text`}>{Math.ceil(popoverValue.value)}</span>\n </div>\n </div>\n ) : (\n <div class={`${rateClass.value}__tips-item`} onClick={() => onSelect(popoverValue.value)}>\n {h(iconComponent(Math.ceil(popoverValue.value), popoverValue.value), {\n style: { ...colors.value },\n class: {\n [`${rateClass.value}__icon`]: true,\n [`${rateClass.value}__icon--selected`]: Math.ceil(popoverValue.value) === popoverValue.value,\n [`${rateClass.value}__icon--unselected`]: Math.ceil(popoverValue.value) !== popoverValue.value,\n },\n })}\n <span class={`${rateClass.value}__tips-text`}>{popoverValue.value}</span>\n </div>\n )}\n </div>\n );\n };\n\n return (\n <div class={rootClasses.value}>\n {renderRateWrapper()}\n {renderRateText()}\n {renderRateTips()}\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","context","rateClass","usePrefixClass","_useConfig","useConfig","t","globalConfig","isDisabled","useFormDisabled","rateWrapper","ref","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","actualVal","setActualVal","rateText","computed","Array","isArray","texts","length","valueText","noValueText","colors","color","regSize","val","concat","includes","unitConvert","parseInt","icon","isSelect","startComponent","StarFilledIcon","select","unSelect","_icon","_select","_unSelect","h","rootClasses","_defineProperty","classes","n","classPrefix","scaleIndex","Math","ceil","ratePopoverRef","popoverValue","timer","touchEnd","tipsVisible","tipsLeft","actionType","touchStartTime","onClickOutside","event","hideTips","delay","arguments","undefined","setTimeout","handleCloseTips","clearTimeout","onClick","getRect","onTouch","e","eventType","_e$touches","touches","touch","onTouchstart","Date","now","onTouchmove","onTouchEnd","count","allowHalf","gap","currentValue","size","margin","_rateWrapper$value$ge","getBoundingClientRect","width","left","starWidth","offsetX","pageX","num","remainder","integral","fontSize","getComputedStyle","getPropertyValue","leftDis","max","onSelect","iconComponent","selectHalf","SelectIcon","SelectHalfIcon","_createVNode","renderRateWrapper","countList","from","_","k","map","key","class","style","_objectSpread","marginRight","renderRateText","showText","renderRateTips","placement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAQA,SAAWC,MAAA,CAAXD;AAER,YAAeE,eAAgB,CAAA;AAC7BC,EAAAA,gBAASH,MAAA,EAAA,OAAA,CAAA;AACTI,EAAAA,KAAA,EAAAA,KAAA;AACAC,EAAAA,KAAA,WAAAA,KAAAA,CAAMD,QAAOE,OAAS,EAAA;AACd,IAAA,IAAAC,SAAA,GAAYC,eAAe,MAAM,CAAA,CAAA;AACvC,IAAA,IAAAC,UAAA,GAA4BC,UAAU,MAAM,CAAA;MAApCC,CAAA,GAAAF,UAAA,CAAAE,CAAA;MAAGC,YAAa,GAAAH,UAAA,CAAbG,YAAa,CAAA;AACxB,IAAA,IAAMC,aAAaC,eAAgB,EAAA,CAAA;AAEnC,IAAA,IAAMC,cAAcC,GAAiB,EAAA,CAAA;AACrC,IAAA,IAAAC,OAAA,GAA8BC,OAAOd,MAAK,CAAA;MAAlCe,KAAA,GAAAF,OAAA,CAAAE,KAAA;MAAOC,UAAW,GAAAH,OAAA,CAAXG,UAAW,CAAA;AACpB,IAAA,IAAAC,UAAA,GAA4BC,SAAA,CAAUH,OAAOC,UAAYhB,EAAAA,MAAAA,CAAMmB,YAAcnB,EAAAA,MAAAA,CAAMoB,QAAQ,CAAA;MAAAC,WAAA,GAAAC,cAAA,CAAAL,UAAA,EAAA,CAAA,CAAA;AAA1FM,MAAAA,SAAW,GAAAF,WAAA,CAAA,CAAA,CAAA;AAAAG,MAAAA,YAAY,GAAAH,WAAA,CAAA,CAAA,CAAA,CAAA;AAExB,IAAA,IAAAI,QAAA,GAAWC,SAAS,YAAM;AAC1B,MAAA,IAAAC,KAAA,CAAMC,QAAQ5B,MAAM,CAAA6B,KAAK,KAAK7B,MAAM,CAAA6B,KAAA,CAAMC,SAAS,CAAG,EAAA;QACjD9B,OAAAA,MAAAA,CAAM6B,KAAM,CAAAN,SAAA,CAAUR,KAAQ,GAAA,CAAA,CAAA,CAAA;AACvC,OAAA;AAEA,MAAA,OAAOQ,SAAU,CAAAR,KAAA,GAAQ,CACrB,GAAAR,CAAA,CAAEC,aAAaO,KAAM,CAAAgB,SAAA,EAAW;QAAEhB,KAAA,EAAOQ,SAAU,CAAAR,KAAAA;AAAM,OAAC,CAAA,GAC1DP,aAAaO,KAAM,CAAAiB,WAAA,CAAA;AACzB,KAAC,CAAA,CAAA;AACK,IAAA,IAAAC,MAAA,GAASP,SAAS,YAAM;AACtB,MAAA,IAAEQ,QAAUlC,MAAAA,CAAVkC;AACR,MAAA,IAAIP,MAAMC,OAAQ,CAAAM,KAAK,CAAK,IAAAA,KAAA,CAAMJ,WAAW,CAAG,EAAA;QACvC,OAAA;AACL,UAAA,4BAA4BI,KAAM,CAAA,CAAA,CAAA;UAClC,8BAA8BA,KAAM,CAAA,CAAA,CAAA;SACtC,CAAA;AACF,OAAA;AACI,MAAA,IAAA,OAAOA,UAAU,QAAU,EAAA;QACtB,OAAA;AACL,UAAA,0BAA4B,EAAAA,KAAAA;SAC9B,CAAA;AACF,OAAA;AACA,MAAA,OAAO,EAAC,CAAA;AACV,KAAC,CAAA,CAAA;AAEK,IAAA,IAAAC,OAAA,GAAU,SAAVA,OAAAA,CAAWC,GAAyB,EAAA;AACxC,MAAA,OAAO,EAAAC,CAAAA,MAAA,CAAGD,GAAM,EAAAE,QAAA,CAAS,IAAI,CAAA,GAAIF,gBAASA,GAAA,EAAA,IAAA,CAAA,CAAA;KAC5C,CAAA;AACM,IAAA,IAAAG,WAAA,GAAc,SAAdA,WAAAA,CAAexB,MAAmC,EAAA;AAClD,MAAA,IAAA,OAAOA,WAAU,QAAU,EAAA;AACtB,QAAA,OAAAyB,QAAA,CAASzB,QAAO,EAAE,CAAA,CAAA;AAC3B,OAAA;AACOA,MAAAA,OAAAA,MAAAA,CAAAA;KACT,CAAA;AAEM,IAAA,IAAA0B,IAAA,GAAO,SAAPA,IAAAA,CAAQC,QAAsB,EAAA;AAC5B,MAAA,IAAED,KAAAA,GAASzC,MAAAA,CAATyC,IAAAA,CAAAA;MACR,IAAME,cAAiB,GAAAC,cAAA,CAAA;MACvB,IAAIC,MAAS,GAAAF,cAAA,CAAA;MACb,IAAIG,QAAW,GAAAH,cAAA,CAAA;AAEX,MAAA,IAAAhB,KAAA,CAAMC,OAAQa,CAAAA,KAAI,CAAG,EAAA;AACjB,QAAA,IAAAM,KAAA,GAAAzB,cAAA,CAAuBmB,KAAAA,EAAAA,CAAAA,CAAAA;AAAtBO,UAAAA,OAAS,GAAAD,KAAA,CAAA,CAAA,CAAA;AAAAE,UAAAA,SAAS,GAAAF,KAAA,CAAA,CAAA,CAAA,CAAA;AACrB,QAAA,IAAA,OAAOC,YAAY,UAAY,EAAA;AACjCH,UAAAA,MAAA,GAASG,QAAQE,CAAC,CAAA,CAAA;AACpB,SAAO,MAAA;AACIL,UAAAA,MAAA,GAAAG,OAAA,CAAA;AACX,SAAA;AACI,QAAA,IAAA,OAAOC,cAAc,UAAY,EAAA;AACnCH,UAAAA,QAAA,GAAWG,UAAUC,CAAC,CAAA,CAAA;AACxB,SAAO,MAAA;AACMJ,UAAAA,QAAA,GAAAG,SAAA,CAAA;AACb,SAAA;AACF,OAAA;AACA,MAAA,IAAIP,QAAU,EAAA;QACZ,OAAOG,MAAU,IAAAF,cAAA,CAAA;AACnB,OAAA;MACA,OAAOG,QAAY,IAAAH,cAAA,CAAA;KACrB,CAAA;IAEA,IAAMQ,WAAc,GAAAzB,QAAA,CAAS,YAAA;AAAA,MAAA,OAAM,IAAAW,MAAA,CAAIlC,SAAU,CAAAY,KAAA,GAAAqC,eAAA,CAAA,EAAA,EAAA,EAAA,CAAAf,MAAA,CAAelC,SAAU,CAAAY,KAAA,iBAAoBN,UAAW,CAAAM,KAAA,CAAQ,CAAA,CAAA;KAAA,CAAA,CAAA;AAE3G,IAAA,IAAAsC,OAAA,GAAU,SAAVA,OAAAA,CAAWC,CAAc,EAAA;AACvB,MAAA,IAAAC,WAAA,GAAAlB,EAAAA,CAAAA,MAAA,CAAiBlC,SAAU,CAAAY,KAAA,EAAA,QAAA,CAAA,CAAA;AAE1B,MAAA,OAAAqC,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EACJG,WAAc,EAAA,IAAA,CAAAlB,EAAAA,EAAAA,CAAAA,MAAA,CACXkB,WAAA,EAAA,WAAA,CAAA,EAAyBC,WAAWzC,KAAU,KAAA0C,IAAA,CAAKC,KAAKJ,CAAC,CAAA,CAAA,EAAA,EAAA,CAAAjB,MAAA,CACzDkB,WAAA,QAAAlB,MAAA,CAAgBd,UAAUR,KAAS,IAAAuC,CAAA,GAAI,aAAa,YAAiB,GAAA,IAAA,CAAA,CAAA;KAE7E,CAAA;AAEA,IAAA,IAAMK,iBAAiB/C,GAAiB,EAAA,CAAA;AAClC,IAAA,IAAA4C,UAAA,GAAa5C,IAAI,CAAE,CAAA,CAAA,CAAA;AACnB,IAAA,IAAAgD,YAAA,GAAehD,IAAI,CAAC,CAAA,CAAA;AACpB,IAAA,IAAAiD,KAAA,GAAQjD,IAAS,IAAI,CAAA,CAAA;AACrB,IAAA,IAAAkD,QAAA,GAAWlD,IAAI,KAAK,CAAA,CAAA;AACpB,IAAA,IAAAmD,WAAA,GAAcnD,IAAI,KAAK,CAAA,CAAA;AACvB,IAAA,IAAAoD,QAAA,GAAWpD,IAAI,CAAC,CAAA,CAAA;AAChB,IAAA,IAAAqD,UAAA,GAAarD,IAAoB,KAAK,CAAA,CAAA;AACtC,IAAA,IAAAsD,cAAA,GAAiBtD,IAAI,CAAC,CAAA,CAAA;AAEbuD,IAAAA,cAAA,CAAAR,cAAA,EAAgB,UAACS,KAAU,EAAA;AAC/BC,MAAAA,QAAA,EAAA,CAAA;AACX,KAAC,CAAA,CAAA;AAEK,IAAA,IAAAA,QAAA,GAAW,SAAXA,QAAAA,GAA8B;AAAA,MAAA,IAAlBC,KAAA,GAAAC,SAAA,CAAAzC,MAAA,GAAA,CAAA,IAAAyC,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAQ,KAAU,CAAA;AAClC,MAAA,IAAID,KAAO,EAAA;AACHT,QAAAA,KAAA,CAAA9C,KAAA,GAAQ0D,WAAW,YAAM;AACbC,UAAAA,eAAA,EAAA,CAAA;WACf,GAAI,CAAA,CAAA;AACT,OAAO,MAAA;AACWA,QAAAA,eAAA,EAAA,CAAA;AAClB,OAAA;KACF,CAAA;AAEA,IAAA,IAAMA,kBAAkB,SAAlBA,kBAAwB;MAC5BX,WAAA,CAAYhD,KAAQ,GAAA,KAAA,CAAA;AACpByC,MAAAA,UAAA,CAAWzC,KAAQ,GAAA,CAAA,CAAA,CAAA;MACnB,IAAI8C,MAAM9C,KAAO,EAAA;AACf4D,QAAAA,YAAA,CAAad,MAAM9C,KAAK,CAAA,CAAA;AAC1B,OAAA;KACF,CAAA;AAEM,IAAA,IAAA6D,OAAA,GAAU,SAAVA,OAAAA,CAAWR,KAAsB,EAAA;MACrC,IAAI3D,UAAW,CAAAM,KAAA,EAAO,OAAA;AAEtB8D,MAAAA,OAAA,CAAQT,OAAO,KAAK,CAAA,CAAA;KACtB,CAAA;IAEM,IAAAU,OAAA,GAAU,SAAVA,OAAAA,CAAWC,CAAA,EAAeC,SAAsB,EAAA;AAC9C,MAAA,IAAAC,UAAA,GAAA3D,cAAA,CAAUyD,CAAE,CAAAG,OAAA,EAAA,CAAA,CAAA;AAAXC,QAAAA,KAAK,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AACZJ,MAAAA,OAAA,CAAQM,OAAOH,SAAS,CAAA,CAAA;KAC1B,CAAA;AAEM,IAAA,IAAAI,YAAA,GAAe,SAAfA,YAAAA,CAAgBL,CAAkB,EAAA;MACtC,IAAItE,UAAW,CAAAM,KAAA,EAAO,OAAA;AACPmD,MAAAA,cAAA,CAAAnD,KAAA,GAAQsE,KAAKC,GAAI,EAAA,CAAA;MAChCxB,QAAA,CAAS/C,KAAQ,GAAA,KAAA,CAAA;KACnB,CAAA;AAEM,IAAA,IAAAwE,WAAA,GAAc,SAAdA,WAAAA,CAAeR,CAAkB,EAAA;MACrC,IAAItE,UAAW,CAAAM,KAAA,EAAO,OAAA;MACtB,IAAIsE,IAAK,CAAAC,GAAA,EAAQ,GAAApB,cAAA,CAAenD,KAAS,IAAA,GAAA,EAAK,OAAA;AAC9C+D,MAAAA,OAAA,CAAQC,GAAG,MAAM,CAAA,CAAA;KACnB,CAAA;AAEM,IAAA,IAAAS,UAAA,GAAa,SAAbA,UAAAA,CAAcT,CAAkB,EAAA;MACpC,IAAItE,UAAW,CAAAM,KAAA,EAAO,OAAA;MACtB+C,QAAA,CAAS/C,KAAQ,GAAA,IAAA,CAAA;AACRsD,MAAAA,QAAA,EAAA,CAAA;KACX,CAAA;IAEM,IAAAQ,OAAA,GAAU,SAAVA,OAAAA,CAAWT,KAAA,EAA2BY,SAA8B,EAAA;MACxE,IAAIrE,YAAYI,KAAO,EAAA;AACrB,QAAA,IAAQ0E,KAAO,GAA8CzF,MAAAA,CAArDyF,KAAO;UAAAC,SAAA,GAA8C1F,MAAAA,CAA9C0F,SAAA;UAAWC,MAAmC3F,MAAAA,CAAnC2F;UAAYC,YAAA,GAAuB5F,MAAAA,CAA9Be,KAAO;UAAc8E,OAAS7F,MAAAA,CAAT6F;AAC9C,QAAA,IAAAC,MAAA,GAASvD,YAAYoD,GAAG,CAAA,CAAA;QAC9B,IAAAI,qBAAA,GAAwBpF,WAAA,CAAYI,MAAMiF,qBAAsB,EAAA;UAAxDC,KAAO,GAAAF,qBAAA,CAAPE,KAAO;UAAAC,IAAA,GAAAH,qBAAA,CAAAG,IAAA,CAAA;AACf,QAAA,IAAMC,SAAa,GAAA,CAAAF,KAAA,GAAA,CAASR,KAAQ,GAAA,CAAA,IAAKK,MAAU,IAAAL,KAAA,CAAA;AAC7C,QAAA,IAAAW,OAAA,GAAUhC,MAAMiC,KAAQ,GAAAH,IAAA,CAAA;QACxB,IAAAI,GAAA,GAAA,CAAOF,OAAU,GAAAN,MAAA,KAAWK,SAAY,GAAAL,MAAA,CAAA,CAAA;AAC9C,QAAA,IAAMS,YAAYD,GAAM,GAAA,CAAA,CAAA;AACxB,QAAA,IAAME,WAAWF,GAAM,GAAAC,SAAA,CAAA;AACvB,QAAA,IAAIxF,SAAQwF,SAAa,IAAA,GAAA,IAAOb,SAAY,GAAAc,QAAA,GAAW,MAAMA,QAAW,GAAA,CAAA,CAAA;QAExE,IAAIzF,SAAQ0E,KAAO,EAAA;AACjB1E,UAAAA,MAAQ,GAAA0E,KAAA,CAAA;AACV,SAAA,MAAA,IAAW1E,SAAQ,CAAG,EAAA;AACpBA,UAAAA,MAAQ,GAAA,CAAA,CAAA;AACV,SAAA;QAEA6C,YAAA,CAAa7C,KAAQA,GAAAA,MAAAA,CAAAA;AACrB,QAAA,IAAM0F,WAAWZ,IAAQ,IAAAa,gBAAA,CAAiB/F,YAAYI,KAAK,CAAA,CAAE4F,iBAAiB,WAAW,CAAA,CAAA;QACzF,IAAMC,OAAU,GAAAnD,IAAA,CAAKC,IAAK3C,CAAAA,MAAAA,GAAQ,CAAC,CAAK,IAAAwB,WAAA,CAAYoD,GAAG,CAAA,GAAIpD,WAAY,CAAAkE,QAAQ,CAAK,CAAA,GAAAlE,WAAA,CAAYkE,QAAQ,CAAI,GAAA,GAAA,CAAA;QAC5G1C,WAAA,CAAYhD,KAAQ,GAAA,IAAA,CAAA;AACpBiD,QAAAA,QAAA,CAASjD,QAAQ0C,IAAK,CAAAoD,GAAA,CAAID,SAASrE,WAAY,CAAAkE,QAAQ,IAAI,GAAG,CAAA,CAAA;QACnDjD,UAAA,CAAAzC,KAAA,GAAQ0C,IAAK,CAAAC,IAAA,CAAK3C,MAAK,CAAA,CAAA;QAClCkD,UAAA,CAAWlD,KAAQ,GAAAiE,SAAA,CAAA;QAEnB,IAAIjE,WAAU6E,YAAc,EAAA;UAC1BpE,YAAA,CAAaT,MAAK,CAAA,CAAA;AACpB,SAAA;QAEA,IAAI+C,SAAS/C,KAAO,EAAA;UAClBsD,QAAA,CAAS,IAAI,CAAA,CAAA;AACf,SAAA;AACF,OAAA;KACF,CAAA;AAEM,IAAA,IAAAyC,QAAA,GAAW,SAAXA,QAAAA,CAAY/F,MAAkB,EAAA;MAClCS,YAAA,CAAaT,MAAK,CAAA,CAAA;AACTsD,MAAAA,QAAA,EAAA,CAAA;KACX,CAAA;AAEA,IAAA,OAAO,YAAM;MACL,IAAA0C,aAAA,GAAgB,SAAhBA,aAAAA,CAAiBzD,CAAA,EAAWvC,MAAkB,EAAA;AAC5C,QAAA,IAAAwC,WAAA,GAAAlB,EAAAA,CAAAA,MAAA,CAAiBlC,SAAU,CAAAY,KAAA,EAAA,aAAA,CAAA,CAAA;AACjC,QAAA,IAAM8B,SAAS9B,MAAS,IAAAuC,CAAA,CAAA;QACxB,IAAM0D,UAAa,GAAAvD,IAAA,CAAKC,IAAK3C,CAAAA,MAAK,CAAK,IAAAuC,CAAA,CAAA;AACjC,QAAA,IAAA2D,UAAA,GAAaxE,KAAKI,MAAM,CAAA,CAAA;AACxB,QAAA,IAAAqE,cAAA,GAAiBzE,KAAKuE,UAAU,CAAA,CAAA;AAEpC,QAAA,OAAAG,WAAA,CAAA,KAAA,EAAA;UAAA,OAAY,EAAA;AAAEV,YAAAA,UAAUtE,OAAQnC,CAAAA,MAAAA,CAAM6F,IAAI,CAAA;AAAE,WAAA;AAAA,SAAA,EAAA,CACzC7F,OAAM0F,SACL,GAAAyB,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAA9E,MAAA,CAAekB,WAAe,EAAA,GAAA,CAAA,CAAAlB,MAAA,CAAA2E,UAAA,GAAA3E,EAAAA,CAAAA,MAAA,CAAgBkB,WAAA,EAAA,YAAA,CAAA,GAAA,EAAA,CAAAlB,MAAA,CAA6BkB,WACxE,EAAA,cAAA,CAAA,CAAA;SAAA4D,EAAAA,CAAAA,WAAA,CAAAD,cAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,GAED,IAAA,EAAAC,WAAA,CAAAF,UAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;OAIV,CAAA;AAEA,MAAA,IAAMG,oBAAoB,SAApBA,oBAA0B;AACxB,QAAA,IAAAC,SAAA,GAAY1F,KAAM,CAAA2F,IAAA,CAAK3F,KAAM3B,CAAAA,MAAAA,CAAMyF,KAAK,CAAA,EAAG,UAAC8B,CAAA,EAAGC,CAAM,EAAA;UAAA,OAAAA,CAAA,GAAI,CAAC,CAAA;SAAA,CAAA,CAAA;AAChE,QAAA,OAAAL,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,KAAA,EAESxG;6BACKR,UAAUY,KACpB,EAAA,WAAA,CAAA;AAAA,UAAA,cAAA,EAAcqE;yBACDG,WAAA;AAAA,UAAA,YAAA,EACDC,UACZ;UAAA,eAAeA,EAAAA,UAAAA;YAEd6B,SAAU,CAAAI,GAAA,CAAI,UAACnE,CAAM,EAAA;UAEpB,OAAOJ,CAAE,CAAA6D,aAAA,CAAczD,CAAG,EAAA/B,SAAA,CAAUR,KAAK,CAAG,EAAA;AAC1C2G,YAAAA,GAAK,EAAApE,CAAA;AACLqE,YAAAA,KAAA,EAAOtE,QAAQC,CAAC,CAAA;AAChBsE,YAAAA,KAAO,EAAAC,aAAA,CAAA;AAAEC,cAAAA,WAAa,EAAAzF,EAAAA,CAAAA,MAAA,CAAGrC,MAAM,CAAAyF,KAAA,GAAQnC,CAAItD,GAAAA,MAAAA,CAAM2F,GAAM,GAAA,CAAA,EAAA,IAAA,CAAA;aAAU1D,EAAAA,MAAA,CAAOlB,KAAM,CAAA;AAC9E6D,YAAAA,OAAA,EAAAA,OAAAA;AACF,WAAC,CAAA,CAAA;AACH,SAAC;OAGP,CAAA;AAEA,MAAA,IAAMmD,iBAAiB,SAAjBA,iBAAuB;AAC3B,QAAA,IAAI,CAAC/H,MAAM,CAAAgI,QAAA,EAAiB,OAAA,IAAA,CAAA;AAC5B,QAAA,OAAAb,WAAA,CAAA,MAAA,EAAA;UAAA,OAAA/D,EAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAA,EAAA,CAAAf,MAAA,CAEiBlC,UAAUY,KAAgB,EAAA,QAAA,CAAA,EAAA,IAAA,MAAAsB,MAAA,CAAUlC,SAAA,CAAUY,0BAAwBQ,SAAU,CAAAR,KAAA,GAAQ;SAEpGU,EAAAA,CAAAA,QAAA,CAASV;OAGhB,CAAA;AAEA,MAAA,IAAMkH,iBAAiB,SAAjBA,iBAAuB;AAC3B,QAAA,IAAI,CAAClE,WAAA,CAAYhD,KAASf,IAAAA,MAAAA,CAAMkI,SAAc,KAAA,EAAA,EAAW,OAAA,IAAA,CAAA;AACzD,QAAA,OAAAf,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,KAAA,EAESxD,cAAA;UAAA,OAAAP,EAAAA,eAAA,CAAAA,eAAA,CAAAf,EAAAA,EAAAA,EAAAA,CAAAA,MAAA,CAEClC,SAAA,CAAUY,KAAgB,EAAA,QAAA,CAAA,EAAA,IAAA,CAAAsB,EAAAA,EAAAA,CAAAA,MAAA,CAC1BlC,SAAA,CAAUY,KAAgBf,EAAAA,UAAAA,CAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAMkI,YAAclI,MAAM,CAAAkI,SAAA,CAAA;UAAA,OAEnD,EAAA;AAAEhC,YAAAA,IAAA,EAAA7D,EAAAA,CAAAA,MAAA,CAAS2B,QAAA,CAASjD,KAAU,EAAA,IAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAA,CAEpCkD,UAAW,CAAAlD,KAAA,KAAU,KACpB,GAAAoG,WAAA,CAAA,KAAA,EAAA;UAAA,OAAW,EAAA,eAAA;AAAA,SAAA,EAAA,CACRnH,MAAM,CAAA0F,SAAA,IAAAyB,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA/D,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAA,EAAA,CAAAf,MAAA,CAGGlC,SAAA,CAAUY,KAAqB,EAAA,aAAA,CAAA,EAAA,IAAA,CAAA,EAAA,EAAA,CAAAsB,MAAA,CAC/BlC,SAAA,CAAUY,KACZ,EAAAQ,qBAAAA,CAAAA,EAAAA,SAAA,CAAUR,UAAU0C,IAAK,CAAAC,IAAA,CAAKE,YAAa,CAAA7C,KAAK,CAAI,GAAA,GAAA,CAAA;AAAA,UAAA,SAAA,EAE/C,SAAA6D,OAAA,GAAA;AAAA,YAAA,OAAMkC,QAAA,CAASrD,KAAKC,IAAK,CAAAE,YAAA,CAAa7C,KAAK,CAAA,GAAI,GAAG,CAAA,CAAA;AAAA,WAAA;SAE1DmC,EAAAA,CAAAA,CAAE,CAAA6D,aAAA,CAActD,IAAK,CAAAC,IAAA,CAAKE,YAAa,CAAA7C,KAAK,CAAG,EAAA0C,IAAA,CAAKC,IAAK,CAAAE,YAAA,CAAa7C,KAAK,CAAA,GAAI,GAAG,CAAG,EAAA;AACpF6G,UAAAA,KAAO,EAAAC,aAAA,CAAA,EAAA,EAAK5F,MAAA,CAAOlB,KAAM,CAAA;UACzB4G,KAAO,EAAA,EAAA,CAAAtF,MAAA,CAAGlC,SAAU,CAAAY,KAAA,EAAA,SAAA,CAAA,CAAAsB,MAAA,CAAelC,SAAU,CAAAY,KAAA,EAAA,oBAAA,CAAA;SAC9C,CAAA,EAAAoG,WAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAA9E,MAAA,CACelC,SAAU,CAAAY,KAAA,EAAA,aAAA,CAAA;AAAA,SAAA,EAAA,CAAqB0C,IAAK,CAAAC,IAAA,CAAKE,YAAa,CAAA7C,KAAK,CAAI,GAAA,GAAA,CAZhF,CAAA,CAAA,CAAA,EAAAoG,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA/D,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAA,EAAA,CAAAf,MAAA,CAiBKlC,SAAA,CAAUY,KAAqB,EAAA,aAAA,CAAA,EAAA,IAAA,CAAAsB,EAAAA,EAAAA,CAAAA,MAAA,CAC/BlC,SAAA,CAAUY,KACZf,EAAAA,qBAAAA,CAAAA,EAAAA,MAAAA,CAAM0F,SAAa,IAAAnE,SAAA,CAAUR,KAAU,KAAA0C,IAAA,CAAKC,IAAK,CAAAE,YAAA,CAAa7C,KAAK,CAAA,CAAA;AAAA,UAAA,SAAA,EAE9D,SAAA6D,OAAA,GAAA;YAAA,OAAMkC,QAAA,CAASrD,KAAKC,IAAK,CAAAE,YAAA,CAAa7C,KAAK,CAAC,CAAA,CAAA;AAAA,WAAA;SAEpDmC,EAAAA,CAAAA,CAAE,CAAA6D,aAAA,CAActD,IAAK,CAAAC,IAAA,CAAKE,YAAa,CAAA7C,KAAK,CAAG,EAAA0C,IAAA,CAAKC,IAAK,CAAAE,YAAA,CAAa7C,KAAK,CAAC,CAAG,EAAA;AAC9E6G,UAAAA,KAAO,EAAAC,aAAA,CAAA,EAAA,EAAK5F,MAAA,CAAOlB,KAAM,CAAA;UACzB4G,KAAO,EAAA,EAAA,CAAAtF,MAAA,CAAGlC,SAAU,CAAAY,KAAA,EAAA,SAAA,CAAA,CAAAsB,MAAA,CAAelC,SAAU,CAAAY,KAAA,EAAA,kBAAA,CAAA;SAC9C,CAAA,EAAAoG,WAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAA9E,MAAA,CACelC,SAAA,CAAUY,KAAqB,EAAA,aAAA,CAAA;SAAA0C,EAAAA,CAAAA,IAAA,CAAKC,IAAK,CAAAE,YAAA,CAAa7C,KAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAAoG,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAA9E,MAAA,CAIhElC,SAAU,CAAAY,KAAA,EAAA,aAAA,CAAA;AAAA,UAAA,SAAA,EAA6B,SAAA6D,OAAA,GAAA;AAAA,YAAA,OAAMkC,QAAS,CAAAlD,YAAA,CAAa7C,KAAK,CAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAA,CACpFmC,CAAA,CAAE6D,cAActD,IAAK,CAAAC,IAAA,CAAKE,aAAa7C,KAAK,CAAA,EAAG6C,YAAa,CAAA7C,KAAK,CAAG,EAAA;AACnE6G,UAAAA,KAAO,EAAAC,aAAA,CAAA,EAAA,EAAK5F,MAAA,CAAOlB,KAAM,CAAA;UACzB4G,KAAO,EAAAvE,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAA,EAAA,CAAAf,MAAA,CACDlC,SAAA,CAAUY,KAAgB,EAAA,QAAA,CAAA,EAAA,IAAA,CAAAsB,EAAAA,EAAAA,CAAAA,MAAA,CAC1BlC,SAAU,CAAAY,KAAA,EAAA,kBAAA,CAAA,EAA0B0C,KAAKC,IAAK,CAAAE,YAAA,CAAa7C,KAAK,CAAA,KAAM6C,YAAa,CAAA7C,KAAA,CAAAsB,EAAAA,EAAAA,CAAAA,MAAA,CACnFlC,SAAU,CAAAY,KAAA,yBAA4B0C,KAAKC,IAAK,CAAAE,YAAA,CAAa7C,KAAK,CAAA,KAAM6C,YAAa,CAAA7C,KAAA,CAAA;SAE5F,CAAA,EAAAoG,WAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAA9E,MAAA,CACelC,UAAUY,KAAqB,EAAA,aAAA,CAAA;SAAA6C,EAAAA,CAAAA,YAAA,CAAa7C;OAKtE,CAAA;AAGE,MAAA,OAAAoG,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAYhE,WAAY,CAAApC,KAAAA;OACrBqG,EAAAA,CAAAA,iBAAkB,EAAA,EAClBW,cAAe,EAAA,EACfE,cAAe,EAAA,CAAA,CAAA,CAAA;KAGtB,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}