{"version":3,"file":"watcher-helper.mjs","sources":["../../../../../../../../packages/components/table/src/table-column/watcher-helper.ts"],"sourcesContent":["import { getCurrentInstance, watch } from 'vue'\nimport { hasOwn } from '@hd-front-end/utils'\nimport { parseMinWidth, parseWidth } from '../util'\n\nimport type { ComputedRef } from 'vue'\nimport type { DefaultRow } from '../table/defaults'\nimport type { TableColumn, TableColumnCtx, ValueOf } from './defaults'\n\nfunction getAllAliases(props: string[], aliases: Record<string, string>) {\n  return props.reduce((prev, cur) => {\n    prev[cur as keyof typeof prev] = cur\n    return prev\n  }, aliases)\n}\nfunction useWatcher<T extends DefaultRow>(\n  owner: ComputedRef<any>,\n  props_: Partial<TableColumnCtx<T>>\n) {\n  const instance = getCurrentInstance() as TableColumn<T>\n  const registerComplexWatchers = () => {\n    const props = ['fixed']\n    const aliases: Record<string, string> = {\n      realWidth: 'width',\n      realMinWidth: 'minWidth',\n    }\n    const allAliases = getAllAliases(props, aliases)\n    Object.keys(allAliases).forEach((key) => {\n      const columnKey = aliases[key]\n      if (hasOwn(props_, columnKey)) {\n        watch(\n          () => props_[columnKey],\n          (newVal) => {\n            let value: ValueOf<TableColumnCtx<T>> = newVal\n            if (columnKey === 'width' && key === 'realWidth') {\n              value = parseWidth(newVal)\n            }\n            if (columnKey === 'minWidth' && key === 'realMinWidth') {\n              value = parseMinWidth(newVal)\n            }\n            instance.columnConfig.value[columnKey as never] = value as never\n            instance.columnConfig.value[key as never] = value as never\n            const updateColumns = columnKey === 'fixed'\n            owner.value.store.scheduleLayout(updateColumns)\n          }\n        )\n      }\n    })\n  }\n  const registerNormalWatchers = () => {\n    const props = [\n      'label',\n      'filters',\n      'filterMultiple',\n      'filteredValue',\n      'sortable',\n      'index',\n      'formatter',\n      'className',\n      'labelClassName',\n      'filterClassName',\n      'showOverflowTooltip',\n      'tooltipFormatter',\n    ]\n    const parentProps = ['showOverflowTooltip']\n    const aliases: Record<string, string> = {\n      property: 'prop',\n      align: 'realAlign',\n      headerAlign: 'realHeaderAlign',\n    }\n    const allAliases = getAllAliases(props, aliases)\n    Object.keys(allAliases).forEach((key) => {\n      const columnKey = aliases[key]\n      if (hasOwn(props_, columnKey)) {\n        watch(\n          () => props_[columnKey],\n          (newVal) => {\n            instance.columnConfig.value[key as never] = newVal\n          }\n        )\n      }\n    })\n    parentProps.forEach((key) => {\n      if (hasOwn(owner.value.props, key)) {\n        watch(\n          () => owner.value.props[key],\n          (newVal) => {\n            instance.columnConfig.value[key] = newVal as never\n          }\n        )\n      }\n    })\n  }\n\n  return {\n    registerComplexWatchers,\n    registerNormalWatchers,\n  }\n}\n\nexport default useWatcher\n"],"names":[],"mappings":"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"}