{"version":3,"file":"watcher-helper.mjs","sources":["../../../../../../../packages/components/table/src/table-column/watcher-helper.ts"],"sourcesContent":["import { watch, getCurrentInstance } from 'vue'\nimport { hasOwn } from '@vue/shared'\nimport { parseMinWidth, parseWidth } from '../util'\n\nimport type { ComputedRef } from 'vue'\nimport type { TableColumnCtx, TableColumn, ValueOf } from './defaults'\n\nfunction useWatcher<T>(\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 = {\n      realWidth: 'width',\n      realMinWidth: 'minWidth',\n    }\n    const allAliases = props.reduce((prev, cur) => {\n      prev[cur] = cur\n      return prev\n    }, aliases)\n\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 any] = value\n            instance.columnConfig.value[key] = value\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      'sortable',\n      'index',\n      'formatter',\n      'className',\n      'labelClassName',\n      'showOverflowTooltip',\n    ]\n    const aliases = {\n      property: 'prop',\n      align: 'realAlign',\n      headerAlign: 'realHeaderAlign',\n    }\n    const allAliases = props.reduce((prev, cur) => {\n      prev[cur] = cur\n      return prev\n    }, 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] = newVal\n          }\n        )\n      }\n    })\n  }\n\n  return {\n    registerComplexWatchers,\n    registerNormalWatchers,\n  }\n}\n\nexport default useWatcher\n"],"names":[],"mappings":";;;;AAOA,oBACE,OACA,QACA;AACA,QAAM,WAAW;AACjB,QAAM,0BAA0B,MAAM;AACpC,UAAM,QAAQ,CAAC;AACf,UAAM,UAAU;AAAA,MACd,WAAW;AAAA,MACX,cAAc;AAAA;AAEhB,UAAM,aAAa,MAAM,OAAO,CAAC,MAAM,QAAQ;AAC7C,WAAK,OAAO;AACZ,aAAO;AAAA,OACN;AAEH,WAAO,KAAK,YAAY,QAAQ,CAAC,QAAQ;AACvC,YAAM,YAAY,QAAQ;AAC1B,UAAI,OAAO,QAAQ,YAAY;AAC7B,cACE,MAAM,OAAO,YACb,CAAC,WAAW;AACV,cAAI,QAAoC;AACxC,cAAI,cAAc,WAAW,QAAQ,aAAa;AAChD,oBAAQ,WAAW;AAAA;AAErB,cAAI,cAAc,cAAc,QAAQ,gBAAgB;AACtD,oBAAQ,cAAc;AAAA;AAExB,mBAAS,aAAa,MAAM,aAAoB;AAChD,mBAAS,aAAa,MAAM,OAAO;AACnC,gBAAM,gBAAgB,cAAc;AACpC,gBAAM,MAAM,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAM3C,QAAM,yBAAyB,MAAM;AACnC,UAAM,QAAQ;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAEF,UAAM,UAAU;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,MACP,aAAa;AAAA;AAEf,UAAM,aAAa,MAAM,OAAO,CAAC,MAAM,QAAQ;AAC7C,WAAK,OAAO;AACZ,aAAO;AAAA,OACN;AACH,WAAO,KAAK,YAAY,QAAQ,CAAC,QAAQ;AACvC,YAAM,YAAY,QAAQ;AAC1B,UAAI,OAAO,QAAQ,YAAY;AAC7B,cACE,MAAM,OAAO,YACb,CAAC,WAAW;AACV,mBAAS,aAAa,MAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAO7C,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA;;;;"}