UNPKG

tdesign-vue-next

Version:
1 lines 21.8 kB
{"version":3,"file":"tbody.mjs","sources":["../../../../components/table/components/tbody.tsx"],"sourcesContent":["import { defineComponent, computed, PropType, toRefs } from 'vue';\nimport { camelCase, get, pick } from 'lodash-es';\nimport TrElement, { ROW_LISTENERS, TABLE_PROPS } from './tr';\n\nimport { useConfig, useTNodeJSX } from '@tdesign/shared-hooks';\n\nimport useClassName from '../hooks/useClassName';\nimport baseTableProps from '../base-table-props';\nimport { TNodeReturnValue } from '../../common';\nimport useRowspanAndColspan, { getCellKey, SkipSpansValue } from '../hooks/useRowspanAndColspan';\nimport { BaseTableProps, RowAndColFixedPosition } from '../types';\nimport { TdBaseTableProps } from '../type';\nimport type { VirtualScrollConfig } from '@tdesign/shared-hooks';\nimport type { CamelCase } from '@tdesign/common-js/utils/types';\n\nexport const ROW_AND_TD_LISTENERS = [...ROW_LISTENERS, 'cell-click'];\nexport interface TableBodyProps extends BaseTableProps {\n classPrefix: string;\n ellipsisOverlayClassName: string;\n // 固定列 left/right 具体值\n rowAndColFixedPosition: RowAndColFixedPosition;\n showColumnShadow: { left: boolean; right: boolean };\n tableElm: any;\n tableWidth: number;\n isWidthOverflow: boolean;\n virtualConfig: VirtualScrollConfig;\n // HTMLDivElement\n tableContentElm: any;\n cellEmptyContent: TdBaseTableProps['cellEmptyContent'];\n handleRowMounted: (rowData: any) => void;\n}\n\n// table 到 body 的相同属性\nexport const extendTableProps = [\n 'bordered',\n 'rowKey',\n 'rowClassName',\n 'rowAttributes',\n 'loading',\n 'empty',\n 'fixedRows',\n 'firstFullRow',\n 'lastFullRow',\n 'rowspanAndColspan',\n 'scroll',\n 'cellEmptyContent',\n 'pagination',\n 'attach',\n 'onCellClick',\n 'onPageChange',\n 'onRowClick',\n 'onRowDblclick',\n 'onRowMouseover',\n 'onRowMousedown',\n 'onRowMouseenter',\n 'onRowMouseleave',\n 'onRowMouseup',\n 'onScroll',\n 'onScrollX',\n 'onScrollY',\n];\n\nexport default defineComponent({\n name: 'TBody',\n props: {\n classPrefix: String,\n data: Array as PropType<TableBodyProps['data']>,\n columns: Array as PropType<TableBodyProps['columns']>,\n ellipsisOverlayClassName: String,\n rowAndColFixedPosition: Map as PropType<TableBodyProps['rowAndColFixedPosition']>,\n showColumnShadow: Object as PropType<TableBodyProps['showColumnShadow']>,\n // eslint-disable-next-line\n tableElm: {},\n tableWidth: Number,\n isWidthOverflow: Boolean,\n virtualConfig: Object as PropType<VirtualScrollConfig>,\n // eslint-disable-next-line\n tableContentElm: {},\n handleRowMounted: Function as PropType<TableBodyProps['handleRowMounted']>,\n renderExpandedRow: Function as PropType<TableBodyProps['renderExpandedRow']>,\n firstFullRow: [String, Function] as PropType<TableBodyProps['firstFullRow']>,\n lastFullRow: [String, Function] as PropType<TableBodyProps['lastFullRow']>,\n activeRow: [Array] as PropType<Array<string | number>>,\n hoverRow: [String, Number],\n ...pick(baseTableProps, extendTableProps),\n },\n setup(props, { slots }) {\n const renderTNode = useTNodeJSX();\n const { data, columns, rowKey, rowspanAndColspan } = toRefs(props);\n const { t, globalConfig } = useConfig('table', props.locale);\n const { tableFullRowClasses, tableBaseClass } = useClassName();\n const { skipSpansMap } = useRowspanAndColspan(data, columns, rowKey, rowspanAndColspan);\n\n const tbodyClasses = computed(() => [tableBaseClass.body]);\n\n return () => {\n const renderEmpty = (columns: TableBodyProps['columns']) => {\n const tableWidth = props.bordered ? props.tableWidth - 2 : props.tableWidth;\n return (\n <tr class={[tableBaseClass.emptyRow, { [tableFullRowClasses.base]: props.isWidthOverflow }]}>\n <td colspan={columns.length}>\n <div\n class={[tableBaseClass.empty, { [tableFullRowClasses.innerFullRow]: props.isWidthOverflow }]}\n style={props.isWidthOverflow ? { width: `${tableWidth}px` } : {}}\n >\n {renderTNode('empty') || t(globalConfig.value.empty)}\n </div>\n </td>\n </tr>\n );\n };\n\n const getFullRow = (columnLength: number, type: 'first-full-row' | 'last-full-row') => {\n const tType = camelCase(type) as CamelCase<typeof type, '-'>;\n const fullRowNode = renderTNode(tType);\n if (['', null, undefined, false].includes(fullRowNode)) return null;\n const isFixedToLeft = props.isWidthOverflow && columns.value.find((col) => col.fixed === 'left');\n const classes = [tableFullRowClasses.base, tableFullRowClasses[tType]];\n const tableWidth = props.bordered ? props.tableWidth - 2 : props.tableWidth;\n /** innerFullRow 和 innerFullElement 同时存在,是为了保证 固定列时,当前行不随内容进行横向滚动 */\n return (\n <tr class={classes} key={`key-full-row-${type}`}>\n <td colspan={columnLength}>\n <div\n class={{ [tableFullRowClasses.innerFullRow]: isFixedToLeft }}\n style={isFixedToLeft ? { width: `${tableWidth}px` } : {}}\n >\n <div class={tableFullRowClasses.innerFullElement}>{fullRowNode}</div>\n </div>\n </td>\n </tr>\n );\n };\n\n const columnLength = columns.value.length;\n const dataLength = data.value?.length;\n const trNodeList: TNodeReturnValue[] = [];\n\n const properties = [\n 'classPrefix',\n 'ellipsisOverlayClassName',\n 'rowAndColFixedPosition',\n 'scroll',\n 'tableElm',\n 'tableContentElm',\n 'pagination',\n 'attach',\n ];\n\n const renderData = props.virtualConfig.isVirtualScroll.value ? props.virtualConfig.visibleData.value : data.value;\n\n const getFirstRowReviveInfo = () => {\n if (!props.virtualConfig.isVirtualScroll.value || !renderData?.length || !skipSpansMap.value.size) {\n return null;\n }\n // 定位虚拟滚动窗口真正的起始行(全局索引出现跳变处),以兼容存在冻结行(fixedRows)的场景\n let windowStartRenderIndex = 0;\n for (let k = 1; k < renderData.length; k++) {\n if ((renderData[k].VIRTUAL_SCROLL_INDEX ?? k) !== (renderData[k - 1].VIRTUAL_SCROLL_INDEX ?? k - 1) + 1) {\n windowStartRenderIndex = k;\n break;\n }\n }\n const firstRow = renderData[windowStartRenderIndex];\n const firstIndex = firstRow.VIRTUAL_SCROLL_INDEX ?? 0;\n let reviveCells: Map<number, { row: TableBodyProps['data'][number]; rowspan: number; colspan: number }> = null;\n columns.value.forEach((col, colIndex) => {\n const cellKey = getCellKey(firstRow, rowKey.value, col.colKey, colIndex, firstIndex);\n const state: SkipSpansValue = skipSpansMap.value.get(cellKey);\n // 仅处理:被合并跳过 && 合并块起始列即当前列(避免 colspan 场景重复复活) && 合并块起始行在窗口之前\n if (!state?.skipped || state.startColIndex !== colIndex || !(state.startRowIndex < firstIndex)) {\n return;\n }\n const startRow = data.value[state.startRowIndex];\n if (!startRow) return;\n const startKey = getCellKey(startRow, rowKey.value, col.colKey, colIndex, state.startRowIndex);\n const startState = skipSpansMap.value.get(startKey) || {};\n const remainRowspan = (startState.rowspan || 1) - (firstIndex - state.startRowIndex);\n if (!reviveCells) reviveCells = new Map();\n reviveCells.set(colIndex, {\n row: startRow,\n rowspan: remainRowspan,\n colspan: startState.colspan,\n });\n });\n return reviveCells ? { renderIndex: windowStartRenderIndex, reviveCells } : null;\n };\n const firstRowReviveInfo = getFirstRowReviveInfo();\n\n renderData?.forEach((row, rowIndex) => {\n const rowKey = props.rowKey || 'id';\n const rowValue = get(row, rowKey);\n const trProps = {\n ...pick(props, TABLE_PROPS),\n rowKey,\n row,\n columns: columns.value,\n rowIndex: row.VIRTUAL_SCROLL_INDEX || rowIndex,\n dataLength,\n skipSpansMap: skipSpansMap.value,\n reviveCells: firstRowReviveInfo?.renderIndex === rowIndex ? firstRowReviveInfo.reviveCells : null,\n virtualConfig: props.virtualConfig,\n active: props.activeRow?.includes(rowValue),\n isHover: props.hoverRow === rowValue,\n ...pick(props, properties),\n // 遍历的同时,计算后面的节点,是否会因为合并单元格跳过渲染\n };\n if (props.onCellClick) {\n trProps.onCellClick = props.onCellClick;\n }\n\n const trNode = (\n <TrElement\n v-slots={slots}\n key={get(row, rowKey || 'id') || rowIndex}\n {...trProps}\n onRowMounted={props.handleRowMounted}\n />\n );\n trNodeList.push(trNode);\n\n // 执行展开行渲染\n if (props.renderExpandedRow) {\n const p = {\n row,\n index: rowIndex,\n columns: columns.value,\n tableWidth: props.tableWidth,\n isWidthOverflow: props.isWidthOverflow,\n };\n const expandedContent = props.renderExpandedRow(p);\n expandedContent && trNodeList.push(expandedContent);\n }\n });\n\n const list = [\n getFullRow(columnLength, 'first-full-row'),\n ...trNodeList,\n getFullRow(columnLength, 'last-full-row'),\n ];\n\n const isEmpty = !data.value?.length && !props.loading && !props.firstFullRow && !props.lastFullRow;\n\n // 垫上隐藏的 tr 元素高度\n const translate = `translateY(${props.virtualConfig?.translateY.value}px)`;\n const posStyle = props.virtualConfig?.isVirtualScroll.value\n ? {\n transform: translate,\n '-ms-transform': translate,\n '-moz-transform': translate,\n '-webkit-transform': translate,\n }\n : undefined;\n\n return (\n <tbody class={tbodyClasses.value} style={{ ...posStyle }}>\n {isEmpty ? renderEmpty(columns.value) : list}\n </tbody>\n );\n };\n },\n});\n"],"names":["ROW_AND_TD_LISTENERS","concat","_toConsumableArray","ROW_LISTENERS","extendTableProps","defineComponent","name","props","_objectSpread","classPrefix","String","data","Array","columns","ellipsisOverlayClassName","rowAndColFixedPosition","Map","showColumnShadow","Object","tableElm","tableWidth","Number","isWidthOverflow","Boolean","virtualConfig","tableContentElm","handleRowMounted","Function","renderExpandedRow","firstFullRow","lastFullRow","activeRow","hoverRow","pick","baseTableProps","setup","_ref","slots","renderTNode","useTNodeJSX","_toRefs","toRefs","rowKey","rowspanAndColspan","_useConfig","useConfig","locale","t","globalConfig","_useClassName","useClassName","tableFullRowClasses","tableBaseClass","_useRowspanAndColspan","useRowspanAndColspan","skipSpansMap","tbodyClasses","computed","body","_data$value","_data$value2","_props$virtualConfig","_props$virtualConfig2","renderEmpty","bordered","_createVNode","emptyRow","base","length","empty","_defineProperty","innerFullRow","width","value","getFullRow","columnLength","type","tType","camelCase","fullRowNode","includes","isFixedToLeft","find","col","fixed","classes","innerFullElement","dataLength","trNodeList","properties","renderData","isVirtualScroll","visibleData","getFirstRowReviveInfo","_firstRow$VIRTUAL_SCR","size","windowStartRenderIndex","k","_renderData$k$VIRTUAL","_renderData$VIRTUAL_S","VIRTUAL_SCROLL_INDEX","firstRow","firstIndex","reviveCells","forEach","colIndex","cellKey","getCellKey","colKey","state","get","skipped","startColIndex","startRowIndex","startRow","startKey","startState","remainRowspan","rowspan","set","row","colspan","renderIndex","firstRowReviveInfo","rowIndex","_props$activeRow","rowValue","trProps","TABLE_PROPS","active","isHover","onCellClick","trNode","TrElement","_mergeProps","push","p","index","expandedContent","list","isEmpty","loading","translate","translateY","posStyle","transform"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeO,IAAMA,oBAAuB,GAAA,EAAA,CAAAC,MAAA,CAAAC,kBAAA,CAAIC,aAAA,CAAe,EAAA,CAAA,YAAY,CAAA,EAAA;AAkB5D,IAAMC,gBAAmB,GAAA,CAC9B,UAAA,EACA,QAAA,EACA,cAAA,EACA,eAAA,EACA,SAAA,EACA,OAAA,EACA,WAAA,EACA,cAAA,EACA,aAAA,EACA,mBAAA,EACA,QAAA,EACA,kBAAA,EACA,YAAA,EACA,QAAA,EACA,aAAA,EACA,cAAA,EACA,YAAA,EACA,eAAA,EACA,gBAAA,EACA,gBAAA,EACA,iBAAA,EACA,iBAAA,EACA,cAAA,EACA,UAAA,EACA,WAAA,EACA,WAAA,EACF;AAEA,YAAeC,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,OAAA;AACNC,EAAAA,KAAO,EAAAC,aAAA,CAAA;AACLC,IAAAA,WAAa,EAAAC,MAAA;AACbC,IAAAA,IAAM,EAAAC,KAAA;AACNC,IAAAA,OAAS,EAAAD,KAAA;AACTE,IAAAA,wBAA0B,EAAAJ,MAAA;AAC1BK,IAAAA,sBAAwB,EAAAC,GAAA;AACxBC,IAAAA,gBAAkB,EAAAC,MAAA;IAElBC,UAAU,EAAC;AACXC,IAAAA,UAAY,EAAAC,MAAA;AACZC,IAAAA,eAAiB,EAAAC,OAAA;AACjBC,IAAAA,aAAe,EAAAN,MAAA;IAEfO,iBAAiB,EAAC;AAClBC,IAAAA,gBAAkB,EAAAC,QAAA;AAClBC,IAAAA,iBAAmB,EAAAD,QAAA;AACnBE,IAAAA,YAAA,EAAc,CAACnB,MAAA,EAAQiB,QAAQ,CAAA;AAC/BG,IAAAA,WAAA,EAAa,CAACpB,MAAA,EAAQiB,QAAQ,CAAA;IAC9BI,SAAA,EAAW,CAACnB,KAAK,CAAA;AACjBoB,IAAAA,QAAA,EAAU,CAACtB,MAAA,EAAQW,MAAM,CAAA;AAAA,GAAA,EACtBY,IAAK,CAAAC,cAAA,EAAgB9B,gBAAgB,CAAA,CAC1C;AACA+B,EAAAA,KAAM,WAANA,KAAMA,CAAA5B,KAAA,EAAA6B,IAAA,EAAkB;AAAA,IAAA,IAATC,KAAA,GAAAD,IAAA,CAAAC,KAAA,CAAA;AACb,IAAA,IAAMC,cAAcC,WAAY,EAAA,CAAA;AAChC,IAAA,IAAAC,OAAA,GAAqDC,OAAOlC,KAAK,CAAA;MAAzDI,IAAM,GAAA6B,OAAA,CAAN7B,IAAM;MAAAE,OAAA,GAAA2B,OAAA,CAAA3B,OAAA;MAAS6B,iBAAAA;MAAQC,iBAAkB,GAAAH,OAAA,CAAlBG,iBAAkB,CAAA;IACjD,IAAAC,UAAA,GAA4BC,SAAU,CAAA,OAAA,EAAStC,MAAMuC,MAAM,CAAA;MAAnDC,CAAG,GAAAH,UAAA,CAAHG,CAAG;MAAAC,YAAA,GAAAJ,UAAA,CAAAI,YAAA,CAAA;AACX,IAAA,IAAAC,aAAA,GAAgDC,YAAa,EAAA;MAArDC,mBAAA,GAAAF,aAAA,CAAAE,mBAAA;MAAqBC,cAAe,GAAAH,aAAA,CAAfG,cAAe,CAAA;IAC5C,IAAAC,qBAAA,GAAyBC,qBAAqB3C,IAAM,EAAAE,OAAA,EAAS6B,QAAQC,iBAAiB,CAAA;MAA9EY,YAAa,GAAAF,qBAAA,CAAbE,YAAa,CAAA;IAErB,IAAMC,eAAeC,QAAS,CAAA,YAAA;AAAA,MAAA,OAAM,CAACL,cAAA,CAAeM,IAAI,CAAC,CAAA;KAAA,CAAA,CAAA;AAEzD,IAAA,OAAO,YAAM;AAAA,MAAA,IAAAC,WAAA,EAAAC,YAAA,EAAAC,oBAAA,EAAAC,qBAAA,CAAA;AACL,MAAA,IAAAC,WAAA,GAAc,SAAdA,WAAAA,CAAelD,QAAuC,EAAA;AAC1D,QAAA,IAAMO,aAAab,KAAM,CAAAyD,QAAA,GAAWzD,KAAM,CAAAa,UAAA,GAAa,IAAIb,KAAM,CAAAa,UAAA,CAAA;AAE/D,QAAA,OAAA6C,WAAA,CAAA,IAAA,EAAA;AAAA,UAAA,OAAA,EAAW,CAACb,cAAA,CAAec,0BAAaf,EAAAA,EAAAA,mBAAoB,CAAAgB,IAAA,EAAO5D,KAAM,CAAAe,eAAA,CAAA,CAAA;AACvE,SAAA,EAAA,CAAA2C,WAAA,CAAA,IAAA,EAAA;AAAA,UAAA,SAAA,EAAapD,QAAQ,CAAAuD,MAAAA;AAAA,SAAA,EAAA,CAAAH,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAEV,CAACb,cAAe,CAAAiB,KAAA,EAAAC,eAAA,CAAA,EAAA,EAAUnB,oBAAoBoB,YAAe,EAAAhE,KAAA,CAAMe,eAAgB,CAC1F,CAAA;UAAA,OAAOf,EAAAA,KAAM,CAAAe,eAAA,GAAkB;YAAEkD,KAAA,EAAA,EAAA,CAAAvE,MAAA,CAAUmB,UAAA,EAAA,IAAA,CAAA;AAAe,WAAI,GAAA,EAAC;YAE9DkB,WAAY,CAAA,OAAO,CAAK,IAAAS,CAAA,CAAEC,YAAa,CAAAyB,KAAA,CAAMJ,KAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;OAK7D,CAAA;MAEM,IAAAK,UAAA,GAAa,SAAbA,UAAAA,CAAcC,aAAAA,EAAsBC,IAA6C,EAAA;AAC/E,QAAA,IAAAC,KAAA,GAAQC,UAAUF,IAAI,CAAA,CAAA;AACtB,QAAA,IAAAG,WAAA,GAAczC,YAAYuC,KAAK,CAAA,CAAA;AACrC,QAAA,IAAI,CAAC,EAAI,EAAA,IAAA,EAAM,QAAW,KAAK,CAAA,CAAEG,SAASD,WAAW,CAAA,EAAU,OAAA,IAAA,CAAA;AACzD,QAAA,IAAAE,aAAA,GAAgB1E,KAAM,CAAAe,eAAA,IAAmBT,OAAQ,CAAA4D,KAAA,CAAMS,KAAK,UAACC,GAAA,EAAA;AAAA,UAAA,OAAQA,GAAI,CAAAC,KAAA,KAAU,MAAM,CAAA;SAAA,CAAA,CAAA;QAC/F,IAAMC,OAAU,GAAA,CAAClC,mBAAoB,CAAAgB,IAAA,EAAMhB,oBAAoB0B,KAAM,CAAA,CAAA,CAAA;AACrE,QAAA,IAAMzD,aAAab,KAAM,CAAAyD,QAAA,GAAWzD,KAAM,CAAAa,UAAA,GAAa,IAAIb,KAAM,CAAAa,UAAA,CAAA;AAEjE,QAAA,OAAA6C,WAAA,CAAA,IAAA,EAAA;AAAA,UAAA,OAAA,EACaoB;wCAA8BT;;mBAC1BD,EAAAA,aAAAA;AAAAA,SAAAA,EAAAA,CAAAA,WAAAA,CAAAA,KAAAA,EAAAA;AAAAA,UAAAA,OAAAA,EAAAA,eAAAA,CAECxB,EAAAA,EAAAA,mBAAA,CAAoBoB,cAAeU,aAAc,CAAA;AAAA,UAAA,OAAA,EACpDA,aAAA,GAAgB;YAAET,KAAO,EAAA,EAAA,CAAAvE,MAAA,CAAGmB;AAAe,WAAI,GAAA,EAAC;;mBAE3C+B,mBAAoB,CAAAmC,gBAAAA;AAAA,SAAA,EAAA,CAAmBP;OAK7D,CAAA;AAEM,MAAA,IAAAJ,YAAA,GAAe9D,QAAQ4D,KAAM,CAAAL,MAAA,CAAA;AAC7B,MAAA,IAAAmB,UAAA,GAAA,CAAA5B,WAAA,GAAahD,KAAK8D,KAAO,MAAA,IAAA,IAAAd,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZA,WAAA,CAAYS,MAAA,CAAA;MAC/B,IAAMoB,aAAiC,EAAC,CAAA;AAExC,MAAA,IAAMC,UAAa,GAAA,CACjB,aAAA,EACA,0BAAA,EACA,wBAAA,EACA,QAAA,EACA,UAAA,EACA,iBAAA,EACA,YAAA,EACA,QAAA,CACF,CAAA;MAEM,IAAAC,UAAA,GAAanF,MAAMiB,aAAc,CAAAmE,eAAA,CAAgBlB,QAAQlE,KAAM,CAAAiB,aAAA,CAAcoE,WAAY,CAAAnB,KAAA,GAAQ9D,IAAK,CAAA8D,KAAA,CAAA;AAE5G,MAAA,IAAMoB,wBAAwB,SAAxBA,wBAA8B;AAAA,QAAA,IAAAC,qBAAA,CAAA;QAC9B,IAAA,CAACvF,KAAM,CAAAiB,aAAA,CAAcmE,eAAgB,CAAAlB,KAAA,IAAS,EAACiB,UAAA,KAAA,IAAA,IAAAA,UAAA,KAAAA,KAAAA,CAAAA,IAAAA,UAAA,CAAYtB,MAAU,CAAA,IAAA,CAACb,YAAa,CAAAkB,KAAA,CAAMsB,IAAM,EAAA;AAC1F,UAAA,OAAA,IAAA,CAAA;AACT,SAAA;QAEA,IAAIC,sBAAyB,GAAA,CAAA,CAAA;AAC7B,QAAA,KAAA,IAASC,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAAP,UAAA,CAAWtB,QAAQ6B,CAAK,EAAA,EAAA;UAAA,IAAAC,qBAAA,EAAAC,qBAAA,CAAA;AACrC,UAAA,IAAA,EAAAD,qBAAA,GAAAR,UAAA,CAAWO,CAAG,CAAA,CAAAG,oBAAA,MAAA,IAAA,IAAAF,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAwBD,CAAQ,MAAA,CAAAE,CAAAA,qBAAA,GAAAT,UAAA,CAAWO,IAAI,CAAG,CAAA,CAAAG,oBAAA,MAAA,IAAA,IAAAD,qBAAA,KAAA,KAAA,CAAA,GAAAA,qBAAA,GAAwBF,CAAI,GAAA,CAAA,IAAK,CAAG,EAAA;AAC9ED,YAAAA,sBAAA,GAAAC,CAAA,CAAA;AACzB,YAAA,MAAA;AACF,WAAA;AACF,SAAA;AACA,QAAA,IAAMI,WAAWX,UAAW,CAAAM,sBAAA,CAAA,CAAA;AACtB,QAAA,IAAAM,UAAA,GAAA,CAAAR,qBAAA,GAAaO,SAASD,oBAAwB,MAAA,IAAA,IAAAN,qBAAA,KAAA,KAAA,CAAA,GAAAA,qBAAA,GAAA,CAAA,CAAA;QACpD,IAAIS,WAAsG,GAAA,IAAA,CAAA;QAC1G1F,OAAA,CAAQ4D,KAAM,CAAA+B,OAAA,CAAQ,UAACrB,GAAA,EAAKsB,QAAa,EAAA;AACjC,UAAA,IAAAC,OAAA,GAAUC,WAAWN,QAAU,EAAA3D,MAAA,CAAO+B,OAAOU,GAAI,CAAAyB,MAAA,EAAQH,UAAUH,UAAU,CAAA,CAAA;UACnF,IAAMO,KAAwB,GAAAtD,YAAA,CAAakB,KAAM,CAAAqC,GAAA,CAAIJ,OAAO,CAAA,CAAA;UAExD,IAAA,EAACG,UAAAA,IAAAA,IAAAA,oBAAAA,MAAOE,OAAW,CAAA,IAAAF,KAAA,CAAMG,kBAAkBP,QAAY,IAAA,EAAEI,KAAM,CAAAI,aAAA,GAAgBX,UAAa,CAAA,EAAA;AAC9F,YAAA,OAAA;AACF,WAAA;UACM,IAAAY,QAAA,GAAWvG,IAAK,CAAA8D,KAAA,CAAMoC,KAAM,CAAAI,aAAA,CAAA,CAAA;UAClC,IAAI,CAACC,QAAA,EAAU,OAAA;AACT,UAAA,IAAAC,QAAA,GAAWR,WAAWO,QAAU,EAAAxE,MAAA,CAAO+B,OAAOU,GAAI,CAAAyB,MAAA,EAAQH,QAAU,EAAAI,KAAA,CAAMI,aAAa,CAAA,CAAA;AAC7F,UAAA,IAAMG,aAAa7D,YAAa,CAAAkB,KAAA,CAAMqC,GAAI,CAAAK,QAAQ,KAAK,EAAC,CAAA;AACxD,UAAA,IAAME,aAAiB,GAAA,CAAAD,UAAA,CAAWE,OAAW,IAAA,CAAA,KAAMhB,aAAaO,KAAM,CAAAI,aAAA,CAAA,CAAA;UACtE,IAAI,CAACV,WAAA,EAAaA,WAAA,sBAAkBvF,GAAI,EAAA,CAAA;AACxCuF,UAAAA,WAAA,CAAYgB,IAAId,QAAU,EAAA;AACxBe,YAAAA,GAAK,EAAAN,QAAA;AACLI,YAAAA,OAAS,EAAAD,aAAA;YACTI,SAASL,UAAW,CAAAK,OAAAA;AACtB,WAAC,CAAA,CAAA;AACH,SAAC,CAAA,CAAA;AACD,QAAA,OAAOlB,WAAc,GAAA;AAAEmB,UAAAA,WAAa,EAAA1B,sBAAA;AAAwBO,UAAAA,aAAAA,WAAAA;AAAY,SAAI,GAAA,IAAA,CAAA;OAC9E,CAAA;AACA,MAAA,IAAMoB,qBAAqB9B,qBAAsB,EAAA,CAAA;MAErCH,UAAA,KAAA,IAAA,IAAAA,UAAA,KAAA,KAAA,CAAA,IAAAA,UAAA,CAAAc,OAAA,CAAQ,UAACgB,GAAA,EAAKI,QAAa,EAAA;AAAA,QAAA,IAAAC,gBAAA,CAAA;AAC/BnF,QAAAA,IAAAA,OAAAA,GAASnC,MAAMmC,MAAU,IAAA,IAAA,CAAA;AACzB,QAAA,IAAAoF,QAAA,GAAWhB,GAAI,CAAAU,GAAA,EAAK9E,OAAM,CAAA,CAAA;QAChC,IAAMqF,OAAU,GAAAvH,aAAA,CAAAA,aAAA,CACXyB,EAAAA,EAAAA,IAAK,CAAA1B,KAAA,EAAOyH,WAAW,CAAA,CAAA,EAAA,EAAA,EAAA;AAC1BtF,UAAAA,MAAAA,EAAAA,OAAAA;AACA8E,UAAAA,GAAA,EAAAA,GAAA;UACA3G,SAASA,OAAQ,CAAA4D,KAAA;AACjBmD,UAAAA,QAAA,EAAUJ,IAAIpB,oBAAwB,IAAAwB,QAAA;AACtCrC,UAAAA,UAAA,EAAAA,UAAA;UACAhC,cAAcA,YAAa,CAAAkB,KAAA;AAC3B8B,UAAAA,WAAa,EAAA,CAAAoB,kBAAA,KAAAA,IAAAA,IAAAA,kBAAA,uBAAAA,kBAAA,CAAoBD,WAAgB,MAAAE,QAAA,GAAWD,mBAAmBpB,WAAc,GAAA,IAAA;UAC7F/E,eAAejB,KAAM,CAAAiB,aAAA;AACrByG,UAAAA,MAAQ,EAAAJ,CAAAA,gBAAA,GAAAtH,KAAA,CAAMwB,SAAW,MAAA,IAAA,IAAA8F,gBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjBA,gBAAA,CAAiB7C,QAAA,CAAS8C,QAAQ,CAAA;AAC1CI,UAAAA,OAAA,EAAS3H,MAAMyB,QAAa,KAAA8F,QAAAA;AAAA,SAAA,EACzB7F,IAAK,CAAA1B,KAAA,EAAOkF,UAAU,CAAA,CAE3B,CAAA;QACA,IAAIlF,MAAM4H,WAAa,EAAA;AACrBJ,UAAAA,OAAA,CAAQI,cAAc5H,KAAM,CAAA4H,WAAA,CAAA;AAC9B,SAAA;AAEA,QAAA,IAAMC,MACJ,GAAAnE,WAAA,CAAAoE,SAAA,EAAAC,UAAA,CAAA;UAAA,KAEOxB,EAAAA,GAAA,CAAIU,GAAK9E,EAAAA,OAAAA,IAAU,IAAI,CAAK,IAAAkF,QAAAA;AAAA,SAAA,EAC7BG,OACJ,EAAA;AAAA,UAAA,cAAA,EAAcxH,MAAMmB,gBAAAA;AACtB,SAAA,CAAA,EAJWW,MAIX,CAAA;AAEFmD,QAAAA,UAAA,CAAW+C,KAAKH,MAAM,CAAA,CAAA;QAGtB,IAAI7H,MAAMqB,iBAAmB,EAAA;AAC3B,UAAA,IAAM4G,CAAI,GAAA;AACRhB,YAAAA,GAAA,EAAAA,GAAA;AACAiB,YAAAA,KAAO,EAAAb,QAAA;YACP/G,SAASA,OAAQ,CAAA4D,KAAA;YACjBrD,YAAYb,KAAM,CAAAa,UAAA;YAClBE,iBAAiBf,KAAM,CAAAe,eAAAA;WACzB,CAAA;AACM,UAAA,IAAAoH,eAAA,GAAkBnI,KAAM,CAAAqB,iBAAA,CAAkB4G,CAAC,CAAA,CAAA;AAC9BE,UAAAA,eAAA,IAAAlD,UAAA,CAAW+C,KAAKG,eAAe,CAAA,CAAA;AACpD,SAAA;AACF,OAAC,CAAA,CAAA;AAED,MAAA,IAAMC,IAAO,GACXjE,CAAAA,UAAA,CAAWC,cAAc,gBAAgB,CAAA,CAAA,CAAA1E,MAAA,CACtCuF,UAAA,GACHd,UAAA,CAAWC,cAAc,eAAe,CAAA,CAC1C,CAAA,CAAA;AAEA,MAAA,IAAMiE,OAAU,GAAA,EAAAhF,CAAAA,YAAA,GAACjD,IAAK,CAAA8D,KAAA,MAAAb,IAAAA,IAAAA,YAAA,KAALA,KAAAA,CAAAA,IAAAA,YAAA,CAAYQ,MAAU,CAAA,IAAA,CAAC7D,KAAM,CAAAsI,OAAA,IAAW,CAACtI,KAAA,CAAMsB,YAAgB,IAAA,CAACtB,KAAM,CAAAuB,WAAA,CAAA;AAGvF,MAAA,IAAMgH,SAAY,GAAA7I,aAAAA,CAAAA,MAAA,CAAA4D,CAAAA,oBAAA,GAActD,KAAM,CAAAiB,aAAA,MAAA,IAAA,IAAAqC,oBAAA,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAqBkF,UAAW,CAAAtE,KAAA,EAAA,KAAA,CAAA,CAAA;AAChE,MAAA,IAAMuE,QAAW,GAAA,CAAAlF,qBAAA,GAAAvD,KAAA,CAAMiB,aAAe,MAAAsC,IAAAA,IAAAA,qBAAA,eAArBA,qBAAA,CAAqB6B,eAAA,CAAgBlB,KAClD,GAAA;AACEwE,QAAAA,SAAW,EAAAH,SAAA;AACX,QAAA,eAAiB,EAAAA,SAAA;AACjB,QAAA,gBAAkB,EAAAA,SAAA;AAClB,QAAA,mBAAqB,EAAAA,SAAAA;OAEvB,GAAA,KAAA,CAAA,CAAA;AAEJ,MAAA,OAAA7E,WAAA,CAAA,OAAA,EAAA;QAAA,OACgBT,EAAAA,YAAa,CAAAiB,KAAA;QAAA,OAAAjE,EAAAA,aAAA,KAAmBwI,QAAS,CAAA;OACpDJ,EAAAA,CAAAA,UAAU7E,WAAY,CAAAlD,OAAA,CAAQ4D,KAAK,CAAA,GAAIkE;KAG9C,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}