UNPKG

bootstrap-vue-next

Version:

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

1 lines 40.3 kB
{"version":3,"file":"index-DJj3braI.mjs","sources":["../src/composables/useModalManager.ts","../src/components/BModal/BModal.vue","../src/composables/useModal/index.ts"],"sourcesContent":["import {getSSRHandler, tryOnScopeDispose, unrefElement} from '@vueuse/core'\nimport {\n type ComponentInternalInstance,\n computed,\n getCurrentInstance,\n inject,\n type Ref,\n toValue,\n watch,\n} from 'vue'\nimport {modalManagerKey} from '../utils/keys'\n\nconst modalOpenClassName = 'modal-open'\n\nexport const useSharedModalStack = () => {\n const modalManagerPlugin = inject(modalManagerKey)\n\n /**\n * Removes an item from both the stack and registry\n */\n const dispose = (modal: Readonly<ComponentInternalInstance>): void => {\n modalManagerPlugin?.removeStack(modal)\n modalManagerPlugin?.removeRegistry(modal)\n }\n\n const updateHTMLAttrs = getSSRHandler('updateHTMLAttrs', (selector, attribute, value) => {\n const el =\n typeof selector === 'string'\n ? window?.document.querySelector(selector)\n : unrefElement(selector)\n if (!el) return\n\n if (attribute === 'class') {\n el.classList.toggle(modalOpenClassName, value === modalOpenClassName)\n } else {\n el.setAttribute(attribute, value)\n }\n })\n\n tryOnScopeDispose(() => {\n if (modalManagerPlugin?.countStack.value === 0) {\n updateHTMLAttrs('body', 'class', '')\n }\n })\n\n watch(\n () => modalManagerPlugin?.countStack.value,\n (newValue) => {\n if (newValue === undefined) return\n updateHTMLAttrs('body', 'class', newValue > 0 ? modalOpenClassName : '')\n }\n )\n\n return {\n ...modalManagerPlugin,\n dispose,\n }\n}\n\nexport const useModalManager = (modalOpen: Readonly<Ref<boolean>>, initialValue: boolean) => {\n const {pushRegistry, pushStack, removeStack, stack, dispose, countStack} = useSharedModalStack()\n\n const currentModal = getCurrentInstance()\n\n if (!currentModal || currentModal.type.__name !== 'BModal') {\n throw new Error('useModalManager must only use in BModal component')\n }\n\n pushRegistry?.(currentModal)\n\n tryOnScopeDispose(() => {\n dispose(currentModal)\n })\n\n const setInStack = (newValue: boolean, oldValue: boolean) => {\n if (newValue) {\n pushStack?.(currentModal)\n } else if (oldValue && !newValue) {\n removeStack?.(currentModal)\n }\n }\n\n // (initialValue, initialValue) is meant to always only ever trigger the first `if (newValue) {` block. The other block is skipped _always_\n setInStack(initialValue, initialValue)\n\n watch(modalOpen, setInStack)\n\n return {\n activePosition: computed(() =>\n stack?.value.findIndex((el) => toValue(el.exposed?.id) === toValue(currentModal.exposed?.id))\n ),\n activeModalCount: countStack,\n stackWithoutSelf: computed(\n () =>\n stack?.value.filter(\n (el) => toValue(el.exposed?.id) !== toValue(currentModal.exposed?.id)\n ) ?? []\n ),\n }\n}\n","<template>\n <ConditionalTeleport :to=\"props.teleportTo\" :disabled=\"props.teleportDisabled\">\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <div\n v-show=\"showRef && ((backdropReady && props.backdropFirst) || !props.backdropFirst)\"\n :id=\"computedId\"\n ref=\"_element\"\n class=\"modal\"\n :class=\"[\n props.modalClass,\n {\n fade: !computedNoAnimation,\n show: isVisible,\n ...sharedClasses,\n },\n ]\"\n role=\"dialog\"\n :aria-labelledby=\"!props.noHeader ? `${computedId}-label` : undefined\"\n :aria-describedby=\"`${computedId}-body`\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :style=\"computedZIndex\"\n style=\"display: block\"\n @mousedown.left.self=\"hide('backdrop')\"\n >\n <div class=\"modal-dialog\" :class=\"modalDialogClasses\">\n <div v-if=\"contentShowing\" class=\"modal-content\" :class=\"props.contentClass\">\n <div\n v-if=\"!props.noHeader\"\n class=\"modal-header\"\n :class=\"headerClasses\"\n v-bind=\"props.headerAttrs\"\n >\n <slot name=\"header\" v-bind=\"sharedSlots\">\n <component\n :is=\"props.titleTag\"\n :id=\"`${computedId}-label`\"\n class=\"modal-title\"\n :class=\"titleClasses\"\n >\n <slot name=\"title\" v-bind=\"sharedSlots\">\n {{ props.title }}\n </slot>\n </component>\n <template v-if=\"!props.noHeaderClose\">\n <BButton\n v-if=\"hasHeaderCloseSlot\"\n ref=\"_closeButton\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hide('close')\"\n >\n <slot name=\"header-close\" v-bind=\"sharedSlots\" />\n </BButton>\n <BCloseButton\n v-else\n ref=\"_closeButton\"\n :aria-label=\"props.headerCloseLabel\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hide('close')\"\n />\n </template>\n </slot>\n </div>\n <div\n :id=\"`${computedId}-body`\"\n class=\"modal-body\"\n :class=\"bodyClasses\"\n v-bind=\"props.bodyAttrs\"\n >\n <slot v-bind=\"sharedSlots\">\n {{ props.body }}\n </slot>\n </div>\n <div v-if=\"!props.noFooter\" class=\"modal-footer\" :class=\"footerClasses\">\n <slot name=\"footer\" v-bind=\"sharedSlots\">\n <slot name=\"cancel\" v-bind=\"sharedSlots\">\n <BButton\n v-if=\"!props.okOnly\"\n ref=\"_cancelButton\"\n :disabled=\"disableCancel\"\n :size=\"props.buttonSize\"\n :variant=\"props.cancelVariant\"\n :class=\"props.cancelClass\"\n @click=\"hide('cancel')\"\n >\n {{ props.cancelTitle }}\n </BButton>\n </slot>\n <slot name=\"ok\" v-bind=\"sharedSlots\">\n <BButton\n ref=\"_okButton\"\n :disabled=\"disableOk\"\n :size=\"props.buttonSize\"\n :variant=\"props.okVariant\"\n :class=\"props.okClass\"\n @click=\"hide('ok')\"\n >\n {{ props.okTitle }}\n </BButton>\n </slot>\n </slot>\n </div>\n </div>\n </div>\n <div\n v-if=\"needsFallback\"\n ref=\"_fallbackFocusElement\"\n :class=\"fallbackClassSelector\"\n tabindex=\"0\"\n style=\"width: 0; height: 0; overflow: hidden\"\n />\n </div>\n </Transition>\n <slot v-if=\"!props.noBackdrop\" name=\"backdrop\" v-bind=\"sharedSlots\">\n <Transition v-if=\"renderBackdropRef\" v-bind=\"backdropTransitionProps\">\n <div\n v-show=\"showRef || (isLeaving && props.backdropFirst && !computedNoAnimation)\"\n class=\"modal-backdrop\"\n :style=\"computedZIndexBackdrop\"\n :class=\"{\n fade: !computedNoAnimation,\n show: backdropVisible || computedNoAnimation,\n ...sharedClasses,\n }\"\n @click=\"hide('backdrop')\"\n />\n </Transition>\n </slot>\n </ConditionalTeleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, unrefElement} from '@vueuse/core'\nimport {useActivatedFocusTrap} from '../../composables/useActivatedFocusTrap'\nimport {\n computed,\n type CSSProperties,\n type EmitFn,\n nextTick,\n onMounted,\n ref,\n useTemplateRef,\n watch,\n} from 'vue'\nimport type {BModalProps} from '../../types/ComponentProps'\nimport type {BModalEmits} from '../../types/ComponentEmits'\nimport type {BModalSlots, BModalSlotsData} from '../../types/ComponentSlots'\n\nimport BButton from '../BButton/BButton.vue'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useSafeScrollLock} from '../../composables/useSafeScrollLock'\nimport {getModalZIndex, isEmptySlot} from '../../utils/dom'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport {useModalManager} from '../../composables/useModalManager'\nimport {useShowHide} from '../../composables/useShowHide'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {getElement} from '../../utils/getElement'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<Omit<BModalProps, 'modelValue'>>(), {\n focus: undefined,\n backdropFirst: false,\n body: undefined,\n bodyBgVariant: null,\n bodyAttrs: undefined,\n bodyClass: null,\n bodyScrolling: false,\n bodyTextVariant: null,\n bodyVariant: null,\n busy: false,\n buttonSize: 'md',\n cancelClass: undefined,\n cancelDisabled: false,\n cancelTitle: 'Cancel',\n cancelVariant: 'secondary',\n centered: false,\n contentClass: undefined,\n dialogClass: undefined,\n footerBgVariant: null,\n footerBorderVariant: null,\n footerClass: undefined,\n footerTextVariant: null,\n footerVariant: null,\n fullscreen: false,\n headerAttrs: undefined,\n headerBgVariant: null,\n headerBorderVariant: null,\n headerClass: undefined,\n headerCloseClass: undefined,\n headerCloseLabel: 'Close',\n headerCloseVariant: 'secondary',\n headerTextVariant: null,\n headerVariant: null,\n noFooter: false,\n noHeader: false,\n noHeaderClose: false,\n id: undefined,\n initialAnimation: false,\n lazy: false,\n modalClass: undefined,\n noBackdrop: false,\n noCloseOnBackdrop: false,\n noCloseOnEsc: false,\n noFade: false,\n noTrap: false,\n okClass: undefined,\n okDisabled: false,\n okOnly: false,\n okTitle: 'OK',\n okVariant: 'primary',\n unmountLazy: false,\n scrollable: false,\n size: 'md',\n teleportDisabled: false,\n teleportTo: 'body',\n title: undefined,\n titleClass: undefined,\n titleVisuallyHidden: false,\n titleTag: 'h5',\n show: false,\n transProps: undefined,\n visible: false,\n})\nconst props = useDefaults(_props, 'BModal')\nconst emit = defineEmits<BModalEmits>()\nconst slots = defineSlots<BModalSlots>()\n\nconst computedId = useId(() => props.id, 'modal')\n// Note: passive: true will sync an internal ref... This is required for useModalManager to exit,\n// Since the modelValue that's passed from that composable is not reactive, this internal ref _is_ and thus it will trigger closing the modal\nconst modelValue = defineModel<Exclude<BModalProps['modelValue'], undefined>>({default: false})\n\nconst element = useTemplateRef<HTMLElement | null>('_element')\nconst fallbackFocusElement = useTemplateRef<HTMLElement | null>('_fallbackFocusElement')\nconst okButton = useTemplateRef<HTMLElement | null>('_okButton')\nconst cancelButton = useTemplateRef<HTMLElement | null>('_cancelButton')\nconst closeButton = useTemplateRef<HTMLElement | null>('_closeButton')\n\nconst pickFocusItem = () => {\n if (props.focus && typeof props.focus !== 'boolean') {\n if (props.focus === 'ok') {\n return okButton\n } else if (props.focus === 'close') {\n return closeButton\n } else if (props.focus === 'cancel') {\n return cancelButton\n }\n return getElement(props.focus, element.value ?? undefined) ?? element.value\n }\n return element\n}\n\nlet activeElement: HTMLElement | null = null\nconst onAfterEnter = () => {\n if (props.noTrap && props.focus !== false) {\n activeElement = document.activeElement as HTMLElement\n if (activeElement === element.value) {\n activeElement = null\n }\n const el = unrefElement(pickFocusItem())\n if (!el) return\n el?.focus()\n if (\n el.tagName &&\n el.tagName.toLowerCase() === 'input' &&\n typeof (el as HTMLInputElement).select === 'function'\n ) {\n ;(el as HTMLInputElement).select()\n }\n }\n}\n\nconst onAfterLeave = () => {\n if (props.noTrap && props.focus !== false && activeElement) {\n activeElement?.focus()\n activeElement = null\n }\n}\n\nconst {\n showRef,\n renderRef,\n renderBackdropRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n backdropTransitionProps,\n isLeaving,\n isVisible,\n trapActive,\n contentShowing,\n backdropReady,\n backdropVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, element, computedId, {\n // addShowClass: false,\n transitionProps: {\n onAfterEnter,\n onAfterLeave,\n },\n})\n\nconst fallbackClassSelector = 'modal-fallback-focus'\nconst {needsFallback} = useActivatedFocusTrap({\n element,\n isActive: trapActive,\n noTrap: () => props.noTrap,\n fallbackFocus: {\n ref: fallbackFocusElement,\n classSelector: fallbackClassSelector,\n },\n focus: () => (props.focus === false ? false : (unrefElement(pickFocusItem()) ?? undefined)),\n // () => (typeof focus === 'boolean' ? focus : (unrefElement(focus) ?? undefined)),\n})\n\nonKeyStroke(\n 'Escape',\n () => {\n hide('esc')\n },\n {target: element}\n)\nuseSafeScrollLock(showRef, () => props.bodyScrolling)\n\nconst hasHeaderCloseSlot = computed(() => !isEmptySlot(slots['header-close']))\n\nconst modalDialogClasses = computed(() => [\n props.dialogClass,\n {\n 'modal-fullscreen': props.fullscreen === true,\n [`modal-fullscreen-${props.fullscreen}-down`]: typeof props.fullscreen === 'string',\n [`modal-${props.size}`]: props.size !== 'md',\n 'modal-dialog-centered': props.centered,\n 'modal-dialog-scrollable': props.scrollable,\n },\n])\n\nconst bodyColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.bodyBgVariant,\n textVariant: props.bodyTextVariant,\n variant: props.bodyVariant,\n}))\nconst bodyClasses = computed(() => [props.bodyClass, bodyColorClasses.value])\n\nconst headerColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.headerBgVariant,\n textVariant: props.headerTextVariant,\n variant: props.headerVariant,\n borderVariant: props.headerBorderVariant,\n}))\nconst headerClasses = computed(() => [props.headerClass, headerColorClasses.value])\n\nconst headerCloseAttrs = computed(() => ({\n variant: hasHeaderCloseSlot.value ? props.headerCloseVariant : undefined,\n class: props.headerCloseClass,\n}))\n\nconst footerColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.footerBgVariant,\n textVariant: props.footerTextVariant,\n variant: props.footerVariant,\n borderVariant: props.footerBorderVariant,\n}))\nconst footerClasses = computed(() => [props.footerClass, footerColorClasses.value])\n\nconst titleClasses = computed(() => [\n props.titleClass,\n {\n ['visually-hidden']: props.titleVisuallyHidden,\n },\n])\n\nconst disableCancel = computed(() => props.cancelDisabled || props.busy)\nconst disableOk = computed(() => props.okDisabled || props.busy)\n\nconst {activePosition, activeModalCount, stackWithoutSelf} = useModalManager(\n showRef,\n modelValue.value\n)\n\nconst sharedClasses = computed(() => ({\n [`stack-position-${activePosition?.value ?? 0}`]: true,\n [`stack-inverse-position-${(activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0)}`]: true,\n}))\n\nwatch(stackWithoutSelf, (newValue, oldValue) => {\n if (newValue.length > oldValue.length && showRef.value === true && props.noStacking === true)\n hide()\n})\n\nconst defaultModalDialogZIndex = ref(\n getModalZIndex(element.value ?? (typeof document !== 'undefined' ? document.body : undefined))\n)\n\nonMounted(() => {\n watch(\n renderRef,\n (v) => {\n if (!v) return\n nextTick(() => {\n if (!element.value) return\n defaultModalDialogZIndex.value = getModalZIndex(element.value)\n })\n },\n {immediate: true}\n )\n})\n\nconst computedZIndexNumber = computed<number>(() =>\n // Make sure that newly opened modals have a higher z-index than currently active ones.\n // All active modals have a z-index of ('defaultZIndex' - 'stackSize' - 'positionInStack').\n //\n // This means inactive modals will already be higher than active ones when opened.\n\n showRef.value || isLeaving.value\n ? // Just for reference there is a single frame in which the modal is not active but still has a higher z-index than the active ones due to _when_ it calculates its position. It's a small visual effect\n defaultModalDialogZIndex.value -\n ((activeModalCount?.value ?? 0) * 2 - (activePosition?.value ?? 0) * 2)\n : defaultModalDialogZIndex.value\n)\nconst computedZIndex = computed<CSSProperties>(() => ({\n 'z-index': computedZIndexNumber.value,\n '--b-position': activePosition?.value ?? 0,\n '--b-inverse-position': (activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0),\n '--b-count': activeModalCount?.value ?? 0,\n}))\nconst computedZIndexBackdrop = computed<CSSProperties>(() => ({\n 'z-index': computedZIndexNumber.value - 1,\n '--b-position': activePosition?.value ?? 0,\n '--b-inverse-position': (activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0),\n '--b-count': activeModalCount?.value ?? 0,\n}))\n\nconst sharedSlots = computed<BModalSlotsData>(() => ({\n id: computedId.value,\n cancel: () => {\n hide('cancel')\n },\n close: () => {\n hide('close')\n },\n hide,\n show,\n toggle,\n ok: () => {\n hide('ok')\n },\n active: showRef.value,\n visible: showRef.value,\n}))\n\ndefineExpose({\n hide,\n id: computedId,\n show,\n toggle,\n visible: showRef,\n})\n</script>\n","import {\n type ComponentInternalInstance,\n computed,\n getCurrentInstance,\n inject,\n isReadonly,\n isRef,\n markRaw,\n onScopeDispose,\n type Ref,\n toRef,\n toValue,\n watch,\n} from 'vue'\nimport {useSharedModalStack} from '../useModalManager'\n\nimport {orchestratorRegistryKey} from '../../utils/keys'\nimport type {\n ControllerKey,\n ModalOrchestratorArrayValue,\n ModalOrchestratorCreateParam,\n ModalOrchestratorParam,\n OrchestratorCreateOptions,\n PromiseWithComponent,\n} from '../../types/ComponentOrchestratorTypes'\nimport {buildPromise} from '../orchestratorShared'\nimport {BModal} from '../../components'\n\nexport const useModal = () => {\n const orchestratorRegistry = inject(orchestratorRegistryKey)\n if (!orchestratorRegistry) {\n throw Error(\n 'useModal() must be called within setup(), and BApp, useRegistry or plugin must be installed/provided.'\n )\n }\n const {store, _isOrchestratorInstalled} = orchestratorRegistry\n\n /**\n * @returns {PromiseWithComponent} Returns a promise object with methods to control the modal (show, hide, toggle, get, set, destroy)\n */\n const create = (\n obj: ModalOrchestratorCreateParam = {},\n options: OrchestratorCreateOptions = {}\n ): PromiseWithComponent<typeof BModal, ModalOrchestratorParam> => {\n if (!_isOrchestratorInstalled.value) {\n throw new Error('BApp or BOrchestrator component must be mounted to use the modal controller')\n }\n\n const resolvedProps = toRef(obj)\n const _self = resolvedProps.value?.id || Symbol('Modals controller')\n\n const promise = buildPromise<\n typeof BModal,\n ModalOrchestratorParam,\n ModalOrchestratorArrayValue\n >(_self, store as Ref<ModalOrchestratorArrayValue[]>)\n\n promise.stop = watch(\n resolvedProps,\n (_newValue) => {\n const newValue = {...toValue(_newValue)}\n const previousIndex = store.value.findIndex((el) => el._self === _self)\n const previous =\n previousIndex === -1 ? {_component: markRaw(BModal)} : store.value[previousIndex]\n const v = {\n type: 'modal',\n _self,\n position: 'modal',\n ...previous,\n options,\n promise,\n } as ModalOrchestratorArrayValue\n\n for (const key in newValue) {\n if (key.startsWith('on')) {\n v[key as keyof ModalOrchestratorCreateParam] =\n newValue[key as keyof ModalOrchestratorCreateParam]\n } else if (key === 'component' && newValue.component) {\n v._component = markRaw(newValue.component)\n } else if (key === 'slots' && newValue.slots) {\n v.slots = markRaw(newValue.slots)\n } else {\n v[key as keyof ModalOrchestratorCreateParam] = toValue(\n newValue[key as keyof ModalOrchestratorCreateParam]\n )\n }\n }\n v.modelValue = v.modelValue ?? false\n v['onUpdate:modelValue'] = (val: boolean) => {\n newValue['onUpdate:modelValue']?.(val)\n const {modelValue} = toValue(obj)\n if (isRef(obj) && !isRef(modelValue)) obj.value.modelValue = val\n if (isRef(modelValue) && !isReadonly(modelValue)) {\n ;(modelValue as Ref<ModalOrchestratorArrayValue['modelValue']>).value = val\n }\n const modal = store.value.find((el) => el._self === _self)\n if (modal) {\n modal.modelValue = val\n }\n }\n\n if (previousIndex === -1) {\n store.value.push(v)\n } else {\n store.value.splice(previousIndex, 1, v)\n }\n },\n {\n immediate: true,\n deep: true,\n }\n )\n onScopeDispose(() => {\n const modal = store.value.find((el) => el._self === _self)\n if (modal) {\n modal.promise.value.destroy?.()\n }\n }, true)\n return promise.value\n }\n\n const {lastStack, stack, registry} = useSharedModalStack()\n /**\n * Show a modal\n * @param id - The id of the modal to show\n */\n const show = (id?: ControllerKey) => {\n if (id === undefined) {\n if (lastStack?.value) {\n lastStack?.value.exposed?.show()\n }\n } else {\n const stackModal = stack?.value.find((modal) => modal.exposed?.id === id)\n if (stackModal) {\n stackModal.exposed?.show()\n return\n }\n const modal = store.value.find((el) => el._self === id)\n if (modal) {\n modal.modelValue = true\n modal['onUpdate:modelValue']?.(true)\n } else {\n stack?.value.forEach((modal) => {\n if (modal.exposed?.id === id) {\n modal.exposed?.show()\n }\n })\n }\n }\n }\n\n /**\n * Hide a modal\n * @param trigger - The trigger to hide the modal\n * @param id - The id of the modal to hide\n */\n const hide = (trigger?: string, id?: ControllerKey) => {\n if (id === undefined) {\n if (lastStack?.value) {\n lastStack?.value.exposed?.hide(trigger)\n }\n } else {\n const stackModal = stack?.value.find((modal) => modal.exposed?.id === id)\n if (stackModal) {\n stackModal.exposed?.hide(trigger)\n return\n }\n const modal = store.value.find((el) => el._self === id)\n if (modal) {\n modal.modelValue = false\n modal['onUpdate:modelValue']?.(false)\n } else {\n stack?.value.forEach((modal) => {\n if (modal.exposed?.id === id) {\n modal.exposed?.hide(trigger, true)\n }\n })\n }\n }\n }\n\n /**\n * Hide all modals\n * @param trigger - The trigger to hide all modals\n */\n const hideAll = (trigger?: string) => {\n stack?.value.forEach((modal) => {\n modal.exposed?.hide(trigger, true)\n })\n }\n\n const get = (id: ControllerKey) => {\n const modal = store.value.find((el) => el._self === id)\n if (modal) {\n return {\n modal,\n show() {\n modal?.promise.value.show()\n },\n hide(trigger?: string) {\n modal?.promise.value.hide(trigger)\n },\n }\n }\n if (registry?.value) {\n for (const [, modal] of registry?.value.entries() ?? []) {\n if (toValue(modal.exposed?.id) === id) {\n return {\n modal,\n show() {\n modal.exposed?.show()\n },\n hide(trigger?: string) {\n modal.exposed?.hide(trigger, true)\n },\n }\n }\n }\n }\n return null\n }\n\n const instance = getCurrentInstance()\n const current = () => {\n const findBModal = (component: ComponentInternalInstance): ComponentInternalInstance | null => {\n if (!component.parent) {\n return null\n }\n if (component.parent.type === BModal) {\n return component.parent\n }\n return findBModal(component.parent)\n }\n if (!instance) {\n return null\n }\n const modalComponent = computed(() => findBModal(instance))\n const modal = computed(() => modalComponent.value?.proxy)\n return {\n show() {\n modalComponent.value?.exposed?.show()\n },\n hide(trigger?: string) {\n modalComponent.value?.exposed?.hide(trigger, true)\n },\n modal,\n }\n }\n\n return {\n show,\n hide,\n hideAll,\n get,\n current,\n create,\n _isOrchestratorInstalled,\n store,\n // Todo: Supports listening events globally in the future\n }\n}\n\n/**\n * @deprecated use useModal() instead.\n * @returns {ReturnType<typeof useModal>} The modal controller\n */\nexport const useModalController = useModal\n"],"names":["_useSlots","_useModel","_createBlock","ConditionalTeleport","_unref","_Transition","_mergeProps","_withDirectives","_createElementVNode","$attrs","_normalizeClass","_createElementBlock","_openBlock","_renderSlot","_normalizeProps","_guardReactiveProps","_resolveDynamicComponent","_createTextVNode","_toDisplayString","_Fragment","BButton","BCloseButton","_createVNode","_vShow","BModal","modal"],"mappings":"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"}