{"version":3,"file":"helper.mjs","sources":["../../../../../../../packages/components/table/src/store/helper.ts"],"sourcesContent":["// @ts-nocheck\nimport { watch } from 'vue'\nimport { debounce } from 'lodash-unified'\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":";;;;AAQA,MAAM,eAAkB,GAAA;AAAA,EACtB,MAAQ,EAAA,QAAA;AAAA,EACR,gBAAkB,EAAA,kBAAA;AAAA,EAClB,qBAAuB,EAAA,uBAAA;AAAA,EACvB,MAAQ,EAAA,QAAA;AAAA,EACR,IAAM,EAAA,MAAA;AAAA,EACN,IAAM,EAAA,MAAA;AAAA,EACN,CAAC,uBAA0B,GAAA;AAAA,IACzB,GAAK,EAAA,sBAAA;AAAA,IACL,OAAS,EAAA,aAAA;AAAA,GACX;AAAA,EACA,CAAC,oBAAuB,GAAA;AAAA,IACtB,GAAK,EAAA,oBAAA;AAAA,IACL,OAAS,EAAA,UAAA;AAAA,GACX;AACF,CAAA,CAAA;AAEgB,SAAA,WAAA,CAAe,OAAiB,KAAsB,EAAA;AACpE,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAM,MAAA,IAAI,MAAM,oBAAoB,CAAA,CAAA;AAAA,GACtC;AAEA,EAAA,MAAM,QAAQ,QAAY,EAAA,CAAA;AAG1B,EAAA,KAAA,CAAM,kBAAqB,GAAA,QAAA,CAAS,KAAM,CAAA,mBAAA,EAAqB,EAAE,CAAA,CAAA;AACjE,EAAA,MAAA,CAAO,IAAK,CAAA,eAAe,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAC5C,IAAA,WAAA,CAAY,eAAgB,CAAA,KAAA,EAAO,GAAG,CAAA,EAAG,KAAK,KAAK,CAAA,CAAA;AAAA,GACpD,CAAA,CAAA;AACD,EAAA,eAAA,CAAgB,OAAO,KAAK,CAAA,CAAA;AAC5B,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AAEA,SAAS,eAAA,CAAmB,OAAiB,KAAsB,EAAA;AACjE,EAAA,MAAA,CAAO,IAAK,CAAA,eAAe,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAC5C,IAAA,KAAA;AAAA,MACE,MAAM,eAAgB,CAAA,KAAA,EAAO,GAAG,CAAA;AAAA,MAChC,CAAC,KAAU,KAAA;AACT,QAAY,WAAA,CAAA,KAAA,EAAO,KAAK,KAAK,CAAA,CAAA;AAAA,OAC/B;AAAA,KACF,CAAA;AAAA,GACD,CAAA,CAAA;AACH,CAAA;AAEA,SAAS,WAAA,CAAe,KAAO,EAAA,QAAA,EAAkB,KAAiB,EAAA;AAChE,EAAA,IAAI,MAAS,GAAA,KAAA,CAAA;AACb,EAAA,IAAI,WAAW,eAAgB,CAAA,QAAA,CAAA,CAAA;AAC/B,EAAI,IAAA,OAAO,eAAgB,CAAA,QAAA,CAAA,KAAc,QAAU,EAAA;AACjD,IAAA,QAAA,GAAW,QAAS,CAAA,GAAA,CAAA;AACpB,IAAS,MAAA,GAAA,MAAA,IAAU,gBAAgB,QAAU,CAAA,CAAA,OAAA,CAAA;AAAA,GAC/C;AACA,EAAM,KAAA,CAAA,MAAA,CAAO,UAAU,KAAQ,GAAA,MAAA,CAAA;AACjC,CAAA;AAEA,SAAS,eAAA,CAAmB,OAAsB,IAAc,EAAA;AAC9D,EAAI,IAAA,IAAA,CAAK,QAAS,CAAA,GAAG,CAAG,EAAA;AACtB,IAAM,MAAA,OAAA,GAAU,IAAK,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC9B,IAAA,IAAI,KAAQ,GAAA,KAAA,CAAA;AACZ,IAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvB,MAAA,KAAA,GAAQ,KAAM,CAAA,GAAA,CAAA,CAAA;AAAA,KACf,CAAA,CAAA;AACD,IAAO,OAAA,KAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAA,OAAO,KAAM,CAAA,IAAA,CAAA,CAAA;AAAA,GACf;AACF;;;;"}