tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 22.6 kB
Source Map (JSON)
{"version":3,"file":"statistic.mjs","sources":["../../../common/js/statistic/tween.ts","../../../common/js/statistic/utils.ts","../../../components/statistic/statistic.tsx"],"sourcesContent":["/**\n * Inspired by https://github.com/PengJiyuan/b-tween\n * requestAnimationFrame https://caniuse.com/requestanimationframe\n * TDesign vue 2 need to ensure compatibility with users who are using IE and Vue2,\n * it is necessary to use setInterval instead of requestAnimationFrame when the browser version is less than 9\n */\nimport { getIEVersion } from '../utils/helper';\n\nexport interface TweenSettings {\n from: Record<string, number>;\n to: Record<string, number>;\n duration?: number;\n delay?: number;\n onStart?: (keys: Record<string, number>) => void;\n onUpdate?: (keys: Record<string, number>) => void;\n onFinish?: (keys: Record<string, number>) => void;\n}\n\nconst quartOut = (t: number) => 1 - Math.abs((t - 1) ** 4);\n\nexport default class Tween {\n private from: Record<string, number>;\n\n private to: Record<string, number>;\n\n private duration: number;\n\n private onStart?: (keys: Record<string, number>) => void;\n\n private onUpdate: (keys: Record<string, number>) => void;\n\n private onFinish?: (keys: Record<string, number>) => void;\n\n private startTime: number;\n\n private started: boolean;\n\n private finished: boolean;\n\n private timer: number | NodeJS.Timer | null;\n\n private keys: Record<string, number>;\n\n constructor({\n from,\n to,\n duration = 200,\n onStart,\n onUpdate = () => {},\n onFinish,\n }: TweenSettings) {\n this.from = from;\n this.to = to;\n this.duration = duration;\n this.onStart = onStart;\n this.onUpdate = onUpdate;\n this.onFinish = onFinish;\n this.startTime = Date.now();\n this.started = false;\n this.finished = false;\n this.timer = null;\n this.keys = {};\n Object.entries(from).forEach(([key, value]) => {\n if (this.to[key] === undefined) {\n this.to[key] = value;\n }\n });\n\n Object.entries(to).forEach(([key, value]) => {\n if (this.from[key] === undefined) {\n this.from[key] = value;\n }\n });\n }\n\n private time = 0;\n\n private elapsed = 0;\n\n private update() {\n this.time = Date.now();\n if (this.time < this.startTime || this.finished) return;\n\n if (this.elapsed >= this.duration) {\n this.finished = true;\n this.onFinish?.(this.keys);\n return;\n }\n const elapsed = Math.min(this.time - this.startTime, this.duration);\n this.elapsed = elapsed;\n const progress = quartOut(elapsed / this.duration);\n\n Object.keys(this.to).forEach((key) => {\n const delta = this.to[key] - this.from[key];\n this.keys[key] = this.from[key] + delta * progress;\n });\n\n if (!this.started) {\n this.onStart?.(this.keys);\n this.started = true;\n }\n\n this.onUpdate(this.keys);\n }\n\n private polyfillStart() {\n const elapsed = Date.now() - this.startTime;\n const interval = quartOut(elapsed / this.duration);\n\n this.timer = setInterval(() => {\n this.update();\n if (this.finished) {\n clearInterval(this.timer as number);\n }\n }, interval);\n }\n\n private normalStart() {\n const tick = () => {\n this.update();\n this.timer = requestAnimationFrame(tick);\n\n if (this.finished) {\n cancelAnimationFrame(this.timer);\n this.timer = null;\n }\n };\n tick();\n }\n\n public start() {\n this.startTime = Date.now();\n // IE < 10\n if (getIEVersion() < 10) this.polyfillStart();\n else this.normalStart();\n }\n\n public stop() {\n // IE < 10\n if (getIEVersion() < 10) clearInterval(this.timer as number);\n else cancelAnimationFrame(this.timer as number);\n this.timer = null;\n }\n}\n","/**\n * 颜色映射\n */\nexport const COLOR_MAP = {\n black: 'var(--td-text-color-primary)',\n blue: 'var(--td-brand-color)',\n red: 'var(--td-error-color)',\n orange: 'var(--td-warning-color)',\n green: 'var(--td-success-color)',\n};\n\nexport function getFormatValue(value:number | undefined | string, decimalPlaces:number, separator:string) {\n const options = {\n minimumFractionDigits: decimalPlaces ?? 0,\n maximumFractionDigits: decimalPlaces ?? 20,\n useGrouping: !!separator,\n };\n // replace的替换的方案仅能应对大部分地区\n return value.toLocaleString(undefined, options).replace(/,|,/g, separator);\n}\n","import { defineComponent, computed, ref, onMounted, watch, toRefs } from 'vue';\nimport {\n ArrowTriangleDownFilledIcon as TDArrowTriangleDownFilledIcon,\n ArrowTriangleUpFilledIcon as TDArrowTriangleUpFilledIcon,\n} from 'tdesign-icons-vue-next';\nimport { isNumber, isFunction } from 'lodash-es';\n\nimport props from './props';\nimport { useTNodeJSX, useGlobalIcon, usePrefixClass } from '@tdesign/shared-hooks';\n\nimport Skeleton from '../skeleton';\nimport Tween from '@tdesign/common-js/statistic/tween';\nimport { COLOR_MAP, getFormatValue } from '@tdesign/common-js/statistic/utils';\n\nexport default defineComponent({\n name: 'TStatistic',\n props,\n setup(props, { expose }) {\n const COMPONENT_NAME = usePrefixClass('statistic');\n const renderTNodeJSX = useTNodeJSX();\n const { ArrowTriangleUpFilledIcon, ArrowTriangleDownFilledIcon } = useGlobalIcon({\n ArrowTriangleUpFilledIcon: TDArrowTriangleUpFilledIcon,\n ArrowTriangleDownFilledIcon: TDArrowTriangleDownFilledIcon,\n });\n const trendIcons = {\n increase: <ArrowTriangleUpFilledIcon />,\n decrease: <ArrowTriangleDownFilledIcon />,\n };\n const numberValue = computed(() => (isNumber(props.value) ? props.value : 0));\n const innerValue = ref(props.animation?.valueFrom ?? props.value);\n const innerDecimalPlaces = computed(\n () => props.decimalPlaces ?? numberValue.value.toString().split('.')[1]?.length ?? 0,\n );\n\n const tween = ref<Tween>();\n const { value } = toRefs(props);\n\n const start = (from: number = props.animation?.valueFrom ?? 0, to: number = numberValue.value) => {\n if (from !== to) {\n tween.value = new Tween({\n from: {\n value: from,\n },\n to: {\n value: to,\n },\n duration: props.animation.duration,\n onUpdate: (keys) => {\n innerValue.value = Number(keys.value.toFixed(innerDecimalPlaces.value));\n },\n onFinish: () => {\n innerValue.value = to;\n },\n });\n tween.value?.start();\n }\n };\n\n const formatValue = computed(() => {\n if (isFunction(props.format)) {\n return props.format(innerValue.value);\n }\n\n return getFormatValue(innerValue.value, props.decimalPlaces, props.separator);\n });\n\n const contentStyle = computed(() => {\n const { color } = props;\n return {\n color: COLOR_MAP[color] || color,\n };\n });\n\n watch(\n () => props.animationStart,\n (value) => {\n if (props.animation && value && !tween.value) {\n start();\n }\n },\n );\n watch(value, (value) => {\n if (tween.value) {\n (tween.value as any)?.stop();\n tween.value = null;\n }\n innerValue.value = value;\n if (props.animationStart && props.animation) {\n start();\n }\n });\n\n onMounted(() => props.animation && props.animationStart && start());\n\n expose({ start });\n\n return () => {\n const trendIcon = props.trend ? trendIcons[props.trend] : null;\n const prefix = renderTNodeJSX('prefix') || (trendIcon && props.trendPlacement !== 'right' ? trendIcon : null);\n const suffix = renderTNodeJSX('suffix') || (trendIcon && props.trendPlacement === 'right' ? trendIcon : null);\n const title = renderTNodeJSX('title');\n const unit = renderTNodeJSX('unit');\n const extra = renderTNodeJSX('extra');\n\n return (\n <div class={COMPONENT_NAME.value}>\n {title && <div class={`${COMPONENT_NAME.value}-title`}>{title}</div>}\n <Skeleton animation=\"gradient\" theme=\"text\" loading={!!props.loading}>\n <div class={`${COMPONENT_NAME.value}-content`} style={contentStyle.value}>\n {prefix && <span class={`${COMPONENT_NAME.value}-content-prefix`}>{prefix}</span>}\n <span class={`${COMPONENT_NAME.value}-content-value`}>{formatValue.value}</span>\n {unit && <span class={`${COMPONENT_NAME.value}-content-unit`}>{unit}</span>}\n {suffix && <span class={`${COMPONENT_NAME.value}-content-suffix`}>{suffix}</span>}\n </div>\n </Skeleton>\n {extra && <div class={`${COMPONENT_NAME.value}-extra`}>{extra}</div>}\n </div>\n );\n };\n },\n});\n"],"names":["quartOut","t","Math","abs","pow","Tween","_ref","_this","from","to","_ref$duration","duration","onStart","_ref$onUpdate","onUpdate","onFinish","_classCallCheck","_defineProperty","startTime","Date","now","started","finished","timer","keys","Object","entries","forEach","_ref2","_ref3","_slicedToArray","key","value","_ref4","_ref5","_createClass","update","_this2","time","elapsed","_this$onFinish","call","min","progress","delta","_this$onStart","polyfillStart","_this3","interval","setInterval","clearInterval","normalStart","_this4","tick","requestAnimationFrame","cancelAnimationFrame","start","getIEVersion","stop","COLOR_MAP","black","blue","red","orange","green","getFormatValue","decimalPlaces","separator","options","minimumFractionDigits","maximumFractionDigits","useGrouping","toLocaleString","replace","defineComponent","name","props","setup","_props2$animation$val","_props2$animation","expose","COMPONENT_NAME","usePrefixClass","renderTNodeJSX","useTNodeJSX","_useGlobalIcon","useGlobalIcon","ArrowTriangleUpFilledIcon","TDArrowTriangleUpFilledIcon","ArrowTriangleDownFilledIcon","TDArrowTriangleDownFilledIcon","trendIcons","increase","_createVNode","decrease","numberValue","computed","isNumber","innerValue","ref","animation","valueFrom","innerDecimalPlaces","_props2$decimalPlaces","_numberValue$value$to","toString","split","length","tween","_toRefs","toRefs","_props2$animation$val2","_props2$animation2","arguments","undefined","_tween$value","Number","toFixed","formatValue","isFunction","format","contentStyle","color","watch","animationStart","_tween$value2","onMounted","trendIcon","trend","prefix","trendPlacement","suffix","title","unit","extra","concat","Skeleton","loading","_default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAMA,QAAA,GAAW,SAAXA,QAAAA,CAAYC,CAAc,EAAA;AAAA,EAAA,OAAA,CAAA,GAAIC,KAAKC,GAAK,CAAAD,IAAA,CAAAE,GAAA,CAAAH,CAAA,GAAI,GAAM,CAAC,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAAA,IAEpCI,KAAM,gBAAA,YAAA;EAuBzB,SAAAA,KAAAA,CAAAC,IAAA,EAOkB;AAAA,IAAA,IAAAC,KAAA,GAAA,IAAA,CAAA;AAAA,IAAA,IANhBC,IAAA,GAAAF,IAAA,CAAAE,IAAA;MACAC,EAAA,GAAAH,IAAA,CAAAG,EAAA;MAAAC,aAAA,GAAAJ,IAAA,CACAK,QAAW;AAAXA,MAAAA,QAAW,GAAAD,aAAA,KAAA,KAAA,CAAA,GAAA,GAAA,GAAAA,aAAA;MACXE,OAAA,GAAAN,IAAA,CAAAM,OAAA;MAAAC,aAAA,GAAAP,IAAA,CACAQ;AAAAA,MAAAA,sCAAW,YAAM,EAAC,GAAAD,aAAA;MAClBE,QAAA,GAAAT,IAAA,CAAAS,QAAA,CAAA;AAAAC,IAAAA,eAAA,OAAAX,KAAA,CAAA,CAAA;IAAAY,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAAA,IAAAA,eAAA,eA0Ba,CAAA,CAAA,CAAA;AAAAA,IAAAA,eAAA,kBAEG,CAAA,CAAA,CAAA;IA1BhB,IAAA,CAAKT,IAAO,GAAAA,IAAA,CAAA;IACZ,IAAA,CAAKC,EAAK,GAAAA,EAAA,CAAA;IACV,IAAA,CAAKE,QAAW,GAAAA,QAAA,CAAA;IAChB,IAAA,CAAKC,OAAU,GAAAA,OAAA,CAAA;IACf,IAAA,CAAKE,QAAW,GAAAA,QAAA,CAAA;IAChB,IAAA,CAAKC,QAAW,GAAAA,QAAA,CAAA;AACX,IAAA,IAAA,CAAAG,SAAA,GAAYC,KAAKC,GAAI,EAAA,CAAA;IAC1B,IAAA,CAAKC,OAAU,GAAA,KAAA,CAAA;IACf,IAAA,CAAKC,QAAW,GAAA,KAAA,CAAA;IAChB,IAAA,CAAKC,KAAQ,GAAA,IAAA,CAAA;AACb,IAAA,IAAA,CAAKC,OAAO,EAAC,CAAA;IACNC,MAAA,CAAAC,OAAA,CAAQlB,IAAI,CAAE,CAAAmB,OAAA,CAAQ,UAAAC,KAAA,EAAkB;AAAA,MAAA,IAAAC,KAAA,GAAAC,cAAA,CAAAF,KAAA,EAAA,CAAA,CAAA;AAAhBG,QAAAA,GAAA,GAAAF,KAAA,CAAA,CAAA,CAAA;AAAKG,QAAAA,KAAK,GAAAH,KAAA,CAAA,CAAA,CAAA,CAAA;MACnC,IAAAtB,KAAA,CAAKE,EAAG,CAAAsB,GAAA,CAAA,KAAS,KAAW,CAAA,EAAA;AAC9BxB,QAAAA,KAAA,CAAKE,GAAGsB,GAAO,CAAA,GAAAC,KAAA,CAAA;AACjB,OAAA;AACF,KAAC,CAAA,CAAA;IAEMP,MAAA,CAAAC,OAAA,CAAQjB,EAAE,CAAE,CAAAkB,OAAA,CAAQ,UAAAM,KAAA,EAAkB;AAAA,MAAA,IAAAC,KAAA,GAAAJ,cAAA,CAAAG,KAAA,EAAA,CAAA,CAAA;AAAhBF,QAAAA,GAAA,GAAAG,KAAA,CAAA,CAAA,CAAA;AAAKF,QAAAA,KAAK,GAAAE,KAAA,CAAA,CAAA,CAAA,CAAA;MACjC,IAAA3B,KAAA,CAAKC,IAAK,CAAAuB,GAAA,CAAA,KAAS,KAAW,CAAA,EAAA;AAChCxB,QAAAA,KAAA,CAAKC,KAAKuB,GAAO,CAAA,GAAAC,KAAA,CAAA;AACnB,OAAA;AACF,KAAC,CAAA,CAAA;AACH,GAAA;EAAA,OAAAG,YAAA,CAAA9B,KAAA,EAAA,CAAA;IAAA0B,GAAA,EAAA,QAAA;AAAAC,IAAAA,KAAA,EAMQ,SAAAI,MAASA,GAAA;AAAA,MAAA,IAAAC,MAAA,GAAA,IAAA,CAAA;AACV,MAAA,IAAA,CAAAC,IAAA,GAAOnB,KAAKC,GAAI,EAAA,CAAA;MACrB,IAAI,IAAK,CAAAkB,IAAA,GAAO,IAAK,CAAApB,SAAA,IAAa,IAAK,CAAAI,QAAA,EAAU,OAAA;AAE7C,MAAA,IAAA,IAAA,CAAKiB,OAAW,IAAA,IAAA,CAAK5B,QAAU,EAAA;AAAA,QAAA,IAAA6B,cAAA,CAAA;QACjC,IAAA,CAAKlB,QAAW,GAAA,IAAA,CAAA;AACX,QAAA,CAAAkB,cAAA,GAAA,IAAA,CAAAzB,QAAA,cAAAyB,cAAA,KAAA,KAAA,CAAA,IAAAA,cAAA,CAAAC,IAAA,CAAA,IAAA,EAAW,KAAKjB,IAAI,CAAA,CAAA;AACzB,QAAA,OAAA;AACF,OAAA;AACM,MAAA,IAAAe,OAAA,GAAUrC,KAAKwC,GAAI,CAAA,IAAA,CAAKJ,OAAO,IAAK,CAAApB,SAAA,EAAW,KAAKP,QAAQ,CAAA,CAAA;MAClE,IAAA,CAAK4B,OAAU,GAAAA,OAAA,CAAA;MACf,IAAMI,QAAW,GAAA3C,QAAA,CAASuC,OAAU,GAAA,IAAA,CAAK5B,QAAQ,CAAA,CAAA;AAEjDc,MAAAA,MAAA,CAAOD,KAAK,IAAK,CAAAf,EAAE,CAAE,CAAAkB,OAAA,CAAQ,UAACI,GAAQ,EAAA;AACpC,QAAA,IAAMa,KAAQ,GAAAP,MAAA,CAAK5B,EAAG,CAAAsB,GAAA,CAAA,GAAOM,OAAK7B,IAAK,CAAAuB,GAAA,CAAA,CAAA;AACvCM,QAAAA,MAAA,CAAKb,IAAK,CAAAO,GAAA,CAAA,GAAOM,MAAK,CAAA7B,IAAA,CAAKuB,OAAOa,KAAQ,GAAAD,QAAA,CAAA;AAC5C,OAAC,CAAA,CAAA;AAEG,MAAA,IAAA,CAAC,KAAKtB,OAAS,EAAA;AAAA,QAAA,IAAAwB,aAAA,CAAA;AACZ,QAAA,CAAAA,aAAA,GAAA,IAAA,CAAAjC,OAAA,cAAAiC,aAAA,KAAA,KAAA,CAAA,IAAAA,aAAA,CAAAJ,IAAA,CAAA,IAAA,EAAU,KAAKjB,IAAI,CAAA,CAAA;QACxB,IAAA,CAAKH,OAAU,GAAA,IAAA,CAAA;AACjB,OAAA;AAEK,MAAA,IAAA,CAAAP,QAAA,CAAS,KAAKU,IAAI,CAAA,CAAA;AACzB,KAAA;AAAA,GAAA,EAAA;IAAAO,GAAA,EAAA,eAAA;AAAAC,IAAAA,KAAA,EAEQ,SAAAc,aAAgBA,GAAA;AAAA,MAAA,IAAAC,MAAA,GAAA,IAAA,CAAA;MACtB,IAAMR,OAAU,GAAApB,IAAA,CAAKC,GAAI,EAAA,GAAI,IAAK,CAAAF,SAAA,CAAA;MAClC,IAAM8B,QAAW,GAAAhD,QAAA,CAASuC,OAAU,GAAA,IAAA,CAAK5B,QAAQ,CAAA,CAAA;AAE5C,MAAA,IAAA,CAAAY,KAAA,GAAQ0B,YAAY,YAAM;QAC7BF,MAAA,CAAKX,MAAO,EAAA,CAAA;QACZ,IAAIW,OAAKzB,QAAU,EAAA;AACjB4B,UAAAA,aAAA,CAAcH,OAAKxB,KAAe,CAAA,CAAA;AACpC,SAAA;SACCyB,QAAQ,CAAA,CAAA;AACb,KAAA;AAAA,GAAA,EAAA;IAAAjB,GAAA,EAAA,aAAA;AAAAC,IAAAA,KAAA,EAEQ,SAAAmB,WAAcA,GAAA;AAAA,MAAA,IAAAC,MAAA,GAAA,IAAA,CAAA;AACpB,MAAA,IAAMC,QAAO,SAAPA,OAAa;QACjBD,MAAA,CAAKhB,MAAO,EAAA,CAAA;AACPgB,QAAAA,MAAA,CAAA7B,KAAA,GAAQ+B,sBAAsBD,KAAI,CAAA,CAAA;QAEvC,IAAID,OAAK9B,QAAU,EAAA;AACjBiC,UAAAA,oBAAA,CAAqBH,OAAK7B,KAAK,CAAA,CAAA;UAC/B6B,MAAA,CAAK7B,KAAQ,GAAA,IAAA,CAAA;AACf,SAAA;OACF,CAAA;AACK8B,MAAAA,KAAA,EAAA,CAAA;AACP,KAAA;AAAA,GAAA,EAAA;IAAAtB,GAAA,EAAA,OAAA;AAAAC,IAAAA,KAAA,EAEO,SAAAwB,KAAQA,GAAA;AACR,MAAA,IAAA,CAAAtC,SAAA,GAAYC,KAAKC,GAAI,EAAA,CAAA;AAE1B,MAAA,IAAIqC,cAAiB,GAAA,EAAA,EAAI,IAAA,CAAKX,aAAc,EAAA,CAAA,KACvC,IAAA,CAAKK,WAAY,EAAA,CAAA;AACxB,KAAA;AAAA,GAAA,EAAA;IAAApB,GAAA,EAAA,MAAA;AAAAC,IAAAA,KAAA,EAEO,SAAA0B,IAAOA,GAAA;AAEZ,MAAA,IAAID,cAAiB,GAAA,EAAA,EAAIP,aAAA,CAAc,KAAK3B,KAAe,CAAA,CAAA,KACtDgC,oBAAA,CAAqB,KAAKhC,KAAe,CAAA,CAAA;MAC9C,IAAA,CAAKA,KAAQ,GAAA,IAAA,CAAA;AACf,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,EAAA;;AC3IK,IAAMoC,SAAY,GAAA;AACvBC,EAAAA,KAAO,EAAA,8BAAA;AACPC,EAAAA,IAAM,EAAA,uBAAA;AACNC,EAAAA,GAAK,EAAA,uBAAA;AACLC,EAAAA,MAAQ,EAAA,yBAAA;AACRC,EAAAA,KAAO,EAAA,yBAAA;AACT,CAAA,CAAA;AAEgB,SAAAC,cAAAA,CAAejC,KAAmC,EAAAkC,aAAA,EAAsBC,SAAkB,EAAA;AACxG,EAAA,IAAMC,OAAU,GAAA;AACdC,IAAAA,uBAAuBH,aAAiB,KAAA,IAAA,IAAjBA,aAAiB,KAAjBA,KAAAA,CAAAA,GAAAA,aAAiB,GAAA,CAAA;AACxCI,IAAAA,uBAAuBJ,aAAiB,KAAA,IAAA,IAAjBA,aAAiB,KAAjBA,KAAAA,CAAAA,GAAAA,aAAiB,GAAA,EAAA;IACxCK,WAAA,EAAa,CAAC,CAACJ,SAAAA;GACjB,CAAA;AAEA,EAAA,OAAOnC,MAAMwC,cAAe,CAAA,KAAA,CAAA,EAAWJ,OAAO,CAAE,CAAAK,OAAA,CAAQ,QAAQN,SAAS,CAAA,CAAA;AAC3E;;ACLA,iBAAeO,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,YAAA;AACNC,EAAAA,KAAA,EAAAA,KAAA;AACAC,EAAAA,KAAMD,WAANC,KAAMD,CAAAA,MAAAA,EAAAA,IAAAA,EAAmB;IAAA,IAAAE,qBAAA,EAAAC,iBAAA,CAAA;AAAA,IAAA,IAAVC,MAAA,GAAA1E,IAAA,CAAA0E,MAAA,CAAA;AACP,IAAA,IAAAC,cAAA,GAAiBC,eAAe,WAAW,CAAA,CAAA;AACjD,IAAA,IAAMC,iBAAiBC,WAAY,EAAA,CAAA;IACnC,IAAAC,cAAA,GAAmEC,aAAc,CAAA;AAC/EC,QAAAA,yBAA2B,EAAAC,yBAAA;AAC3BC,QAAAA,2BAA6B,EAAAC,2BAAAA;AAC/B,OAAC,CAAA;MAHOH,2BAAA,GAAAF,cAAA,CAAAE,yBAAA;MAA2BE,6BAA4B,GAAAJ,cAAA,CAA5BI,2BAA4B,CAAA;AAI/D,IAAA,IAAME,UAAa,GAAA;AACjBC,MAAAA,QAAA,EAAAC,WAAA,CAAAN,2BAAA,EAAqC,IAAA,EAAA,IAAA,CAAA;MACrCO,QAAA,EAAAD,WAAA,CAAAJ,6BAAA,EAAA,IAAA,EAAA,IAAA,CAAA;KACF,CAAA;IACM,IAAAM,WAAA,GAAcC,SAAS,YAAA;MAAA,OAAOC,QAAA,CAASrB,OAAM5C,KAAK,CAAA,GAAI4C,MAAM,CAAA5C,KAAA,GAAQ,CAAE,CAAA;KAAA,CAAA,CAAA;IAC5E,IAAMkE,aAAaC,GAAIvB,CAAAA,CAAAA,qBAAAA,IAAAA,iBAAAA,GAAAA,MAAAA,CAAMwB,SAAW,MAAA,IAAA,IAAArB,iBAAA,KAAjBH,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAAA,CAAiByB,SAAA,MAAAvB,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAaF,OAAM5C,KAAK,CAAA,CAAA;IAChE,IAAMsE,kBAAqB,GAAAN,QAAA,CACzB,YAAA;AAAA,MAAA,IAAApE,KAAA,EAAA2E,qBAAA,EAAAC,qBAAA,CAAA;AAAA,MAAA,OAAA,CAAA5E,KAAA,GAAA2E,CAAAA,qBAAA,GAAM3B,MAAM,CAAAV,aAAA,MAAAqC,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,IAAAC,qBAAA,GAAiBT,WAAY,CAAA/D,KAAA,CAAMyE,QAAS,EAAA,CAAEC,KAAM,CAAA,GAAG,CAAE,CAAA,CAAA,CAAA,MAAAF,IAAAA,IAAAA,qBAAA,KAAxCA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAA4CG,MAAU,MAAA,IAAA,IAAA/E,KAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAA,GAAA,CAAA,CAAA;AAAA,KACrF,CAAA,CAAA;AAEA,IAAA,IAAMgF,QAAQT,GAAW,EAAA,CAAA;AACzB,IAAA,IAAAU,OAAA,GAAkBC,MAAA,CAAOlC,MAAK,CAAA;MAAtB5C,KAAA,GAAA6E,OAAA,CAAA7E,KAAA,CAAA;AAEF,IAAA,IAAAwB,KAAA,GAAQ,SAARA,KAAAA,GAA4F;MAAA,IAAAuD,sBAAA,EAAAC,kBAAA,CAAA;AAAA,MAAA,IAAnFxG,IAAeoE,GAAAA,SAAAA,CAAAA,MAAAA,GAAAA,CAAAA,IAAAA,SAAAA,CAAAA,CAAAA,CAAAA,KAAAA,SAAAA,GAAAA,SAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,sBAAAA,GAAAA,CAAAA,kBAAAA,GAAAA,MAAAA,CAAMwB,8CAANxB,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAAA,CAAiByB,SAAa,MAAAU,IAAAA,IAAAA,sBAAA,KAAAA,KAAAA,CAAAA,GAAAA,sBAAA,GAAA,CAAA,CAAA;AAAA,MAAA,IAAGtG,EAAa,GAAAwG,SAAA,CAAAN,MAAA,GAAAM,CAAAA,IAAAA,SAAA,CAAAC,CAAAA,CAAAA,KAAAA,SAAA,GAAAD,SAAA,CAAAlB,CAAAA,CAAAA,GAAAA,WAAA,CAAY/D,KAAU,CAAA;MAChG,IAAIxB,SAASC,EAAI,EAAA;AAAA,QAAA,IAAA0G,YAAA,CAAA;AACTP,QAAAA,KAAA,CAAA5E,KAAA,GAAQ,IAAI3B,KAAM,CAAA;AACtBG,UAAAA,IAAM,EAAA;AACJwB,YAAAA,KAAO,EAAAxB,IAAAA;WACT;AACAC,UAAAA,EAAI,EAAA;AACFuB,YAAAA,KAAO,EAAAvB,EAAAA;WACT;AACAE,UAAAA,QAAA,EAAUiE,OAAMwB,SAAU,CAAAzF,QAAA;AAC1BG,UAAAA,QAAA,EAAU,SAAVA,QAAAA,CAAWU,IAAS,EAAA;AAClB0E,YAAAA,UAAA,CAAWlE,QAAQoF,MAAO,CAAA5F,IAAA,CAAKQ,MAAMqF,OAAQ,CAAAf,kBAAA,CAAmBtE,KAAK,CAAC,CAAA,CAAA;WACxE;AACAjB,UAAAA,UAAU,SAAVA,WAAgB;YACdmF,UAAA,CAAWlE,KAAQ,GAAAvB,EAAA,CAAA;AACrB,WAAA;AACF,SAAC,CAAA,CAAA;AACD,QAAA,CAAA0G,YAAA,GAAAP,KAAA,CAAM5E,8CAANmF,YAAA,CAAa3D,KAAM,EAAA,CAAA;AACrB,OAAA;KACF,CAAA;AAEM,IAAA,IAAA8D,WAAA,GAActB,SAAS,YAAM;AAC7B,MAAA,IAAAuB,UAAA,CAAW3C,MAAM,CAAA4C,MAAM,CAAG,EAAA;AACrB5C,QAAAA,OAAAA,MAAAA,CAAM4C,MAAO,CAAAtB,UAAA,CAAWlE,KAAK,CAAA,CAAA;AACtC,OAAA;AAEA,MAAA,OAAOiC,eAAeiC,UAAW,CAAAlE,KAAA,EAAO4C,MAAM,CAAAV,aAAA,EAAeU,OAAMT,SAAS,CAAA,CAAA;AAC9E,KAAC,CAAA,CAAA;AAEK,IAAA,IAAAsD,YAAA,GAAezB,SAAS,YAAM;AAC5B,MAAA,IAAE0B,QAAU9C,MAAAA,CAAV8C;MACD,OAAA;AACLA,QAAAA,KAAA,EAAO/D,UAAU+D,KAAU,CAAA,IAAAA,KAAAA;OAC7B,CAAA;AACF,KAAC,CAAA,CAAA;AAEDC,IAAAA,KAAA,CACE,YAAA;MAAA,OAAM/C,MAAM,CAAAgD,cAAA,CAAA;KACZ,EAAA,UAAC5F,MAAU,EAAA;MACT,IAAI4C,MAAM,CAAAwB,SAAA,IAAapE,MAAS,IAAA,CAAC4E,MAAM5E,KAAO,EAAA;AACtCwB,QAAAA,KAAA,EAAA,CAAA;AACR,OAAA;AACF,KACF,CAAA,CAAA;AACMmE,IAAAA,KAAA,CAAA3F,KAAA,EAAO,UAACA,MAAU,EAAA;MACtB,IAAI4E,MAAM5E,KAAO,EAAA;AAAA,QAAA,IAAA6F,aAAA,CAAA;AACd,QAAA,CAAAA,aAAA,GAAAjB,KAAA,CAAM5E,+CAAN6F,aAAA,CAAqBnE,IAAK,EAAA,CAAA;QAC3BkD,KAAA,CAAM5E,KAAQ,GAAA,IAAA,CAAA;AAChB,OAAA;MACAkE,UAAA,CAAWlE,KAAQA,GAAAA,MAAAA,CAAAA;AACf4C,MAAAA,IAAAA,MAAAA,CAAMgD,cAAkBhD,IAAAA,MAAAA,CAAMwB,SAAW,EAAA;AACrC5C,QAAAA,KAAA,EAAA,CAAA;AACR,OAAA;AACF,KAAC,CAAA,CAAA;AAEDsE,IAAAA,SAAA,CAAU,YAAA;MAAA,OAAMlD,MAAM,CAAAwB,SAAA,IAAaxB,MAAM,CAAAgD,cAAA,IAAkBpE,OAAO,CAAA;KAAA,CAAA,CAAA;AAE3DwB,IAAAA,MAAA,CAAA;AAAExB,MAAAA,OAAAA,KAAAA;AAAM,KAAC,CAAA,CAAA;AAEhB,IAAA,OAAO,YAAM;AACX,MAAA,IAAMuE,SAAYnD,GAAAA,MAAAA,CAAMoD,KAAQ,GAAArC,UAAA,CAAWf,OAAMoD,KAAS,CAAA,GAAA,IAAA,CAAA;AACpD,MAAA,IAAAC,MAAA,GAAS9C,eAAe,QAAQ,CAAA,KAAM4C,aAAanD,MAAM,CAAAsD,cAAA,KAAmB,UAAUH,SAAY,GAAA,IAAA,CAAA,CAAA;AAClG,MAAA,IAAAI,MAAA,GAAShD,eAAe,QAAQ,CAAA,KAAM4C,aAAanD,MAAM,CAAAsD,cAAA,KAAmB,UAAUH,SAAY,GAAA,IAAA,CAAA,CAAA;AAClG,MAAA,IAAAK,KAAA,GAAQjD,eAAe,OAAO,CAAA,CAAA;AAC9B,MAAA,IAAAkD,IAAA,GAAOlD,eAAe,MAAM,CAAA,CAAA;AAC5B,MAAA,IAAAmD,KAAA,GAAQnD,eAAe,OAAO,CAAA,CAAA;AAGlC,MAAA,OAAAU,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAYZ,cAAe,CAAAjD,KAAAA;OACxBoG,EAAAA,CAAAA,KAAA,IAAAvC,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAA0C,MAAA,CAAwBtD,cAAe,CAAAjD,KAAA,EAAA,QAAA,CAAA;AAAA,OAAA,EAAA,CAAgBoG,OAA7C,EAAAvC,WAAA,CAAA2C,QAAA,EAAA;AAAA,QAAA,WAAA,EAAA,UAAA;AAAA,QAAA,OAAA,EAAA,MAAA;QAAA,SAC0C,EAAA,CAAC,CAAC5D,MAAM,CAAA6D,OAAAA;AAAA,OAAA,EAAA;AAAA,QAAA,SAAA,EAAA,SAAAC,QAAA,GAAA;AAAA,UAAA,OAAA,CAAA7C,WAAA,CAAA,KAAA,EAAA;AAAA,YAAA,OAAA,EAAA,EAAA,CAAA0C,MAAA,CAC5CtD,cAAe,CAAAjD,KAAA,EAAA,UAAA,CAAA;AAAA,YAAA,OAAA,EAAwByF,YAAa,CAAAzF,KAAAA;WAChEiG,EAAAA,CAAAA,MAAA,IAAApC,WAAA,CAAA,MAAA,EAAA;AAAA,YAAA,OAAA,EAAA,EAAA,CAAA0C,MAAA,CAA0BtD,cAAe,CAAAjD,KAAA,EAAA,iBAAA,CAAA;WAAyBiG,EAAAA,CAAAA,OAAvD,CAAA,EAAApC,WAAA,CAAA,MAAA,EAAA;AAAA,YAAA,OAAA,EAAA,EAAA,CAAA0C,MAAA,CACItD,eAAejD,KAAwB,EAAA,gBAAA,CAAA;AAAA,WAAA,EAAA,CAAAsF,WAAA,CAAYtF,MAClEqG,CAAAA,EAAAA,IAAA,IAAAxC,WAAA,CAAA,MAAA,EAAA;AAAA,YAAA,OAAA,EAAA,EAAA,CAAA0C,MAAA,CAAwBtD,cAAe,CAAAjD,KAAA,EAAA,eAAA,CAAA;AAAA,WAAA,EAAA,CAAuBqG,MAArD,EACTF,MAAA,IAAAtC,WAAA,CAAA,MAAA,EAAA;AAAA,YAAA,OAAA,EAAA,EAAA,CAAA0C,MAAA,CAA0BtD,cAAe,CAAAjD,KAAA,EAAA,iBAAA,CAAA;AAAA,WAAA,EAAA,CAAyBmG,OAAvD,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,SAAA;OAGfG,CAAAA,EAAAA,KAAA,IAAAzC,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAA0C,MAAA,CAAwBtD,cAAe,CAAAjD,KAAA,EAAA,QAAA,CAAA;AAAA,OAAA,EAAA,CAAgBsG,MAA7C,CAAA,CAAA,CAAA,CAAA;KAGjB,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}