{"version":3,"file":"watcher-helper.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/table-column/watcher-helper.ts"],"sourcesContent":["import { getCurrentInstance, watch } from 'vue'\nimport { hasOwn, isUndefined } from '@element-plus/utils'\nimport { parseMinWidth, parseWidth } from '../util'\nimport { useGlobalConfig } from '@element-plus/components/config-provider'\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      'resizable',\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            if (key === 'filters' || key === 'filterMethod') {\n              instance.columnConfig.value['filterable'] = !!(\n                instance.columnConfig.value['filters'] ||\n                instance.columnConfig.value['filterMethod']\n              )\n            }\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            if (instance.columnConfig.value.type === 'selection') return\n            if (!isUndefined(props_[key])) return\n            instance.columnConfig.value[key] = newVal as never\n          }\n        )\n      }\n    })\n\n    const globalConfig = useGlobalConfig('table')\n    if (\n      globalConfig.value &&\n      hasOwn(globalConfig.value, 'showOverflowTooltip')\n    ) {\n      watch(\n        () => globalConfig.value?.showOverflowTooltip,\n        (newVal) => {\n          if (instance.columnConfig.value.type === 'selection') return\n          if (\n            !isUndefined(props_.showOverflowTooltip) ||\n            !isUndefined(owner.value.props.showOverflowTooltip)\n          )\n            return\n          instance.columnConfig.value.showOverflowTooltip = newVal as never\n        }\n      )\n    }\n  }\n\n  return {\n    registerComplexWatchers,\n    registerNormalWatchers,\n  }\n}\n\nexport default useWatcher\n"],"mappings":";;;;;;;AASA,SAAS,cAAc,OAAiB,SAAiC;AACvE,QAAO,MAAM,QAAQ,MAAM,QAAQ;AACjC,OAAK,OAA4B;AACjC,SAAO;IACN,QAAQ;;AAEb,SAAS,WACP,OACA,QACA;CACA,MAAM,WAAW,oBAAoB;CACrC,MAAM,gCAAgC;EACpC,MAAM,QAAQ,CAAC,QAAQ;EACvB,MAAM,UAAkC;GACtC,WAAW;GACX,cAAc;GACf;EACD,MAAM,aAAa,cAAc,OAAO,QAAQ;AAChD,SAAO,KAAK,WAAW,CAAC,SAAS,QAAQ;GACvC,MAAM,YAAY,QAAQ;AAC1B,OAAI,OAAO,QAAQ,UAAU,CAC3B,aACQ,OAAO,aACZ,WAAW;IACV,IAAI,QAAoC;AACxC,QAAI,cAAc,WAAW,QAAQ,YACnC,SAAQ,WAAW,OAAO;AAE5B,QAAI,cAAc,cAAc,QAAQ,eACtC,SAAQ,cAAc,OAAO;AAE/B,aAAS,aAAa,MAAM,aAAsB;AAClD,aAAS,aAAa,MAAM,OAAgB;IAC5C,MAAM,gBAAgB,cAAc;AACpC,UAAM,MAAM,MAAM,eAAe,cAAc;KAElD;IAEH;;CAEJ,MAAM,+BAA+B;EACnC,MAAM,QAAQ;GACZ;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACD,MAAM,cAAc,CAAC,sBAAsB;EAC3C,MAAM,UAAkC;GACtC,UAAU;GACV,OAAO;GACP,aAAa;GACd;EACD,MAAM,aAAa,cAAc,OAAO,QAAQ;AAChD,SAAO,KAAK,WAAW,CAAC,SAAS,QAAQ;GACvC,MAAM,YAAY,QAAQ;AAC1B,OAAI,OAAO,QAAQ,UAAU,CAC3B,aACQ,OAAO,aACZ,WAAW;AACV,aAAS,aAAa,MAAM,OAAgB;AAC5C,QAAI,QAAQ,aAAa,QAAQ,eAC/B,UAAS,aAAa,MAAM,gBAAgB,CAAC,EAC3C,SAAS,aAAa,MAAM,cAC5B,SAAS,aAAa,MAAM;KAInC;IAEH;AACF,cAAY,SAAS,QAAQ;AAC3B,OAAI,OAAO,MAAM,MAAM,OAAO,IAAI,CAChC,aACQ,MAAM,MAAM,MAAM,OACvB,WAAW;AACV,QAAI,SAAS,aAAa,MAAM,SAAS,YAAa;AACtD,QAAI,CAAC,YAAY,OAAO,KAAK,CAAE;AAC/B,aAAS,aAAa,MAAM,OAAO;KAEtC;IAEH;EAEF,MAAM,eAAe,gBAAgB,QAAQ;AAC7C,MACE,aAAa,SACb,OAAO,aAAa,OAAO,sBAAsB,CAEjD,aACQ,aAAa,OAAO,sBACzB,WAAW;AACV,OAAI,SAAS,aAAa,MAAM,SAAS,YAAa;AACtD,OACE,CAAC,YAAY,OAAO,oBAAoB,IACxC,CAAC,YAAY,MAAM,MAAM,MAAM,oBAAoB,CAEnD;AACF,YAAS,aAAa,MAAM,sBAAsB;IAErD;;AAIL,QAAO;EACL;EACA;EACD"}