{"version":3,"file":"config-provider.mjs","sources":["../../../../../../packages/components/config-provider/src/config-provider.ts"],"sourcesContent":["import { defineComponent, renderSlot, watch } from 'vue'\nimport { buildProps, definePropType } from '@bigin/utils'\nimport { provideGlobalConfig, useSizeProp } from '@bigin/hooks'\n\nimport type { TableConfigContext } from '@bigin/components/table'\nimport type { ExtractPropTypes } from 'vue'\nimport type { ExperimentalFeatures } from '@bigin/tokens'\nimport type { Language } from '@bigin/locale'\nimport type { ButtonConfigContext } from '@bigin/components/button'\nimport type { MessageConfigContext } from '@bigin/components/message'\n\nexport const messageConfig: MessageConfigContext = {}\n\nexport const configProviderProps = buildProps({\n  // Controlling if the users want a11y features.\n  a11y: {\n    type: Boolean,\n    default: true,\n  },\n\n  locale: {\n    type: definePropType<Language>(Object),\n  },\n\n  size: useSizeProp,\n\n  button: {\n    type: definePropType<ButtonConfigContext>(Object),\n  },\n\n  table: {\n    type: definePropType<TableConfigContext>(Object),\n    default() {\n      return {\n        sort: {\n          ascending: 'ascending',\n          descending: 'descending',\n        },\n      }\n    },\n  },\n\n  experimentalFeatures: {\n    type: definePropType<ExperimentalFeatures>(Object),\n  },\n\n  // Controls if we should handle keyboard navigation\n  keyboardNavigation: {\n    type: Boolean,\n    default: true,\n  },\n\n  message: {\n    type: definePropType<MessageConfigContext>(Object),\n  },\n\n  zIndex: Number,\n\n  namespace: {\n    type: String,\n    default: 'b',\n  },\n} as const)\nexport type ConfigProviderProps = ExtractPropTypes<typeof configProviderProps>\n\nconst ConfigProvider = defineComponent({\n  name: 'BConfigProvider',\n  props: configProviderProps,\n\n  setup(props, { slots }) {\n    watch(\n      () => props.message,\n      (val) => {\n        Object.assign(messageConfig, val ?? {})\n      },\n      { immediate: true, deep: true }\n    )\n    const config = provideGlobalConfig(props)\n    return () => renderSlot(slots, 'default', { config: config?.value })\n  },\n})\nexport type ConfigProviderInstance = InstanceType<typeof ConfigProvider>\n\nexport default ConfigProvider\n"],"names":[],"mappings":";;;;;;;AAWO,MAAM,gBAAsC,GAAC;AAE7C,MAAM,sBAAsB,UAAW,CAAA;AAAA,EAE5C,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EAEA,MAAQ,EAAA;AAAA,IACN,IAAA,EAAM,eAAyB,MAAM,CAAA;AAAA,GACvC;AAAA,EAEA,IAAM,EAAA,WAAA;AAAA,EAEN,MAAQ,EAAA;AAAA,IACN,IAAA,EAAM,eAAoC,MAAM,CAAA;AAAA,GAClD;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,IAAA,EAAM,eAAmC,MAAM,CAAA;AAAA,IAC/C,OAAU,GAAA;AACR,MAAO,OAAA;AAAA,QACL,IAAM,EAAA;AAAA,UACJ,SAAW,EAAA,WAAA;AAAA,UACX,UAAY,EAAA,YAAA;AAAA,SACd;AAAA,OACF,CAAA;AAAA,KACF;AAAA,GACF;AAAA,EAEA,oBAAsB,EAAA;AAAA,IACpB,IAAA,EAAM,eAAqC,MAAM,CAAA;AAAA,GACnD;AAAA,EAGA,kBAAoB,EAAA;AAAA,IAClB,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EAEA,OAAS,EAAA;AAAA,IACP,IAAA,EAAM,eAAqC,MAAM,CAAA;AAAA,GACnD;AAAA,EAEA,MAAQ,EAAA,MAAA;AAAA,EAER,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,GAAA;AAAA,GACX;AACF,CAAU,EAAA;AAGV,MAAM,iBAAiB,eAAgB,CAAA;AAAA,EACrC,IAAM,EAAA,iBAAA;AAAA,EACN,KAAO,EAAA,mBAAA;AAAA,EAEP,KAAM,CAAA,KAAA,EAAO,EAAE,KAAA,EAAS,EAAA;AACtB,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,OAAA;AAAA,MACZ,CAAC,GAAQ,KAAA;AACP,QAAA,MAAA,CAAO,MAAO,CAAA,aAAA,EAAe,GAAO,IAAA,EAAE,CAAA,CAAA;AAAA,OACxC;AAAA,MACA,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,IAAK,EAAA;AAAA,KAChC,CAAA;AACA,IAAM,MAAA,MAAA,GAAS,oBAAoB,KAAK,CAAA,CAAA;AACxC,IAAO,OAAA,MAAM,WAAW,KAAO,EAAA,SAAA,EAAW,EAAE,MAAQ,EAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AAAA,GACrE;AACF,CAAC;;;;"}