{"version":3,"file":"watcher.mjs","sources":["../../../../../../../packages/components/table/src/store/watcher.ts"],"sourcesContent":["// @ts-nocheck\nimport { getCurrentInstance, ref, toRefs, unref, watch } from 'vue'\nimport { hasOwn } from '@bigin/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 { Table, TableRefs } from '../table/defaults'\nimport type { StoreFilter } from '.'\n\nconst sortData = (data, states) => {\n  const sortingColumn = states.sortingColumn\n  if (!sortingColumn || typeof sortingColumn.sortable === 'string') {\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 = (columns) => {\n  const result = []\n  columns.forEach((column) => {\n    if (column.children) {\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>() {\n  const instance = getCurrentInstance() as Table<T>\n  const { size: tableSize } = toRefs(instance.proxy?.$props as any)\n  const rowKey: Ref<string> = 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 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 reserveSelection = ref(false)\n  const selectOnIndeterminate = ref(false)\n  const selectable: Ref<(row: T, index: number) => boolean> = ref(null)\n  const filters: Ref<StoreFilter> = ref({})\n  const filteredData = ref(null)\n  const sortingColumn = ref(null)\n  const sortProp = ref(null)\n  const sortOrder = ref(null)\n  const hoverRow = ref(null)\n\n  watch(data, () => instance.state && scheduleLayout(false), {\n    deep: true,\n  })\n\n  const assertRowKey = () => {\n    if (!rowKey.value) throw new Error('[BTable] prop row-key is required')\n  }\n\n  const updateColumns = () => {\n    fixedColumns.value = _columns.value.filter(\n      (column) => column.fixed === true || column.fixed === 'left'\n    )\n    rightFixedColumns.value = _columns.value.filter(\n      (column) => column.fixed === 'right'\n    )\n    if (\n      fixedColumns.value.length > 0 &&\n      _columns.value[0] &&\n      _columns.value[0].type === 'selection' &&\n      !_columns.value[0].fixed\n    ) {\n      _columns.value[0].fixed = true\n      fixedColumns.value.unshift(_columns.value[0])\n    }\n\n    const notFixedColumns = _columns.value.filter((column) => !column.fixed)\n    originColumns.value = []\n      .concat(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 = []\n      .concat(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) => {\n    return selection.value.includes(row)\n  }\n\n  const clearSelection = () => {\n    isAllSelected.value = false\n    const oldSelection = selection.value\n    if (oldSelection.length) {\n      selection.value = []\n      instance.emit('selection-change', [])\n    }\n  }\n\n  const cleanSelection = () => {\n    let deleted\n    if (rowKey.value) {\n      deleted = []\n      const selectedMap = getKeysMap(selection.value, rowKey.value)\n      const dataMap = getKeysMap(data.value, rowKey.value)\n      for (const key in selectedMap) {\n        if (hasOwn(selectedMap, key) && !dataMap[key]) {\n          deleted.push(selectedMap[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      instance.emit('selection-change', newSelection.slice())\n    }\n  }\n\n  const getSelectionRows = () => {\n    return (selection.value || []).slice()\n  }\n\n  const toggleRowSelection = (\n    row: T,\n    selected = undefined,\n    emitChange = true\n  ) => {\n    const changed = toggleRowStatus(selection.value, row, selected)\n    if (changed) {\n      const newSelection = (selection.value || []).slice()\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    data.value.forEach((row, index) => {\n      const rowIndex = index + childrenCount\n      if (selectable.value) {\n        if (\n          selectable.value.call(null, row, rowIndex) &&\n          toggleRowStatus(selection.value, row, value)\n        ) {\n          selectionChanged = true\n        }\n      } else {\n        if (toggleRowStatus(selection.value, row, value)) {\n          selectionChanged = true\n        }\n      }\n      childrenCount += getChildrenCount(getRowIdentity(row, rowKey))\n    })\n\n    if (selectionChanged) {\n      instance.emit(\n        'selection-change',\n        selection.value ? selection.value.slice() : []\n      )\n    }\n    instance.emit('select-all', selection.value)\n  }\n\n  const updateSelectionByRowKey = () => {\n    const selectedMap = getKeysMap(selection.value, rowKey.value)\n    data.value.forEach((row) => {\n      const rowId = getRowIdentity(row, rowKey.value)\n      const rowInfo = selectedMap[rowId]\n      if (rowInfo) {\n        selection.value[rowInfo.index] = row\n      }\n    })\n  }\n\n  const updateAllSelected = () => {\n    if (data.value?.length === 0) {\n      isAllSelected.value = false\n      return\n    }\n\n    let selectedMap\n    if (rowKey.value) {\n      selectedMap = getKeysMap(selection.value, rowKey.value)\n    }\n    const isSelected = function (row) {\n      if (selectedMap) {\n        return !!selectedMap[getRowIdentity(row, rowKey.value)]\n      } else {\n        return selection.value.includes(row)\n      }\n    }\n    let isAllSelected_ = true\n    let selectedCount = 0\n    let childrenCount = 0\n    for (let i = 0, j = (data.value || []).length; i < j; i++) {\n      const keyProp = instance?.store?.states?.rowKey.value\n      const rowIndex = i + childrenCount\n      const item = data.value[i]\n      const isRowSelectable =\n        selectable.value && selectable.value.call(null, item, rowIndex)\n      if (!isSelected(item)) {\n        if (!selectable.value || isRowSelectable) {\n          isAllSelected_ = false\n          break\n        }\n      } else {\n        selectedCount++\n      }\n      childrenCount += getChildrenCount(getRowIdentity(item, keyProp))\n    }\n\n    if (selectedCount === 0) isAllSelected_ = false\n    isAllSelected.value = isAllSelected_\n  }\n\n  // gets the number of all child nodes by rowKey\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 = (columns, values) => {\n    if (!Array.isArray(columns)) {\n      columns = [columns]\n    }\n    const filters_ = {}\n    columns.forEach((col) => {\n      filters.value[col.id] = values\n      filters_[col.columnKey || col.id] = values\n    })\n    return filters_\n  }\n\n  const updateSort = (column, prop, order) => {\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\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  const execQuery = (ignore = undefined) => {\n    if (!(ignore && ignore.filter)) {\n      execFilter()\n    }\n    execSort()\n  }\n\n  const clearFilter = (columnKeys) => {\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 (typeof columnKeys === 'string') {\n      columnKeys = [columnKeys]\n    }\n\n    if (Array.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    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  const setExpandRowKeysAdapter = (val: string[]) => {\n    setExpandRowKeys(val)\n    updateTreeExpandKeys(val)\n  }\n\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  return {\n    assertRowKey,\n    updateColumns,\n    scheduleLayout,\n    isSelected,\n    clearSelection,\n    cleanSelection,\n    getSelectionRows,\n    toggleRowSelection,\n    _toggleAllSelection,\n    toggleAllSelection: null,\n    updateSelectionByRowKey,\n    updateAllSelected,\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    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      leafColumnsLength,\n      fixedLeafColumnsLength,\n      rightFixedLeafColumnsLength,\n      isAllSelected,\n      selection,\n      reserveSelection,\n      selectOnIndeterminate,\n      selectable,\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"],"names":["leafColumns","fixedLeafColumns","rightFixedLeafColumns","rowKey","isSelected","columns"],"mappings":"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"}