UNPKG

maz-ui

Version:

A standalone components library for Vue.Js 3 & Nuxt.Js 3

1 lines 1.18 kB
import{defineComponent,onUnmounted,provide,ref,renderSlot,watch}from"vue";import{setupTheme}from"@maz-ui/themes/utils/setup-theme";import{createMazUiTranslations}from"@maz-ui/translations/utils/instance";var MazUiProvider_default=defineComponent({__name:`MazUiProvider`,props:{theme:{},translations:{}},setup(__props){let i18n=createMazUiTranslations(__props.translations);provide(`mazTranslations`,i18n);let providedThemeState=ref();provide(`mazThemeState`,providedThemeState);let themeCleanup;let stopThemeSync;function initTheme(options){themeCleanup?.(),stopThemeSync?.();let{themeState,cleanup}=setupTheme(options);providedThemeState.value=themeState.value,stopThemeSync=watch(themeState,newState=>{providedThemeState.value={...newState}},{deep:!0}),themeCleanup=cleanup}return initTheme(__props.theme),watch(()=>__props.theme,newThemeOptions=>{initTheme(newThemeOptions)},{deep:!0}),watch(()=>__props.translations,newTranslationsOptions=>{newTranslationsOptions?.locale&&i18n.setLocale(newTranslationsOptions.locale)},{deep:!0}),onUnmounted(()=>{themeCleanup?.(),stopThemeSync?.()}),(_ctx,_cache)=>renderSlot(_ctx.$slots,`default`)}});export{MazUiProvider_default as t};