{"version":3,"file":"table.mjs","names":[],"sources":["../../../../src/components/table/src/table.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, onActivated, onBeforeUnmount, onMounted, shallowRef, watch, watchEffect } from \"vue\";\nimport { Eleme, More, Refresh, Search, Setting } from \"@element-plus/icons-vue\";\nimport {\n\tElButton,\n\tElDatePicker,\n\tElDropdown,\n\tElDropdownItem,\n\tElDropdownMenu,\n\tElIcon,\n\tElImageViewer,\n\tElInput,\n\tElPagination,\n\tElTable,\n\tElTableColumn,\n} from \"element-plus\";\nimport { NotData } from \"@fast-element-plus/icons-vue\";\nimport { tableProps } from \"../../../internal/props\";\nimport {\n\tcreateDateRangeShortcuts,\n\tcreateOneMonthRangeFromToday,\n\tdebounce,\n\tdefinePropType,\n\tmakeSlots,\n\tomit,\n\tpick,\n\trandomString,\n\tuseExpose,\n\tuseProps,\n\tuseRender,\n} from \"../../../utils\";\nimport { tableUtil } from \"../utils/table\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport FaTableColumn from \"./tableColumn\";\nimport FaTableColumnsSettingDialog from \"./tableColumnSettingDialog\";\nimport FaTablePagination from \"./tablePagination\";\nimport FaTableSearchForm from \"./tableSearchForm\";\nimport { useTable } from \"./useTable\";\nimport type { TableColumnCtx, TableProps } from \"element-plus\";\nimport type { PropType } from \"vue\";\nimport type { FaLayoutGridBreakpoint } from \"../../layoutGrid\";\nimport type { PagedInput, PagedResult, PagedSortInput } from \"../src/page.type\";\nimport type { DefaultRow } from \"./table.state\";\nimport type { FaTableColumnCtx, FaTableDataRange, FaTableDefaultSlotsResult } from \"./table.type\";\n\nexport { tableProps } from \"../../../internal/props\";\nexport type { TreeProps } from \"../../../internal/props\";\n\n/** FaTable 的运行时 Props 定义 */\nexport const faTableProps = {\n\t...tableProps,\n\t/** whether Table has vertical border */\n\tborder: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** whether current row is highlighted */\n\thighlightCurrentRow: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used */\n\trowKey: {\n\t\ttype: [String, Function] as PropType<NonNullable<TableProps<DefaultRow>[\"rowKey\"]>>,\n\t\tdefault: \"id\",\n\t},\n\t/** 组件封装，原生的已经失效 method that returns rowspan and colspan */\n\tspanMethod: {\n\t\ttype: Function as PropType<TableProps<DefaultRow>[\"spanMethod\"]>,\n\t\tvalidator: () => {\n\t\t\tconsole.warn(\"[Fast:FaTable]\", \"'spanMethod' 属性，组件已经封装，外部使用会失效。\");\n\t\t\treturn false;\n\t\t},\n\t},\n\t/** 表格Key */\n\ttableKey: {\n\t\ttype: String,\n\t\tdefault: () => randomString(8),\n\t},\n\t/** 表格数据 */\n\tdata: {\n\t\ttype: definePropType<DefaultRow[]>(Array),\n\t\tdefault: () => [],\n\t},\n\t/** 请求数据的函数 */\n\trequestApi: {\n\t\ttype: definePropType<(params?: PagedInput) => Promise<PagedResult<DefaultRow> | DefaultRow[]>>(Function),\n\t},\n\t/** 接口请求数据回调 */\n\tdataCallback: {\n\t\ttype: definePropType<(data: PagedResult<DefaultRow> | DefaultRow[]) => void>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput | null>([String, Number, Object]),\n\t/** 列配置 */\n\tcolumns: {\n\t\ttype: definePropType<FaTableColumnCtx[] | false>([Array, Boolean]),\n\t\tdefault: () => false,\n\t},\n\t/** 表格列改变 */\n\tcolumnsChange: {\n\t\ttype: definePropType<(columns: FaTableColumnCtx[]) => Promise<void>>(Function),\n\t},\n\t/** 搜索表单 Grid布局列配置 */\n\tsearchFormCols: {\n\t\ttype: definePropType<string | number | Record<FaLayoutGridBreakpoint, number>>([String, Number, Object]),\n\t\tdefault: () => ({ xs: 2, sm: 3, md: 4, lg: 5, xl: 6 }),\n\t},\n\t/** 折叠搜索 */\n\tcollapsedSearch: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 高级搜索抽屉 */\n\tadvancedSearchDrawer: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** 搜索表单 */\n\tsearchForm: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 头部卡片 */\n\theaderCard: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 刷新按钮 */\n\trefreshBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 搜索按钮 */\n\tsearchBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 列配置按钮 */\n\tcolumnSettingBtn: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** 头部卡片右侧功能按钮 */\n\ttoolBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 隐藏搜索时间 */\n\thideSearchTime: Boolean,\n\t/** 未来搜索时间 */\n\tfutureSearchTime: Boolean,\n\t/** 搜索时间范围 */\n\tdataSearchRange: {\n\t\ttype: definePropType<FaTableDataRange>(String),\n\t\tdefault: \"Past3D\",\n\t},\n\t/** 选择列 */\n\tselectionColumn: Boolean,\n\t/** 序号列 */\n\tindexColumn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 分页 */\n\tpagination: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 页码 */\n\tpageSizes: {\n\t\ttype: definePropType<number[]>(Array),\n\t\tdefault: [20, 30, 50, 100],\n\t},\n\t/** 隐藏图片 */\n\thideImage: Boolean,\n\t/** 单选 */\n\tsingle: Boolean,\n\t/** 行点击选择 */\n\trowClickSelection: Boolean,\n\t/** 将父级数据的 children 展开为表格行，并把父级字段合并到子项；Element Plus 树表无需启用 */\n\ttreeData: Boolean,\n\t/** 配置选项 */\n\tprops: {\n\t\ttype: definePropType<{ span?: string; children?: string }>(Object),\n\t\tdefault: () => ({\n\t\t\tspan: undefined,\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** 自动刷新，当传入 data 时候，如果存在更改则自动刷新 */\n\tautoRefresh: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * 等价于 Table-Column 的 selectable\n\t * function that determines if a certain row can be selected, works when `type` is 'selection'\n\t */\n\trowSelectable: Function as PropType<TableColumnCtx<DefaultRow>[\"selectable\"]>,\n};\n\n/** FaTable 的运行时 Emits 定义 */\nexport const faTableEmits = {\n\t/** 当用户手动勾选数据行的 Checkbox 时触发的事件 */\n\tselect: (selection: DefaultRow[], row: DefaultRow) => Array.isArray(selection) && typeof row === \"object\" && row !== null,\n\t/** 当用户手动勾选全选 Checkbox 时触发的事件 */\n\tselectAll: (selection: DefaultRow[]) => Array.isArray(selection),\n\t/** 当选择项发生变化时会触发该事件 */\n\tselectionChange: (newSelection: DefaultRow[]) => Array.isArray(newSelection),\n\t/** 当单元格 hover 进入时会触发该事件 */\n\tcellMouseEnter: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当单元格 hover 退出时会触发该事件 */\n\tcellMouseLeave: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某个单元格被点击时会触发该事件 */\n\tcellClick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某个单元格被双击击时会触发该事件 */\n\tcellDblclick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某个单元格被鼠标右键点击时会触发该事件 */\n\tcellContextmenu: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某一行被点击时会触发该事件 */\n\trowClick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一行被鼠标右键点击时会触发该事件 */\n\trowContextmenu: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一行被双击时会触发该事件 */\n\trowDblclick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一列的表头被点击时会触发该事件 */\n\theaderClick: (column: TableColumnCtx<DefaultRow>, event: Event) => typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一列的表头被鼠标右键点击时触发该事件 */\n\theaderContextmenu: (column: TableColumnCtx<DefaultRow>, event: Event) => typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当表格的排序条件发生变化的时候会触发该事件 */\n\tsortChange: (data: { column: TableColumnCtx<DefaultRow>; prop: string; order: \"\" | \"ascending\" | \"descending\" }) =>\n\t\ttypeof data === \"object\" && data !== null,\n\t/** column 的 key， 如果需要使用 filter-change 事件，则需要此属性标识是哪个 column 的筛选条件 */\n\tfilterChange: (newFilters: Record<string, string[]>) => typeof newFilters === \"object\" && newFilters !== null,\n\t/** 当表格的当前行发生变化的时候会触发该事件，如果要高亮当前行，请打开表格的 highlight-current-row 属性 */\n\tcurrentChange: (currentRow: DefaultRow, oldCurrentRow: DefaultRow | null) =>\n\t\ttypeof currentRow === \"object\" &&\n\t\tcurrentRow !== null &&\n\t\t(oldCurrentRow === null || (typeof oldCurrentRow === \"object\" && oldCurrentRow !== null)),\n\t/** 当拖动表头改变了列的宽度的时候会触发该事件 */\n\theaderDragend: (newWidth: number, oldWidth: number, column: TableColumnCtx<DefaultRow>, event: MouseEvent) =>\n\t\ttypeof newWidth === \"number\" && typeof oldWidth === \"number\" && typeof column === \"object\" && column !== null && event instanceof MouseEvent,\n\t/** 当用户对某一行展开或者关闭的时候会触发该事件（展开行时，回调的第二个参数为 expandedRows；树形表格时第二参数为 expanded） */\n\texpandChange: (row: DefaultRow, expanded: boolean | DefaultRow[]) =>\n\t\ttypeof row === \"object\" && row !== null && (typeof expanded === \"boolean\" || Array.isArray(expanded)),\n\t/** 表格滚动时触发 */\n\tscroll: (data: { scrollLeft: number; scrollTop: number }) => typeof data === \"object\" && data !== null,\n\n\t/** 表格刷新事件 */\n\trefresh: (params: PagedInput) => typeof params === \"object\" && params !== null,\n\t/** 表格重置事件 */\n\treset: (params: PagedInput) => typeof params === \"object\" && params !== null,\n\t/** 分页页码改变事件 */\n\tsizeChange: (pageSize: number) => typeof pageSize === \"number\",\n\t/** 分页改变事件 */\n\tpaginationChange: (pageIndex: number, pageSize: number) => typeof pageIndex === \"number\" && typeof pageSize === \"number\",\n\t/** 自定义单元格点击事件 */\n\tcustomCellClick: (\n\t\temitName: string,\n\t\t{ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number } & FaTableDefaultSlotsResult\n\t) =>\n\t\t(emitName == null || typeof emitName === \"string\") &&\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\ttypeof $index === \"number\",\n};\n\n/** FaTable 的插槽参数 */\nexport type FaTableSlots = Record<string, unknown> & {\n\t/** 默认内容插槽 */\n\tdefault: never;\n\t/** 插入至表格最后一行之后的内容， 如果需要对表格的内容进行无限滚动操作，可能需要用到这个 slot。 若表格有合计行，该 slot 会位于合计行之上。 */\n\tappend: never;\n\t/** 当数据为空时自定义的内容 */\n\tempty: never;\n\t/** 表格顶部插槽 */\n\ttopHeader: FaTableDefaultSlotsResult;\n\t/** 表格头部左侧插槽 */\n\theader: FaTableDefaultSlotsResult;\n\t/** 表格头部右侧功能按钮插槽 */\n\ttoolButton: FaTableDefaultSlotsResult;\n\t/** 表格头部右侧高级操作按钮插槽，ElDropdownMenuItem 标签 */\n\ttoolButtonAdv: FaTableDefaultSlotsResult;\n\t/** 表格展开列插槽 */\n\texpand: FaTableDefaultSlotsResult & {\n\t\trow: DefaultRow;\n\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t$index: number;\n\t};\n\t/** 表格操作列插槽 */\n\toperation: FaTableDefaultSlotsResult & {\n\t\trow: DefaultRow;\n\t\tcolumn: FaTableColumnCtx;\n\t\t$index: number;\n\t};\n\t/** 表格分页插槽 */\n\tpagination: {\n\t\tpageIndex: number;\n\t\tpageSize: number;\n\t\ttotalRows: number;\n\t\thandleSizeChange: (val: number) => void;\n\t\thandlePaginationChange: (val: number) => void;\n\t};\n\t/** 表格页脚插槽 */\n\tfooter: FaTableDefaultSlotsResult;\n\t/** 列配置 */\n\tcolumnSetting: never;\n} & Record<\n\t\tstring,\n\t\tFaTableDefaultSlotsResult & {\n\t\t\t/** slots为表格内容的时候才会返回 */\n\t\t\trow?: DefaultRow;\n\t\t\t/** slot为表头内容的时候返回 'TableColumnCtx<DefaultRow>' 否则返回 'FaTableColumnCtx' */\n\t\t\tcolumn?: TableColumnCtx<DefaultRow> | FaTableColumnCtx;\n\t\t\t/** slot为非搜索项的时候才会返回 */\n\t\t\t$index?: number;\n\t\t\t/** slot为搜索项的时候才会返回 */\n\t\t\tsearch?: () => Promise<void>;\n\t\t}\n\t>;\n\nexport default defineComponent({\n\tname: \"FaTable\",\n\tprops: faTableProps,\n\temits: faTableEmits,\n\tslots: makeSlots<FaTableSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst columnSettingRef = shallowRef<InstanceType<typeof FaTableColumnsSettingDialog> | null>(null);\n\n\t\tconst {\n\t\t\tglobalSize,\n\t\t\tstate,\n\t\t\telementRef,\n\t\t\ttableRef,\n\t\t\thandleTableColumnAutoWidth,\n\t\t\tloadTableColumns,\n\t\t\thandleSizeChange,\n\t\t\thandlePaginationChange,\n\t\t\tdefaultSearchTime,\n\t\t\ttableSearch,\n\t\t\ttableReset,\n\t\t\tdoRender,\n\t\t\tsetManualLoading,\n\t\t\tdoLoading,\n\t\t\thandleCustomCellClick,\n\t\t} = useTable(props, slots, emit);\n\n\t\tconst notifyColumnsChange = debounce(() => props.columnsChange?.(state.orgColumns), 500);\n\t\tconst resizeTableColumns = debounce(handleTableColumnAutoWidth, 100);\n\n\t\tconst unmountedError = new Error(\"FaTable 已卸载，列布局任务已取消。\");\n\t\tconst reportColumnTask = (task: Promise<unknown>) => {\n\t\t\ttask.catch((error: unknown) => {\n\t\t\t\tif (error !== unmountedError) console.error(\"FaTable 列更新失败。\", error);\n\t\t\t});\n\t\t};\n\n\t\tlet lastRowIndex = 0;\n\t\tconst getInitParam = (): Record<string, unknown> => {\n\t\t\treturn typeof props.initParam === \"object\" && props.initParam !== null ? props.initParam : {};\n\t\t};\n\t\tconst getRowKey = (row: DefaultRow) => {\n\t\t\tconst value: unknown = typeof props.rowKey === \"function\" ? props.rowKey(row) : tableUtil.handleRowAccordingToProp(row, props.rowKey);\n\t\t\treturn typeof value === \"string\" || typeof value === \"number\" ? value : undefined;\n\t\t};\n\n\t\tconst indexMethod = (index: number) => {\n\t\t\tif (index === 0) {\n\t\t\t\tlastRowIndex = 0;\n\t\t\t}\n\t\t\tif (state.spanColumns.length > 0) {\n\t\t\t\tconst rowspan = state.tableSpanData[\"__table-index\"]?.[index] ?? 0;\n\t\t\t\tif (rowspan === 0) {\n\t\t\t\t\treturn lastRowIndex + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize + 1;\n\t\t\t\t} else {\n\t\t\t\t\tlastRowIndex++;\n\t\t\t\t\treturn lastRowIndex + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn index + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize + 1;\n\t\t};\n\n\t\tconst handleSelect = (selection: DefaultRow[], row: DefaultRow) => {\n\t\t\t// 判断是否开启了单选\n\t\t\tif (props.single) {\n\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\tif (selection.length > 0) {\n\t\t\t\t\ttableRef.value?.toggleRowSelection(row);\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"select\", selection, row);\n\t\t};\n\n\t\tconst handleSelectAll = (selection: DefaultRow[]) => {\n\t\t\tif (props.single) {\n\t\t\t\t// 判断是否已经选中数据\n\t\t\t\tif (state.selected) {\n\t\t\t\t\t// 默认选中的第一行\n\t\t\t\t\tif (state.tableData.length > 0) {\n\t\t\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\t\t\tconst firstRow = state.tableData[0];\n\t\t\t\t\t\tif (firstRow) tableRef.value?.toggleRowSelection(firstRow);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"selectAll\", selection);\n\t\t};\n\n\t\tconst handleSelectionChange = (newSelection: DefaultRow[]) => {\n\t\t\tnewSelection.length === 0 ? (state.selected = false) : (state.selected = true);\n\t\t\t// 判断是否为单选\n\t\t\tif (props.single && newSelection.length > 0) {\n\t\t\t\t// 这里获取最后一个是因为选中改变的事件会触发多次，会带入旧的数据\n\t\t\t\tconst lastSelection = newSelection.at(-1);\n\t\t\t\tstate.selectedList = lastSelection === undefined ? [] : [lastSelection];\n\t\t\t} else {\n\t\t\t\tstate.selectedList = newSelection;\n\t\t\t}\n\t\t\t// 如果已经取消选择了，那么部分选择也应该要取消\n\t\t\tstate.indeterminateSelectedListIds = state.indeterminateSelectedListIds.filter((f) => state.selectedListIds.some((s) => s === f));\n\t\t\temit(\"selectionChange\", state.selectedList);\n\t\t};\n\n\t\tconst toggleRowIndeterminateSelection = (row: DefaultRow, selected?: boolean) => {\n\t\t\tconst rowKey = getRowKey(row);\n\t\t\tif (rowKey === undefined) return;\n\t\t\tconst curRow = state.tableData.find((item) => getRowKey(item) === rowKey);\n\t\t\tif (selected === true) {\n\t\t\t\tif (!state.indeterminateSelectedListIds.some((s) => s === rowKey)) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.push(rowKey);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow, true);\n\t\t\t} else if (selected === false) {\n\t\t\t\tconst fIndex = state.indeterminateSelectedListIds.findIndex((f) => f === rowKey);\n\t\t\t\tif (fIndex >= 0) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.splice(fIndex, 1);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow, false);\n\t\t\t} else {\n\t\t\t\tconst fIndex = state.indeterminateSelectedListIds.findIndex((f) => f === rowKey);\n\t\t\t\tif (fIndex >= 0) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.splice(fIndex, 1);\n\t\t\t\t} else {\n\t\t\t\t\tstate.indeterminateSelectedListIds.push(rowKey);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow);\n\t\t\t}\n\t\t};\n\n\t\tconst handleSortChange = ({\n\t\t\tcolumn,\n\t\t\tprop,\n\t\t}: {\n\t\t\tcolumn: TableColumnCtx<DefaultRow> & { multiOrder?: \"\" | \"ascending\" | \"descending\" };\n\t\t\tprop: string | null;\n\t\t\torder: \"\" | \"ascending\" | \"descending\" | null;\n\t\t}) => {\n\t\t\tconst normalizedProp = prop ?? column.property;\n\t\t\tif (!column.multiOrder) {\n\t\t\t\tcolumn.multiOrder = \"descending\";\n\t\t\t} else if (column.multiOrder === \"descending\") {\n\t\t\t\tcolumn.multiOrder = \"ascending\";\n\t\t\t} else {\n\t\t\t\tcolumn.multiOrder = undefined;\n\t\t\t}\n\t\t\t// 排序集合非空判断\n\t\t\tconst initSortList: unknown = getInitParam()[\"sortList\"];\n\t\t\tstate.searchParam.sortList = [\n\t\t\t\t...(Array.isArray(initSortList) ? (initSortList as PagedSortInput[]) : []),\n\t\t\t\t...(state.searchParam.sortList ?? []),\n\t\t\t].filter((item, index, list) => list.findIndex((candidate) => candidate.enField === item.enField) === index);\n\n\t\t\t// 去原来的列中查找表格的列数据\n\t\t\tconst orgColumn = state.orgColumns.find((f) => f.prop === normalizedProp);\n\t\t\tconst enField = orgColumn?.sortableField ?? orgColumn?.prop ?? column.property;\n\t\t\tconst fieldIndex = state.searchParam.sortList.findIndex((f: PagedSortInput) => f.enField === enField);\n\t\t\tif (!column.multiOrder && fieldIndex >= 0) {\n\t\t\t\t// 如果是空的，删除排序\n\t\t\t\tstate.searchParam.sortList.splice(fieldIndex, 1);\n\t\t\t} else if (fieldIndex === -1) {\n\t\t\t\tstate.searchParam.sortList.push({\n\t\t\t\t\tenField,\n\t\t\t\t\tcnField: column.label,\n\t\t\t\t\tmode: column.multiOrder,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst sortItem = state.searchParam.sortList[fieldIndex];\n\t\t\t\tif (sortItem) sortItem.mode = column.multiOrder;\n\t\t\t}\n\t\t\t// 判断最后的排序集合中是否还存在数据，如果不存在，则删除排序集合\n\t\t\tif (state.searchParam.sortList.length === 0) {\n\t\t\t\tdelete state.searchParam.sortList;\n\t\t\t}\n\t\t\temit(\"sortChange\", { column, prop: normalizedProp, order: column.multiOrder ?? \"\" });\n\t\t\ttableSearch();\n\t\t};\n\n\t\tconst handleCurrentChange = (currentRow: DefaultRow | null, oldCurrentRow: DefaultRow | null) => {\n\t\t\tif (!currentRow) {\n\t\t\t\t// 这里为空的时候，会导致 Header 中的不确定状态还是true的状态\n\t\t\t\t// tableRef.value.clearSelection();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (props.rowClickSelection) {\n\t\t\t\t// 判断是否为单选\n\t\t\t\tif (props.single && oldCurrentRow) {\n\t\t\t\t\ttableRef.value?.toggleRowSelection(oldCurrentRow);\n\t\t\t\t}\n\t\t\t\ttableRef.value?.toggleRowSelection(currentRow);\n\t\t\t}\n\t\t\temit(\"currentChange\", currentRow, oldCurrentRow);\n\t\t};\n\n\t\tconst handleCellClassName = ({\n\t\t\trow,\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\tlet localCellClassName = \"fa-table__cell\";\n\t\t\t// 判断是否为选择列\n\t\t\tif (column.type === \"selection\") {\n\t\t\t\t// 判断是否在部分选中的集合中\n\t\t\t\tconst rowKey = getRowKey(row);\n\t\t\t\tif (state.indeterminateSelectedListIds.some((s) => s === rowKey)) {\n\t\t\t\t\tlocalCellClassName += \" fa-table__selection-column__indeterminate\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst columnInfo = state.tableColumns.find((f) => f.prop === column.property);\n\t\t\tif (columnInfo?.dataDeleteField) {\n\t\t\t\tif (row[columnInfo.dataDeleteField] === true) {\n\t\t\t\t\tlocalCellClassName += \" fa-table__data-delete-column\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (props.cellClassName) {\n\t\t\t\tconst cellClassName =\n\t\t\t\t\ttypeof props.cellClassName === \"string\" ? props.cellClassName : props.cellClassName({ row, column, rowIndex, columnIndex });\n\t\t\t\tif (!cellClassName) {\n\t\t\t\t\treturn localCellClassName;\n\t\t\t\t}\n\t\t\t\treturn `${localCellClassName} ${cellClassName}`;\n\t\t\t} else {\n\t\t\t\treturn localCellClassName;\n\t\t\t}\n\t\t};\n\n\t\tconst handleHeaderCellClassName = ({\n\t\t\trow,\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow> & { multiOrder?: \"\" | \"ascending\" | \"descending\" };\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\t// TODO：不晓得这里有无问题，EL 更新了还未测试\n\t\t\tcolumn.order = column.multiOrder === \"ascending\" || column.multiOrder === \"descending\" ? column.multiOrder : null;\n\t\t\tif (props.headerCellClassName) {\n\t\t\t\tconst headerCellClassName =\n\t\t\t\t\ttypeof props.headerCellClassName === \"function\"\n\t\t\t\t\t\t? props.headerCellClassName({ row, column, rowIndex, columnIndex })\n\t\t\t\t\t\t: props.headerCellClassName;\n\t\t\t\treturn headerCellClassName ? `fa-table__header-cell ${headerCellClassName}` : \"fa-table__header-cell\";\n\t\t\t}\n\t\t\treturn \"fa-table__header-cell\";\n\t\t};\n\n\t\tconst handleSpanMethod = ({\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\t/** 原生的 span-method 会失效 */\n\t\t\tconst property = column.property as string | null | undefined;\n\t\t\tconst columnKey = column.columnKey as string | null | undefined;\n\t\t\tconst pKey = property ?? columnKey;\n\t\t\tif (pKey === undefined || pKey === null) return { rowspan: 1, colspan: 1 };\n\t\t\tif (state.spanColumns.findIndex((f) => f.prop === pKey) !== -1) {\n\t\t\t\tconst rowspan = state.tableSpanData[pKey]?.[rowIndex] ?? 0;\n\t\t\t\tif (rowspan > 0) {\n\t\t\t\t\treturn { rowspan, colspan: 1 };\n\t\t\t\t}\n\t\t\t\treturn { rowspan: 0, colspan: 0 };\n\t\t\t}\n\t\t\treturn { rowspan: 1, colspan: 1 };\n\t\t};\n\n\t\tconst handleHeaderDragend = (newWidth: number, oldWidth: number, column: TableColumnCtx<DefaultRow>, event: MouseEvent) => {\n\t\t\tstate.orgColumns.forEach((f) => {\n\t\t\t\tif (column.property === f.prop) {\n\t\t\t\t\tf.width = newWidth;\n\t\t\t\t\tf.smallWidth = newWidth;\n\t\t\t\t}\n\t\t\t});\n\t\t\temit(\"headerDragend\", newWidth, oldWidth, column, event);\n\t\t\tif (props.columnsChange) reportColumnTask(notifyColumnsChange());\n\t\t};\n\n\t\tconst handleImagePreview = (url: string) => {\n\t\t\tstate.previewList = [url];\n\t\t\tstate.imagePreview = true;\n\t\t};\n\n\t\tconst tableColumnOmitNames = [\"multiOrder\", \"columnId\", \"order\", \"sortableField\", \"disabledSortable\", \"spanProp\", \"pureSearch\", \"search\"];\n\t\tconst searchFormSlotNames = computed(() => [\n\t\t\t...new Set(state.searchColumns.flatMap((column) => (typeof column.search?.slot === \"string\" ? [column.search.slot] : []))),\n\t\t]);\n\t\tconst tableColumnSlotNames = computed(() => [\n\t\t\t...new Set(state.tableColumns.flatMap((column) => [column.slot, column.headerSlot].filter((name) => typeof name === \"string\"))),\n\t\t]);\n\t\tconst searchInputClearable = computed(() => {\n\t\t\tconst value = state.searchParam.searchValue;\n\t\t\treturn (value !== undefined && value !== \"\") || state.searchValueUpdate.length > 0;\n\t\t});\n\n\t\twatch(\n\t\t\t() => props.columns,\n\t\t\t() => {\n\t\t\t\tloadTableColumns();\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.initParam,\n\t\t\t() => {\n\t\t\t\t// 如果初始化参数改变了，则需要改变对应的搜索参数\n\t\t\t\tObject.entries(getInitParam()).forEach(([key, value]) => {\n\t\t\t\t\tstate.searchParam[key] = value;\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data,\n\t\t\t() => {\n\t\t\t\tif (!props.requestApi && props.autoRefresh) {\n\t\t\t\t\treturn tableSearch();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatchEffect((onCleanup) => {\n\t\t\tconst element = elementRef.value;\n\t\t\tif (element) {\n\t\t\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\tconst { width, height } = entry.contentRect;\n\t\t\t\t\t\tconst widthChanged = state.tableWidth !== width;\n\t\t\t\t\t\tstate.tableWidth = width;\n\t\t\t\t\t\tstate.tableHeight = height;\n\t\t\t\t\t\tif (widthChanged) reportColumnTask(resizeTableColumns());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tobserver.observe(element);\n\n\t\t\t\tonCleanup(() => observer.disconnect());\n\t\t\t}\n\t\t});\n\n\t\tonBeforeUnmount(() => {\n\t\t\tnotifyColumnsChange.cancel(unmountedError);\n\t\t\tresizeTableColumns.cancel(unmountedError);\n\t\t});\n\n\t\tonMounted(async () => {\n\t\t\tstate.initParam = getInitParam();\n\t\t\tdefaultSearchTime();\n\t\t\t// 初始化搜索表单的时候，如果有默认搜索参数，则重置默认的搜索参数\n\t\t\tObject.entries(getInitParam()).forEach(([key, value]) => {\n\t\t\t\tstate.searchParam[key] = value;\n\t\t\t});\n\t\t\tawait tableSearch();\n\t\t\tloadTableColumns();\n\t\t\tif (!props.requestApi && props.autoRefresh) await tableSearch();\n\t\t});\n\n\t\tonActivated(() => {\n\t\t\t// 解决 keep-alive 后自动列宽失效的问题\n\t\t\thandleTableColumnAutoWidth();\n\t\t});\n\n\t\tconst elTableProps = useProps(props, tableProps, [\"data\", \"spanMethod\", \"headerCellClassName\", \"cellClassName\"]);\n\n\t\tuseRender(() => (\n\t\t\t<div\n\t\t\t\tref={elementRef}\n\t\t\t\tclass={[\"fa-table\", `fa-table-${globalSize.value}`, `fa-table__${props.tableKey}`, { fa__click__disabled: state.loading }]}\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--fa-table-width\": state.tableWidth ? `${state.tableWidth}px` : \"\",\n\t\t\t\t\t\"--fa-table-height\": state.tableHeight ? `${state.tableHeight}px` : \"\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<FaTableSearchForm\n\t\t\t\t\tvSlots={pick(slots, searchFormSlotNames.value)}\n\t\t\t\t\tshow={props.searchForm && state.searchForm}\n\t\t\t\t\tcollapsedSearch={props.collapsedSearch}\n\t\t\t\t\tadvancedSearchDrawer={props.advancedSearchDrawer}\n\t\t\t\t\tcols={props.searchFormCols}\n\t\t\t\t\tsearch={tableSearch}\n\t\t\t\t\treset={tableReset}\n\t\t\t\t/>\n\t\t\t\t{slots.topHeader && (\n\t\t\t\t\t<div class=\"el-card fa-table__header\">{slots.topHeader({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t)}\n\t\t\t\t<div\n\t\t\t\t\tclass=\"el-card fa-table__main\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tcontainerType: slots.expand ? \"inline-size\" : undefined,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{props.headerCard && (\n\t\t\t\t\t\t<div class=\"fa-table__main-header\">\n\t\t\t\t\t\t\t<div class=\"fa-table__main-header-left\">{slots.header?.({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right\">\n\t\t\t\t\t\t\t\t{props.toolBtn && (\n\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right__div-search\">\n\t\t\t\t\t\t\t\t\t\t\t<ElInput\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa-table__main-header-right__input-search\"\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tprefixIcon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"关键字搜索\"\n\t\t\t\t\t\t\t\t\t\t\t\tvModel_trim={state.searchParam.searchValue}\n\t\t\t\t\t\t\t\t\t\t\t\tclearable={searchInputClearable.value}\n\t\t\t\t\t\t\t\t\t\t\t\tonCompositionupdate={(e: CompositionEvent) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.searchValueUpdate = e.data;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonCompositionend={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.searchValueUpdate = \"\";\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={tableSearch}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right__div-search__hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t{state.searchParam.searchValue}\n\t\t\t\t\t\t\t\t\t\t\t\t{state.searchValueUpdate}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{props.requestApi && !props.hideSearchTime && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDatePicker\n\t\t\t\t\t\t\t\t\t\t\t\t{...{\n\t\t\t\t\t\t\t\t\t\t\t\t\t// ElDatePicker 的 JSX 类型未声明 change 事件，运行时由内部 Picker 触发。\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa-table__main-header-right__data-search\"\n\t\t\t\t\t\t\t\t\t\t\t\tpopperClass={`fa-table__main-header-right__data-search__popper fa-table__main-header-right__data-search__popper-${globalSize.value}`}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"daterange\"\n\t\t\t\t\t\t\t\t\t\t\t\tvModel={state.searchParam.searchTimeList}\n\t\t\t\t\t\t\t\t\t\t\t\tdefaultTime={createOneMonthRangeFromToday(props.futureSearchTime)}\n\t\t\t\t\t\t\t\t\t\t\t\tshortcuts={createDateRangeShortcuts(props.futureSearchTime)}\n\t\t\t\t\t\t\t\t\t\t\t\tvalueFormat=\"YYYY-MM-DD HH:mm:ss\"\n\t\t\t\t\t\t\t\t\t\t\t\tclearable={false}\n\t\t\t\t\t\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t\t\t\t\t\t\tfallbackPlacements={[\"top\"]}\n\t\t\t\t\t\t\t\t\t\t\t\tunlinkPanels\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{props.refreshBtn && (\n\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"刷新\"\n\t\t\t\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\t\t\t\ticon={Refresh}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={tableSearch}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{props.searchBtn && state.searchColumns.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={state.searchForm ? \"隐藏搜索栏\" : \"显示搜索栏\"}\n\t\t\t\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\t\t\t\ticon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => (state.searchForm = !state.searchForm)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{props.columnSettingBtn && props.columns && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDropdown title=\"表格列配置\" trigger=\"click\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: () => <ElButton loading={state.loading} loadingIcon={Eleme} circle icon={Setting} />,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.columnSetting?.()}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownItem title=\"表格列配置\" divided onClick={() => columnSettingRef.value?.open()}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t表格列配置\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t</ElDropdown>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{slots.toolButton?.({ search: tableSearch, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t{slots.toolButtonAdv && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDropdown title=\"高级操作\" trigger=\"click\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElButton loading={state.loading} loadingIcon={Eleme} circle icon={More}></ElButton>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.toolButtonAdv?.({ search: tableSearch, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t</ElDropdown>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<ElTable\n\t\t\t\t\t\t{...elTableProps.value}\n\t\t\t\t\t\tclass=\"fa-table__table\"\n\t\t\t\t\t\tref={tableRef}\n\t\t\t\t\t\tvLoading={state.loading}\n\t\t\t\t\t\telement-loading-text={state.loadingText}\n\t\t\t\t\t\tdata={state.tableData}\n\t\t\t\t\t\tspanMethod={handleSpanMethod}\n\t\t\t\t\t\theaderCellClassName={handleHeaderCellClassName}\n\t\t\t\t\t\tcellClassName={handleCellClassName}\n\t\t\t\t\t\tonSelection-change={handleSelectionChange}\n\t\t\t\t\t\tonSort-change={handleSortChange}\n\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\tonSelect-all={handleSelectAll}\n\t\t\t\t\t\tonCurrent-change={handleCurrentChange}\n\t\t\t\t\t\tonHeader-dragend={handleHeaderDragend}\n\t\t\t\t\t\tonCell-mouse-enter={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellMouseEnter\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-mouse-leave={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellMouseLeave\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-click={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellClick\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-dblclick={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellDblclick\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-contextmenu={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellContextmenu\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonRow-click={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowClick\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRow-contextmenu={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowContextmenu\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRow-dblclick={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowDblclick\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonHeader-click={(column: TableColumnCtx<DefaultRow>, event: Event) => emit(\"headerClick\", column, event)}\n\t\t\t\t\t\tonHeader-contextmenu={(column: TableColumnCtx<DefaultRow>, event: Event) => emit(\"headerContextmenu\", column, event)}\n\t\t\t\t\t\tonFilter-change={(newFilters: Record<string, string[]>) => emit(\"filterChange\", newFilters)}\n\t\t\t\t\t\tonExpand-change={(row: DefaultRow, expanded: boolean | DefaultRow[]) => emit(\"expandChange\", row, expanded)}\n\t\t\t\t\t\tonScroll={(data: { scrollLeft: number; scrollTop: number }) => emit(\"scroll\", data)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tappend: () => slots.append?.(),\n\t\t\t\t\t\t\tempty: () => (\n\t\t\t\t\t\t\t\t<div class=\"fa-table__empty\">\n\t\t\t\t\t\t\t\t\t{slots.empty ? (\n\t\t\t\t\t\t\t\t\t\tslots.empty()\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t<NotData />\n\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t<div>暂无数据</div>\n\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t{slots.expand && (\n\t\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__expand-column\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"expand\"\n\t\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\t\twidth={35}\n\t\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-expand\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\tdefault: ({\n\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t}: {\n\t\t\t\t\t\t\t\t\t\t\t\t\trow: DefaultRow;\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\t\t\t\t\t\t\t\t\t\t\t$index: number;\n\t\t\t\t\t\t\t\t\t\t\t\t}) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__expand-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.expand?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearch: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(state),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{props.selectionColumn && (\n\t\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__selection-column\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"selection\"\n\t\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\t\twidth={35}\n\t\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\t\treserveSelection\n\t\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-selection\"\n\t\t\t\t\t\t\t\t\t\t\tselectable={props.rowSelectable}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{props.indexColumn && (\n\t\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__index-column\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"index\"\n\t\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\t\twidth={\n\t\t\t\t\t\t\t\t\t\t\t\tstate.tablePagination.pageIndex * state.tablePagination.pageSize >= 100\n\t\t\t\t\t\t\t\t\t\t\t\t\t? state.tablePagination.pageIndex * state.tablePagination.pageSize >= 1000\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 50\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 40\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 30\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\t\tindex={indexMethod}\n\t\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-index\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{state.tableColumns.length === 0\n\t\t\t\t\t\t\t\t\t\t? slots.default?.()\n\t\t\t\t\t\t\t\t\t\t: state.tableColumns.map(\n\t\t\t\t\t\t\t\t\t\t\t\t(col) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tcol.show &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tcol.prop && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FaTableColumn\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvSlots={pick(slots, tableColumnSlotNames.value)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...omit(col, tableColumnOmitNames)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thideImage={props.hideImage}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresizable={true}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonImagePreview={handleImagePreview}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonCustomCellClick={handleCustomCellClick}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{slots.operation && (\n\t\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\t\tfixed=\"right\"\n\t\t\t\t\t\t\t\t\t\t\twidth={state.operationColumnWidth}\n\t\t\t\t\t\t\t\t\t\t\theaderAlign=\"center\"\n\t\t\t\t\t\t\t\t\t\t\talign=\"left\"\n\t\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__operation-column\"\n\t\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-operation\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\theader: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__auto-width-column__cell-header __fa-table__auto-width-column__cell-header____table-operation\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>操作</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tdefault: ({ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number }) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__auto-width-column__cell __fa-table__auto-width-column__cell____table-operation\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.operation?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearch: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(state),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</ElTable>\n\t\t\t\t\t<div class=\"fa-table__main-footer\">\n\t\t\t\t\t\t<div class=\"fa-table__main-footer__left\">{slots.footer?.({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t\t\t{slots.pagination ? (\n\t\t\t\t\t\t\tslots.pagination({\n\t\t\t\t\t\t\t\tpageIndex: state.tablePagination.pageIndex,\n\t\t\t\t\t\t\t\tpageSize: state.tablePagination.pageSize,\n\t\t\t\t\t\t\t\ttotalRows: state.tablePagination.totalRows,\n\t\t\t\t\t\t\t\thandleSizeChange,\n\t\t\t\t\t\t\t\thandlePaginationChange,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t{props.pagination ? (\n\t\t\t\t\t\t\t\t\t<FaTablePagination\n\t\t\t\t\t\t\t\t\t\tpageSizes={props.pageSizes}\n\t\t\t\t\t\t\t\t\t\tonSizeChange={handleSizeChange}\n\t\t\t\t\t\t\t\t\t\tonCurrentChange={handlePaginationChange}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<ElPagination class=\"fa-table-pagination\" size=\"small\" layout=\"total\" total={state.tableData.length} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{state.imagePreview && (\n\t\t\t\t\t<ElImageViewer\n\t\t\t\t\t\tcloseOnPressEscape\n\t\t\t\t\t\thideOnClickModal\n\t\t\t\t\t\tteleported\n\t\t\t\t\t\tshowProgress\n\t\t\t\t\t\tonClose={() => (state.imagePreview = false)}\n\t\t\t\t\t\turlList={state.previewList}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{props.columnSettingBtn && <FaTableColumnsSettingDialog ref={columnSettingRef} change={props.columnsChange} />}\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 用于多选表格，清空用户的选择 */\n\t\t\tclearSelection: computed(() => tableRef.value?.clearSelection),\n\t\t\t/** 返回当前选中的行 */\n\t\t\tgetSelectionRows: computed(() => tableRef.value?.getSelectionRows),\n\t\t\t/** 返回当前半选中的行。 */\n\t\t\tgetHalfSelectionRows: computed(() => tableRef.value?.getHalfSelectionRows),\n\t\t\t/** 用于多选表格，切换某一行的选中状态， 如果使用了第二个参数，则可直接设置这一行选中与否 */\n\t\t\ttoggleRowSelection: computed(() => tableRef.value?.toggleRowSelection),\n\t\t\t/** 用于多选表格，切换全选和全不选 */\n\t\t\ttoggleAllSelection: computed(() => tableRef.value?.toggleAllSelection),\n\t\t\t/** 用于可扩展的表格或树表格，如果某行被扩展，则切换。 使用第二个参数，您可以直接设置该行应该被扩展或折叠。 */\n\t\t\ttoggleRowExpansion: computed(() => tableRef.value?.toggleRowExpansion),\n\t\t\t/** 用于单选表格，设定某一行为选中行， 如果调用时不加参数，则会取消目前高亮行的选中状态。 */\n\t\t\tsetCurrentRow: computed(() => tableRef.value?.setCurrentRow),\n\t\t\t/** 用于清空排序条件，数据会恢复成未排序的状态 */\n\t\t\tclearSort: computed(() => tableRef.value?.clearSort),\n\t\t\t/** 传入由columnKey 组成的数组以清除指定列的过滤条件。 如果没有参数，清除所有过滤器 */\n\t\t\tclearFilter: computed(() => tableRef.value?.clearFilter),\n\t\t\t/** 对 Table 进行重新布局。 当表格可见性变化时，您可能需要调用此方法以获得正确的布局 */\n\t\t\tdoLayout: computed(() => tableRef.value?.doLayout),\n\t\t\t/** 手动排序表格。 参数 prop 属性指定排序列，order 指定排序顺序。 */\n\t\t\tsort: computed(() => tableRef.value?.sort),\n\t\t\t/** 滚动到一组特定坐标 */\n\t\t\tscrollTo: computed(() => tableRef.value?.scrollTo),\n\t\t\t/** 设置垂直滚动位置 */\n\t\t\tsetScrollTop: computed(() => tableRef.value?.setScrollTop),\n\t\t\t/** 设置水平滚动位置 */\n\t\t\tsetScrollLeft: computed(() => tableRef.value?.setScrollLeft),\n\t\t\t/** 获取表列的 context */\n\t\t\tcolumns: computed(() => tableRef.value?.columns),\n\t\t\t/** 适用于 lazy Table, 需要设置 rowKey, 更新 key children */\n\t\t\tupdateKeyChildren: computed(() => tableRef.value?.updateKeyChildren),\n\t\t\t/** 聚合加载状态；手动关闭不能结束内部任务。 */\n\t\t\tloading: computed({ get: () => state.loading, set: setManualLoading }),\n\t\t\t/** 表格数据 */\n\t\t\ttableData: computed(() => state.tableData),\n\t\t\t/** 分页数据 */\n\t\t\ttablePagination: computed(() => state.tablePagination),\n\t\t\t/** 搜索参数 */\n\t\t\tsearchParam: computed(() => state.searchParam),\n\t\t\t/** 选中状态 */\n\t\t\tselected: computed(() => state.selected),\n\t\t\t/** 选中数据列表 */\n\t\t\tselectedList: computed(() => state.selectedList),\n\t\t\t/** 选中数据 rowKey 列表 */\n\t\t\tselectedListIds: computed(() => state.selectedListIds),\n\t\t\t/** 部分选中数据 rowKey 列表 */\n\t\t\tindeterminateSelectedListIds: computed(() => state.indeterminateSelectedListIds),\n\t\t\t/** 表格宽度 */\n\t\t\ttableWidth: computed(() => state.tableWidth),\n\t\t\t/** 表格高度 */\n\t\t\ttableHeight: computed(() => state.tableHeight),\n\t\t\t/** 部分选中（样式不一样而已），用于多选表格，切换某一行的选中状态， 如果使用了第二个参数，则可直接设置这一行选中与否 */\n\t\t\ttoggleRowIndeterminateSelection,\n\t\t\t/** 异步方法，刷新表格 */\n\t\t\trefresh: tableSearch,\n\t\t\t/** 异步方法，重置表格 */\n\t\t\treset: tableReset,\n\t\t\t/** 对 Table 进行重新渲染。当 TableKey 发生变化的时候可以通过此方法重新渲染表格 */\n\t\t\tdoRender,\n\t\t\t/** Table 加载 */\n\t\t\tdoLoading,\n\t\t});\n\t},\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAgDA,MAAa,eAAe;CAC3B,GAAG;;CAEH,QAAQ;EACP,MAAM;EACN,SAAS;CACV;;CAEA,qBAAqB;EACpB,MAAM;EACN,SAAS;CACV;;CAEA,QAAQ;EACP,MAAM,CAAC,QAAQ,QAAQ;EACvB,SAAS;CACV;;CAEA,YAAY;EACX,MAAM;EACN,iBAAiB;GAChB,QAAQ,KAAK,kBAAkB,iCAAiC;GAChE,OAAO;EACR;CACD;;CAEA,UAAU;EACT,MAAM;EACN,eAAe,aAAa,CAAC;CAC9B;;CAEA,MAAM;EACL,MAAM,eAA6B,KAAK;EACxC,eAAe,CAAA;CAChB;;CAEA,YAAY,EACX,MAAM,eAAyF,QAAQ,EACxG;;CAEA,cAAc,EACb,MAAM,eAAuE,QAAQ,EACtF;;CAEA,WAAW,eAAoD;EAAC;EAAQ;EAAQ;CAAM,CAAC;;CAEvF,SAAS;EACR,MAAM,eAA2C,CAAC,OAAO,OAAO,CAAC;EACjE,eAAe;CAChB;;CAEA,eAAe,EACd,MAAM,eAA+D,QAAQ,EAC9E;;CAEA,gBAAgB;EACf,MAAM,eAAyE;GAAC;GAAQ;GAAQ;EAAM,CAAC;EACvG,gBAAgB;GAAE,IAAI;GAAG,IAAI;GAAG,IAAI;GAAG,IAAI;GAAG,IAAI;EAAE;CACrD;;CAEA,iBAAiB;EAChB,MAAM;EACN,SAAS;CACV;;CAEA,sBAAsB;EACrB,MAAM;EACN,SAAS;CACV;;CAEA,YAAY;EACX,MAAM;EACN,SAAS;CACV;;CAEA,YAAY;EACX,MAAM;EACN,SAAS;CACV;;CAEA,YAAY;EACX,MAAM;EACN,SAAS;CACV;;CAEA,WAAW;EACV,MAAM;EACN,SAAS;CACV;;CAEA,kBAAkB;EACjB,MAAM;EACN,SAAS;CACV;;CAEA,SAAS;EACR,MAAM;EACN,SAAS;CACV;;CAEA,gBAAgB;;CAEhB,kBAAkB;;CAElB,iBAAiB;EAChB,MAAM,eAAiC,MAAM;EAC7C,SAAS;CACV;;CAEA,iBAAiB;;CAEjB,aAAa;EACZ,MAAM;EACN,SAAS;CACV;;CAEA,YAAY;EACX,MAAM;EACN,SAAS;CACV;;CAEA,WAAW;EACV,MAAM,eAAyB,KAAK;EACpC,SAAS;GAAC;GAAI;GAAI;GAAI;EAAG;CAC1B;;CAEA,WAAW;;CAEX,QAAQ;;CAER,mBAAmB;;CAEnB,UAAU;;CAEV,OAAO;EACN,MAAM,eAAqD,MAAM;EACjE,gBAAgB;GACf,MAAM,KAAA;GACN,UAAU;EACX;CACD;;CAEA,aAAa;EACZ,MAAM;EACN,SAAS;CACV;;;;;CAKA,eAAe;AAChB;;AAGA,MAAa,eAAe;;CAE3B,SAAS,WAAyB,QAAoB,MAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ,YAAY,QAAQ;;CAErH,YAAY,cAA4B,MAAM,QAAQ,SAAS;;CAE/D,kBAAkB,iBAA+B,MAAM,QAAQ,YAAY;;CAE3E,iBAAiB,KAAiB,QAAoC,MAA4B,UACjG,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,gBAAgB,wBAChB,iBAAiB;;CAElB,iBAAiB,KAAiB,QAAoC,MAA4B,UACjG,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,gBAAgB,wBAChB,iBAAiB;;CAElB,YAAY,KAAiB,QAAoC,MAA4B,UAC5F,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,gBAAgB,wBAChB,iBAAiB;;CAElB,eAAe,KAAiB,QAAoC,MAA4B,UAC/F,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,gBAAgB,wBAChB,iBAAiB;;CAElB,kBAAkB,KAAiB,QAAoC,MAA4B,UAClG,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,gBAAgB,wBAChB,iBAAiB;;CAElB,WAAW,KAAiB,QAAoC,UAC/D,OAAO,QAAQ,YAAY,QAAQ,QAAQ,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAE9G,iBAAiB,KAAiB,QAAoC,UACrE,OAAO,QAAQ,YAAY,QAAQ,QAAQ,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAE9G,cAAc,KAAiB,QAAoC,UAClE,OAAO,QAAQ,YAAY,QAAQ,QAAQ,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAE9G,cAAc,QAAoC,UAAiB,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAErI,oBAAoB,QAAoC,UAAiB,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAE3I,aAAa,SACZ,OAAO,SAAS,YAAY,SAAS;;CAEtC,eAAe,eAAyC,OAAO,eAAe,YAAY,eAAe;;CAEzG,gBAAgB,YAAwB,kBACvC,OAAO,eAAe,YACtB,eAAe,SACd,kBAAkB,QAAS,OAAO,kBAAkB,YAAY,kBAAkB;;CAEpF,gBAAgB,UAAkB,UAAkB,QAAoC,UACvF,OAAO,aAAa,YAAY,OAAO,aAAa,YAAY,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAEnI,eAAe,KAAiB,aAC/B,OAAO,QAAQ,YAAY,QAAQ,SAAS,OAAO,aAAa,aAAa,MAAM,QAAQ,QAAQ;;CAEpG,SAAS,SAAoD,OAAO,SAAS,YAAY,SAAS;;CAGlG,UAAU,WAAuB,OAAO,WAAW,YAAY,WAAW;;CAE1E,QAAQ,WAAuB,OAAO,WAAW,YAAY,WAAW;;CAExE,aAAa,aAAqB,OAAO,aAAa;;CAEtD,mBAAmB,WAAmB,aAAqB,OAAO,cAAc,YAAY,OAAO,aAAa;;CAEhH,kBACC,UACA,EAAE,KAAK,QAAQ,cAEd,YAAY,QAAQ,OAAO,aAAa,aACzC,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,OAAO,WAAW;AACpB;AAwDA,IAAA,gBAAe,gBAAgB;CAC9B,MAAM;CACN,OAAO;CACP,OAAO;CACP,OAAO,UAAwB;CAC/B,MAAM,OAAO,EAAE,OAAO,MAAM,UAAU;EACrC,MAAM,mBAAmB,WAAoE,IAAI;EAEjG,MAAM,EACL,YACA,OACA,YACA,UACA,4BACA,kBACA,kBACA,wBACA,mBACA,aACA,YACA,UACA,kBACA,WACA,0BACG,SAAS,OAAO,OAAO,IAAI;EAE/B,MAAM,sBAAsB,eAAe,MAAM,gBAAgB,MAAM,UAAU,GAAG,GAAG;EACvF,MAAM,qBAAqB,SAAS,4BAA4B,GAAG;EAEnE,MAAM,iCAAiB,IAAI,MAAM,uBAAuB;EACxD,MAAM,oBAAoB,SAA2B;GACpD,KAAK,OAAO,UAAmB;IAC9B,IAAI,UAAU,gBAAgB,QAAQ,MAAM,kBAAkB,KAAK;GACpE,CAAC;EACF;EAEA,IAAI,eAAe;EACnB,MAAM,qBAA8C;GACnD,OAAO,OAAO,MAAM,cAAc,YAAY,MAAM,cAAc,OAAO,MAAM,YAAY,CAAC;EAC7F;EACA,MAAM,aAAa,QAAoB;GACtC,MAAM,QAAiB,OAAO,MAAM,WAAW,aAAa,MAAM,OAAO,GAAG,IAAI,UAAU,yBAAyB,KAAK,MAAM,MAAM;GACpI,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW,QAAQ,KAAA;EACzE;EAEA,MAAM,eAAe,UAAkB;GACtC,IAAI,UAAU,GACb,eAAe;GAEhB,IAAI,MAAM,YAAY,SAAS,GAAG;IAEjC,KADgB,MAAM,cAAc,gBAAgB,GAAG,UAAU,OACjD,GACf,OAAO,gBAAgB,MAAM,gBAAgB,YAAY,KAAK,MAAM,gBAAgB,WAAW;SACzF;KACN;KACA,OAAO,gBAAgB,MAAM,gBAAgB,YAAY,KAAK,MAAM,gBAAgB;IACrF;GACD;GACA,OAAO,SAAS,MAAM,gBAAgB,YAAY,KAAK,MAAM,gBAAgB,WAAW;EACzF;EAEA,MAAM,gBAAgB,WAAyB,QAAoB;GAElE,IAAI,MAAM,QAAQ;IACjB,SAAS,OAAO,eAAe;IAC/B,IAAI,UAAU,SAAS,GACtB,SAAS,OAAO,mBAAmB,GAAG;GAExC;GACA,KAAK,UAAU,WAAW,GAAG;EAC9B;EAEA,MAAM,mBAAmB,cAA4B;GACpD,IAAI,MAAM,QAAQ;IAEjB,IAAI,MAAM,UAEL;SAAA,MAAM,UAAU,SAAS,GAAG;MAC/B,SAAS,OAAO,eAAe;MAC/B,MAAM,WAAW,MAAM,UAAU;MACjC,IAAI,UAAU,SAAS,OAAO,mBAAmB,QAAQ;KAC1D;WAEA,SAAS,OAAO,eAAe;GAEjC;GACA,KAAK,aAAa,SAAS;EAC5B;EAEA,MAAM,yBAAyB,iBAA+B;GAC7D,aAAa,WAAW,IAAK,MAAM,WAAW,QAAU,MAAM,WAAW;GAEzE,IAAI,MAAM,UAAU,aAAa,SAAS,GAAG;IAE5C,MAAM,gBAAgB,aAAa,GAAG,EAAE;IACxC,MAAM,eAAe,kBAAkB,KAAA,IAAY,CAAA,IAAK,CAAC,aAAa;GACvE,OACC,MAAM,eAAe;GAGtB,MAAM,+BAA+B,MAAM,6BAA6B,QAAQ,MAAM,MAAM,gBAAgB,MAAM,MAAM,MAAM,CAAC,CAAC;GAChI,KAAK,mBAAmB,MAAM,YAAY;EAC3C;EAEA,MAAM,mCAAmC,KAAiB,aAAuB;GAChF,MAAM,SAAS,UAAU,GAAG;GAC5B,IAAI,WAAW,KAAA,GAAW;GAC1B,MAAM,SAAS,MAAM,UAAU,MAAM,SAAS,UAAU,IAAI,MAAM,MAAM;GACxE,IAAI,aAAa,MAAM;IACtB,IAAI,CAAC,MAAM,6BAA6B,MAAM,MAAM,MAAM,MAAM,GAC/D,MAAM,6BAA6B,KAAK,MAAM;IAE/C,IAAI,QAAQ,SAAS,OAAO,mBAAmB,QAAQ,IAAI;GAC5D,OAAO,IAAI,aAAa,OAAO;IAC9B,MAAM,SAAS,MAAM,6BAA6B,WAAW,MAAM,MAAM,MAAM;IAC/E,IAAI,UAAU,GACb,MAAM,6BAA6B,OAAO,QAAQ,CAAC;IAEpD,IAAI,QAAQ,SAAS,OAAO,mBAAmB,QAAQ,KAAK;GAC7D,OAAO;IACN,MAAM,SAAS,MAAM,6BAA6B,WAAW,MAAM,MAAM,MAAM;IAC/E,IAAI,UAAU,GACb,MAAM,6BAA6B,OAAO,QAAQ,CAAC;SAEnD,MAAM,6BAA6B,KAAK,MAAM;IAE/C,IAAI,QAAQ,SAAS,OAAO,mBAAmB,MAAM;GACtD;EACD;EAEA,MAAM,oBAAoB,EACzB,QACA,WAKK;GACL,MAAM,iBAAiB,QAAQ,OAAO;GACtC,IAAI,CAAC,OAAO,YACX,OAAO,aAAa;QACd,IAAI,OAAO,eAAe,cAChC,OAAO,aAAa;QAEpB,OAAO,aAAa,KAAA;GAGrB,MAAM,eAAwB,aAAa,CAAC,CAAC;GAC7C,MAAM,YAAY,WAAW,CAC5B,GAAI,MAAM,QAAQ,YAAY,IAAK,eAAoC,CAAA,GACvE,GAAI,MAAM,YAAY,YAAY,CAAA,CAAG,CACrC,CAAC,QAAQ,MAAM,OAAO,SAAS,KAAK,WAAW,cAAc,UAAU,YAAY,KAAK,OAAO,MAAM,KAAK;GAG3G,MAAM,YAAY,MAAM,WAAW,MAAM,MAAM,EAAE,SAAS,cAAc;GACxE,MAAM,UAAU,WAAW,iBAAiB,WAAW,QAAQ,OAAO;GACtE,MAAM,aAAa,MAAM,YAAY,SAAS,WAAW,MAAsB,EAAE,YAAY,OAAO;GACpG,IAAI,CAAC,OAAO,cAAc,cAAc,GAEvC,MAAM,YAAY,SAAS,OAAO,YAAY,CAAC;QACzC,IAAI,eAAe,IACzB,MAAM,YAAY,SAAS,KAAK;IAC/B;IACA,SAAS,OAAO;IAChB,MAAM,OAAO;GACd,CAAC;QACK;IACN,MAAM,WAAW,MAAM,YAAY,SAAS;IAC5C,IAAI,UAAU,SAAS,OAAO,OAAO;GACtC;GAEA,IAAI,MAAM,YAAY,SAAS,WAAW,GACzC,OAAO,MAAM,YAAY;GAE1B,KAAK,cAAc;IAAE;IAAQ,MAAM;IAAgB,OAAO,OAAO,cAAc;GAAG,CAAC;GACnF,YAAY;EACb;EAEA,MAAM,uBAAuB,YAA+B,kBAAqC;GAChG,IAAI,CAAC,YAGJ;GAED,IAAI,MAAM,mBAAmB;IAE5B,IAAI,MAAM,UAAU,eACnB,SAAS,OAAO,mBAAmB,aAAa;IAEjD,SAAS,OAAO,mBAAmB,UAAU;GAC9C;GACA,KAAK,iBAAiB,YAAY,aAAa;EAChD;EAEA,MAAM,uBAAuB,EAC5B,KACA,QACA,UACA,kBAMK;GACL,IAAI,qBAAqB;GAEzB,IAAI,OAAO,SAAS,aAAa;IAEhC,MAAM,SAAS,UAAU,GAAG;IAC5B,IAAI,MAAM,6BAA6B,MAAM,MAAM,MAAM,MAAM,GAC9D,sBAAsB;GAExB;GACA,MAAM,aAAa,MAAM,aAAa,MAAM,MAAM,EAAE,SAAS,OAAO,QAAQ;GAC5E,IAAI,YAAY,iBACX;QAAA,IAAI,WAAW,qBAAqB,MACvC,sBAAsB;GAAA;GAGxB,IAAI,MAAM,eAAe;IACxB,MAAM,gBACL,OAAO,MAAM,kBAAkB,WAAW,MAAM,gBAAgB,MAAM,cAAc;KAAE;KAAK;KAAQ;KAAU;IAAY,CAAC;IAC3H,IAAI,CAAC,eACJ,OAAO;IAER,OAAO,GAAG,mBAAkB,GAAI;GACjC,OACC,OAAO;EAET;EAEA,MAAM,6BAA6B,EAClC,KACA,QACA,UACA,kBAMK;GAEL,OAAO,QAAQ,OAAO,eAAe,eAAe,OAAO,eAAe,eAAe,OAAO,aAAa;GAC7G,IAAI,MAAM,qBAAqB;IAC9B,MAAM,sBACL,OAAO,MAAM,wBAAwB,aAClC,MAAM,oBAAoB;KAAE;KAAK;KAAQ;KAAU;IAAY,CAAC,IAChE,MAAM;IACV,OAAO,sBAAsB,yBAAyB,wBAAwB;GAC/E;GACA,OAAO;EACR;EAEA,MAAM,oBAAoB,EACzB,QACA,eAMK;;GAEL,MAAM,WAAW,OAAO;GACxB,MAAM,YAAY,OAAO;GACzB,MAAM,OAAO,YAAY;GACzB,IAAI,SAAS,KAAA,KAAa,SAAS,MAAM,OAAO;IAAE,SAAS;IAAG,SAAS;GAAE;GACzE,IAAI,MAAM,YAAY,WAAW,MAAM,EAAE,SAAS,IAAI,MAAM,IAAI;IAC/D,MAAM,UAAU,MAAM,cAAc,KAAK,GAAG,aAAa;IACzD,IAAI,UAAU,GACb,OAAO;KAAE;KAAS,SAAS;IAAE;IAE9B,OAAO;KAAE,SAAS;KAAG,SAAS;IAAE;GACjC;GACA,OAAO;IAAE,SAAS;IAAG,SAAS;GAAE;EACjC;EAEA,MAAM,uBAAuB,UAAkB,UAAkB,QAAoC,UAAsB;GAC1H,MAAM,WAAW,SAAS,MAAM;IAC/B,IAAI,OAAO,aAAa,EAAE,MAAM;KAC/B,EAAE,QAAQ;KACV,EAAE,aAAa;IAChB;GACD,CAAC;GACD,KAAK,iBAAiB,UAAU,UAAU,QAAQ,KAAK;GACvD,IAAI,MAAM,eAAe,iBAAiB,oBAAoB,CAAC;EAChE;EAEA,MAAM,sBAAsB,QAAgB;GAC3C,MAAM,cAAc,CAAC,GAAG;GACxB,MAAM,eAAe;EACtB;EAEA,MAAM,uBAAuB;GAAC;GAAc;GAAY;GAAS;GAAiB;GAAoB;GAAY;GAAc;EAAQ;EACxI,MAAM,sBAAsB,eAAe,CAC1C,GAAG,IAAI,IAAI,MAAM,cAAc,SAAS,WAAY,OAAO,OAAO,QAAQ,SAAS,WAAW,CAAC,OAAO,OAAO,IAAI,IAAI,CAAA,CAAG,CAAC,CAAC,CAC1H;EACD,MAAM,uBAAuB,eAAe,CAC3C,GAAG,IAAI,IAAI,MAAM,aAAa,SAAS,WAAW,CAAC,OAAO,MAAM,OAAO,UAAU,CAAC,CAAC,QAAQ,SAAS,OAAO,SAAS,QAAQ,CAAC,CAAC,CAAC,CAC/H;EACD,MAAM,uBAAuB,eAAe;GAC3C,MAAM,QAAQ,MAAM,YAAY;GAChC,OAAQ,UAAU,KAAA,KAAa,UAAU,MAAO,MAAM,kBAAkB,SAAS;EAClF,CAAC;EAED,YACO,MAAM,eACN;GACL,iBAAiB;EAClB,GACA,EAAE,MAAM,KAAK,CACd;EAEA,YACO,MAAM,iBACN;GAEL,OAAO,QAAQ,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;IACxD,MAAM,YAAY,OAAO;GAC1B,CAAC;EACF,GACA,EAAE,MAAM,KAAK,CACd;EAEA,YACO,MAAM,YACN;GACL,IAAI,CAAC,MAAM,cAAc,MAAM,aAC9B,OAAO,YAAY;EAErB,GACA,EAAE,MAAM,KAAK,CACd;EAEA,aAAa,cAAc;GAC1B,MAAM,UAAU,WAAW;GAC3B,IAAI,SAAS;IACZ,MAAM,WAAW,IAAI,gBAAgB,YAAY;KAChD,KAAK,MAAM,SAAS,SAAS;MAC5B,MAAM,EAAE,OAAO,WAAW,MAAM;MAChC,MAAM,eAAe,MAAM,eAAe;MAC1C,MAAM,aAAa;MACnB,MAAM,cAAc;MACpB,IAAI,cAAc,iBAAiB,mBAAmB,CAAC;KACxD;IACD,CAAC;IACD,SAAS,QAAQ,OAAO;IAExB,gBAAgB,SAAS,WAAW,CAAC;GACtC;EACD,CAAC;EAED,sBAAsB;GACrB,oBAAoB,OAAO,cAAc;GACzC,mBAAmB,OAAO,cAAc;EACzC,CAAC;EAED,UAAU,YAAY;GACrB,MAAM,YAAY,aAAa;GAC/B,kBAAkB;GAElB,OAAO,QAAQ,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;IACxD,MAAM,YAAY,OAAO;GAC1B,CAAC;GACD,MAAM,YAAY;GAClB,iBAAiB;GACjB,IAAI,CAAC,MAAM,cAAc,MAAM,aAAa,MAAM,YAAY;EAC/D,CAAC;EAED,kBAAkB;GAEjB,2BAA2B;EAC5B,CAAC;EAED,MAAM,eAAe,SAAS,OAAO,YAAY;GAAC;GAAQ;GAAc;GAAuB;EAAe,CAAC;EAE/G,gBAAU,YAAA,OAAA;GAAA,OAEH;GAAU,SACR;IAAC;IAAY,YAAY,WAAW;IAAS,aAAa,MAAM;IAAY,EAAE,qBAAqB,MAAM,QAAQ;GAAC;GAAC,SACnH;IACN,oBAAoB,MAAM,aAAa,GAAG,MAAM,WAAU,MAAO;IACjE,qBAAqB,MAAM,cAAc,GAAG,MAAM,YAAW,MAAO;GACrE;EAAC,GAAA;GAAA,YAAA,yBAAA;IAAA,QAIM,MAAM,cAAc,MAAM;IAAU,mBACzB,MAAM;IAAe,wBAChB,MAAM;IAAoB,QAC1C,MAAM;IAAc,UAClB;IAAW,SACZ;GAAU,GANT,KAAK,OAAO,oBAAoB,KAAK,CAAC;GAQ9C,MAAM,aAAS,YAAA,OAAA,EAAA,SAAA,2BAAA,GAAA,CACwB,MAAM,UAAU;IAAE,QAAQ;IAAa,GAAG,qBAAqB,KAAK;GAAE,CAAC,CAAC,CAAA;GAC/G,YAAA,OAAA;IAAA,SAAA;IAAA,SAGO,EACN,eAAe,MAAM,SAAS,gBAAgB,KAAA,EAC/C;GAAC,GAAA;IAEA,MAAM,cAAU,YAAA,OAAA,EAAA,SAAA,wBAAA,GAAA,CAAA,YAAA,OAAA,EAAA,SAAA,6BAAA,GAAA,CAE0B,MAAM,SAAS;KAAE,QAAQ;KAAa,GAAG,qBAAqB,KAAK;IAAE,CAAC,CAAC,CAAA,GAAA,YAAA,OAAA,EAAA,SAAA,8BAAA,GAAA,CAE9G,MAAM,WAAO,YAAA,UAAA,MAAA;KAAA,YAAA,OAAA,EAAA,SAAA,0CAAA,GAAA,CAAA,YAAA,SAAA;MAAA,SAAA;MAAA,YAKA,MAAM;MAAO,cACX;MAAM,eAAA;MAAA,cAEL,MAAM,YAAY;MAAW,kBAAA,EAAA,QAAA,KAAA;MAAA,wBAAA,WAA7B,MAAM,YAAY,cAAW;MAAA,aAC/B,qBAAqB;MAAK,wBACf,MAAwB;OAC7C,MAAM,oBAAoB,EAAE;MAC7B;MAAC,0BACuB;OACvB,MAAM,oBAAoB;MAC3B;MAAC,YACS;KAAW,GAAA,IAAA,GAAA,YAAA,OAAA,EAAA,SAAA,kDAAA,GAAA,CAGpB,MAAM,YAAY,aAClB,MAAM,iBAAiB,CAAA,CAAA,CAAA;KAGzB,MAAM,cAAc,CAAC,MAAM,kBAAc,YAAA,cAAA,WAAA,EAIvC,UAAU,YAAW,GAAA;MAAA,SAAA;MAAA,eAGT,qGAAqG,WAAW;MAAO,YAC1H,MAAM;MAAO,QAAA;MAAA,cAEf,MAAM,YAAY;MAAc,wBAAA,WAAhC,MAAM,YAAY,iBAAc;MAAA,eAC3B,6BAA6B,MAAM,gBAAgB;MAAC,aACtD,yBAAyB,MAAM,gBAAgB;MAAC,eAAA;MAAA,aAEhD;MAAK,aAAA;MAAA,sBAEI,CAAC,KAAK;MAAC,gBAAA;KAAA,CAAA,GAAA,IAAA;KAI5B,MAAM,cAAU,YAAA,UAAA;MAAA,WAEN,MAAM;MAAO,eACT;MAAK,SAAA;MAAA,UAAA;MAAA,QAGZ;MAAO,WACJ;KAAW,GAAA,IAAA;KAGrB,MAAM,aAAa,MAAM,cAAc,SAAS,KAAC,YAAA,UAAA;MAAA,WAEvC,MAAM;MAAO,eACT;MAAK,SACX,MAAM,aAAa,UAAU;MAAO,UAAA;MAAA,QAErC;MAAM,iBACI,MAAM,aAAa,CAAC,MAAM;KAAW,GAAA,IAAA;KAGtD,MAAM,oBAAoB,MAAM,WAAO,YAAA,YAAA;MAAA,SAAA;MAAA,WAAA;KAAA,GAAA;MAGrC,eAAS,YAAA,UAAA;OAAA,WAAyB,MAAM;OAAO,eAAe;OAAK,UAAA;OAAA,QAAe;MAAO,GAAA,IAAA;MACzF,gBAAU,YAAA,gBAAA,MAAA,EAAA,eAAA,CAEP,MAAM,gBAAgB,GAAC,YAAA,gBAAA;OAAA,SAAA;OAAA,WAAA;OAAA,iBAC6B,iBAAiB,OAAO,KAAK;MAAC,GAAA,EAAA,eAAA,CAAA,gBAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA;KAIpF,CAAA;KAIH,MAAM,aAAa;MAAE,QAAQ;MAAa,GAAG,qBAAqB,KAAK;KAAE,CAAC;KAC1E,MAAM,iBAAa,YAAA,YAAA;MAAA,SAAA;MAAA,WAAA;KAAA,GAAA;MAGjB,eAAS,YAAA,UAAA;OAAA,WACW,MAAM;OAAO,eAAe;OAAK,UAAA;OAAA,QAAe;MAAI,GAAA,IAAA;MAExE,gBAAU,YAAA,gBAAA,MAAA,EAAA,eAAA,CAEP,MAAM,gBAAgB;OAAE,QAAQ;OAAa,GAAG,qBAAqB,KAAK;MAAE,CAAC,CAAC,EAAA,CAAA;KAEhF,CAAA;IAGH,CAAA,CAEF,CAAA,CAAA,CAAA;IAGH,eAAA,YAAA,SAAA,WAEI,aAAa,OAAK;KAAA,SAAA;KAAA,OAEjB;KAAQ,wBAES,MAAM;KAAW,QACjC,MAAM;KAAS,cACT;KAAgB,uBACP;KAAyB,iBAC/B;KAAmB,sBACd;KAAqB,iBAC1B;KAAgB,YACrB;KAAY,gBACR;KAAe,oBACX;KAAmB,oBACnB;KAAmB,uBAChB,KAAiB,QAAoC,MAA4B,UACrG,KAAK,kBAAkB,KAAK,QAAQ,MAAM,KAAK;KAAC,uBAE5B,KAAiB,QAAoC,MAA4B,UACrG,KAAK,kBAAkB,KAAK,QAAQ,MAAM,KAAK;KAAC,iBAElC,KAAiB,QAAoC,MAA4B,UAC/F,KAAK,aAAa,KAAK,QAAQ,MAAM,KAAK;KAAC,oBAE1B,KAAiB,QAAoC,MAA4B,UAClG,KAAK,gBAAgB,KAAK,QAAQ,MAAM,KAAK;KAAC,uBAE1B,KAAiB,QAAoC,MAA4B,UACrG,KAAK,mBAAmB,KAAK,QAAQ,MAAM,KAAK;KAAC,gBAEpC,KAAiB,QAA2C,UAAiB;MAC1F,IAAI,QAAQ,KAAK,YAAY,KAAK,QAAQ,KAAK;KAChD;KAAC,sBACmB,KAAiB,QAA2C,UAAiB;MAChG,IAAI,QAAQ,KAAK,kBAAkB,KAAK,QAAQ,KAAK;KACtD;KAAC,mBACgB,KAAiB,QAA2C,UAAiB;MAC7F,IAAI,QAAQ,KAAK,eAAe,KAAK,QAAQ,KAAK;KACnD;KAAC,mBACgB,QAAoC,UAAiB,KAAK,eAAe,QAAQ,KAAK;KAAC,yBACjF,QAAoC,UAAiB,KAAK,qBAAqB,QAAQ,KAAK;KAAC,oBAClG,eAAyC,KAAK,gBAAgB,UAAU;KAAC,oBACzE,KAAiB,aAAqC,KAAK,gBAAgB,KAAK,QAAQ;KAAC,aAChG,SAAoD,KAAK,UAAU,IAAI;IAAC,CAAA,GAAA;KAGlF,cAAc,MAAM,SAAS;KAC7B,aAAO,YAAA,OAAA,EAAA,SAAA,kBAAA,GAAA,CAEJ,MAAM,QACN,MAAM,MAAM,IAAC,YAAA,UAAA,MAAA,CAAA,YAAA,QAAA,MAAA,EAAA,eAAA,CAAA,YAAA,SAAA,MAAA,IAAA,CAAA,EAAA,CAAA,GAAA,YAAA,OAAA,MAAA,CAAA,gBAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAQb,CAAA;KAGH,eAAS,YAAA,UAAA,MAAA;MAEN,MAAM,UAAM,YAAA,eAAA;OAAA,aAAA;OAAA,QAAA;OAAA,SAAA;OAAA,SAKJ;OAAE,SAAA;OAAA,uBAEY;OAAK,aACf;OAAK,aAAA;MAAA,GAAA,EAIf,UAAU,EACT,KACA,QACA,aAKA,YAAA,OAAA,EAAA,SAAA,2BAAA,GAAA,CAEE,MAAM,SAAS;OACf;OACA;OACA;OACA,QAAQ;OACR,GAAG,qBAAqB,KAAK;MAC9B,CAAC,CAAC,CAAA,EAEH,CAAA;MAIH,MAAM,mBAAe,YAAA,eAAA;OAAA,aAAA;OAAA,QAAA;OAAA,SAAA;OAAA,SAKb;OAAE,SAAA;OAAA,oBAAA;OAAA,uBAGY;OAAK,aACf;OAAK,aAAA;OAAA,cAEJ,MAAM;MAAa,GAAA,IAAA;MAGhC,MAAM,eAAW,YAAA,eAAA;OAAA,aAAA;OAAA,QAAA;OAAA,SAAA;OAAA,SAMf,MAAM,gBAAgB,YAAY,MAAM,gBAAgB,YAAY,MACjE,MAAM,gBAAgB,YAAY,MAAM,gBAAgB,YAAY,MACnE,KACA,KACD;OAAE,SAAA;OAAA,SAGC;OAAW,uBACG;OAAK,aACf;OAAK,aAAA;MAAA,GAAA,IAAA;MAIjB,MAAM,aAAa,WAAW,IAC5B,MAAM,UAAU,IAChB,MAAM,aAAa,KAClB,QACA,IAAI,QACJ,IAAI,QAAI,YAAA,qBAAA,WAGF,KAAK,KAAK,oBAAoB,GAAC;OAAA,aACxB,MAAM;OAAS,aACf;OAAI,kBACC;OAAkB,qBACf;MAAqB,CAAA,GALhC,KAAK,OAAO,qBAAqB,KAAK,CAAC,CAQnD;MACD,MAAM,aAAS,YAAA,eAAA;OAAA,SAAA;OAAA,SAGP,MAAM;OAAoB,eAAA;OAAA,SAAA;OAAA,uBAGZ;OAAK,aAAA;OAAA,aAEf;OAAK,aAAA;MAAA,GAAA;OAIf,cAAQ,YAAA,OAAA,EAAA,SAAA,yGAAA,GAAA,CAAA,YAAA,QAAA,MAAA,CAAA,gBAAA,IAAA,CAAA,CAAA,CAAA,CAAA;OAKR,UAAU,EAAE,KAAK,QAAQ,aAAuE,YAAA,OAAA,EAAA,SAAA,2FAAA,GAAA,CAE7F,MAAM,YAAY;QAClB;QACA;QACA;QACA,QAAQ;QACR,GAAG,qBAAqB,KAAK;OAC9B,CAAC,CAAC,CAAA;MAEH,CAAA;KAGH,CAAA;IAEF,CAAA,GAAA,CAAA,CAAA,iBAAA,SAAA,GA/KQ,MAAM,OAAO,CAAA,CAAA;IAAA,YAAA,OAAA,EAAA,SAAA,wBAAA,GAAA,CAAA,YAAA,OAAA,EAAA,SAAA,8BAAA,GAAA,CAmLmB,MAAM,SAAS;KAAE,QAAQ;KAAa,GAAG,qBAAqB,KAAK;IAAE,CAAC,CAAC,CAAA,GAChH,MAAM,aACN,MAAM,WAAW;KAChB,WAAW,MAAM,gBAAgB;KACjC,UAAU,MAAM,gBAAgB;KAChC,WAAW,MAAM,gBAAgB;KACjC;KACA;IACD,CAAC,IAAC,YAAA,UAAA,MAAA,CAGA,MAAM,aAAU,YAAA,yBAAA;KAAA,aAEJ,MAAM;KAAS,gBACZ;KAAgB,mBACb;IAAsB,GAAA,IAAA,IAAA,YAAA,cAAA;KAAA,SAAA;KAAA,QAAA;KAAA,UAAA;KAAA,SAGqC,MAAM,UAAU;IAAM,GAAA,IAAA,CACnG,CAAA,CAEF,CAAA;GAAA,CAAA;GAGF,MAAM,gBAAY,YAAA,eAAA;IAAA,sBAAA;IAAA,oBAAA;IAAA,cAAA;IAAA,gBAAA;IAAA,iBAMD,MAAM,eAAe;IAAM,WAClC,MAAM;GAAW,GAAA,IAAA;GAG3B,MAAM,oBAAgB,YAAA,kCAAA;IAAA,OAAsC;IAAgB,UAAU,MAAM;GAAa,GAAA,IAAA;EAAI,CAAA,CAE/G;EAED,OAAO,UAAU,QAAQ;;GAExB,gBAAgB,eAAe,SAAS,OAAO,cAAc;;GAE7D,kBAAkB,eAAe,SAAS,OAAO,gBAAgB;;GAEjE,sBAAsB,eAAe,SAAS,OAAO,oBAAoB;;GAEzE,oBAAoB,eAAe,SAAS,OAAO,kBAAkB;;GAErE,oBAAoB,eAAe,SAAS,OAAO,kBAAkB;;GAErE,oBAAoB,eAAe,SAAS,OAAO,kBAAkB;;GAErE,eAAe,eAAe,SAAS,OAAO,aAAa;;GAE3D,WAAW,eAAe,SAAS,OAAO,SAAS;;GAEnD,aAAa,eAAe,SAAS,OAAO,WAAW;;GAEvD,UAAU,eAAe,SAAS,OAAO,QAAQ;;GAEjD,MAAM,eAAe,SAAS,OAAO,IAAI;;GAEzC,UAAU,eAAe,SAAS,OAAO,QAAQ;;GAEjD,cAAc,eAAe,SAAS,OAAO,YAAY;;GAEzD,eAAe,eAAe,SAAS,OAAO,aAAa;;GAE3D,SAAS,eAAe,SAAS,OAAO,OAAO;;GAE/C,mBAAmB,eAAe,SAAS,OAAO,iBAAiB;;GAEnE,SAAS,SAAS;IAAE,WAAW,MAAM;IAAS,KAAK;GAAiB,CAAC;;GAErE,WAAW,eAAe,MAAM,SAAS;;GAEzC,iBAAiB,eAAe,MAAM,eAAe;;GAErD,aAAa,eAAe,MAAM,WAAW;;GAE7C,UAAU,eAAe,MAAM,QAAQ;;GAEvC,cAAc,eAAe,MAAM,YAAY;;GAE/C,iBAAiB,eAAe,MAAM,eAAe;;GAErD,8BAA8B,eAAe,MAAM,4BAA4B;;GAE/E,YAAY,eAAe,MAAM,UAAU;;GAE3C,aAAa,eAAe,MAAM,WAAW;;GAE7C;;GAEA,SAAS;;GAET,OAAO;;GAEP;;GAEA;EACD,CAAC;CACF;AACD,CAAC"}