{"version":3,"file":"watcher-helper.mjs","sources":["../../../../../../../packages/components/table/src/table-column/watcher-helper.ts"],"sourcesContent":["// @ts-nocheck\r\nimport { getCurrentInstance, watch } from 'vue'\r\nimport { hasOwn } from '@sgui-plus/utils'\r\nimport { parseMinWidth, parseWidth } from '../util'\r\n\r\nimport type { ComputedRef } from 'vue'\r\nimport type { TableColumn, TableColumnCtx, ValueOf } from './defaults'\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\nfunction useWatcher<T>(\r\n  owner: ComputedRef<any>,\r\n  props_: Partial<TableColumnCtx<T>>\r\n) {\r\n  const instance = getCurrentInstance() as TableColumn<T>\r\n  const registerComplexWatchers = () => {\r\n    const props = ['fixed']\r\n    const aliases = {\r\n      realWidth: 'width',\r\n      realMinWidth: 'minWidth',\r\n    }\r\n    const allAliases = getAllAliases(props, aliases)\r\n    Object.keys(allAliases).forEach((key) => {\r\n      const columnKey = aliases[key]\r\n      if (hasOwn(props_, columnKey)) {\r\n        watch(\r\n          () => props_[columnKey],\r\n          (newVal) => {\r\n            let value: ValueOf<TableColumnCtx<T>> = newVal\r\n            if (columnKey === 'width' && key === 'realWidth') {\r\n              value = parseWidth(newVal)\r\n            }\r\n            if (columnKey === 'minWidth' && key === 'realMinWidth') {\r\n              value = parseMinWidth(newVal)\r\n            }\r\n            instance.columnConfig.value[columnKey as any] = value\r\n            instance.columnConfig.value[key] = value\r\n            const updateColumns = columnKey === 'fixed'\r\n            owner.value.store.scheduleLayout(updateColumns)\r\n          }\r\n        )\r\n      }\r\n    })\r\n  }\r\n  const registerNormalWatchers = () => {\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    const aliases = {\r\n      property: 'prop',\r\n      align: 'realAlign',\r\n      headerAlign: 'realHeaderAlign',\r\n    }\r\n    const allAliases = getAllAliases(props, aliases)\r\n    Object.keys(allAliases).forEach((key) => {\r\n      const columnKey = aliases[key]\r\n      if (hasOwn(props_, columnKey)) {\r\n        watch(\r\n          () => props_[columnKey],\r\n          (newVal) => {\r\n            instance.columnConfig.value[key] = newVal\r\n          }\r\n        )\r\n      }\r\n    })\r\n  }\r\n\r\n  return {\r\n    registerComplexWatchers,\r\n    registerNormalWatchers,\r\n  }\r\n}\r\n\r\nexport default useWatcher\r\n"],"names":[],"mappings":"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"}