UNPKG

bootstrap-vue-next

Version:

BootstrapVueNext is an early and lovely component library for Vue 3 & Nuxt 3 based on Bootstrap 5 and Typescript.

105 lines (104 loc) 3.07 kB
import { inject, provide, ref, computed, readonly } from "vue"; import { s as showHideRegistryKey, m as modalManagerKey, e as breadcrumbRegistryKey, a as breadcrumbGlobalIndexKey, r as rtlRegistryKey } from "../../../keys-BLeKMItg.mjs"; const useRegistry = (rtl = false) => { const showHideStorage = inject(showHideRegistryKey, void 0); if (!showHideStorage) { const { register, values } = _newShowHideRegistry(); provide(showHideRegistryKey, { register, values }); } const modalManager = inject(modalManagerKey, void 0); if (!modalManager) { const stack = ref(/* @__PURE__ */ new Map()); const countStack = computed(() => stack.value.size); const valuesStack = computed(() => [...stack.value.values()]); const lastStack = computed(() => valuesStack.value[valuesStack.value.length - 1]); const pushStack = (modal) => { stack.value.set(modal.uid, modal); }; const removeStack = (modal) => { stack.value.delete(modal.uid); }; const registry = ref(/* @__PURE__ */ new Map()); const pushRegistry = (modal) => { registry.value.set(modal.uid, modal); }; const removeRegistry = (modal) => { registry.value.delete(modal.uid); }; provide(modalManagerKey, { countStack, lastStack, registry: computed(() => registry.value), stack: valuesStack, pushStack, removeStack, pushRegistry, removeRegistry }); } const breadcrumb = inject(breadcrumbRegistryKey, void 0); if (!breadcrumb) { const items = ref({ [breadcrumbGlobalIndexKey]: [] }); const reset = (key = breadcrumbGlobalIndexKey) => { items.value[key] = []; }; provide(breadcrumbRegistryKey, { items, reset }); } const rtlRegistry = inject(rtlRegistryKey, void 0); if (!rtlRegistry) { const rtlDefault = false; const localeDefault = void 0; const rtlInitial = typeof rtl === "boolean" ? rtlDefault : rtl?.rtlInitial ?? rtlDefault; const localeInitial = typeof rtl === "boolean" ? localeDefault : rtl?.localeInitial ?? localeDefault; const isRtl = ref(rtlInitial); const locale = ref(localeInitial); provide(rtlRegistryKey, { isRtl, locale }); } }; const _newShowHideRegistry = () => { const values = ref(/* @__PURE__ */ new Map()); const register = ({ id, component, value, toggle, show, hide, registerTrigger, unregisterTrigger }) => { values.value.set(id, { id, component, value: readonly(value), toggle, show, hide, registerTrigger, unregisterTrigger }); return { unregister() { values.value.delete(id); }, updateId(newId, oldId) { const existingValue = values.value.get(oldId); if (existingValue) { values.value.set(newId, { ...existingValue, id: newId }); values.value.delete(oldId); } } }; }; return { register, values }; }; export { _newShowHideRegistry, useRegistry }; //# sourceMappingURL=index.mjs.map