{"version":3,"file":"index.mjs","sources":["../../../../src/composables/useRegistry/index.ts"],"sourcesContent":["import {\n  type ComponentInternalInstance,\n  computed,\n  inject,\n  provide,\n  readonly,\n  type Ref,\n  ref,\n} from 'vue'\nimport {\n  breadcrumbGlobalIndexKey,\n  breadcrumbRegistryKey,\n  modalManagerKey,\n  type RegisterShowHideFnInput,\n  type RegisterShowHideMapValue,\n  rtlRegistryKey,\n  showHideRegistryKey,\n} from '../../utils/keys'\nimport type {BAppProps} from '../../types/ComponentProps'\nimport type {BreadcrumbItemRaw} from '../../types/BreadcrumbTypes'\n\nexport const useRegistry = (rtl: BAppProps['rtl'] = false) => {\n  const showHideStorage = inject(showHideRegistryKey, undefined)\n  if (!showHideStorage) {\n    const {register, values} = _newShowHideRegistry()\n    provide(showHideRegistryKey, {register, values})\n  }\n\n  const modalManager = inject(modalManagerKey, undefined)\n  if (!modalManager) {\n    const stack: Ref<Map<number, ComponentInternalInstance>> = ref(new Map())\n\n    const countStack = computed(() => stack.value.size)\n    const valuesStack = computed(() => [...stack.value.values()])\n    const lastStack = computed(() => valuesStack.value[valuesStack.value.length - 1])\n\n    const pushStack = (modal: Readonly<ComponentInternalInstance>) => {\n      stack.value.set(modal.uid, modal)\n    }\n    const removeStack = (modal: Readonly<ComponentInternalInstance>) => {\n      stack.value.delete(modal.uid)\n    }\n\n    /**\n     * A collection of all registered modals\n     */\n    const registry: Ref<Map<number, ComponentInternalInstance>> = ref(new Map())\n\n    // Utility getters not made, would not be used (count, last)\n\n    const pushRegistry = (modal: Readonly<ComponentInternalInstance>) => {\n      registry.value.set(modal.uid, modal)\n    }\n    const removeRegistry = (modal: Readonly<ComponentInternalInstance>) => {\n      registry.value.delete(modal.uid)\n    }\n\n    provide(modalManagerKey, {\n      countStack,\n      lastStack,\n      registry: computed(() => registry.value),\n      stack: valuesStack,\n      pushStack,\n      removeStack,\n      pushRegistry,\n      removeRegistry,\n    })\n  }\n\n  const breadcrumb = inject(breadcrumbRegistryKey, undefined)\n  if (!breadcrumb) {\n    const items = ref<Record<string, BreadcrumbItemRaw[]>>({\n      [breadcrumbGlobalIndexKey]: [],\n    })\n    const reset = (key: string = breadcrumbGlobalIndexKey) => {\n      items.value[key] = []\n    }\n\n    provide(breadcrumbRegistryKey, {items, reset})\n  }\n\n  const rtlRegistry = inject(rtlRegistryKey, undefined)\n  if (!rtlRegistry) {\n    const rtlDefault = false\n    const localeDefault = undefined\n\n    const rtlInitial = typeof rtl === 'boolean' ? rtlDefault : (rtl?.rtlInitial ?? rtlDefault)\n\n    const localeInitial =\n      typeof rtl === 'boolean' ? localeDefault : (rtl?.localeInitial ?? localeDefault)\n\n    const isRtl = ref(rtlInitial)\n    const locale = ref(localeInitial)\n\n    provide(rtlRegistryKey, {isRtl, locale})\n  }\n}\n\nexport const _newShowHideRegistry = () => {\n  const values: Ref<Map<string, RegisterShowHideMapValue>> = ref(new Map())\n\n  const register = ({\n    id,\n    component,\n    value,\n    toggle,\n    show,\n    hide,\n    registerTrigger,\n    unregisterTrigger,\n  }: RegisterShowHideFnInput) => {\n    values.value.set(id, {\n      id,\n      component,\n      value: readonly(value),\n      toggle,\n      show,\n      hide,\n      registerTrigger,\n      unregisterTrigger,\n    })\n    return {\n      unregister() {\n        values.value.delete(id)\n      },\n      updateId(newId: string, oldId: string) {\n        const existingValue = values.value.get(oldId)\n        if (existingValue) {\n          values.value.set(newId, {...existingValue, id: newId})\n          values.value.delete(oldId)\n        }\n      },\n    }\n  }\n  return {\n    register,\n    values,\n  }\n}\n"],"names":[],"mappings":"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"}