{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/table/src/store/index.ts"],"sourcesContent":["// @ts-nocheck\nimport { getCurrentInstance, nextTick, unref } from 'vue'\nimport { useNamespace } from '@bigin/hooks'\nimport useWatcher from './watcher'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { Filter, Sort, Table } from '../table/defaults'\n\ninterface WatcherPropsData<T> {\n  data: Ref<T[]>\n  rowKey: Ref<string>\n}\n\nfunction replaceColumn<T>(\n  array: TableColumnCtx<T>[],\n  column: TableColumnCtx<T>\n) {\n  return array.map((item) => {\n    if (item.id === column.id) {\n      return column\n    } else if (item.children?.length) {\n      item.children = replaceColumn(item.children, column)\n    }\n    return item\n  })\n}\n\nfunction sortColumn<T>(array: TableColumnCtx<T>[]) {\n  array.forEach((item) => {\n    item.no = item.getColumnIndex?.()\n    if (item.children?.length) {\n      sortColumn(item.children)\n    }\n  })\n  array.sort((cur, pre) => cur.no - pre.no)\n}\n\nfunction useStore<T>() {\n  const instance = getCurrentInstance() as Table<T>\n  const watcher = useWatcher<T>()\n  const ns = useNamespace('table')\n  type StoreStates = typeof watcher.states\n  const mutations = {\n    setData(states: StoreStates, data: T[]) {\n      const dataInstanceChanged = unref(states._data) !== data\n      states.data.value = data\n      states._data.value = data\n      instance.store.execQuery()\n      instance.store.updateCurrentRowData()\n      instance.store.updateExpandRows()\n      instance.store.updateTreeData(\n        instance.store.states.defaultExpandAll.value\n      )\n      if (unref(states.reserveSelection)) {\n        instance.store.assertRowKey()\n        instance.store.updateSelectionByRowKey()\n      } else {\n        if (dataInstanceChanged) {\n          instance.store.clearSelection()\n        } else {\n          instance.store.cleanSelection()\n        }\n      }\n      instance.store.updateAllSelected()\n      if (instance.$ready) {\n        instance.store.scheduleLayout()\n      }\n    },\n\n    insertColumn(\n      states: StoreStates,\n      column: TableColumnCtx<T>,\n      parent: TableColumnCtx<T>\n    ) {\n      const array = unref(states._columns)\n      let newColumns = []\n      if (!parent) {\n        array.push(column)\n        newColumns = array\n      } else {\n        if (parent && !parent.children) {\n          parent.children = []\n        }\n        parent.children.push(column)\n        newColumns = replaceColumn(array, parent)\n      }\n      sortColumn(newColumns)\n      states._columns.value = newColumns\n      if (column.type === 'selection') {\n        states.selectable.value = column.selectable\n        states.reserveSelection.value = column.reserveSelection\n      }\n      if (instance.$ready) {\n        instance.store.updateColumns() // hack for dynamics insert column\n        instance.store.scheduleLayout()\n      }\n    },\n\n    removeColumn(\n      states: StoreStates,\n      column: TableColumnCtx<T>,\n      parent: TableColumnCtx<T>\n    ) {\n      const array = unref(states._columns) || []\n      if (parent) {\n        parent.children.splice(\n          parent.children.findIndex((item) => item.id === column.id),\n          1\n        )\n        if (parent.children.length === 0) {\n          delete parent.children\n        }\n        states._columns.value = replaceColumn(array, parent)\n      } else {\n        const index = array.indexOf(column)\n        if (index > -1) {\n          array.splice(index, 1)\n          states._columns.value = array\n        }\n      }\n\n      if (instance.$ready) {\n        instance.store.updateColumns() // hack for dynamics remove column\n        instance.store.scheduleLayout()\n      }\n    },\n\n    sort(states: StoreStates, options: Sort) {\n      const { prop, order, init } = options\n      if (prop) {\n        const column = unref(states.columns).find(\n          (column) => column.property === prop\n        )\n        if (column) {\n          column.order = order\n          instance.store.updateSort(column, prop, order)\n          instance.store.commit('changeSortCondition', { init })\n        }\n      }\n    },\n\n    changeSortCondition(states: StoreStates, options: Sort) {\n      const { sortingColumn, sortProp, sortOrder } = states\n      const columnValue = unref(sortingColumn),\n        propValue = unref(sortProp),\n        orderValue = unref(sortOrder)\n      if (orderValue === null) {\n        states.sortingColumn.value = null\n        states.sortProp.value = null\n      }\n      const ignore = { filter: true }\n      instance.store.execQuery(ignore)\n\n      if (!options || !(options.silent || options.init)) {\n        instance.emit('sort-change', {\n          column: columnValue,\n          prop: propValue,\n          order: orderValue,\n        })\n      }\n\n      instance.store.updateTableScrollY()\n    },\n\n    filterChange(_states: StoreStates, options: Filter<T>) {\n      const { column, values, silent } = options\n      const newFilters = instance.store.updateFilters(column, values)\n      instance.store.execQuery()\n\n      if (!silent) {\n        instance.emit('filter-change', newFilters)\n      }\n      instance.store.updateTableScrollY()\n    },\n\n    toggleAllSelection() {\n      instance.store.toggleAllSelection()\n    },\n\n    rowSelectedChanged(_states, row: T) {\n      instance.store.toggleRowSelection(row)\n      instance.store.updateAllSelected()\n    },\n\n    setHoverRow(states: StoreStates, row: T) {\n      states.hoverRow.value = row\n    },\n\n    setCurrentRow(_states, row: T) {\n      instance.store.updateCurrentRow(row)\n    },\n  }\n  const commit = function (name: keyof typeof mutations, ...args) {\n    const mutations = instance.store.mutations\n    if (mutations[name]) {\n      mutations[name].apply(instance, [instance.store.states].concat(args))\n    } else {\n      throw new Error(`Action not found: ${name}`)\n    }\n  }\n  const updateTableScrollY = function () {\n    nextTick(() => instance.layout.updateScrollY.apply(instance.layout))\n  }\n  return {\n    ns,\n    ...watcher,\n    mutations,\n    commit,\n    updateTableScrollY,\n  }\n}\n\nexport default useStore\n\nclass HelperStore<T> {\n  Return = useStore<T>()\n}\n\ntype StoreFilter = Record<string, string[]>\ntype Store<T> = HelperStore<T>['Return']\nexport type { WatcherPropsData, Store, StoreFilter }\n"],"names":["column","mutations"],"mappings":"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"}