UNPKG

bootstrap-vue-next

Version:

Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development

135 lines (134 loc) 4.38 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); require("../../../chunk-CoQrYLCe.js"); const require_keys = require("../../../keys-durSVUrO.js"); let vue = require("vue"); //#region src/composables/useRegistry/index.ts var useRegistry = (rtl = false) => { if (!(0, vue.inject)(require_keys.showHideRegistryKey, null)) { const { register, values } = _newShowHideRegistry(); (0, vue.provide)(require_keys.showHideRegistryKey, { register, values }); } if (!(0, vue.inject)(require_keys.modalManagerKey, null)) { const stack = (0, vue.ref)(/* @__PURE__ */ new Map()); const countStack = (0, vue.computed)(() => stack.value.size); const valuesStack = (0, vue.computed)(() => [...stack.value.values()]); const lastStack = (0, vue.computed)(() => valuesStack.value[valuesStack.value.length - 1]); const pushStack = (modal) => { stack.value.set(modal.uid, modal); }; const removeStack = (modal) => { stack.value.delete(modal.uid); }; /** * A collection of all registered modals */ const registry = (0, vue.ref)(/* @__PURE__ */ new Map()); const pushRegistry = (modal) => { registry.value.set(modal.uid, modal); }; const removeRegistry = (modal) => { registry.value.delete(modal.uid); }; (0, vue.provide)(require_keys.modalManagerKey, { countStack, lastStack, registry: (0, vue.computed)(() => registry.value), stack: valuesStack, pushStack, removeStack, pushRegistry, removeRegistry }); } if (!(0, vue.inject)(require_keys.breadcrumbRegistryKey, null)) { const items = (0, vue.ref)({ [require_keys.breadcrumbGlobalIndexKey]: [] }); const reset = (key = require_keys.breadcrumbGlobalIndexKey) => { items.value[key] = []; }; (0, vue.provide)(require_keys.breadcrumbRegistryKey, { items, reset }); } if (!(0, vue.inject)(require_keys.rtlRegistryKey, null)) { 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; (0, vue.provide)(require_keys.rtlRegistryKey, { isRtl: (0, vue.ref)(rtlInitial), locale: (0, vue.ref)(localeInitial) }); } }; var createGetActive = (instances) => () => instances.length > 0 ? instances[instances.length - 1] : void 0; var _newShowHideRegistry = () => { const values = (0, vue.ref)(/* @__PURE__ */ new Map()); const register = ({ id, component, value, toggle, show, hide, registerTrigger, unregisterTrigger }) => { let currentId = id; const instanceValue = { id, component, value: (0, vue.readonly)(value), toggle, show, hide, registerTrigger, unregisterTrigger }; let instancesHolder = values.value.get(currentId); if (!instancesHolder) { const instances = []; instancesHolder = { instances, getActive: createGetActive(instances) }; values.value.set(currentId, instancesHolder); } instancesHolder.instances.push(instanceValue); const componentUid = component.uid; return { unregister() { const holder = values.value.get(currentId); if (!holder) return; const index = holder.instances.findIndex((inst) => inst.component.uid === componentUid); if (index !== -1) holder.instances.splice(index, 1); if (holder.instances.length === 0) values.value.delete(currentId); }, updateId(newId, oldId) { const holder = values.value.get(oldId); if (!holder) return; const instance = holder.instances.find((inst) => inst.component.uid === componentUid); if (!instance) return; instance.id = newId; let newHolder = values.value.get(newId); if (!newHolder) { const instances = []; newHolder = { instances, getActive: createGetActive(instances) }; values.value.set(newId, newHolder); } const index = holder.instances.findIndex((inst) => inst.component.uid === componentUid); if (index !== -1) { holder.instances.splice(index, 1); newHolder.instances.push(instance); } if (holder.instances.length === 0) values.value.delete(oldId); currentId = newId; } }; }; return { register, values }; }; //#endregion exports._newShowHideRegistry = _newShowHideRegistry; exports.useRegistry = useRegistry; //# sourceMappingURL=index.umd.js.map