{"version":3,"file":"watcher.mjs","sources":["../../../../../../src/components/ivue-table/table-column/watcher.ts"],"sourcesContent":["import { getCurrentInstance, watch } from 'vue';\r\nimport { hasOwn } from '@vue/shared';\r\n\r\n// ts\r\nimport type { ComputedRef } from 'vue';\r\nimport type { TableColumn, TableColumnCtx } from './defaults';\r\nimport type { Table } from '../table/defaults';\r\nimport { parseWidth, parseMinWidth } from '../utils';\r\n\r\n// 获取所有别名\r\nfunction getAllAliases(props, aliases) {\r\n  return props.reduce((prev, cur) => {\r\n    prev[cur] = cur;\r\n    return prev;\r\n  }, aliases);\r\n}\r\n\r\n// useWatcher\r\nfunction useWatcher(parentDom: ComputedRef<Table>, _props: TableColumnCtx) {\r\n  // vm\r\n  const vm = getCurrentInstance() as TableColumn;\r\n\r\n  // 注册复杂观察者\r\n  const registerComplexWatchers = () => {\r\n    // 固定\r\n    const props = ['fixed'];\r\n\r\n    // aliases\r\n    const aliases = {\r\n      columnWidth: 'width',\r\n      columnMinWidth: 'minWidth',\r\n    };\r\n\r\n    // fixed | width | minWidth\r\n    const allAliases = getAllAliases(props, aliases);\r\n\r\n    // fixed | width | minWidth\r\n    Object.keys(allAliases).forEach((key) => {\r\n      // 行key\r\n      const columnKey = aliases[key];\r\n\r\n      // 是否有该属性\r\n      if (hasOwn(_props, columnKey)) {\r\n        // 注册监听者\r\n        watch(\r\n          () => _props[columnKey],\r\n          (newVal) => {\r\n            let value: string | number = newVal;\r\n\r\n            // 对应列的宽度\r\n            if (columnKey === 'width' && key === 'columnWidth') {\r\n              value = parseWidth(newVal);\r\n            }\r\n\r\n            // 对应列的最小宽度\r\n            if (columnKey === 'minWidth' && key === 'columnMinWidth') {\r\n              value = parseMinWidth(newVal);\r\n            }\r\n\r\n            // 修改 width ｜ minWidth 时触发\r\n            vm.columnConfig.value[columnKey as string] = value;\r\n\r\n            // 更新其他props值\r\n            vm.columnConfig.value[key] = value;\r\n\r\n            // 如果是固定列 更新 DOM\r\n            const updateColumns = columnKey === 'fixed';\r\n            parentDom.value.store.scheduleLayout(updateColumns);\r\n          }\r\n        );\r\n      }\r\n    });\r\n  };\r\n\r\n  // 注册watch\r\n  const registerNormalWatchers = () => {\r\n    // props\r\n    const props = [\r\n      'label',\r\n      'filters',\r\n      'filterMultiple',\r\n      'sortable',\r\n      'index',\r\n      'formatter',\r\n      'className',\r\n      'labelClassName',\r\n      'showOverflowTooltip',\r\n    ];\r\n\r\n    // aliases\r\n    const aliases = {\r\n      property: 'prop',\r\n      align: 'align',\r\n      headerAlign: 'headerAlign',\r\n    };\r\n\r\n    // 获取所有别名\r\n    const allAliases = getAllAliases(props, aliases);\r\n\r\n    Object.keys(allAliases).forEach((key) => {\r\n      const columnKey = aliases[key];\r\n\r\n      // 是否有该属性\r\n      if (hasOwn(_props, columnKey)) {\r\n        // 注册监听者\r\n        watch(\r\n          () => _props[columnKey],\r\n          (newVal) => {\r\n            // 更新行的 props\r\n            vm.columnConfig.value[key] = newVal;\r\n          }\r\n        );\r\n      }\r\n    });\r\n  };\r\n\r\n  return {\r\n    registerNormalWatchers,\r\n    registerComplexWatchers,\r\n  };\r\n}\r\n\r\nexport default useWatcher;\r\n"],"names":[],"mappings":"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"}