{"version":3,"file":"dialog.mjs","sources":["../../../../../../packages/components/dialog/src/dialog.vue"],"sourcesContent":["<template>\n  <teleport v-if=\"isClient\" to=\"body\" :disabled=\"!appendToBody\">\n    <transition\n      name=\"dialog-fade\"\n      @after-enter=\"afterEnter\"\n      @after-leave=\"afterLeave\"\n      @before-leave=\"beforeLeave\"\n    >\n      <b-overlay\n        v-show=\"visible\"\n        custom-mask-event\n        :mask=\"modal\"\n        :z-index=\"zIndex\"\n        :overlay-class=\"modalClass\"\n      >\n        <div\n          role=\"dialog\"\n          aria-modal=\"true\"\n          :aria-label=\"title || undefined\"\n          :aria-labelledby=\"!title ? titleId : undefined\"\n          :aria-describedby=\"bodyId\"\n          :class=\"[\n            `${ns.namespace.value}-overlay-dialog`,\n            ns.is('center', center),\n            ns.is('fullscreen', fullscreen),\n          ]\"\n          data-test-name=\"dialog\"\n          data-test-variant=\"\"\n          data-test-state=\"\"\n          @click=\"overlayEvent.onClick\"\n          @mousedown=\"overlayEvent.onMousedown\"\n          @mouseup=\"overlayEvent.onMouseup\"\n        >\n          <b-focus-trap\n            loop\n            :trapped=\"visible\"\n            focus-start-el=\"container\"\n            @focus-after-trapped=\"onOpenAutoFocus\"\n            @focus-after-released=\"onCloseAutoFocus\"\n            @release-requested=\"onCloseRequested\"\n          >\n            <b-dialog-content\n              v-if=\"rendered\"\n              ref=\"dialogContentRef\"\n              v-loading=\"loading\"\n              :container-class=\"\n                [containerClass, loading ? 'overflow-hidden' : ''].join(' ')\n              \"\n              :body-class=\"bodyClass\"\n              :header-class=\"headerClass\"\n              :footer-class=\"footerClass\"\n              :center=\"center\"\n              :close-icon=\"closeIcon\"\n              :draggable=\"draggable\"\n              :scrollable=\"scrollable\"\n              :scrollable-height=\"scrollableHeight\"\n              :scrollable-max-height=\"scrollableMaxHeight\"\n              :fullscreen=\"fullscreen\"\n              :show-close=\"showClose\"\n              :style=\"style\"\n              :title=\"title\"\n              @close=\"handleClose\"\n              @scroll=\"($event) => emit('scroll', $event)\"\n            >\n              <template #header>\n                <slot\n                  name=\"header\"\n                  :close=\"handleClose\"\n                  :title-id=\"titleId\"\n                  :title-class=\"ns.e('title')\"\n                />\n              </template>\n              <slot />\n              <template v-if=\"$slots.footer\" #footer>\n                <slot name=\"footer\" />\n              </template>\n            </b-dialog-content>\n          </b-focus-trap>\n        </div>\n      </b-overlay>\n    </transition>\n  </teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref } from 'vue'\nimport { useMounted } from '@vueuse/core'\nimport { BOverlay } from '@bigin/components/overlay'\nimport { useNamespace, useSameTarget } from '@bigin/hooks'\nimport { dialogInjectionKey } from '@bigin/tokens'\nimport BFocusTrap from '@bigin/components/focus-trap'\nimport BDialogContent from './dialog-content.vue'\nimport { dialogEmits, dialogProps } from './dialog'\nimport { useDialog } from './use-dialog'\n\ndefineOptions({\n  name: 'BDialog',\n})\n\nconst props = defineProps(dialogProps)\nconst emit = defineEmits(dialogEmits)\nconst isClient = useMounted()\n\nconst ns = useNamespace('dialog')\nconst dialogRef = ref<HTMLElement>()\nconst headerRef = ref<HTMLElement>()\nconst dialogContentRef = ref()\n\nconst {\n  visible,\n  titleId,\n  bodyId,\n  style,\n  rendered,\n  zIndex,\n  afterEnter,\n  afterLeave,\n  beforeLeave,\n  handleClose,\n  onModalClick,\n  onOpenAutoFocus,\n  onCloseAutoFocus,\n  onCloseRequested,\n} = useDialog(props, dialogRef)\n\nprovide(dialogInjectionKey, {\n  dialogRef,\n  headerRef,\n  bodyId,\n  ns,\n  rendered,\n  style,\n})\n\nconst overlayEvent = useSameTarget(onModalClick)\n\nconst draggable = computed(() => props.draggable && !props.fullscreen)\n\ndefineExpose({\n  /** @description whether the dialog is visible */\n  visible,\n  dialogContentRef,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;mCA+Fc,CAAA;AAAA,EACZ,IAAM,EAAA,SAAA;AACR,CAAA,CAAA,CAAA;;;;;;;AAIA,IAAA,MAAM,WAAW,UAAW,EAAA,CAAA;AAEtB,IAAA,MAAA,EAAA,GAAK,aAAa,QAAQ,CAAA,CAAA;AAChC,IAAA,MAAM,YAAY,GAAiB,EAAA,CAAA;AACnC,IAAA,MAAM,YAAY,GAAiB,EAAA,CAAA;AACnC,IAAA,MAAM,mBAAmB,GAAI,EAAA,CAAA;AAEvB,IAAA,MAAA;AAAA,MACJ,OAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MACA,gBAAA;AAAA,KACF,GAAI,SAAU,CAAA,KAAA,EAAO,SAAS,CAAA,CAAA;AAE9B,IAAA,OAAA,CAAQ,kBAAoB,EAAA;AAAA,MAC1B,SAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,KACD,CAAA,CAAA;AAEK,IAAA,MAAA,YAAA,GAAe,cAAc,YAAY,CAAA,CAAA;AAE/C,IAAA,MAAM,YAAY,QAAS,CAAA,MAAM,MAAM,SAAa,IAAA,CAAC,MAAM,UAAU,CAAA,CAAA;AAExD,IAAA,MAAA,CAAA;AAAA,MAEX,OAAA;AAAA,MACA,gBAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}