{"version":3,"file":"use-dialog.mjs","sources":["../../../../../../components/dialog/src/use-dialog.ts"],"sourcesContent":["import {\n  computed,\n  getCurrentInstance,\n  onMounted,\n  ref,\n  watch,\n} from 'vue'\nimport type { CSSProperties, Ref, SetupContext } from 'vue'\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event'\nimport { addUnit } from '../../../utils/dom/style'\nimport type { DialogEmits } from './dialog'\n\nexport const useDialog = (\n  props: any,\n  targetRef: Ref<HTMLElement | undefined>,\n) => {\n  const instance = getCurrentInstance()!\n  const emit = instance.emit as SetupContext<DialogEmits>['emit']\n\n  let lastPosition = ''\n\n  const visible = ref(false)\n\n  const overlayDialogStyle = computed<CSSProperties>(() => {\n    const style: CSSProperties = {}\n    const varPrefix = '--fn-dialog' as const\n    if (props.fullscreen)\n      style[`${varPrefix}-width`] = '100%'\n    if (props.width && !props.fullscreen)\n      style[`${varPrefix}-width`] = addUnit(props.width)\n    if (!props.width && !props.fullscreen)\n      style[`${varPrefix}-width`] = '30%'\n    if (props.top && !props.fullscreen)\n      style[`${varPrefix}-top`] = addUnit(props.top)\n    if (!props.top && !props.fullscreen)\n      style[`${varPrefix}-top`] = '30vh'\n    return style\n  })\n\n  function close() {\n    doClose()\n  }\n\n  function handleClose() {\n    function hide(shouldCancel?: boolean) {\n      if (shouldCancel)\n        return\n      visible.value = false\n    }\n\n    if (props.beforeClose)\n      props.beforeClose(hide)\n\n    else\n      close()\n  }\n\n  function onModalClick() {\n    if (props.closeOnClickModal)\n      handleClose()\n  }\n\n  function doOpen() {\n    visible.value = true\n  }\n\n  function doClose() {\n    visible.value = false\n    emit(UPDATE_MODEL_EVENT, false)\n  }\n\n  watch(\n    () => props.modelValue,\n    (val) => {\n      if (val) {\n        doOpen()\n      }\n      else {\n        if (visible.value)\n          close()\n      }\n    },\n  )\n\n  watch(\n    () => props.fullscreen,\n    (val) => {\n      if (!targetRef.value)\n        return\n      if (val) {\n        lastPosition = targetRef.value.style.transform\n        targetRef.value.style.transform = ''\n      }\n      else {\n        targetRef.value.style.transform = lastPosition\n      }\n    },\n  )\n\n  onMounted(() => {\n    if (props.modelValue)\n      doOpen()\n  })\n\n  return {\n    handleClose,\n    onModalClick,\n    close,\n    doClose,\n    overlayDialogStyle,\n    visible,\n  }\n}\n"],"names":[],"mappings":"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"}