{"version":3,"file":"helper.mjs","sources":["../../../../../../../packages/components/table/src/store/helper.ts"],"sourcesContent":["import { watch } from 'vue'\nimport debounce from 'lodash/debounce'\nimport useStore from '.'\n\nimport type { Store } from '.'\nimport type { Table, TableProps } from '../table/defaults'\n\nconst InitialStateMap = {\n  rowKey: 'rowKey',\n  defaultExpandAll: 'defaultExpandAll',\n  selectOnIndeterminate: 'selectOnIndeterminate',\n  indent: 'indent',\n  lazy: 'lazy',\n  data: 'data',\n  ['treeProps.hasChildren']: {\n    key: 'lazyColumnIdentifier',\n    default: 'hasChildren',\n  },\n  ['treeProps.children']: {\n    key: 'childrenColumnName',\n    default: 'children',\n  },\n}\n\nexport function createStore<T>(table: Table<T>, props: TableProps<T>) {\n  if (!table) {\n    throw new Error('Table is required.')\n  }\n\n  const store = useStore<T>()\n  // fix https://github.com/ElemeFE/element/issues/14075\n  // related pr https://github.com/ElemeFE/element/pull/14146\n  store.toggleAllSelection = debounce(store._toggleAllSelection, 10)\n  Object.keys(InitialStateMap).forEach((key) => {\n    handleValue(getArrKeysValue(props, key), key, store)\n  })\n  proxyTableProps(store, props)\n  return store\n}\n\nfunction proxyTableProps<T>(store: Store<T>, props: TableProps<T>) {\n  Object.keys(InitialStateMap).forEach((key) => {\n    watch(\n      () => getArrKeysValue(props, key),\n      (value) => {\n        handleValue(value, key, store)\n      }\n    )\n  })\n}\n\nfunction handleValue<T>(value, propsKey: string, store: Store<T>) {\n  let newVal = value\n  let storeKey = InitialStateMap[propsKey]\n  if (typeof InitialStateMap[propsKey] === 'object') {\n    storeKey = storeKey.key\n    newVal = newVal || InitialStateMap[propsKey].default\n  }\n  store.states[storeKey].value = newVal\n}\n\nfunction getArrKeysValue<T>(props: TableProps<T>, keys: string) {\n  if (keys.includes('.')) {\n    const keyList = keys.split('.')\n    let value = props\n    keyList.forEach((key) => {\n      value = value[key]\n    })\n    return value\n  } else {\n    return props[keys]\n  }\n}\n"],"names":[],"mappings":";;;;AAOA,MAAM,kBAAkB;AAAA,EACtB,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,GACL,0BAA0B;AAAA,IACzB,KAAK;AAAA,IACL,SAAS;AAAA;AAAA,GAEV,uBAAuB;AAAA,IACtB,KAAK;AAAA,IACL,SAAS;AAAA;AAAA;qBAIkB,OAAiB,OAAsB;AACpE,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM;AAAA;AAGlB,QAAM,QAAQ;AAGd,QAAM,qBAAqB,SAAS,MAAM,qBAAqB;AAC/D,SAAO,KAAK,iBAAiB,QAAQ,CAAC,QAAQ;AAC5C,gBAAY,gBAAgB,OAAO,MAAM,KAAK;AAAA;AAEhD,kBAAgB,OAAO;AACvB,SAAO;AAAA;AAGT,yBAA4B,OAAiB,OAAsB;AACjE,SAAO,KAAK,iBAAiB,QAAQ,CAAC,QAAQ;AAC5C,UACE,MAAM,gBAAgB,OAAO,MAC7B,CAAC,UAAU;AACT,kBAAY,OAAO,KAAK;AAAA;AAAA;AAAA;AAMhC,qBAAwB,OAAO,UAAkB,OAAiB;AAChE,MAAI,SAAS;AACb,MAAI,WAAW,gBAAgB;AAC/B,MAAI,OAAO,gBAAgB,cAAc,UAAU;AACjD,eAAW,SAAS;AACpB,aAAS,UAAU,gBAAgB,UAAU;AAAA;AAE/C,QAAM,OAAO,UAAU,QAAQ;AAAA;AAGjC,yBAA4B,OAAsB,MAAc;AAC9D,MAAI,KAAK,SAAS,MAAM;AACtB,UAAM,UAAU,KAAK,MAAM;AAC3B,QAAI,QAAQ;AACZ,YAAQ,QAAQ,CAAC,QAAQ;AACvB,cAAQ,MAAM;AAAA;AAEhB,WAAO;AAAA,SACF;AACL,WAAO,MAAM;AAAA;AAAA;;;;"}