{"version":3,"file":"use-dialog.mjs","sources":["../../../../../../../packages/components/dialog/src/composables/use-dialog.ts"],"sourcesContent":["import { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport {\n  useColor,\n  useLockscreen,\n  useNamespace,\n  useVuesaxBaseComponent,\n  useZIndex,\n} from '@vuesax-alpha/hooks'\nimport { UPDATE_MODEL_EVENT } from '@vuesax-alpha/constants'\nimport { getVsColor, isClient } from '@vuesax-alpha/utils'\nimport type { DialogEmitFn, DialogProps } from '../dialog'\n\nexport const useDialog = (props: DialogProps, emit: DialogEmitFn) => {\n  const rebound = ref(false)\n  const visible = ref(false)\n  const closed = ref(false)\n  const ns = useNamespace('dialog')\n  const { nextZIndex } = useZIndex()\n  const vsBaseClasses = useVuesaxBaseComponent(useColor())\n\n  const zIndex = ref(nextZIndex())\n\n  const afterEnter = () => {\n    emit('opened')\n  }\n\n  const beforeLeave = () => {\n    emit('close')\n  }\n\n  const afterLeave = () => {\n    emit('closed')\n    emit(UPDATE_MODEL_EVENT, false)\n  }\n\n  const doOpen = () => {\n    if (!isClient) return\n    visible.value = true\n  }\n\n  const doClose = () => {\n    visible.value = false\n  }\n\n  const open = () => {\n    doOpen()\n  }\n\n  const close = () => {\n    const hide = (shouldCancel?: boolean) => {\n      if (shouldCancel) return\n      closed.value = true\n      visible.value = false\n    }\n\n    if (props.beforeClose) {\n      props.beforeClose(hide)\n    } else {\n      doClose()\n    }\n    // doClose()\n  }\n\n  const handleClose = () => {\n    if (props.preventClose) {\n      rebound.value = true\n      useTimeoutFn(() => (rebound.value = false), 300)\n\n      return\n    }\n    close()\n  }\n\n  if (props.lockScroll) {\n    useLockscreen(visible)\n  }\n\n  watch(\n    () => props.modelValue,\n    (val: boolean) => {\n      if (val) {\n        closed.value = false\n        rebound.value = true\n\n        open()\n        zIndex.value = nextZIndex()\n\n        if (props.lockScroll) {\n          document.body.style.overflow = 'hidden'\n        }\n        nextTick(() => {\n          emit('open')\n        })\n      } else {\n        rebound.value = false\n        if (props.lockScroll) {\n          document.body.style.overflow = ''\n        }\n        if (visible.value) {\n          close()\n        }\n      }\n    }\n  )\n\n  const dialogKls = computed(() => [\n    ns.b('original'),\n    vsBaseClasses,\n    ns.m(props.shape),\n    {\n      [ns.m('rebound')]: rebound.value,\n      [ns.m('not-padding')]: props.notPadding,\n      [ns.m('auto-width')]: props.autoWidth,\n      [ns.m('scroll')]: props.scroll,\n      [ns.m('loading')]: props.loading,\n      [ns.m('not-center')]: props.notCenter,\n    },\n  ])\n\n  const dialogStyles = computed(() => ({\n    width: props.width,\n    ...ns.cssVar({\n      color: getVsColor(props.color),\n    }),\n  }))\n\n  onMounted(() => {\n    if (props.modelValue) {\n      visible.value = true\n      open()\n    }\n  })\n\n  return {\n    afterEnter,\n    afterLeave,\n    beforeLeave,\n    handleClose,\n    close,\n    doClose,\n    zIndex,\n    closed,\n    visible,\n    dialogKls,\n    dialogStyles,\n  }\n}\n"],"names":[],"mappings":"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"}