{"version":3,"file":"global-config.mjs","sources":["../../../../../src/services/global-config/global-config.ts"],"sourcesContent":["import { cloneDeep } from '../../utils/clone-deep'\nimport { ref, getCurrentInstance, Ref } from 'vue'\nimport { GlobalConfig, GlobalConfigUpdater, PartialGlobalConfig, ProvidedGlobalConfig } from './types'\nimport { getComponentsDefaultConfig } from '../component-config'\nimport { getIconDefaultConfig } from '../icon'\nimport { getColorDefaultConfig } from '../color'\nimport { getI18nConfigDefaults } from '../i18n'\nimport { getBreakpointDefaultConfig } from '../breakpoint'\nimport { getCurrentApp } from '../current-app'\nimport { mergeDeep } from '../../utils/merge-deep'\nimport { getColorsClassesDefaultConfig } from '../colors-classes/config/default'\n\nexport const GLOBAL_CONFIG = Symbol('GLOBAL_CONFIG')\n\nconst getDefaultConfig = () => ({\n  colors: getColorDefaultConfig(),\n  icons: getIconDefaultConfig(),\n  components: getComponentsDefaultConfig(),\n  breakpoint: getBreakpointDefaultConfig(),\n  i18n: getI18nConfigDefaults(),\n  colorsClasses: getColorsClassesDefaultConfig(),\n  /**\n   * global config variable to pass nuxt-link component to vuestic-ui via @vuestic/nuxt\n   * TODO: give a try to integrate inertia js router components via this option\n   * TODO: if this try won't be success, may be remake to provide/inject\n   */\n  routerComponent: undefined,\n})\n\nexport const createGlobalConfig = (defaultConfig: PartialGlobalConfig = {}) => {\n  const globalConfig = ref<GlobalConfig>(mergeDeep(getDefaultConfig(), defaultConfig)) as Ref<GlobalConfig>\n\n  const getGlobalConfig = (): GlobalConfig => globalConfig.value\n  const setGlobalConfig = (updater: GlobalConfig | GlobalConfigUpdater<GlobalConfig>) => {\n    const config = typeof updater === 'function' ? updater(globalConfig.value) : updater\n    globalConfig.value = cloneDeep(config)\n  }\n\n  const mergeGlobalConfig = (updater: PartialGlobalConfig | GlobalConfigUpdater<PartialGlobalConfig>) => {\n    const config = typeof updater === 'function' ? updater(globalConfig.value as PartialGlobalConfig) : updater\n    globalConfig.value = mergeDeep(cloneDeep(globalConfig.value), config)\n  }\n\n  return {\n    getGlobalConfig,\n    setGlobalConfig,\n    mergeGlobalConfig,\n    globalConfig,\n  }\n}\n\nexport const provideForCurrentApp = <T>(provide: T) => {\n  const provides = getCurrentInstance()?.appContext.provides || getCurrentApp()?._context.provides\n\n  if (!provides) { throw new Error('Vue app not found for provide') }\n\n  provides[GLOBAL_CONFIG] = provide\n\n  return provide\n}\n\nexport { useGlobalConfig } from '../../composables/useGlobalConfig'\n\nexport * from './types'\n"],"names":[],"mappings":";;;;;;;;;;AAYa,MAAA,gBAAgB,OAAO,eAAe;AAEnD,MAAM,mBAAmB,OAAO;AAAA,EAC9B,QAAQ,sBAAsB;AAAA,EAC9B,OAAO,qBAAqB;AAAA,EAC5B,YAAY,2BAA2B;AAAA,EACvC,YAAY,2BAA2B;AAAA,EACvC,MAAM,sBAAsB;AAAA,EAC5B,eAAe,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7C,iBAAiB;AACnB;AAEO,MAAM,qBAAqB,CAAC,gBAAqC,OAAO;AAC7E,QAAM,eAAe,IAAkB,UAAU,iBAAiB,GAAG,aAAa,CAAC;AAE7E,QAAA,kBAAkB,MAAoB,aAAa;AACnD,QAAA,kBAAkB,CAAC,YAA8D;AACrF,UAAM,SAAS,OAAO,YAAY,aAAa,QAAQ,aAAa,KAAK,IAAI;AAChE,iBAAA,QAAQ,UAAU,MAAM;AAAA,EAAA;AAGjC,QAAA,oBAAoB,CAAC,YAA4E;AACrG,UAAM,SAAS,OAAO,YAAY,aAAa,QAAQ,aAAa,KAA4B,IAAI;AACpG,iBAAa,QAAQ,UAAU,UAAU,aAAa,KAAK,GAAG,MAAM;AAAA,EAAA;AAG/D,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEa,MAAA,uBAAuB,CAAI,YAAe;;AACrD,QAAM,aAAW,wBAAmB,MAAnB,mBAAsB,WAAW,eAAY,yBAAA,mBAAiB,SAAS;AAExF,MAAI,CAAC,UAAU;AAAQ,UAAA,IAAI,MAAM,+BAA+B;AAAA,EAAE;AAElE,WAAS,aAAa,IAAI;AAEnB,SAAA;AACT;"}