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
JavaScript
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