{"version":3,"file":"index-CyEArZ56.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 Component,\n  type ComponentInternalInstance,\n  computed,\n  getCurrentInstance,\n  inject,\n  isReadonly,\n  isRef,\n  markRaw,\n  onScopeDispose,\n  type Ref,\n  shallowRef,\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 = <ComponentProps = Record<string, unknown>>(\n    obj: ModalOrchestratorCreateParam<ComponentProps> = {} as ModalOrchestratorCreateParam<ComponentProps>,\n    options: OrchestratorCreateOptions = {}\n  ): PromiseWithComponent<typeof BModal, ModalOrchestratorParam<ComponentProps>> => {\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 = (isRef(obj) ? obj : shallowRef(obj)) as Ref<\n      ModalOrchestratorParam<ComponentProps>\n    >\n    const _self = resolvedProps.value?.id || Symbol('Modals controller')\n\n    const promise = buildPromise<\n      typeof BModal,\n      ModalOrchestratorParam<ComponentProps>,\n      ModalOrchestratorArrayValue\n    >(_self, store as Ref<ModalOrchestratorArrayValue[]>)\n\n    promise.stop = watch(\n      resolvedProps,\n      (_newValue) => {\n        const newValue = {...toValue(_newValue)} as Record<string, unknown>\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 ModalOrchestratorArrayValue] = newValue[key] as never\n          } else if (key === 'component' && newValue.component) {\n            v._component = markRaw(newValue.component as Component)\n          } else if (key === 'slots' && newValue.slots) {\n            v.slots = markRaw(newValue.slots) as never\n          } else {\n            v[key as keyof ModalOrchestratorArrayValue] = toValue(newValue[key]) as never\n          }\n        }\n        v.modelValue = v.modelValue ?? false\n        v['onUpdate:modelValue'] = (val: boolean) => {\n          const onUpdateModelValue = newValue['onUpdate:modelValue'] as\n            | ((val: boolean) => void)\n            | undefined\n          onUpdateModelValue?.(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":";;;;;;;;;;;;;;;;;;;AAYA,MAAM,qBAAqB;AAEpB,MAAM,sBAAsB,MAAM;AACvC,QAAM,qBAAqB,OAAO,eAAe;AAKjD,QAAM,UAAU,CAAC,UAAqD;AACpE,wBAAoB,YAAY,KAAK;AACrC,wBAAoB,eAAe,KAAK;AAAA,EAC1C;AAEA,QAAM,kBAAkB,cAAc,mBAAmB,CAAC,UAAU,WAAW,UAAU;AACvF,UAAM,KACJ,OAAO,aAAa,WAChB,QAAQ,SAAS,cAAc,QAAQ,IACvC,aAAa,QAAQ;AAC3B,QAAI,CAAC,GAAI;AAET,QAAI,cAAc,SAAS;AACzB,SAAG,UAAU,OAAO,oBAAoB,UAAU,kBAAkB;AAAA,IACtE,OAAO;AACL,SAAG,aAAa,WAAW,KAAK;AAAA,IAClC;AAAA,EACF,CAAC;AAED,oBAAkB,MAAM;AACtB,QAAI,oBAAoB,WAAW,UAAU,GAAG;AAC9C,sBAAgB,QAAQ,SAAS,EAAE;AAAA,IACrC;AAAA,EACF,CAAC;AAED;AAAA,IACE,MAAM,oBAAoB,WAAW;AAAA,IACrC,CAAC,aAAa;AACZ,UAAI,aAAa,OAAW;AAC5B,sBAAgB,QAAQ,SAAS,WAAW,IAAI,qBAAqB,EAAE;AAAA,IACzE;AAAA,EAAA;AAGF,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EAAA;AAEJ;AAEO,MAAM,kBAAkB,CAAC,WAAmC,iBAA0B;AAC3F,QAAM,EAAC,cAAc,WAAW,aAAa,OAAO,SAAS,WAAA,IAAc,oBAAA;AAE3E,QAAM,eAAe,mBAAA;AAErB,MAAI,CAAC,gBAAgB,aAAa,KAAK,WAAW,UAAU;AAC1D,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAEA,iBAAe,YAAY;AAE3B,oBAAkB,MAAM;AACtB,YAAQ,YAAY;AAAA,EACtB,CAAC;AAED,QAAM,aAAa,CAAC,UAAmB,aAAsB;AAC3D,QAAI,UAAU;AACZ,kBAAY,YAAY;AAAA,IAC1B,WAAW,YAAY,CAAC,UAAU;AAChC,oBAAc,YAAY;AAAA,IAC5B;AAAA,EACF;AAGA,aAAW,cAAc,YAAY;AAErC,QAAM,WAAW,UAAU;AAE3B,SAAO;AAAA,IACL,gBAAgB;AAAA,MAAS,MACvB,OAAO,MAAM,UAAU,CAAC,OAAO,QAAQ,GAAG,SAAS,EAAE,MAAM,QAAQ,aAAa,SAAS,EAAE,CAAC;AAAA,IAAA;AAAA,IAE9F,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,MAChB,MACE,OAAO,MAAM;AAAA,QACX,CAAC,OAAO,QAAQ,GAAG,SAAS,EAAE,MAAM,QAAQ,aAAa,SAAS,EAAE;AAAA,MAAA,KACjE,CAAA;AAAA,IAAC;AAAA,EACV;AAEJ;;;ACqNA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAhJ9B,UAAM,SAAS;AAgEf,UAAM,QAAQ,YAAY,QAAQ,QAAQ;AAC1C,UAAM,OAAO;AACb,UAAM,QAAQA,SAAA;AAEd,UAAM,aAAa,MAAM,MAAM,MAAM,IAAI,OAAO;AAGhD,UAAM,aAAaC,SAA0D,SAAA,YAAiB;AAE9F,UAAM,UAAU,eAAmC,UAAU;AAC7D,UAAM,uBAAuB,eAAmC,uBAAuB;AACvF,UAAM,WAAW,eAAmC,WAAW;AAC/D,UAAM,eAAe,eAAmC,eAAe;AACvE,UAAM,cAAc,eAAmC,cAAc;AAErE,UAAM,gBAAgB,MAAM;AAC1B,UAAI,MAAM,SAAS,OAAO,MAAM,UAAU,WAAW;AACnD,YAAI,MAAM,UAAU,MAAM;AACxB,iBAAO;AAAA,QACT,WAAW,MAAM,UAAU,SAAS;AAClC,iBAAO;AAAA,QACT,WAAW,MAAM,UAAU,UAAU;AACnC,iBAAO;AAAA,QACT;AACA,eAAO,WAAW,MAAM,OAAO,QAAQ,SAAS,MAAS,KAAK,QAAQ;AAAA,MACxE;AACA,aAAO;AAAA,IACT;AAEA,QAAI,gBAAoC;AACxC,UAAM,eAAe,MAAM;AACzB,UAAI,MAAM,UAAU,MAAM,UAAU,OAAO;AACzC,wBAAgB,SAAS;AACzB,YAAI,kBAAkB,QAAQ,OAAO;AACnC,0BAAgB;AAAA,QAClB;AACA,cAAM,KAAK,aAAa,eAAe;AACvC,YAAI,CAAC,GAAI;AACT,YAAI,MAAA;AACJ,YACE,GAAG,WACH,GAAG,QAAQ,kBAAkB,WAC7B,OAAQ,GAAwB,WAAW,YAC3C;AACE,aAAwB,OAAA;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAEA,UAAM,eAAe,MAAM;AACzB,UAAI,MAAM,UAAU,MAAM,UAAU,SAAS,eAAe;AAC1D,uBAAe,MAAA;AACf,wBAAgB;AAAA,MAClB;AAAA,IACF;AAEA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,YAAY,YAAY,OAAO,MAAgB,SAAS,YAAY;AAAA;AAAA,MAEtE,iBAAiB;AAAA,QACf;AAAA,QACA;AAAA,MAAA;AAAA,IACF,CACD;AAGD,UAAM,EAAC,cAAA,IAAiB,sBAAsB;AAAA,MAC5C;AAAA,MACA,UAAU;AAAA,MACV,QAAQ,MAAM,MAAM;AAAA,MACpB,eAAe;AAAA,QACb,KAAK;AAAA,QACL,eAAe;AAAA,MAAA;AAAA,MAEjB,OAAO,MAAO,MAAM,UAAU,QAAQ,QAAS,aAAa,cAAA,CAAe,KAAK;AAAA;AAAA,IAAA,CAEjF;AAED;AAAA,MACE;AAAA,MACA,MAAM;AACJ,aAAK,KAAK;AAAA,MACZ;AAAA,MACA,EAAC,QAAQ,QAAA;AAAA,IAAO;AAElB,sBAAkB,SAAS,MAAM,MAAM,aAAa;AAEpD,UAAM,qBAAqB,SAAS,MAAM,CAAC,YAAY,MAAM,cAAc,CAAC,CAAC;AAE7E,UAAM,qBAAqB,SAAS,MAAM;AAAA,MACxC,MAAM;AAAA,MACN;AAAA,QACE,oBAAoB,MAAM,eAAe;AAAA,QACzC,CAAC,oBAAoB,MAAM,UAAU,OAAO,GAAG,OAAO,MAAM,eAAe;AAAA,QAC3E,CAAC,SAAS,MAAM,IAAI,EAAE,GAAG,MAAM,SAAS;AAAA,QACxC,yBAAyB,MAAM;AAAA,QAC/B,2BAA2B,MAAM;AAAA,MAAA;AAAA,IACnC,CACD;AAED,UAAM,mBAAmB,uBAAuB,OAAO;AAAA,MACrD,WAAW,MAAM;AAAA,MACjB,aAAa,MAAM;AAAA,MACnB,SAAS,MAAM;AAAA,IAAA,EACf;AACF,UAAM,cAAc,SAAS,MAAM,CAAC,MAAM,WAAW,iBAAiB,KAAK,CAAC;AAE5E,UAAM,qBAAqB,uBAAuB,OAAO;AAAA,MACvD,WAAW,MAAM;AAAA,MACjB,aAAa,MAAM;AAAA,MACnB,SAAS,MAAM;AAAA,MACf,eAAe,MAAM;AAAA,IAAA,EACrB;AACF,UAAM,gBAAgB,SAAS,MAAM,CAAC,MAAM,aAAa,mBAAmB,KAAK,CAAC;AAElF,UAAM,mBAAmB,SAAS,OAAO;AAAA,MACvC,SAAS,mBAAmB,QAAQ,MAAM,qBAAqB;AAAA,MAC/D,OAAO,MAAM;AAAA,IAAA,EACb;AAEF,UAAM,qBAAqB,uBAAuB,OAAO;AAAA,MACvD,WAAW,MAAM;AAAA,MACjB,aAAa,MAAM;AAAA,MACnB,SAAS,MAAM;AAAA,MACf,eAAe,MAAM;AAAA,IAAA,EACrB;AACF,UAAM,gBAAgB,SAAS,MAAM,CAAC,MAAM,aAAa,mBAAmB,KAAK,CAAC;AAElF,UAAM,eAAe,SAAS,MAAM;AAAA,MAClC,MAAM;AAAA,MACN;AAAA,QACE,CAAC,iBAAiB,GAAG,MAAM;AAAA,MAAA;AAAA,IAC7B,CACD;AAED,UAAM,gBAAgB,SAAS,MAAM,MAAM,kBAAkB,MAAM,IAAI;AACvE,UAAM,YAAY,SAAS,MAAM,MAAM,cAAc,MAAM,IAAI;AAE/D,UAAM,EAAC,gBAAgB,kBAAkB,iBAAA,IAAoB;AAAA,MAC3D;AAAA,MACA,WAAW;AAAA,IAAA;AAGb,UAAM,gBAAgB,SAAS,OAAO;AAAA,MACpC,CAAC,kBAAkB,gBAAgB,SAAS,CAAC,EAAE,GAAG;AAAA,MAClD,CAAC,2BAA2B,kBAAkB,SAAS,KAAK,KAAK,gBAAgB,SAAS,EAAE,EAAE,GAAG;AAAA,IAAA,EACjG;AAEF,UAAM,kBAAkB,CAAC,UAAU,aAAa;AAC9C,UAAI,SAAS,SAAS,SAAS,UAAU,QAAQ,UAAU,QAAQ,MAAM,eAAe;AACtF,aAAA;AAAA,IACJ,CAAC;AAED,UAAM,2BAA2B;AAAA,MAC/B,eAAe,QAAQ,UAAU,OAAO,aAAa,cAAc,SAAS,OAAO,OAAU;AAAA,IAAA;AAG/F,cAAU,MAAM;AACd;AAAA,QACE;AAAA,QACA,CAAC,MAAM;AACL,cAAI,CAAC,EAAG;AACR,mBAAS,MAAM;AACb,gBAAI,CAAC,QAAQ,MAAO;AACpB,qCAAyB,QAAQ,eAAe,QAAQ,KAAK;AAAA,UAC/D,CAAC;AAAA,QACH;AAAA,QACA,EAAC,WAAW,KAAA;AAAA,MAAI;AAAA,IAEpB,CAAC;AAED,UAAM,uBAAuB;AAAA,MAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,QAM5C,QAAQ,SAAS,UAAU;AAAA;AAAA,UAEvB,yBAAyB,UACvB,kBAAkB,SAAS,KAAK,KAAK,gBAAgB,SAAS,KAAK;AAAA,YACrE,yBAAyB;AAAA;AAAA,IAAA;AAE/B,UAAM,iBAAiB,SAAwB,OAAO;AAAA,MACpD,WAAW,qBAAqB;AAAA,MAChC,gBAAgB,gBAAgB,SAAS;AAAA,MACzC,yBAAyB,kBAAkB,SAAS,KAAK,KAAK,gBAAgB,SAAS;AAAA,MACvF,aAAa,kBAAkB,SAAS;AAAA,IAAA,EACxC;AACF,UAAM,yBAAyB,SAAwB,OAAO;AAAA,MAC5D,WAAW,qBAAqB,QAAQ;AAAA,MACxC,gBAAgB,gBAAgB,SAAS;AAAA,MACzC,yBAAyB,kBAAkB,SAAS,KAAK,KAAK,gBAAgB,SAAS;AAAA,MACvF,aAAa,kBAAkB,SAAS;AAAA,IAAA,EACxC;AAEF,UAAM,cAAc,SAA0B,OAAO;AAAA,MACnD,IAAI,WAAW;AAAA,MACf,QAAQ,MAAM;AACZ,aAAK,QAAQ;AAAA,MACf;AAAA,MACA,OAAO,MAAM;AACX,aAAK,OAAO;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,MAAM;AACR,aAAK,IAAI;AAAA,MACX;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB,SAAS,QAAQ;AAAA,IAAA,EACjB;AAEF,aAAa;AAAA,MACX;AAAA,MACA,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA,SAAS;AAAA,IAAA,CACV;;0BAldCC,YAmIsBC,aAAA;AAAA,QAnIA,IAAIC,MAAA,KAAA,EAAM;AAAA,QAAa,UAAUA,MAAA,KAAA,EAAM;AAAA,MAAA;yBAC3D,MAkHa;AAAA,UAjHLA,MAAA,SAAA,KAAaA,MAAA,cAAA,kBADrBF,YAkHaG,YAlHbC,WAkHa,EAAA,KAAA,KAhHHF,MAAA,eAAA,GAAe;AAAA,YACtB,QAAQ,WAAA,SAAcA,MAAA,KAAA,EAAM;AAAA,UAAA;6BAE7B,MA4GM;AAAA,cA5GNG,eAAAC,mBA4GM,OA5GNF,WA4GM;AAAA,gBA1GH,IAAIF,MAAA,UAAA;AAAA,gBACL,KAAI;AAAA,gBACJ,QAAM,SAAO;AAAA,kBACOA,MAAA,KAAA,EAAM;AAAA;2BAA2CA,MAAA,mBAAA;AAAA,0BAAuCA,MAAA,SAAA;AAAA,uBAA0B,cAAA;AAAA,kBAAA;AAAA;gBAQtI,MAAK;AAAA,gBACJ,oBAAkBA,MAAA,KAAA,EAAM,WAAQ,GAAMA,MAAA,UAAA,CAAU,WAAW;AAAA,gBAC3D,uBAAqBA,MAAA,UAAA,CAAU;AAAA,gBAChC,UAAS;AAAA,cAAA,GACDK,KAAAA,QAAM;AAAA,gBACb,OAAK,CAAE,eAAA,OACR,EAAA,WAAA,SAAsB;AAAA,gBACrB,iEAAqBL,MAAA,IAAA,EAAI,UAAA,GAAA,CAAA,QAAA,MAAA,CAAA;AAAA,cAAA;gBAE1BI,mBA8EM,OAAA;AAAA,kBA9ED,OAAKE,eAAA,CAAC,gBAAuB,mBAAA,KAAkB,CAAA;AAAA,gBAAA;kBACvCN,MAAA,cAAA,kBAAXO,mBA4EM,OAAA;AAAA;oBA5EqB,OAAKD,eAAA,CAAC,iBAAwBN,MAAA,KAAA,EAAM,YAAY,CAAA;AAAA,kBAAA;oBAEhE,CAAAA,MAAA,KAAA,EAAM,YADfQ,UAAA,GAAAD,mBAmCM,OAnCNL,WAmCM;AAAA;sBAjCJ,OAAK,CAAC,gBACE,cAAA,KAAa;AAAA,oBAAA,GACbF,MAAA,KAAA,EAAM,WAAW,GAAA;AAAA,sBAEzBS,WA4BO,KAAA,QAAA,UAAAC,eAAAC,mBA5BqB,YAAA,KAAW,CAAA,GAAvC,MA4BO;AAAA,sCA3BLb,YASYc,wBARLZ,MAAA,KAAA,EAAM,QAAQ,GAAA;AAAA,0BAClB,OAAOA,MAAA,UAAA,CAAU;AAAA,0BAClB,OAAKM,eAAA,CAAC,eACE,aAAA,KAAY,CAAA;AAAA,wBAAA;2CAEpB,MAEO;AAAA,4BAFPG,WAEO,KAAA,QAAA,SAAAC,eAAAC,mBAFoB,YAAA,KAAW,CAAA,GAAtC,MAEO;AAAA,8BADFE,gBAAAC,gBAAAd,MAAA,KAAA,EAAM,KAAK,GAAA,CAAA;AAAA,4BAAA;;;;wBAGD,CAAAA,MAAA,KAAA,EAAM,8BAAvBO,mBAgBWQ,UAAA,EAAA,KAAA,KAAA;AAAA,0BAdD,mBAAA,SADRP,UAAA,GAAAV,YAOUkB,aAPVd,WAOU;AAAA;4BALR,KAAI;AAAA,0BAAA,GACI,iBAAA,OAAgB;AAAA,4BACvB,+CAAOF,MAAA,IAAA,EAAI,OAAA;AAAA,0BAAA;6CAEZ,MAAiD;AAAA,8BAAjDS,WAAiD,+DAAf,YAAA,KAAW,CAAA,CAAA;AAAA,4BAAA;;qCAE/CD,aAAAV,YAMEmB,aANFf,WAME;AAAA;4BAJA,KAAI;AAAA,4BACH,cAAYF,MAAA,KAAA,EAAM;AAAA,0BAAA,GACX,iBAAA,OAAgB;AAAA,4BACvB,+CAAOA,MAAA,IAAA,EAAI,OAAA;AAAA,0BAAA;;;;oBAKpBI,mBASM,OATNF,WASM;AAAA,sBARH,OAAOF,MAAA,UAAA,CAAU;AAAA,sBAClB,OAAK,CAAC,cACE,YAAA,KAAW;AAAA,oBAAA,GACXA,MAAA,KAAA,EAAM,SAAS,GAAA;AAAA,sBAEvBS,WAEO,KAAA,QAAA,WAAAC,eAAAC,mBAFO,YAAA,KAAW,CAAA,GAAzB,MAEO;AAAA,wBADFE,gBAAAC,gBAAAd,MAAA,KAAA,EAAM,IAAI,GAAA,CAAA;AAAA,sBAAA;;oBAGL,CAAAA,MAAA,KAAA,EAAM,yBAAlBO,mBA4BM,OAAA;AAAA;sBA5BsB,OAAKD,eAAA,CAAC,gBAAuB,cAAA,KAAa,CAAA;AAAA,oBAAA;sBACpEG,WA0BO,KAAA,QAAA,UAAAC,eAAAC,mBA1BqB,YAAA,KAAW,CAAA,GAAvC,MA0BO;AAAA,wBAzBLF,WAYO,KAAA,QAAA,UAAAC,eAAAC,mBAZqB,YAAA,KAAW,CAAA,GAAvC,MAYO;AAAA,0BAVI,CAAAX,MAAA,KAAA,EAAM,uBADfF,YAUUkB,aAAA;AAAA;4BARR,KAAI;AAAA,4BACH,UAAU,cAAA;AAAA,4BACV,MAAMhB,MAAA,KAAA,EAAM;AAAA,4BACZ,SAASA,MAAA,KAAA,EAAM;AAAA,4BACf,OAAKM,eAAEN,MAAA,KAAA,EAAM,WAAW;AAAA,4BACxB,+CAAOA,MAAA,IAAA,EAAI,QAAA;AAAA,0BAAA;6CAEZ,MAAuB;AAAA,8BAApBa,gBAAAC,gBAAAd,MAAA,KAAA,EAAM,WAAW,GAAA,CAAA;AAAA,4BAAA;;;;wBAGxBS,WAWO,KAAA,QAAA,MAAAC,eAAAC,mBAXiB,YAAA,KAAW,CAAA,GAAnC,MAWO;AAAA,0BAVLO,YASUF,aAAA;AAAA,4BARR,KAAI;AAAA,4BACH,UAAU,UAAA;AAAA,4BACV,MAAMhB,MAAA,KAAA,EAAM;AAAA,4BACZ,SAASA,MAAA,KAAA,EAAM;AAAA,4BACf,OAAKM,eAAEN,MAAA,KAAA,EAAM,OAAO;AAAA,4BACpB,+CAAOA,MAAA,IAAA,EAAI,IAAA;AAAA,0BAAA;6CAEZ,MAAmB;AAAA,8BAAhBa,gBAAAC,gBAAAd,MAAA,KAAA,EAAM,OAAO,GAAA,CAAA;AAAA,4BAAA;;;;;;;;gBAQpBA,MAAA,aAAA,kBADRO,mBAME,OAAA;AAAA;kBAJA,KAAI;AAAA,kBACH,sBAAO,qBAAqB;AAAA,kBAC7B,UAAS;AAAA,kBACT,OAAA,EAAA,SAAA,KAAA,UAAA,KAAA,YAAA,SAAA;AAAA,gBAAA;;wBAzGMP,MAAA,OAAA,MAAaA,wBAAiBA,MAAA,KAAA,EAAM,iBAAa,CAAMA,MAAA,KAAA,EAAM,cAAa;AAAA,cAAA;;;;UA6GzE,CAAAA,MAAA,KAAA,EAAM,aAAnBS,WAcO,KAAA,QAAA,YAAAC,eAAAR,WAAA,EAAA,KAAA,EAAA,GAdgD,YAAA,KAAW,CAAA,GAAlE,MAcO;AAAA,YAbaF,MAAA,iBAAA,KAAlBQ,UAAA,GAAAV,YAYaG,kDAZgCD,MAAA,uBAAA,CAAuB,CAAA,GAAA;AAAA,+BAClE,MAUE;AAAA,+BAVFI,mBAUE,OAAA;AAAA,kBARA,uBAAM,kBAAgB;AAAA,2BAEOJ,MAAA,mBAAA;AAAA,oBAAuC,MAAAA,MAAA,eAAA,KAAmBA,MAAA,mBAAA;AAAA,uBAAoC,cAAA;AAAA,kBAAA;kBAD1H,sBAAO,uBAAA,KAAsB;AAAA,kBAM7B,+CAAOA,MAAA,IAAA,EAAI,UAAA;AAAA,gBAAA;kBARJ,CAAAmB,OAAAnB,MAAA,OAAA,KAAYA,MAAA,SAAA,KAAaA,aAAM,kBAAkBA,MAAA,mBAAA,CAAmB;AAAA,gBAAA;;;;;;;;;;;AC3F/E,MAAM,WAAW,MAAM;AAC5B,QAAM,uBAAuB,OAAO,uBAAuB;AAC3D,MAAI,CAAC,sBAAsB;AACzB,UAAM;AAAA,MACJ;AAAA,IAAA;AAAA,EAEJ;AACA,QAAM,EAAC,OAAO,yBAAA,IAA4B;AAK1C,QAAM,SAAS,CACb,MAAoD,CAAA,GACpD,UAAqC,CAAA,MAC2C;AAChF,QAAI,CAAC,yBAAyB,OAAO;AACnC,YAAM,IAAI,MAAM,6EAA6E;AAAA,IAC/F;AAEA,UAAM,gBAAiB,MAAM,GAAG,IAAI,MAAM,WAAW,GAAG;AAGxD,UAAM,QAAQ,cAAc,OAAO,MAAM,OAAO,mBAAmB;AAEnE,UAAM,UAAU,aAId,OAAO,KAA2C;AAEpD,YAAQ,OAAO;AAAA,MACb;AAAA,MACA,CAAC,cAAc;AACb,cAAM,WAAW,EAAC,GAAG,QAAQ,SAAS,EAAA;AACtC,cAAM,gBAAgB,MAAM,MAAM,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK;AACtE,cAAM,WACJ,kBAAkB,KAAK,EAAC,YAAY,QAAQoB,SAAM,EAAA,IAAK,MAAM,MAAM,aAAa;AAClF,cAAM,IAAI;AAAA,UACR,MAAM;AAAA,UACN;AAAA,UACA,UAAU;AAAA,UACV,GAAG;AAAA,UACH;AAAA,UACA;AAAA,QAAA;AAGF,mBAAW,OAAO,UAAU;AAC1B,cAAI,IAAI,WAAW,IAAI,GAAG;AACxB,cAAE,GAAwC,IAAI,SAAS,GAAG;AAAA,UAC5D,WAAW,QAAQ,eAAe,SAAS,WAAW;AACpD,cAAE,aAAa,QAAQ,SAAS,SAAsB;AAAA,UACxD,WAAW,QAAQ,WAAW,SAAS,OAAO;AAC5C,cAAE,QAAQ,QAAQ,SAAS,KAAK;AAAA,UAClC,OAAO;AACL,cAAE,GAAwC,IAAI,QAAQ,SAAS,GAAG,CAAC;AAAA,UACrE;AAAA,QACF;AACA,UAAE,aAAa,EAAE,cAAc;AAC/B,UAAE,qBAAqB,IAAI,CAAC,QAAiB;AAC3C,gBAAM,qBAAqB,SAAS,qBAAqB;AAGzD,+BAAqB,GAAG;AACxB,gBAAM,EAAC,WAAA,IAAc,QAAQ,GAAG;AAChC,cAAI,MAAM,GAAG,KAAK,CAAC,MAAM,UAAU,EAAG,KAAI,MAAM,aAAa;AAC7D,cAAI,MAAM,UAAU,KAAK,CAAC,WAAW,UAAU,GAAG;AAC9C,uBAA8D,QAAQ;AAAA,UAC1E;AACA,gBAAM,QAAQ,MAAM,MAAM,KAAK,CAAC,OAAO,GAAG,UAAU,KAAK;AACzD,cAAI,OAAO;AACT,kBAAM,aAAa;AAAA,UACrB;AAAA,QACF;AAEA,YAAI,kBAAkB,IAAI;AACxB,gBAAM,MAAM,KAAK,CAAC;AAAA,QACpB,OAAO;AACL,gBAAM,MAAM,OAAO,eAAe,GAAG,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,MAAM;AAAA,MAAA;AAAA,IACR;AAEF,mBAAe,MAAM;AACnB,YAAM,QAAQ,MAAM,MAAM,KAAK,CAAC,OAAO,GAAG,UAAU,KAAK;AACzD,UAAI,OAAO;AACT,cAAM,QAAQ,MAAM,UAAA;AAAA,MACtB;AAAA,IACF,GAAG,IAAI;AACP,WAAO,QAAQ;AAAA,EACjB;AAEA,QAAM,EAAC,WAAW,OAAO,SAAA,IAAY,oBAAA;AAKrC,QAAM,OAAO,CAAC,OAAuB;AACnC,QAAI,OAAO,QAAW;AACpB,UAAI,WAAW,OAAO;AACpB,mBAAW,MAAM,SAAS,KAAA;AAAA,MAC5B;AAAA,IACF,OAAO;AACL,YAAM,aAAa,OAAO,MAAM,KAAK,CAACC,WAAUA,OAAM,SAAS,OAAO,EAAE;AACxE,UAAI,YAAY;AACd,mBAAW,SAAS,KAAA;AACpB;AAAA,MACF;AACA,YAAM,QAAQ,MAAM,MAAM,KAAK,CAAC,OAAO,GAAG,UAAU,EAAE;AACtD,UAAI,OAAO;AACT,cAAM,aAAa;AACnB,cAAM,qBAAqB,IAAI,IAAI;AAAA,MACrC,OAAO;AACL,eAAO,MAAM,QAAQ,CAACA,WAAU;AAC9B,cAAIA,OAAM,SAAS,OAAO,IAAI;AAC5BA,mBAAM,SAAS,KAAA;AAAA,UACjB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAOA,QAAM,OAAO,CAAC,SAAkB,OAAuB;AACrD,QAAI,OAAO,QAAW;AACpB,UAAI,WAAW,OAAO;AACpB,mBAAW,MAAM,SAAS,KAAK,OAAO;AAAA,MACxC;AAAA,IACF,OAAO;AACL,YAAM,aAAa,OAAO,MAAM,KAAK,CAACA,WAAUA,OAAM,SAAS,OAAO,EAAE;AACxE,UAAI,YAAY;AACd,mBAAW,SAAS,KAAK,OAAO;AAChC;AAAA,MACF;AACA,YAAM,QAAQ,MAAM,MAAM,KAAK,CAAC,OAAO,GAAG,UAAU,EAAE;AACtD,UAAI,OAAO;AACT,cAAM,aAAa;AACnB,cAAM,qBAAqB,IAAI,KAAK;AAAA,MACtC,OAAO;AACL,eAAO,MAAM,QAAQ,CAACA,WAAU;AAC9B,cAAIA,OAAM,SAAS,OAAO,IAAI;AAC5BA,mBAAM,SAAS,KAAK,SAAS,IAAI;AAAA,UACnC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAMA,QAAM,UAAU,CAAC,YAAqB;AACpC,WAAO,MAAM,QAAQ,CAAC,UAAU;AAC9B,YAAM,SAAS,KAAK,SAAS,IAAI;AAAA,IACnC,CAAC;AAAA,EACH;AAEA,QAAM,MAAM,CAAC,OAAsB;AACjC,UAAM,QAAQ,MAAM,MAAM,KAAK,CAAC,OAAO,GAAG,UAAU,EAAE;AACtD,QAAI,OAAO;AACT,aAAO;AAAA,QACL;AAAA,QACA,OAAO;AACL,iBAAO,QAAQ,MAAM,KAAA;AAAA,QACvB;AAAA,QACA,KAAK,SAAkB;AACrB,iBAAO,QAAQ,MAAM,KAAK,OAAO;AAAA,QACnC;AAAA,MAAA;AAAA,IAEJ;AACA,QAAI,UAAU,OAAO;AACnB,iBAAW,CAAA,EAAGA,MAAK,KAAK,UAAU,MAAM,QAAA,KAAa,IAAI;AACvD,YAAI,QAAQA,OAAM,SAAS,EAAE,MAAM,IAAI;AACrC,iBAAO;AAAA,YACL,OAAAA;AAAAA,YACA,OAAO;AACLA,qBAAM,SAAS,KAAA;AAAA,YACjB;AAAA,YACA,KAAK,SAAkB;AACrBA,qBAAM,SAAS,KAAK,SAAS,IAAI;AAAA,YACnC;AAAA,UAAA;AAAA,QAEJ;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,mBAAA;AACjB,QAAM,UAAU,MAAM;AACpB,UAAM,aAAa,CAAC,cAA2E;AAC7F,UAAI,CAAC,UAAU,QAAQ;AACrB,eAAO;AAAA,MACT;AACA,UAAI,UAAU,OAAO,SAASD,WAAQ;AACpC,eAAO,UAAU;AAAA,MACnB;AACA,aAAO,WAAW,UAAU,MAAM;AAAA,IACpC;AACA,QAAI,CAAC,UAAU;AACb,aAAO;AAAA,IACT;AACA,UAAM,iBAAiB,SAAS,MAAM,WAAW,QAAQ,CAAC;AAC1D,UAAM,QAAQ,SAAS,MAAM,eAAe,OAAO,KAAK;AACxD,WAAO;AAAA,MACL,OAAO;AACL,uBAAe,OAAO,SAAS,KAAA;AAAA,MACjC;AAAA,MACA,KAAK,SAAkB;AACrB,uBAAe,OAAO,SAAS,KAAK,SAAS,IAAI;AAAA,MACnD;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAAA;AAGJ;AAMO,MAAM,qBAAqB;"}