{"version":3,"file":"use-global-config.mjs","sources":["../../../../../../../packages/components/config-provider-v2/src/hooks/use-global-config.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject, ref, toRaw } from 'vue'\nimport { configProviderProps } from 'element-plus'\nimport { mergeWith } from 'lodash-unified'\nimport { configProviderV2Props } from '../config-provider-v2-props'\nimport type { InjectionKey, Ref } from 'vue'\nimport type { ConfigProviderProps } from 'element-plus'\nimport type { TablePageContext } from '@element-plus/components/table-page'\nimport type { ConfigProviderV2Context } from '../constants'\n\nconst overrideKeys = ['pageSizes']\nfunction merge<T extends Partial<ConfigProviderV2Context> | object>(\n  ...sources: T[]\n): T {\n  return mergeWith(\n    {},\n    ...sources,\n    (objValue: any, srcValue: any, key: string) => {\n      if (overrideKeys.includes(key)) {\n        return srcValue\n      }\n      return undefined\n    }\n  )\n}\n\nexport const getCfgOptions = <\n  T extends Partial<ConfigProviderV2Context & ConfigProviderProps>\n>(\n  options: T\n) => {\n  const pickupProps = (props: Record<string, any>) => {\n    const result: Record<string, any> = {}\n    Object.keys(props).forEach((key: string) => {\n      if (Object.prototype.hasOwnProperty.call(options, key)) {\n        result[key] = (options as any)[key]\n      }\n    })\n    return result\n  }\n  return {\n    epCfg: pickupProps(configProviderProps),\n    epxCfg: pickupProps(configProviderV2Props),\n  }\n}\n\n// table-page 全部配置\nexport const getDefaultTablePageConfig = () => {\n  return {\n    pagination: {\n      defaultPageSize: 10,\n      pageSizes: [10, 20, 50, 100],\n      layout: 'sizes, prev, pager, next, jumper',\n      background: true,\n      showRecord: true,\n      showTotal: true,\n    },\n    config: {\n      currentPage: 'current',\n      pageSize: 'size',\n      total: 'total',\n    },\n  }\n}\nexport const tablePageContextKey: InjectionKey<Ref<TablePageContext>> = Symbol(\n  'tablePageContextKey'\n)\nexport const useTablePageConfig = () => {\n  const initial = computed(() =>\n    merge(\n      getDefaultTablePageConfig() as TablePageContext,\n      globalConfig.value.tablePage as TablePageContext\n    )\n  )\n  return {\n    tablePageConfig: getCurrentInstance()\n      ? inject(tablePageContextKey, initial as Ref<TablePageContext>)\n      : initial,\n  }\n}\n\n// 只存 app.use(ElementPlusX, options) 的配置\nexport const globalConfig = ref<ConfigProviderV2Context>({\n  tablePage: getDefaultTablePageConfig(),\n})\n\nexport const mergeGlobalConfig = (cfg: ConfigProviderV2Context) => {\n  globalConfig.value = merge({}, toRaw(globalConfig.value), cfg)\n}\n"],"names":[],"mappings":";;;;;AASA,MAAM,YAAA,GAAe,CAAC,WAAW,CAAA,CAAA;AACjC,SAAS,SACJ,OACA,EAAA;AACH,EAAO,OAAA,SAAA;AAAA,IACL,EAAC;AAAA,IACD,GAAG,OAAA;AAAA,IACH,CAAC,QAAe,EAAA,QAAA,EAAe,GAAgB,KAAA;AAC7C,MAAI,IAAA,YAAA,CAAa,QAAS,CAAA,GAAG,CAAG,EAAA;AAC9B,QAAO,OAAA,QAAA,CAAA;AAAA,OACT;AACA,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACT;AAAA,GACF,CAAA;AACF,CAAA;AAEa,MAAA,aAAA,GAAgB,CAG3B,OACG,KAAA;AACH,EAAM,MAAA,WAAA,GAAc,CAAC,KAA+B,KAAA;AAClD,IAAA,MAAM,SAA8B,EAAC,CAAA;AACrC,IAAA,MAAA,CAAO,IAAK,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAgB,KAAA;AAC1C,MAAA,IAAI,OAAO,SAAU,CAAA,cAAA,CAAe,IAAK,CAAA,OAAA,EAAS,GAAG,CAAG,EAAA;AACtD,QAAA,MAAA,CAAO,OAAQ,OAAgB,CAAA,GAAA,CAAA,CAAA;AAAA,OACjC;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,MAAA,CAAA;AAAA,GACT,CAAA;AACA,EAAO,OAAA;AAAA,IACL,KAAA,EAAO,YAAY,mBAAmB,CAAA;AAAA,IACtC,MAAA,EAAQ,YAAY,qBAAqB,CAAA;AAAA,GAC3C,CAAA;AACF,EAAA;AAGO,MAAM,4BAA4B,MAAM;AAC7C,EAAO,OAAA;AAAA,IACL,UAAY,EAAA;AAAA,MACV,eAAiB,EAAA,EAAA;AAAA,MACjB,SAAW,EAAA,CAAC,EAAI,EAAA,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,MAC3B,MAAQ,EAAA,kCAAA;AAAA,MACR,UAAY,EAAA,IAAA;AAAA,MACZ,UAAY,EAAA,IAAA;AAAA,MACZ,SAAW,EAAA,IAAA;AAAA,KACb;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,WAAa,EAAA,SAAA;AAAA,MACb,QAAU,EAAA,MAAA;AAAA,MACV,KAAO,EAAA,OAAA;AAAA,KACT;AAAA,GACF,CAAA;AACF,EAAA;AACO,MAAM,mBAA2D,GAAA,MAAA;AAAA,EACtE,qBAAA;AACF,EAAA;AACO,MAAM,qBAAqB,MAAM;AACtC,EAAA,MAAM,OAAU,GAAA,QAAA;AAAA,IAAS,MACvB,KAAA;AAAA,MACE,yBAA0B,EAAA;AAAA,MAC1B,aAAa,KAAM,CAAA,SAAA;AAAA,KACrB;AAAA,GACF,CAAA;AACA,EAAO,OAAA;AAAA,IACL,iBAAiB,kBAAmB,EAAA,GAChC,MAAO,CAAA,mBAAA,EAAqB,OAAgC,CAC5D,GAAA,OAAA;AAAA,GACN,CAAA;AACF,EAAA;AAGO,MAAM,eAAe,GAA6B,CAAA;AAAA,EACvD,WAAW,yBAA0B,EAAA;AACvC,CAAC,EAAA;AAEY,MAAA,iBAAA,GAAoB,CAAC,GAAiC,KAAA;AACjE,EAAa,YAAA,CAAA,KAAA,GAAQ,MAAM,EAAC,EAAG,MAAM,YAAa,CAAA,KAAK,GAAG,GAAG,CAAA,CAAA;AAC/D;;;;"}