element-plus
Version:
A Component Library for Vue 3
1 lines • 37.7 kB
Source Map (JSON)
{"version":3,"file":"watcher.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/watcher.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, toRefs, unref, watch } from 'vue'\nimport { ensureArray, hasOwn, isArray, isString } from '@element-plus/utils'\nimport {\n getColumnById,\n getColumnByKey,\n getKeysMap,\n getRowIdentity,\n orderBy,\n toggleRowStatus,\n} from '../util'\nimport useExpand from './expand'\nimport useCurrent from './current'\nimport useTree from './tree'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type {\n DefaultRow,\n Table,\n TableRefs,\n TableSortOrder,\n} from '../table/defaults'\nimport type { StoreFilter } from '.'\n\nconst sortData = <T extends DefaultRow>(\n data: T[],\n states: {\n sortingColumn: TableColumnCtx<T> | null\n sortProp: string | null\n sortOrder: string | number | null\n }\n) => {\n const sortingColumn = states.sortingColumn\n if (!sortingColumn || isString(sortingColumn.sortable)) {\n return data\n }\n return orderBy(\n data,\n states.sortProp,\n states.sortOrder,\n sortingColumn.sortMethod,\n sortingColumn.sortBy\n )\n}\n\nconst doFlattenColumns = <T extends DefaultRow>(\n columns: TableColumnCtx<T>[]\n) => {\n const result: TableColumnCtx<T>[] = []\n columns.forEach((column) => {\n if (column.children && column.children.length > 0) {\n // eslint-disable-next-line prefer-spread\n result.push.apply(result, doFlattenColumns(column.children))\n } else {\n result.push(column)\n }\n })\n return result\n}\n\nfunction useWatcher<T extends DefaultRow>() {\n const instance = getCurrentInstance() as Table<T>\n const { size: tableSize } = toRefs(instance.proxy?.$props as any)\n const rowKey: Ref<string | null> = ref(null)\n const data: Ref<T[]> = ref([])\n const _data: Ref<T[]> = ref([])\n const isComplex = ref(false)\n const _columns: Ref<TableColumnCtx<T>[]> = ref([])\n const originColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const columns: Ref<TableColumnCtx<T>[]> = ref([])\n const fixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const rightFixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const leafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const fixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const rightFixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const updateOrderFns: (() => void)[] = []\n const leafColumnsLength = ref(0)\n const fixedLeafColumnsLength = ref(0)\n const rightFixedLeafColumnsLength = ref(0)\n const isAllSelected = ref(false)\n const selection: Ref<T[]> = ref([])\n const selectionIndeterminate = ref<Record<string, boolean>>({})\n const reserveSelection = ref(false)\n const selectOnIndeterminate = ref(false)\n const selectable: Ref<((row: T, index: number) => boolean) | null> = ref(null)\n const rowExpandable: Ref<((row: T, index: number) => boolean) | null> =\n ref(null)\n const filters: Ref<StoreFilter> = ref({})\n const filteredData: Ref<T[] | null> = ref(null)\n const sortingColumn: Ref<TableColumnCtx<T> | null> = ref(null)\n const sortProp: Ref<string | null> = ref(null)\n const sortOrder: Ref<string | number | null> = ref(null)\n const hoverRow: Ref<T | null> = ref(null)\n\n const selectedMap = computed(() => {\n return rowKey.value ? getKeysMap(selection.value, rowKey.value) : undefined\n })\n\n const getRowChildren = (row: T): T[] => {\n const { childrenColumnName, lazyTreeNodeMap } = instance.store.states\n const inlineChildren = (row[childrenColumnName.value] ?? []) as T[]\n if (!rowKey.value) return inlineChildren\n const id = getRowIdentity(row, rowKey.value)\n const lazyChildren = (lazyTreeNodeMap.value?.[id] ?? []) as T[]\n return [...lazyChildren, ...inlineChildren]\n }\n\n watch(\n data,\n () => {\n if (instance.state) {\n scheduleLayout(false)\n const needUpdateFixed = instance.props.tableLayout === 'auto'\n if (needUpdateFixed) {\n instance.refs.tableHeaderRef?.updateFixedColumnStyle()\n }\n }\n },\n {\n deep: true,\n }\n )\n\n const assertRowKey = () => {\n if (!rowKey.value) throw new Error('[ElTable] prop row-key is required')\n }\n\n const updateChildFixed = (column: TableColumnCtx<T>) => {\n column.children?.forEach((childColumn) => {\n childColumn.fixed = column.fixed\n updateChildFixed(childColumn)\n })\n }\n\n const updateColumns = () => {\n _columns.value.forEach((column) => {\n updateChildFixed(column)\n })\n fixedColumns.value = _columns.value.filter((column) =>\n [true, 'left'].includes(column.fixed)\n )\n\n const selectColumn = _columns.value.find(\n (column) => column.type === 'selection'\n )\n\n let selectColFixLeft: boolean\n if (\n selectColumn &&\n selectColumn.fixed !== 'right' &&\n !fixedColumns.value.includes(selectColumn)\n ) {\n const selectColumnIndex = _columns.value.indexOf(selectColumn)\n if (selectColumnIndex === 0 && fixedColumns.value.length) {\n fixedColumns.value.unshift(selectColumn)\n selectColFixLeft = true\n }\n }\n\n rightFixedColumns.value = _columns.value.filter(\n (column) => column.fixed === 'right'\n )\n\n const notFixedColumns = _columns.value.filter(\n (column) =>\n (selectColFixLeft ? column.type !== 'selection' : true) && !column.fixed\n )\n\n originColumns.value = Array.from(fixedColumns.value)\n .concat(notFixedColumns)\n .concat(rightFixedColumns.value)\n const leafColumns = doFlattenColumns(notFixedColumns)\n const fixedLeafColumns = doFlattenColumns(fixedColumns.value)\n const rightFixedLeafColumns = doFlattenColumns(rightFixedColumns.value)\n\n leafColumnsLength.value = leafColumns.length\n fixedLeafColumnsLength.value = fixedLeafColumns.length\n rightFixedLeafColumnsLength.value = rightFixedLeafColumns.length\n\n columns.value = Array.from(fixedLeafColumns)\n .concat(leafColumns)\n .concat(rightFixedLeafColumns)\n isComplex.value =\n fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0\n }\n\n const scheduleLayout = (needUpdateColumns?: boolean, immediate = false) => {\n if (needUpdateColumns) {\n updateColumns()\n }\n if (immediate) {\n instance.state.doLayout()\n } else {\n instance.state.debouncedUpdateLayout()\n }\n }\n\n const isSelected = (row: T) => {\n if (selectedMap.value) {\n return !!selectedMap.value[getRowIdentity(row, rowKey.value)]\n } else {\n return selection.value.includes(row)\n }\n }\n\n // Used by selectable to compute row indices in tree-shaped data\n const rowIndexMap = computed(() => {\n const map = new Map<string, number>()\n if (!rowKey.value || !selectable.value) return map\n let index = 0\n const _traverse = (rows: T[]) => {\n if (!isArray(rows)) return\n rows.forEach((row) => {\n const id = getRowIdentity(row, rowKey.value)\n map.set(id, index)\n index += 1\n const children = getRowChildren(row)\n if (children.length) _traverse(children)\n })\n }\n _traverse(data.value || [])\n return map\n })\n\n // Update parent selection and indeterminate state based on children selection\n const updateSelectionByChildren = (\n options: {\n emitChange?: boolean\n rowIndexMap?: Map<string, number>\n } = {}\n ) => {\n const { emitChange = true } = options\n if (treeStates.checkStrictly.value || !rowKey.value) {\n selectionIndeterminate.value = {}\n return\n }\n const rowKeyValue = rowKey.value\n const rowIndexMapValue = options.rowIndexMap ?? rowIndexMap.value\n const selectableFn = selectable.value\n const rowIdCache = new WeakMap<T, string>()\n const getCachedRowId = (row: T) => {\n const cachedId = rowIdCache.get(row)\n if (cachedId) return cachedId\n const id = getRowIdentity(row, rowKeyValue)\n rowIdCache.set(row, id)\n return id\n }\n const indeterminateMap: Record<string, boolean> = {}\n const selectedIdSet = new Set(\n selection.value.map((row) => getCachedRowId(row))\n )\n const rowsToAdd: T[] = []\n let selectionChanged = false\n // Sync parent selection without triggering external select event\n const _updateSelectionForRow = (row: T, id: string, selected: boolean) => {\n const isRowSelected = selectedIdSet.has(id)\n if (selected && !isRowSelected) {\n rowsToAdd.push(row)\n selectedIdSet.add(id)\n selectionChanged = true\n } else if (!selected && isRowSelected) {\n selectedIdSet.delete(id)\n selectionChanged = true\n }\n }\n const _walk = (rows: T[]) => {\n let selectedCount = 0\n let selectableCount = 0\n if (!isArray(rows)) return { selectedCount, selectableCount }\n rows.forEach((row) => {\n const id = getCachedRowId(row)\n const children = getRowChildren(row)\n let childSelectedCount = 0\n let childSelectableCount = 0\n if (children.length) {\n const childResult = _walk(children)\n childSelectedCount = childResult.selectedCount\n childSelectableCount = childResult.selectableCount\n }\n const rowSelectable = selectableFn\n ? selectableFn.call(null, row, rowIndexMapValue.get(id) ?? 0)\n : true\n if (rowSelectable) {\n if (childSelectableCount > 0) {\n const allSelected = childSelectedCount === childSelectableCount\n const noneSelected = childSelectedCount === 0\n if (!allSelected && !noneSelected) {\n indeterminateMap[id] = true\n }\n _updateSelectionForRow(row, id, allSelected)\n }\n }\n if (rowSelectable) {\n selectableCount += 1\n if (selectedIdSet.has(id)) {\n selectedCount += 1\n }\n }\n selectedCount += childSelectedCount\n selectableCount += childSelectableCount\n })\n return { selectedCount, selectableCount }\n }\n _walk(data.value || [])\n if (selectionChanged) {\n const nextSelection = selection.value.filter((row) =>\n selectedIdSet.has(getCachedRowId(row))\n )\n rowsToAdd.forEach((row) => {\n if (!selectedIdSet.has(getCachedRowId(row))) return\n nextSelection.push(row)\n })\n selection.value = nextSelection\n }\n selectionIndeterminate.value = indeterminateMap\n if (selectionChanged && emitChange) {\n instance.emit(\n 'selection-change',\n selection.value ? selection.value.slice() : []\n )\n }\n }\n\n const clearSelection = () => {\n isAllSelected.value = false\n const oldSelection = selection.value\n selection.value = []\n selectionIndeterminate.value = {}\n if (oldSelection.length) {\n instance.emit('selection-change', [])\n }\n }\n\n const cleanSelection = () => {\n let deleted\n if (rowKey.value) {\n deleted = []\n const childrenKey = instance?.store?.states?.childrenColumnName.value\n const dataMap = getKeysMap(data.value, rowKey.value, true, childrenKey)\n // Include lazy-loaded children only if their parent is still in data\n const { lazyTreeNodeMap } = instance.store.states\n if (lazyTreeNodeMap.value) {\n Object.entries(lazyTreeNodeMap.value).forEach(\n ([parentId, lazyRows]) => {\n if (dataMap[parentId]) {\n ;(lazyRows as T[]).forEach((row) => {\n const id = getRowIdentity(row, rowKey.value)\n if (!dataMap[id]) {\n dataMap[id] = { row, index: -1 }\n }\n })\n }\n }\n )\n }\n for (const key in selectedMap.value) {\n if (hasOwn(selectedMap.value, key) && !dataMap[key]) {\n deleted.push(selectedMap.value[key].row)\n }\n }\n } else {\n deleted = selection.value.filter((item) => !data.value.includes(item))\n }\n if (deleted.length) {\n const newSelection = selection.value.filter(\n (item) => !deleted.includes(item)\n )\n selection.value = newSelection\n updateSelectionByChildren({ emitChange: false })\n instance.emit('selection-change', [...newSelection])\n }\n }\n\n const getSelectionRows = () => {\n return (selection.value || []).slice()\n }\n\n const cascadeToLazyChildren = (\n row: T,\n selected: boolean,\n rowIndexMap: Map<string, number>\n ) => {\n if (\n !rowKey.value ||\n treeStates.checkStrictly.value ||\n !treeStates.lazy.value\n )\n return\n const { lazyTreeNodeMap, childrenColumnName } = instance.store.states\n const id = getRowIdentity(row, rowKey.value)\n const lazyChildren = (lazyTreeNodeMap.value?.[id] ?? []) as T[]\n const inlineChildren = (row[childrenColumnName.value] ?? []) as T[]\n const treeProps = {\n children: childrenColumnName.value,\n checkStrictly: false,\n }\n\n for (const child of lazyChildren) {\n const childIndex =\n rowIndexMap.get(getRowIdentity(child, rowKey.value)) ?? 0\n toggleRowStatus(\n selection.value,\n child,\n selected,\n treeProps,\n selectable.value,\n childIndex,\n rowKey.value\n )\n // Recursively handle lazy children's inline descendants\n cascadeToLazyChildren(child, selected, rowIndexMap)\n }\n // Only recurse into inline children (lazy children handled above)\n for (const child of inlineChildren) {\n cascadeToLazyChildren(child, selected, rowIndexMap)\n }\n }\n\n const toggleRowSelection = (\n row: T,\n selected?: boolean,\n emitChange = true,\n ignoreSelectable = false\n ) => {\n const treeProps = {\n children: instance?.store?.states?.childrenColumnName.value,\n checkStrictly: instance?.store?.states?.checkStrictly.value,\n }\n const changed = toggleRowStatus(\n selection.value,\n row,\n selected,\n treeProps,\n ignoreSelectable ? undefined : selectable.value,\n data.value.indexOf(row),\n rowKey.value\n )\n if (changed) {\n // lazy mode and non-strict mode, sync lazy children selection status\n if (treeStates.lazy.value && !treeStates.checkStrictly.value) {\n const finalSelected = selected ?? isSelected(row)\n cascadeToLazyChildren(row, finalSelected, rowIndexMap.value)\n updateSelectionByChildren({\n emitChange: false,\n rowIndexMap: rowIndexMap.value,\n })\n } else {\n updateSelectionByChildren({ emitChange: false })\n }\n const newSelection = (selection.value || []).slice()\n // API call to modify selection, don't trigger select event\n if (emitChange) {\n instance.emit('select', newSelection, row)\n }\n instance.emit('selection-change', newSelection)\n }\n }\n\n const _toggleAllSelection = () => {\n // when only some rows are selected (but not all), select or deselect all of them\n // depending on the value of selectOnIndeterminate\n const value = selectOnIndeterminate.value\n ? !isAllSelected.value\n : !(isAllSelected.value || selection.value.length)\n isAllSelected.value = value\n\n let selectionChanged = false\n let childrenCount = 0\n const rowKey = instance?.store?.states?.rowKey.value\n const { childrenColumnName } = instance.store.states\n const treeProps = {\n children: childrenColumnName.value,\n checkStrictly: false, // Disable checkStrictly when selecting all\n }\n\n data.value.forEach((row, index) => {\n const rowIndex = index + childrenCount\n if (\n toggleRowStatus(\n selection.value,\n row,\n value,\n treeProps,\n selectable.value,\n rowIndex,\n rowKey\n )\n ) {\n selectionChanged = true\n }\n childrenCount += getChildrenCount(getRowIdentity(row, rowKey))\n })\n\n const rowIndexMapVal = rowIndexMap.value\n\n if (treeStates.lazy.value && !treeStates.checkStrictly.value && rowKey) {\n for (const lazyRows of Object.values(treeStates.lazyTreeNodeMap.value)) {\n for (const child of lazyRows as T[]) {\n const childIndex =\n rowIndexMapVal.get(getRowIdentity(child, rowKey)) ?? 0\n if (\n toggleRowStatus(\n selection.value,\n child,\n value,\n treeProps,\n selectable.value,\n childIndex,\n rowKey\n )\n )\n selectionChanged = true\n cascadeToLazyChildren(child, value, rowIndexMapVal)\n }\n }\n }\n\n updateSelectionByChildren({\n emitChange: false,\n rowIndexMap: rowIndexMapVal,\n })\n\n if (selectionChanged) {\n instance.emit(\n 'selection-change',\n selection.value ? [...selection.value] : []\n )\n }\n instance.emit('select-all', (selection.value || []).slice())\n }\n\n const updateAllSelected = () => {\n // When data is null, default values during destructuring are ignored\n if (data.value?.length === 0) {\n isAllSelected.value = false\n return\n }\n\n let rowIndex = 0\n let selectedCount = 0\n\n const checkSelectedStatus = (rows: T[]) => {\n for (const row of rows) {\n const isRowSelectable =\n selectable.value && selectable.value.call(null, row, rowIndex)\n\n if (!isSelected(row)) {\n if (!selectable.value || isRowSelectable) {\n return false\n }\n } else {\n selectedCount++\n }\n rowIndex++\n\n const children = getRowChildren(row)\n if (children.length && !checkSelectedStatus(children)) {\n return false\n }\n }\n return true\n }\n\n const isAllSelected_ = checkSelectedStatus(data.value || [])\n isAllSelected.value = selectedCount === 0 ? false : isAllSelected_\n }\n\n const getRowIndeterminate = (row: T) => {\n if (!rowKey.value) return false\n const id = getRowIdentity(row, rowKey.value)\n return !!selectionIndeterminate.value[id]\n }\n\n const getChildrenCount = (rowKey: string) => {\n if (!instance || !instance.store) return 0\n const { treeData } = instance.store.states\n let count = 0\n const children = treeData.value[rowKey]?.children\n if (children) {\n count += children.length\n children.forEach((childKey) => {\n count += getChildrenCount(childKey)\n })\n }\n return count\n }\n\n const updateFilters = (column: TableColumnCtx<T>, values: string[]) => {\n const filters_: Record<string, string[]> = {}\n ensureArray(column).forEach((col) => {\n filters.value[col.id] = values\n filters_[col.columnKey || col.id] = values\n })\n return filters_\n }\n\n const updateSort = (\n column: TableColumnCtx<T> | null,\n prop: string | null,\n order: TableSortOrder | null\n ) => {\n if (sortingColumn.value && sortingColumn.value !== column) {\n sortingColumn.value.order = null\n }\n sortingColumn.value = column\n sortProp.value = prop\n sortOrder.value = order\n }\n\n const execFilter = () => {\n let sourceData = unref(_data)\n Object.keys(filters.value).forEach((columnId) => {\n const values = filters.value[columnId]\n if (!values || values.length === 0) return\n const column = getColumnById(\n {\n columns: columns.value,\n },\n columnId\n )\n if (column && column.filterMethod) {\n sourceData = sourceData.filter((row) => {\n return values.some((value) =>\n column.filterMethod.call(null, value, row, column)\n )\n })\n }\n })\n filteredData.value = sourceData\n }\n\n const execSort = () => {\n data.value = sortData(filteredData.value ?? [], {\n sortingColumn: sortingColumn.value,\n sortProp: sortProp.value,\n sortOrder: sortOrder.value,\n })\n }\n\n // Filter and sort data based on filters and sort conditions\n const execQuery = (ignore: { filter: boolean } | undefined = undefined) => {\n if (!ignore?.filter) {\n execFilter()\n }\n execSort()\n }\n\n const clearFilter = (columnKeys?: string[] | string) => {\n const { tableHeaderRef } = instance.refs as TableRefs\n if (!tableHeaderRef) return\n const panels = Object.assign({}, tableHeaderRef.filterPanels)\n\n const keys = Object.keys(panels)\n if (!keys.length) return\n\n if (isString(columnKeys)) {\n columnKeys = [columnKeys]\n }\n\n if (isArray(columnKeys)) {\n const columns_ = columnKeys.map((key) =>\n getColumnByKey(\n {\n columns: columns.value,\n },\n key\n )\n )\n keys.forEach((key) => {\n const column = columns_.find((col) => col.id === key)\n if (column) {\n column.filteredValue = []\n }\n })\n instance.store.commit('filterChange', {\n column: columns_,\n values: [],\n silent: true,\n multi: true,\n })\n } else {\n keys.forEach((key) => {\n const column = columns.value.find((col) => col.id === key)\n if (column) {\n column.filteredValue = []\n }\n })\n\n filters.value = {}\n instance.store.commit('filterChange', {\n column: {},\n values: [],\n silent: true,\n })\n }\n }\n\n const clearSort = () => {\n if (!sortingColumn.value) return\n\n updateSort(null, null, null)\n instance.store.commit('changeSortCondition', {\n silent: true,\n })\n }\n const {\n setExpandRowKeys,\n toggleRowExpansion,\n updateExpandRows,\n states: expandStates,\n isRowExpanded,\n } = useExpand({\n data,\n rowKey,\n })\n const {\n updateTreeExpandKeys,\n toggleTreeExpansion,\n updateTreeData,\n updateKeyChildren,\n loadOrToggle,\n states: treeStates,\n } = useTree({\n data,\n rowKey,\n })\n const {\n updateCurrentRowData,\n updateCurrentRow,\n setCurrentRowKey,\n states: currentData,\n } = useCurrent({\n data,\n rowKey,\n })\n // Adapter layer, expand-row-keys is used in both Expand and TreeTable\n const setExpandRowKeysAdapter = (val: string[]) => {\n // Triggers extra computation, but kept for compatibility\n setExpandRowKeys(val)\n updateTreeExpandKeys(val)\n }\n\n // Used for both expand rows and TreeTable\n const toggleRowExpansionAdapter = (row: T, expanded?: boolean) => {\n const hasExpandColumn = columns.value.some(({ type }) => type === 'expand')\n if (hasExpandColumn) {\n toggleRowExpansion(row, expanded)\n } else {\n toggleTreeExpansion(row, expanded)\n }\n }\n\n watch(\n () => treeStates.checkStrictly.value,\n (value) => {\n if (value) {\n selectionIndeterminate.value = {}\n } else {\n // Internal sync when switching strict mode, avoid triggering selection-change\n updateSelectionByChildren({ emitChange: false })\n }\n updateAllSelected()\n }\n )\n\n watch(\n () => treeStates.lazyTreeNodeMap.value,\n () => {\n if (\n !treeStates.lazy.value ||\n treeStates.checkStrictly.value ||\n !rowKey.value\n )\n return\n const rowIndexMapVal = rowIndexMap.value\n const prevLen = selection.value.length\n\n for (const parentId of Object.keys(treeStates.lazyTreeNodeMap.value)) {\n if (!selectedMap.value?.[parentId]) continue\n cascadeToLazyChildren(\n selectedMap.value[parentId].row,\n true,\n rowIndexMapVal\n )\n }\n\n const cascadeChanged = selection.value.length !== prevLen\n updateSelectionByChildren({\n emitChange: !cascadeChanged,\n rowIndexMap: rowIndexMapVal,\n })\n updateAllSelected()\n if (cascadeChanged) {\n instance.emit('selection-change', [...selection.value])\n }\n }\n )\n\n return {\n assertRowKey,\n updateColumns,\n scheduleLayout,\n isSelected,\n clearSelection,\n cleanSelection,\n getSelectionRows,\n toggleRowSelection,\n _toggleAllSelection,\n toggleAllSelection: null as (() => void) | null,\n updateAllSelected,\n updateSelectionByChildren,\n getRowIndeterminate,\n updateFilters,\n updateCurrentRow,\n updateSort,\n execFilter,\n execSort,\n execQuery,\n clearFilter,\n clearSort,\n toggleRowExpansion,\n setExpandRowKeysAdapter,\n setCurrentRowKey,\n toggleRowExpansionAdapter,\n isRowExpanded,\n updateExpandRows,\n updateCurrentRowData,\n loadOrToggle,\n updateTreeData,\n updateKeyChildren,\n states: {\n tableSize,\n rowKey,\n data,\n _data,\n isComplex,\n _columns,\n originColumns,\n columns,\n fixedColumns,\n rightFixedColumns,\n leafColumns,\n fixedLeafColumns,\n rightFixedLeafColumns,\n updateOrderFns,\n leafColumnsLength,\n fixedLeafColumnsLength,\n rightFixedLeafColumnsLength,\n isAllSelected,\n selection,\n selectionIndeterminate,\n reserveSelection,\n selectOnIndeterminate,\n selectable,\n rowExpandable,\n filters,\n filteredData,\n sortingColumn,\n sortProp,\n sortOrder,\n hoverRow,\n ...expandStates,\n ...treeStates,\n ...currentData,\n },\n }\n}\n\nexport default useWatcher\n"],"mappings":"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KAAK,SAAS;;CAItC,YACQ,WAAW,cAAc,QAC9B,UAAU;EACT,IAAI,OACF,uBAAuB,QAAQ,EAAE;OAGjC,0BAA0B,EAAE,YAAY,OAAO,CAAC;EAElD,mBAAmB;GAEtB;CAED,YACQ,WAAW,gBAAgB,aAC3B;EACJ,IACE,CAAC,WAAW,KAAK,SACjB,WAAW,cAAc,SACzB,CAAC,OAAO,OAER;EACF,MAAM,iBAAiB,YAAY;EACnC,MAAM,UAAU,UAAU,MAAM;EAEhC,KAAK,MAAM,YAAY,OAAO,KAAK,WAAW,gBAAgB,MAAM,EAAE;GACpE,IAAI,CAAC,YAAY,QAAQ,WAAW;GACpC,sBACE,YAAY,MAAM,UAAU,KAC5B,MACA,eACD;;EAGH,MAAM,iBAAiB,UAAU,MAAM,WAAW;EAClD,0BAA0B;GACxB,YAAY,CAAC;GACb,aAAa;GACd,CAAC;EACF,mBAAmB;EACnB,IAAI,gBACF,SAAS,KAAK,oBAAoB,CAAC,GAAG,UAAU,MAAM,CAAC;GAG5D;CAED,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,oBAAoB;EACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACH,GAAG;GACH,GAAG;GACJ;EACF"}