{"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<TableSortOrder | null> = ref(null)\n  const hoverRow: Ref<T | null> = ref(null)\n\n  let halfSelection: T[] = []\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      halfSelection = []\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 nextHalfSelection: T[] = []\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              nextHalfSelection.push(row)\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    halfSelection = nextHalfSelection\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    halfSelection = []\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 getHalfSelectionRows = () => {\n    return halfSelection.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        halfSelection = []\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    getHalfSelectionRows,\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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"}