element-plus
Version:
A Component Library for Vue 3
1 lines • 4.46 kB
Source Map (JSON)
{"version":3,"file":"helper.mjs","sources":["../../../../../../../packages/components/table/src/store/helper.ts"],"sourcesContent":["import { watch } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { isObject } from '@element-plus/utils'\nimport useStore from '.'\n\nimport type { Store } from '.'\nimport type { DefaultRow, Table, TableProps } from '../table/defaults'\n\nconst InitialStateMap = {\n rowKey: 'rowKey',\n defaultExpandAll: 'defaultExpandAll',\n rowExpandable: 'rowExpandable',\n selectOnIndeterminate: 'selectOnIndeterminate',\n indent: 'indent',\n lazy: 'lazy',\n ['treeProps.hasChildren']: {\n key: 'lazyColumnIdentifier',\n default: 'hasChildren',\n },\n ['treeProps.children']: {\n key: 'childrenColumnName',\n default: 'children',\n },\n ['treeProps.checkStrictly']: {\n key: 'checkStrictly',\n default: false,\n },\n}\n\nexport function createStore<T extends DefaultRow>(\n table: Table<T>,\n props: TableProps<T>\n) {\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 extends DefaultRow>(\n store: Store<T>,\n props: TableProps<T>\n) {\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 extends DefaultRow>(\n value: string | boolean | Record<string, any>,\n propsKey: string,\n store: Store<T>\n) {\n let newVal = value\n let storeKey = InitialStateMap[propsKey as keyof typeof InitialStateMap]\n if (isObject(storeKey)) {\n newVal = newVal || storeKey.default\n storeKey = storeKey.key\n }\n ;((store.states as any)[storeKey] as any).value = newVal\n}\n\nfunction getArrKeysValue<T extends DefaultRow>(\n props: TableProps<T>,\n key: string\n) {\n if ((key as keyof typeof props).includes('.')) {\n const keyList = (key as keyof typeof props).split('.')\n let value: string | Record<string, any> = props\n keyList.forEach((k) => {\n value = (value as Record<string, any>)[k]\n })\n return value\n } else {\n return (props as any)[key] as boolean | string\n }\n}\n"],"names":[],"mappings":";;;;;AAQA,MAAM,eAAA,GAAkB;AAAA,EACtB,MAAA,EAAQ,QAAA;AAAA,EACR,gBAAA,EAAkB,kBAAA;AAAA,EAClB,aAAA,EAAe,eAAA;AAAA,EACf,qBAAA,EAAuB,uBAAA;AAAA,EACvB,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,CAAC,uBAAuB,GAAG;AAAA,IACzB,GAAA,EAAK,sBAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,oBAAoB,GAAG;AAAA,IACtB,GAAA,EAAK,oBAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,yBAAyB,GAAG;AAAA,IAC3B,GAAA,EAAK,eAAA;AAAA,IACL,OAAA,EAAS;AAAA;AAEb,CAAA;AAEO,SAAS,WAAA,CACd,OACA,KAAA,EACA;AACA,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,MAAM,oBAAoB,CAAA;AAAA,EACtC;AAEA,EAAA,MAAM,QAAQ,QAAA,EAAY;AAG1B,EAAA,KAAA,CAAM,kBAAA,GAAqB,QAAA,CAAS,KAAA,CAAM,mBAAA,EAAqB,EAAE,CAAA;AACjE,EAAA,MAAA,CAAO,IAAA,CAAK,eAAe,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC5C,IAAA,WAAA,CAAY,eAAA,CAAgB,KAAA,EAAO,GAAG,CAAA,EAAG,KAAK,KAAK,CAAA;AAAA,EACrD,CAAC,CAAA;AACD,EAAA,eAAA,CAAgB,OAAO,KAAK,CAAA;AAC5B,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,eAAA,CACP,OACA,KAAA,EACA;AACA,EAAA,MAAA,CAAO,IAAA,CAAK,eAAe,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC5C,IAAA,KAAA;AAAA,MACE,MAAM,eAAA,CAAgB,KAAA,EAAO,GAAG,CAAA;AAAA,MAChC,CAAC,KAAA,KAAU;AACT,QAAA,WAAA,CAAY,KAAA,EAAO,KAAK,KAAK,CAAA;AAAA,MAC/B;AAAA,KACF;AAAA,EACF,CAAC,CAAA;AACH;AAEA,SAAS,WAAA,CACP,KAAA,EACA,QAAA,EACA,KAAA,EACA;AACA,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,IAAI,QAAA,GAAW,gBAAgB,QAAwC,CAAA;AACvE,EAAA,IAAI,QAAA,CAAS,QAAQ,CAAA,EAAG;AACtB,IAAA,MAAA,GAAS,UAAU,QAAA,CAAS,OAAA;AAC5B,IAAA,QAAA,GAAW,QAAA,CAAS,GAAA;AAAA,EACtB;AACC,EAAE,KAAA,CAAM,MAAA,CAAe,QAAQ,CAAA,CAAU,KAAA,GAAQ,MAAA;AACpD;AAEA,SAAS,eAAA,CACP,OACA,GAAA,EACA;AACA,EAAA,IAAK,GAAA,CAA2B,QAAA,CAAS,GAAG,CAAA,EAAG;AAC7C,IAAA,MAAM,OAAA,GAAW,GAAA,CAA2B,KAAA,CAAM,GAAG,CAAA;AACrD,IAAA,IAAI,KAAA,GAAsC,KAAA;AAC1C,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA,KAAM;AACrB,MAAA,KAAA,GAAS,MAA8B,CAAC,CAAA;AAAA,IAC1C,CAAC,CAAA;AACD,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,MAAO;AACL,IAAA,OAAQ,MAAc,GAAG,CAAA;AAAA,EAC3B;AACF;;;;"}