UNPKG

tdesign-vue-next

Version:
1 lines 27.4 kB
{"version":3,"file":"pagination.mjs","sources":["../../../components/pagination/pagination.tsx"],"sourcesContent":["import { defineComponent, computed, ref, watch, toRefs, nextTick } from 'vue';\nimport { isNaN, isObject } from 'lodash-es';\nimport {\n PageFirstIcon as TdPageFirstIcon,\n PageLastIcon as TdPageLastIcon,\n ChevronLeftIcon as TdChevronLeftIcon,\n ChevronRightIcon as TdChevronRightIcon,\n ChevronLeftDoubleIcon as TdChevronLeftDoubleIcon,\n ChevronRightDoubleIcon as TdChevronRightDoubleIcon,\n EllipsisIcon as TdEllipsisIcon,\n} from 'tdesign-icons-vue-next';\nimport {\n useConfig,\n useVModel,\n useTNodeJSX,\n useGlobalIcon,\n usePrefixClass,\n useDefaultValue,\n} from '@tdesign/shared-hooks';\n\nimport TInputNumber from '../input-number';\nimport { Select } from '../select';\nimport TInputAdornment from '../input-adornment';\nimport props from './props';\nimport { usePaginationClasses, useMoreAction } from './hooks';\n\nimport type { PageInfo, TdPaginationProps } from '../pagination/type';\n\nconst min = 1;\n\ntype PageChangeType = 'prevPage' | 'nextPage' | 'prevMorePage' | 'nextMorePage';\n\nexport default defineComponent({\n name: 'TPagination',\n props,\n\n setup(props: TdPaginationProps) {\n const { modelValue, pageSize, current } = toRefs(props);\n const renderTNodeJSX = useTNodeJSX();\n const [innerCurrent, setInnerCurrent] = useVModel(\n current,\n modelValue,\n props.defaultCurrent,\n props.onCurrentChange,\n 'current',\n );\n\n const [innerPageSize, setInnerPageSize] = useDefaultValue(\n pageSize,\n props.defaultPageSize,\n props.onPageSizeChange,\n 'pageSize',\n );\n\n const { t, globalConfig } = useConfig('pagination');\n const COMPONENT_NAME = usePrefixClass('pagination');\n const {\n PageFirstIcon,\n PageLastIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronLeftDoubleIcon,\n ChevronRightDoubleIcon,\n EllipsisIcon,\n } = useGlobalIcon({\n PageFirstIcon: TdPageFirstIcon,\n PageLastIcon: TdPageLastIcon,\n ChevronLeftIcon: TdChevronLeftIcon,\n ChevronRightIcon: TdChevronRightIcon,\n ChevronLeftDoubleIcon: TdChevronLeftDoubleIcon,\n ChevronRightDoubleIcon: TdChevronRightDoubleIcon,\n EllipsisIcon: TdEllipsisIcon,\n });\n\n const { pageCount, ...CLASS_MAP } = usePaginationClasses(props, innerCurrent, innerPageSize, COMPONENT_NAME);\n\n const { prevMore, isPrevMoreShow, curPageLeftCount, nextMore, isNextMoreShow, curPageRightCount } = useMoreAction(\n props,\n pageCount,\n innerCurrent,\n );\n\n const jumpIndex = ref(innerCurrent.value);\n const lastEnterJumpTarget = ref<number>();\n\n const isFolded = computed(() => pageCount.value > props.maxPageBtn);\n\n const sizeOptions = computed<Array<{ label: string; value: number }>>(() => {\n const pageSizeOptions = props.pageSizeOptions as TdPaginationProps['pageSizeOptions'];\n const options = pageSizeOptions.map((option) =>\n isObject(option)\n ? option\n : {\n label: t(globalConfig.value.itemsPerPage, { size: option }),\n value: Number(option),\n },\n );\n return options.sort((a, b) => a.value - b.value);\n });\n\n const isMidEllipsis = computed(() => {\n return props.pageEllipsisMode === 'mid';\n });\n\n const pages = computed(() => {\n const array = [];\n let start;\n let end;\n\n if (isFolded.value) {\n if (isPrevMoreShow.value && isNextMoreShow.value) {\n start = innerCurrent.value - curPageLeftCount.value;\n end = innerCurrent.value + curPageRightCount.value;\n } else {\n const foldedStart = isMidEllipsis.value ? 2 : 1;\n const foldedEnd = isMidEllipsis.value ? pageCount.value - 1 : pageCount.value;\n if (isPrevMoreShow.value) {\n // 保证前面还有一页展示\n start = Math.min(innerCurrent.value - 1, pageCount.value - props.foldedMaxPageBtn + 1);\n } else {\n start = foldedStart;\n }\n\n if (isNextMoreShow.value) {\n // 保证后面还有一页展示\n end = Math.max(innerCurrent.value + 1, props.foldedMaxPageBtn);\n } else {\n end = foldedEnd;\n }\n }\n } else {\n start = 1;\n end = pageCount.value;\n }\n\n for (let i = start; i <= end; i++) {\n array.push(i);\n }\n return array;\n });\n\n watch(\n () => innerCurrent.value,\n (val) => (jumpIndex.value = val),\n );\n\n const toPage: (pageIndex: number, pageInfo?: PageInfo) => void = (pageIndex, pageInfo) => {\n if (props.disabled) {\n return;\n }\n\n let toPageCurrent = pageIndex;\n if (pageIndex < min) {\n toPageCurrent = min;\n } else if (pageIndex > pageCount.value) {\n toPageCurrent = pageCount.value;\n }\n\n pageInfo = pageInfo || {\n current: toPageCurrent,\n previous: innerCurrent.value,\n pageSize: innerPageSize.value,\n };\n\n setInnerCurrent(toPageCurrent, pageInfo);\n props.onChange?.(pageInfo);\n };\n\n const handlePageChange = (type: PageChangeType) => {\n const pageChangeMap = {\n prevPage: () => toPage(innerCurrent.value - 1),\n nextPage: () => toPage(innerCurrent.value + 1),\n prevMorePage: () => toPage(Math.max(2, innerCurrent.value - props.foldedMaxPageBtn)),\n nextMorePage: () => toPage(Math.min(innerCurrent.value + props.foldedMaxPageBtn, pageCount.value - 1)),\n };\n pageChangeMap[type]();\n };\n\n const onSelectorChange = (val: string | number) => {\n if (props.disabled) return;\n\n const pageSize = Number(val);\n const newPageCount = pageSize > 0 ? Math.max(Math.ceil(props.total / pageSize), 1) : 1;\n const previousCurrent = innerCurrent.value;\n const indexExceeds = previousCurrent > newPageCount;\n\n // 触发 onPageSizeChange 回调\n setInnerPageSize(pageSize, {\n current: indexExceeds ? newPageCount : previousCurrent,\n previous: previousCurrent,\n pageSize,\n });\n\n // 场景:用户在 onPageSizeChange 中修改 current,需要重新计算 current\n nextTick(() => {\n const userChanged = innerCurrent.value !== previousCurrent;\n const targetCurrent = userChanged ? innerCurrent.value : indexExceeds ? newPageCount : innerCurrent.value;\n\n const pageInfo = {\n current: targetCurrent,\n previous: previousCurrent,\n pageSize,\n };\n\n // 如果用户改了 current 或者不需要跳页,直接触发 onChange\n // 否则需要调用 toPage 来更新内部状态\n if (userChanged || !indexExceeds) {\n props.onChange?.(pageInfo);\n } else {\n toPage(targetCurrent, pageInfo);\n }\n });\n };\n\n const getJumperTarget = (val: string | number) => {\n const currentIndex = Math.trunc(+val);\n if (isNaN(currentIndex)) return undefined;\n return Math.min(Math.max(currentIndex, min), pageCount.value);\n };\n\n const onJumperChange = (val: string | number) => {\n const currentIndex = getJumperTarget(val);\n if (currentIndex === undefined) return;\n jumpIndex.value = currentIndex;\n toPage(currentIndex);\n };\n\n const onJumperEnter = (val: string | number) => {\n lastEnterJumpTarget.value = getJumperTarget(val);\n onJumperChange(val);\n };\n\n const onJumperBlur = (val: string | number) => {\n const currentIndex = getJumperTarget(val);\n if (currentIndex === lastEnterJumpTarget.value) {\n lastEnterJumpTarget.value = undefined;\n return;\n }\n lastEnterJumpTarget.value = undefined;\n onJumperChange(val);\n };\n\n return () => {\n const { total, pageSizeOptions, size, disabled, showPageSize } = props;\n if (pageCount.value < 1) return null;\n\n const Jumper = (\n <div class={CLASS_MAP.jumperClass.value}>\n {t(globalConfig.value.jumpTo)}\n <TInputAdornment append={`/ ${pageCount.value} ${t(globalConfig.value.page)}`}>\n <TInputNumber\n class={CLASS_MAP.jumperInputClass.value}\n v-model={jumpIndex.value}\n onBlur={onJumperBlur}\n onEnter={onJumperEnter}\n max={pageCount.value}\n min={min}\n size={size}\n disabled={disabled}\n theme=\"normal\"\n placeholder=\"\"\n />\n </TInputAdornment>\n </div>\n );\n\n return (\n <div class={CLASS_MAP.paginationClass.value}>\n {/* 数据统计区 */}\n {renderTNodeJSX(\n 'totalContent',\n <div class={CLASS_MAP.totalClass.value}>{t(globalConfig.value.total, total)}</div>,\n )}\n {/* 分页器 */}\n {showPageSize && pageSizeOptions.length > 0 && (\n <Select\n size={size}\n value={innerPageSize}\n disabled={disabled}\n class={CLASS_MAP.sizerClass.value}\n autoWidth={true}\n onChange={onSelectorChange}\n options={sizeOptions.value}\n {...props.selectProps}\n />\n )}\n {/* 首页按钮 */}\n {props.showFirstAndLastPageBtn ? (\n <div class={CLASS_MAP.preBtnClass.value} onClick={() => toPage(1)}>\n <PageFirstIcon />\n </div>\n ) : null}\n {/* 向前按钮 */}\n {props.showPreviousAndNextBtn ? (\n <div class={CLASS_MAP.preBtnClass.value} onClick={() => handlePageChange('prevPage')}>\n <ChevronLeftIcon />\n </div>\n ) : null}\n {/* 常规版 */}\n {props.showPageNumber && props.theme === 'default' ? (\n <ul class={CLASS_MAP.btnWrapClass.value}>\n {isFolded.value && isMidEllipsis.value && (\n <li class={CLASS_MAP.getButtonClass(1)} onClick={() => toPage(min)}>\n {min}\n </li>\n )}\n {isFolded.value && isPrevMoreShow.value && isMidEllipsis.value ? (\n <li\n class={CLASS_MAP.btnMoreClass.value}\n onClick={() => handlePageChange('prevMorePage')}\n onMouseover={() => (prevMore.value = true)}\n onMouseout={() => (prevMore.value = false)}\n >\n {prevMore.value ? <ChevronLeftDoubleIcon /> : <EllipsisIcon />}\n </li>\n ) : null}\n {pages.value.map((i) => (\n <li class={CLASS_MAP.getButtonClass(i)} key={i} onClick={() => toPage(i)}>\n {i}\n </li>\n ))}\n {isFolded.value && isNextMoreShow.value && isMidEllipsis.value ? (\n <li\n class={CLASS_MAP.btnMoreClass.value}\n onClick={() => handlePageChange('nextMorePage')}\n onMouseover={() => (nextMore.value = true)}\n onMouseout={() => (nextMore.value = false)}\n >\n {nextMore.value ? <ChevronRightDoubleIcon /> : <EllipsisIcon />}\n </li>\n ) : null}\n {isFolded.value && isMidEllipsis.value ? (\n <li class={CLASS_MAP.getButtonClass(pageCount.value)} onClick={() => toPage(pageCount.value)}>\n {pageCount.value}\n </li>\n ) : null}\n </ul>\n ) : null}\n {/* 极简版 */}\n {props.theme === 'simple' && Jumper}\n {/* 向后按钮 */}\n {props.showPreviousAndNextBtn ? (\n <div class={CLASS_MAP.nextBtnClass.value} onClick={() => handlePageChange('nextPage')}>\n <ChevronRightIcon />\n </div>\n ) : null}\n {/* 尾页按钮 */}\n {props.showFirstAndLastPageBtn ? (\n <div class={CLASS_MAP.nextBtnClass.value} onClick={() => toPage(pageCount.value)}>\n <PageLastIcon />\n </div>\n ) : null}\n {/* 快速跳转 */}\n {props.theme === 'default' && props.showJumper && Jumper}\n </div>\n );\n };\n },\n});\n"],"names":["min","defineComponent","name","props","setup","_toRefs","toRefs","modelValue","pageSize","current","renderTNodeJSX","useTNodeJSX","_useVModel","useVModel","defaultCurrent","onCurrentChange","_useVModel2","_slicedToArray","innerCurrent","setInnerCurrent","_useDefaultValue","useDefaultValue","defaultPageSize","onPageSizeChange","_useDefaultValue2","innerPageSize","setInnerPageSize","_useConfig","useConfig","t","globalConfig","COMPONENT_NAME","usePrefixClass","_useGlobalIcon","useGlobalIcon","PageFirstIcon","TdPageFirstIcon","PageLastIcon","TdPageLastIcon","ChevronLeftIcon","TdChevronLeftIcon","ChevronRightIcon","TdChevronRightIcon","ChevronLeftDoubleIcon","TdChevronLeftDoubleIcon","ChevronRightDoubleIcon","TdChevronRightDoubleIcon","EllipsisIcon","TdEllipsisIcon","_usePaginationClasses","usePaginationClasses","pageCount","CLASS_MAP","_objectWithoutProperties","_excluded","_useMoreAction","useMoreAction","prevMore","isPrevMoreShow","curPageLeftCount","nextMore","isNextMoreShow","curPageRightCount","jumpIndex","ref","value","lastEnterJumpTarget","isFolded","computed","maxPageBtn","sizeOptions","pageSizeOptions","options","map","option","isObject","label","itemsPerPage","size","Number","sort","a","b","isMidEllipsis","pageEllipsisMode","pages","array","start","end","foldedStart","foldedEnd","Math","foldedMaxPageBtn","max","i","push","watch","val","toPage","pageIndex","pageInfo","_props2$onChange","disabled","toPageCurrent","previous","onChange","handlePageChange","type","pageChangeMap","prevPage","nextPage","prevMorePage","nextMorePage","onSelectorChange","newPageCount","ceil","total","previousCurrent","indexExceeds","nextTick","userChanged","targetCurrent","_props2$onChange2","getJumperTarget","currentIndex","trunc","isNaN","onJumperChange","onJumperEnter","onJumperBlur","showPageSize","Jumper","_createVNode","jumperClass","jumpTo","TInputAdornment","concat","page","jumperInputClass","onUpdateModelValue","$event","paginationClass","totalClass","length","Select","_mergeProps","sizerClass","selectProps","showFirstAndLastPageBtn","preBtnClass","onClick","showPreviousAndNextBtn","showPageNumber","theme","btnWrapClass","getButtonClass","btnMoreClass","onMouseover","onMouseout","nextBtnClass","showJumper"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,IAAMA,GAAM,GAAA,CAAA,CAAA;AAIZ,kBAAeC,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,aAAA;AACNC,EAAAA,KAAA,EAAAA,KAAA;AAEAC,EAAAA,OAAAA,SAAAA,MAAMD,MAA0B,EAAA;AAC9B,IAAA,IAAAE,OAAA,GAA0CC,OAAOH,MAAK,CAAA;MAA9CI,UAAY,GAAAF,OAAA,CAAZE,UAAY;MAAAC,QAAA,GAAAH,OAAA,CAAAG,QAAA;MAAUC,OAAQ,GAAAJ,OAAA,CAARI,OAAQ,CAAA;AACtC,IAAA,IAAMC,iBAAiBC,WAAY,EAAA,CAAA;AAC7B,IAAA,IAAAC,UAAA,GAAkCC,SAAA,CACtCJ,OAAA,EACAF,UAAA,EACAJ,MAAM,CAAAW,cAAA,EACNX,MAAM,CAAAY,eAAA,EACN,SACF,CAAA;MAAAC,WAAA,GAAAC,cAAA,CAAAL,UAAA,EAAA,CAAA,CAAA;AANOM,MAAAA,YAAc,GAAAF,WAAA,CAAA,CAAA,CAAA;AAAAG,MAAAA,eAAe,GAAAH,WAAA,CAAA,CAAA,CAAA,CAAA;AAQ9B,IAAA,IAAAI,gBAAA,GAAoCC,eAAA,CACxCb,QAAA,EACAL,MAAM,CAAAmB,eAAA,EACNnB,MAAM,CAAAoB,gBAAA,EACN,UACF,CAAA;MAAAC,iBAAA,GAAAP,cAAA,CAAAG,gBAAA,EAAA,CAAA,CAAA;AALOK,MAAAA,aAAe,GAAAD,iBAAA,CAAA,CAAA,CAAA;AAAAE,MAAAA,gBAAgB,GAAAF,iBAAA,CAAA,CAAA,CAAA,CAAA;AAOtC,IAAA,IAAAG,UAAA,GAA4BC,UAAU,YAAY,CAAA;MAA1CC,CAAA,GAAAF,UAAA,CAAAE,CAAA;MAAGC,YAAa,GAAAH,UAAA,CAAbG,YAAa,CAAA;AAClB,IAAA,IAAAC,cAAA,GAAiBC,eAAe,YAAY,CAAA,CAAA;IAC5C,IAAAC,cAAA,GAQFC,aAAc,CAAA;AAChBC,QAAAA,aAAe,EAAAC,aAAA;AACfC,QAAAA,YAAc,EAAAC,YAAA;AACdC,QAAAA,eAAiB,EAAAC,eAAA;AACjBC,QAAAA,gBAAkB,EAAAC,gBAAA;AAClBC,QAAAA,qBAAuB,EAAAC,qBAAA;AACvBC,QAAAA,sBAAwB,EAAAC,sBAAA;AACxBC,QAAAA,YAAc,EAAAC,YAAAA;AAChB,OAAC,CAAA;MAfCb,eAAA,GAAAF,cAAA,CAAAE,aAAA;MACAE,cAAA,GAAAJ,cAAA,CAAAI,YAAA;MACAE,iBAAA,GAAAN,cAAA,CAAAM,eAAA;MACAE,kBAAA,GAAAR,cAAA,CAAAQ,gBAAA;MACAE,uBAAA,GAAAV,cAAA,CAAAU,qBAAA;MACAE,wBAAA,GAAAZ,cAAA,CAAAY,sBAAA;MACAE,cAAA,GAAAd,cAAA,CAAAc,YAAA,CAAA;IAWI,IAAAE,qBAAA,GAA8BC,qBAAqB/C,MAAO,EAAAe,YAAA,EAAcO,eAAeM,cAAc,CAAA;MAAnGoB,kCAAAA;AAAcC,MAAAA,SAAU,GAAAC,wBAAA,CAAAJ,qBAAA,EAAAK,SAAA,CAAA,CAAA;IAEhC,IAAAC,cAAA,GAAoGC,aAAA,CAClGrD,MAAAA,EACAgD,SAAA,EACAjC,YACF,CAAA;MAJQuC,QAAU,GAAAF,cAAA,CAAVE,QAAU;MAAAC,cAAA,GAAAH,cAAA,CAAAG,cAAA;MAAgBC,kCAAAA;MAAkBC,QAAU,GAAAL,cAAA,CAAVK,QAAU;MAAAC,cAAA,GAAAN,cAAA,CAAAM,cAAA;MAAgBC,mCAAAA;AAMxE,IAAA,IAAAC,SAAA,GAAYC,GAAI,CAAA9C,YAAA,CAAa+C,KAAK,CAAA,CAAA;AACxC,IAAA,IAAMC,sBAAsBF,GAAY,EAAA,CAAA;IAExC,IAAMG,WAAWC,QAAS,CAAA,YAAA;AAAA,MAAA,OAAMjB,SAAU,CAAAc,KAAA,GAAQ9D,OAAMkE,UAAU,CAAA;KAAA,CAAA,CAAA;AAE5D,IAAA,IAAAC,WAAA,GAAcF,SAAkD,YAAM;AAC1E,MAAA,IAAMG,kBAAkBpE,MAAM,CAAAoE,eAAA,CAAA;AAC9B,MAAA,IAAMC,UAAUD,eAAgB,CAAAE,GAAA,CAAI,UAACC,MAAA,EAAA;AAAA,QAAA,OACnCC,QAAS,CAAAD,MAAM,IACXA,MACA,GAAA;UACEE,KAAA,EAAO/C,EAAEC,YAAa,CAAAmC,KAAA,CAAMY,cAAc;AAAEC,YAAAA,IAAA,EAAMJ,MAAAA;AAAO,WAAC,CAAA;UAC1DT,KAAA,EAAOc,OAAOL,MAAM,CAAA;SACtB,CAAA;AAAA,OACN,CAAA,CAAA;AACO,MAAA,OAAAF,OAAA,CAAQQ,KAAK,UAACC,CAAA,EAAGC;eAAMD,CAAE,CAAAhB,KAAA,GAAQiB,EAAEjB,KAAK,CAAA;OAAA,CAAA,CAAA;AACjD,KAAC,CAAA,CAAA;AAEK,IAAA,IAAAkB,aAAA,GAAgBf,SAAS,YAAM;AACnC,MAAA,OAAOjE,OAAMiF,gBAAqB,KAAA,KAAA,CAAA;AACpC,KAAC,CAAA,CAAA;AAEK,IAAA,IAAAC,KAAA,GAAQjB,SAAS,YAAM;MAC3B,IAAMkB,QAAQ,EAAC,CAAA;AACX,MAAA,IAAAC,KAAA,CAAA;AACA,MAAA,IAAAC,GAAA,CAAA;MAEJ,IAAIrB,SAASF,KAAO,EAAA;AACd,QAAA,IAAAP,cAAA,CAAeO,KAAS,IAAAJ,cAAA,CAAeI,KAAO,EAAA;AACxCsB,UAAAA,KAAA,GAAArE,YAAA,CAAa+C,QAAQN,gBAAiB,CAAAM,KAAA,CAAA;AACxCuB,UAAAA,GAAA,GAAAtE,YAAA,CAAa+C,QAAQH,iBAAkB,CAAAG,KAAA,CAAA;AAC/C,SAAO,MAAA;UACC,IAAAwB,WAAA,GAAcN,aAAc,CAAAlB,KAAA,GAAQ,CAAI,GAAA,CAAA,CAAA;AAC9C,UAAA,IAAMyB,YAAYP,aAAc,CAAAlB,KAAA,GAAQd,SAAU,CAAAc,KAAA,GAAQ,IAAId,SAAU,CAAAc,KAAA,CAAA;UACxE,IAAIP,eAAeO,KAAO,EAAA;YAEhBsB,KAAA,GAAAI,IAAA,CAAK3F,IAAIkB,YAAa,CAAA+C,KAAA,GAAQ,GAAGd,SAAU,CAAAc,KAAA,GAAQ9D,MAAM,CAAAyF,gBAAA,GAAmB,CAAC,CAAA,CAAA;AACvF,WAAO,MAAA;AACGL,YAAAA,KAAA,GAAAE,WAAA,CAAA;AACV,WAAA;UAEA,IAAI5B,eAAeI,KAAO,EAAA;AAExBuB,YAAAA,GAAA,GAAMG,KAAKE,GAAI,CAAA3E,YAAA,CAAa+C,KAAQ,GAAA,CAAA,EAAG9D,OAAMyF,gBAAgB,CAAA,CAAA;AAC/D,WAAO,MAAA;AACCJ,YAAAA,GAAA,GAAAE,SAAA,CAAA;AACR,WAAA;AACF,SAAA;AACF,OAAO,MAAA;AACGH,QAAAA,KAAA,GAAA,CAAA,CAAA;QACRC,GAAA,GAAMrC,SAAU,CAAAc,KAAA,CAAA;AAClB,OAAA;MAEA,KAAA,IAAS6B,CAAI,GAAAP,KAAA,EAAOO,CAAK,IAAAN,GAAA,EAAKM,CAAK,EAAA,EAAA;AACjCR,QAAAA,KAAA,CAAMS,KAAKD,CAAC,CAAA,CAAA;AACd,OAAA;AACO,MAAA,OAAAR,KAAA,CAAA;AACT,KAAC,CAAA,CAAA;AAEDU,IAAAA,KAAA,CACE,YAAA;MAAA,OAAM9E,YAAa,CAAA+C,KAAA,CAAA;AAAA,KAAA,EACnB,UAACgC,GAAS,EAAA;AAAA,MAAA,OAAAlC,SAAA,CAAUE,KAAQ,GAAAgC,GAAA,CAAA;AAAA,KAC9B,CAAA,CAAA;IAEM,IAAAC,MAAA,GAA2D,SAA3DA,MAAAA,CAA4DC,SAAA,EAAWC,QAAa,EAAA;AAAA,MAAA,IAAAC,gBAAA,CAAA;MACxF,IAAIlG,OAAMmG,QAAU,EAAA;AAClB,QAAA,OAAA;AACF,OAAA;MAEA,IAAIC,aAAgB,GAAAJ,SAAA,CAAA;MACpB,IAAIA,YAAYnG,GAAK,EAAA;AACHuG,QAAAA,aAAA,GAAAvG,GAAA,CAAA;AAClB,OAAA,MAAA,IAAWmG,SAAY,GAAAhD,SAAA,CAAUc,KAAO,EAAA;QACtCsC,aAAA,GAAgBpD,SAAU,CAAAc,KAAA,CAAA;AAC5B,OAAA;MAEAmC,QAAA,GAAWA,QAAY,IAAA;AACrB3F,QAAAA,OAAS,EAAA8F,aAAA;QACTC,UAAUtF,YAAa,CAAA+C,KAAA;QACvBzD,UAAUiB,aAAc,CAAAwC,KAAAA;OAC1B,CAAA;AAEA9C,MAAAA,eAAA,CAAgBoF,eAAeH,QAAQ,CAAA,CAAA;AACvCjG,MAAAA,CAAAA,gBAAAA,GAAAA,MAAAA,CAAMsG,2CAANtG,KAAAA,CAAAA,IAAAA,gBAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAiBiG,QAAQ,CAAA,CAAA;KAC3B,CAAA;AAEM,IAAA,IAAAM,gBAAA,GAAmB,SAAnBA,gBAAAA,CAAoBC,IAAyB,EAAA;AACjD,MAAA,IAAMC,aAAgB,GAAA;QACpBC,QAAU,EAAA,SAAVA,QAAUA,GAAA;AAAA,UAAA,OAAMX,MAAO,CAAAhF,YAAA,CAAa+C,QAAQ,CAAC,CAAA,CAAA;AAAA,SAAA;QAC7C6C,QAAU,EAAA,SAAVA,QAAUA,GAAA;AAAA,UAAA,OAAMZ,MAAO,CAAAhF,YAAA,CAAa+C,QAAQ,CAAC,CAAA,CAAA;AAAA,SAAA;QAC7C8C,YAAA,EAAc,SAAdA,YAAAA,GAAA;AAAA,UAAA,OAAoBb,MAAA,CAAOP,IAAK,CAAAE,GAAA,CAAI,GAAG3E,YAAa,CAAA+C,KAAA,GAAQ9D,MAAM,CAAAyF,gBAAgB,CAAC,CAAA,CAAA;AAAA,SAAA;QACnFoB,YAAc,EAAA,SAAdA,YAAcA,GAAA;UAAA,OAAMd,MAAO,CAAAP,IAAA,CAAK3F,GAAI,CAAAkB,YAAA,CAAa+C,KAAQ9D,GAAAA,MAAAA,CAAMyF,gBAAkB,EAAAzC,SAAA,CAAUc,KAAQ,GAAA,CAAC,CAAC,CAAA,CAAA;AAAA,SAAA;OACvG,CAAA;AACA2C,MAAAA,aAAA,CAAcD,IAAM,CAAA,EAAA,CAAA;KACtB,CAAA;AAEM,IAAA,IAAAM,gBAAA,GAAmB,SAAnBA,gBAAAA,CAAoBhB,GAAyB,EAAA;MACjD,IAAI9F,MAAM,CAAAmG,QAAA,EAAU,OAAA;AAEd9F,MAAAA,IAAAA,SAAAA,GAAWuE,OAAOkB,GAAG,CAAA,CAAA;MAC3B,IAAMiB,YAAe1G,GAAAA,SAAAA,GAAW,CAAI,GAAAmF,IAAA,CAAKE,GAAI,CAAAF,IAAA,CAAKwB,IAAKhH,CAAAA,MAAAA,CAAMiH,KAAQ5G,GAAAA,SAAQ,CAAG,EAAA,CAAC,CAAI,GAAA,CAAA,CAAA;AACrF,MAAA,IAAM6G,kBAAkBnG,YAAa,CAAA+C,KAAA,CAAA;AACrC,MAAA,IAAMqD,eAAeD,eAAkB,GAAAH,YAAA,CAAA;MAGvCxF,gBAAA,CAAiBlB,SAAU,EAAA;AACzBC,QAAAA,OAAA,EAAS6G,eAAeJ,YAAe,GAAAG,eAAA;AACvCb,QAAAA,QAAU,EAAAa,eAAA;AACV7G,QAAAA,QAAAA,EAAAA,SAAAA;AACF,OAAC,CAAA,CAAA;AAGD+G,MAAAA,QAAA,CAAS,YAAM;AACP,QAAA,IAAAC,WAAA,GAActG,aAAa+C,KAAU,KAAAoD,eAAA,CAAA;AAC3C,QAAA,IAAMI,gBAAgBD,WAAc,GAAAtG,YAAA,CAAa+C,KAAQ,GAAAqD,YAAA,GAAeJ,eAAehG,YAAa,CAAA+C,KAAA,CAAA;AAEpG,QAAA,IAAMmC,QAAW,GAAA;AACf3F,UAAAA,OAAS,EAAAgH,aAAA;AACTjB,UAAAA,QAAU,EAAAa,eAAA;AACV7G,UAAAA,QAAAA,EAAAA,SAAAA;SACF,CAAA;AAII,QAAA,IAAAgH,WAAA,IAAe,CAACF,YAAc,EAAA;AAAA,UAAA,IAAAI,iBAAA,CAAA;AAChCvH,UAAAA,CAAAA,iBAAAA,GAAAA,MAAAA,CAAMsG,4CAANtG,KAAAA,CAAAA,IAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAiBiG,QAAQ,CAAA,CAAA;AAC3B,SAAO,MAAA;AACLF,UAAAA,MAAA,CAAOuB,eAAerB,QAAQ,CAAA,CAAA;AAChC,SAAA;AACF,OAAC,CAAA,CAAA;KACH,CAAA;AAEM,IAAA,IAAAuB,eAAA,GAAkB,SAAlBA,eAAAA,CAAmB1B,GAAyB,EAAA;MAChD,IAAM2B,YAAe,GAAAjC,IAAA,CAAKkC,KAAM,CAAA,CAAC5B,GAAG,CAAA,CAAA;AACpC,MAAA,IAAI6B,MAAMF,YAAY,CAAA,EAAU,OAAA,KAAA,CAAA,CAAA;AACzB,MAAA,OAAAjC,IAAA,CAAK3F,IAAI2F,IAAK,CAAAE,GAAA,CAAI+B,cAAc5H,GAAG,CAAA,EAAGmD,UAAUc,KAAK,CAAA,CAAA;KAC9D,CAAA;AAEM,IAAA,IAAA8D,cAAA,GAAiB,SAAjBA,cAAAA,CAAkB9B,GAAyB,EAAA;AACzC,MAAA,IAAA2B,YAAA,GAAeD,gBAAgB1B,GAAG,CAAA,CAAA;AACxC,MAAA,IAAI2B,YAAiB,KAAA,KAAA,CAAA,EAAW,OAAA;MAChC7D,SAAA,CAAUE,KAAQ,GAAA2D,YAAA,CAAA;MAClB1B,MAAA,CAAO0B,YAAY,CAAA,CAAA;KACrB,CAAA;AAEM,IAAA,IAAAI,aAAA,GAAgB,SAAhBA,aAAAA,CAAiB/B,GAAyB,EAAA;AAC1B/B,MAAAA,mBAAA,CAAAD,KAAA,GAAQ0D,gBAAgB1B,GAAG,CAAA,CAAA;MAC/C8B,cAAA,CAAe9B,GAAG,CAAA,CAAA;KACpB,CAAA;AAEM,IAAA,IAAAgC,YAAA,GAAe,SAAfA,YAAAA,CAAgBhC,GAAyB,EAAA;AACvC,MAAA,IAAA2B,YAAA,GAAeD,gBAAgB1B,GAAG,CAAA,CAAA;AACpC,MAAA,IAAA2B,YAAA,KAAiB1D,oBAAoBD,KAAO,EAAA;AAC9CC,QAAAA,mBAAA,CAAoBD,KAAQ,GAAA,KAAA,CAAA,CAAA;AAC5B,QAAA,OAAA;AACF,OAAA;AACAC,MAAAA,mBAAA,CAAoBD,KAAQ,GAAA,KAAA,CAAA,CAAA;MAC5B8D,cAAA,CAAe9B,GAAG,CAAA,CAAA;KACpB,CAAA;AAEA,IAAA,OAAO,YAAM;AACX,MAAA,IAAQmB,KAAO,GAAkDjH,MAAAA,CAAzDiH,KAAO;QAAA7C,eAAA,GAAkDpE,MAAAA,CAAlDoE,eAAA;QAAiBO,IAAM,GAA2B3E,MAAAA,CAAjC2E,IAAM;QAAAwB,QAAA,GAA2BnG,MAAAA,CAA3BmG,QAAA;QAAU4B,eAAiB/H,MAAAA,CAAjB+H;AAChD,MAAA,IAAI/E,UAAUc,KAAQ,GAAA,CAAA,EAAU,OAAA,IAAA,CAAA;MAEhC,IAAMkE,MACJ,GAAAC,WAAA,CAAA,KAAA,EAAA;QAAA,OAAYhF,EAAAA,UAAUiF,WAAY,CAAApE,KAAAA;OAC/BpC,EAAAA,CAAAA,CAAA,CAAEC,YAAa,CAAAmC,KAAA,CAAMqE,MAAM,CAAA,EAAAF,WAAA,CAAAG,cAAA,EAAA;AAAA,QAAA,QAAA,EAAA,IAAA,CAAAC,MAAA,CACErF,SAAA,CAAUc,mBAASpC,CAAE,CAAAC,YAAA,CAAamC,KAAM,CAAAwE,IAAI;;;;qBAE/DrF,SAAU,CAAAsF,gBAAA,CAAiBzE;wBACzBF,EAAAA,SAAA,CAAUE,KACnB;AAAA,YAAA,qBAAA,EAAA,SAAA0E,mBAAAC,MAAA,EAAA;AAAA,cAAA,OADS7E,SAAA,CAAUE,KACnB,GAAA2E,MAAA,CAAA;AAAA,aAAA;AAAA,YAAA,QAAA,EAAQX;uBACCD,aAAA;YAAA,KACJ7E,EAAAA,SAAA,CAAUc;mBACVjE,GAAA;AAAA,YAAA,MAAA,EACC8E,IAAA;AAAA,YAAA,UAAA,EACIwB,QACV;AAAA,YAAA,OAAA,EAAA,QAAA;AAAA,YAAA,aAAA,EAAA,EAAA;AAAA,WAAA,EAAA,IAAA,CAAA,CAAA,CAAA;AAAA,SAAA;OAZL,CAAA,CAAA,CAAA,CAAA;AAmBH,MAAA,OAAA8B,WAAA,CAAA,KAAA,EAAA;QAAA,OACchF,EAAAA,SAAA,CAAUyF,eAAgB,CAAA5E,KAAAA;AAAA,OAAA,EAAA,CAEnCvD,cAAA,CACC,cAAA,EAAA0H,WAAA,CAAA,KAAA,EAAA;QAAA,OACYhF,EAAAA,SAAA,CAAU0F,UAAW,CAAA7E,KAAAA;OAAQpC,EAAAA,CAAAA,CAAE,CAAAC,YAAA,CAAamC,KAAM,CAAAmD,KAAA,EAAOA,KAAK,CAAA,CAC5E,CAAA,CAAA,EAECc,YAAA,IAAgB3D,eAAgB,CAAAwE,MAAA,GAAS,CACxC,IAAAX,WAAA,CAAAY,MAAA,EAAAC,UAAA,CAAA;AAAA,QAAA,MAAA,EACQnE,IAAA;AAAA,QAAA,OAAA,EACCrD,aAAA;AAAA,QAAA,UAAA,EACG6E,QAAA;AAAA,QAAA,OAAA,EACHlD,SAAU,CAAA8F,UAAA,CAAWjF,KAC5B;AAAA,QAAA,WAAA,EAAW,IACX;AAAA,QAAA,UAAA,EAAUgD;mBACD3C,WAAA,CAAYL,KAAAA;OACjB9D,EAAAA,MAAAA,CAAMgJ,WACZ,CAAA,EAAA,IAAA,CAAA,EAGDhJ,OAAMiJ,uBACL,GAAAhB,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAYhF,UAAUiG,WAAY,CAAApF,KAAA;AAAA,QAAA,SAAA,EAAgB,SAAAqF,OAAA,GAAA;UAAA,OAAMpD,OAAO,CAAC,CAAA,CAAA;AAAA,SAAA;OAAAkC,EAAAA,CAAAA,WAAA,CAAAjG,eAAA,EAG9D,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,GAAA,IAAA,EAEHhC,OAAMoJ,sBACL,GAAAnB,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAYhF,UAAUiG,WAAY,CAAApF,KAAA;AAAA,QAAA,SAAA,EAAgB,SAAAqF,OAAA,GAAA;UAAA,OAAM5C,iBAAiB,UAAU,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA,CAAA0B,WAAA,CAAA7F,iBAAA,EAGjF,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,GAAA,IAAA,EAEHpC,MAAAA,CAAMqJ,kBAAkBrJ,MAAM,CAAAsJ,KAAA,KAAU;eAC5BrG,EAAAA,SAAA,CAAUsG,YAAa,CAAAzF,KAAAA;OAC/BE,EAAAA,CAAAA,SAASF,KAAS,IAAAkB,aAAA,CAAclB,KAC/B,IAAAmE,WAAA,CAAA,IAAA,EAAA;AAAA,QAAA,OAAA,EAAWhF,SAAA,CAAUuG,cAAe,CAAA,CAAC;mBAAY,SAAAL,OAAA,GAAA;UAAA,OAAMpD,OAAOlG,GAAG,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA,CAC9DA,KADF,EAIFmE,SAASF,KAAS,IAAAP,cAAA,CAAeO,KAAS,IAAAkB,aAAA,CAAclB;iBAE9Cb,SAAA,CAAUwG,aAAa3F,KAC9B;AAAA,QAAA,SAAA,EAAS,SAAAqF,OAAA,GAAA;UAAA,OAAM5C,gBAAA,CAAiB,cAAc,CAC9C,CAAA;AAAA,SAAA;AAAA,QAAA,aAAA,EAAa,SAAAmD,WAAA,GAAA;AAAA,UAAA,OAAOpG,QAAA,CAASQ,QAAQ,IACrC,CAAA;AAAA,SAAA;AAAA,QAAA,YAAA,EAAY,SAAA6F,UAAA,GAAA;AAAA,UAAA,OAAOrG,QAAA,CAASQ,QAAQ,KAEnC,CAAA;AAAA,SAAA;OAAAR,EAAAA,CAAAA,QAAA,CAASQ,KAAQ,GAAAmE,WAAA,CAAAzF,uBAAA,EAAAyF,IAAAA,EAAAA,IAAAA,CAAAA,GAAAA,WAAA,CAAArF,cAAA,aAA0C,CAE5D,CAAA,GAAA,IAAA,EACHsC,KAAA,CAAMpB,MAAMQ,GAAI,CAAA,UAACqB;;mBACL1C,SAAU,CAAAuG,cAAA,CAAe7D,CAAC,CAAG;AAAA,UAAA,KAAA,EAAKA;qBAAY,SAAAwD,OAAA,GAAA;YAAA,OAAMpD,OAAOJ,CAAC,CAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAA,CACpEA,CACH,CAAA,CAAA,CAAA;AAAA,OACD,CAAA,EACA3B,SAASF,KAAS,IAAAJ,cAAA,CAAeI,KAAS,IAAAkB,aAAA,CAAclB;iBAE9Cb,SAAA,CAAUwG,aAAa3F,KAC9B;AAAA,QAAA,SAAA,EAAS,SAAAqF,OAAA,GAAA;UAAA,OAAM5C,gBAAA,CAAiB,cAAc,CAC9C,CAAA;AAAA,SAAA;AAAA,QAAA,aAAA,EAAa,SAAAmD,WAAA,GAAA;AAAA,UAAA,OAAOjG,QAAA,CAASK,QAAQ,IACrC,CAAA;AAAA,SAAA;AAAA,QAAA,YAAA,EAAY,SAAA6F,UAAA,GAAA;AAAA,UAAA,OAAOlG,QAAA,CAASK,QAAQ,KAEnC,CAAA;AAAA,SAAA;OAAAL,EAAAA,CAAAA,QAAA,CAASK,KAAQ,GAAAmE,WAAA,CAAAvF,wBAAA,EAAAuF,IAAAA,EAAAA,IAAAA,CAAAA,GAAAA,WAAA,CAAArF,cAAA,aAA2C,CAE7D,CAAA,GAAA,IAAA,EACHoB,QAAA,CAASF,SAASkB,aAAc,CAAAlB,KAAA,GAAAmE,WAAA,CAAA,IAAA,EAAA;AAAA,QAAA,OAAA,EACpBhF,UAAUuG,cAAe,CAAAxG,SAAA,CAAUc,KAAK,CAAG;AAAA,QAAA,SAAA,EAAS,SAAAqF,OAAA,GAAA;AAAA,UAAA,OAAMpD,MAAO,CAAA/C,SAAA,CAAUc,KAAK,CACxF,CAAA;AAAA,SAAA;OAAAd,EAAAA,CAAAA,SAAA,CAAUc,KACb,CAAA,CAAA,GACE,IAAA,CAEJ,CAAA,GAAA,IAAA,EAEH9D,MAAAA,CAAMsJ,UAAU,QAAY,IAAAtB,MAAA,EAE5BhI,OAAMoJ,sBACL,GAAAnB,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAYhF,UAAU2G,YAAa,CAAA9F,KAAA;AAAA,QAAA,SAAA,EAAgB,SAAAqF,OAAA,GAAA;UAAA,OAAM5C,iBAAiB,UAAU,CAAA,CAAA;AAAA,SAAA;OAAA0B,EAAAA,CAAAA,WAAA,CAAA3F,kBAAA,EAGlF,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,GAAA,IAAA,EAEHtC,OAAMiJ,uBACL,GAAAhB,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAYhF,SAAA,CAAU2G,aAAa9F,KAAO;AAAA,QAAA,SAAA,EAAS,SAAAqF,OAAA,GAAA;AAAA,UAAA,OAAMpD,MAAA,CAAO/C,UAAUc,KAAK,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA,CAAAmE,WAAA,CAAA/F,cAAA,EAG7E,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,GAAA,IAAA,EAEHlC,MAAM,CAAAsJ,KAAA,KAAU,SAAatJ,IAAAA,MAAAA,CAAM6J,UAAc,IAAA7B,MAAA,CAAA,CAAA,CAAA;KAGxD,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}