{"version":3,"file":"modal2.mjs","sources":["../../../../../../../packages/components/modal/src/modal.vue"],"sourcesContent":["<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  nextTick,\n  provide,\n  ref,\n  toRef,\n  unref,\n  watch,\n  watchEffect,\n} from 'vue'\nimport { omit } from 'lodash-es'\nimport { isFunction } from '@tav-ui/utils/is'\nimport { deepMerge } from '@tav-ui/utils/basic'\nimport { mitt } from '@tav-ui/utils/mitt'\n\nimport ModalContent from './components/ModalContent'\nimport ModalWrapper from './components/ModalWrapper.vue'\nimport ModalClose from './components/ModalClose.vue'\nimport ModalFooter from './components/ModalFooter.vue'\nimport ModalHeader from './components/ModalHeader.vue'\nimport { basicProps } from './types'\nimport { useFullScreen } from './hooks/useModalFullScreen'\nimport type { ModalMethods, ModalProps, Recordable } from './types'\n\nexport default defineComponent({\n  name: 'TaModal',\n  components: {\n    ModalContent,\n    ModalWrapper,\n    ModalClose,\n    ModalFooter,\n    ModalHeader,\n  },\n  inheritAttrs: false,\n  props: basicProps,\n  emits: ['visible-change', 'height-change', 'cancel', 'ok', 'register', 'update:visible'],\n  setup(props, { emit, attrs }) {\n    const modalEmitter = mitt()\n    provide('modalEmitter', modalEmitter)\n\n    const visibleRef = ref(false)\n    const propsRef = ref<Partial<ModalProps> | null>(null)\n    const modalWrapperRef = ref<any>(null)\n    const prefixCls = 'ta-basic-modal'\n\n    // modal   Bottom and top height\n    const extHeightRef = ref(0)\n    const modalMethods: ModalMethods = {\n      redoThumbHeight: () => modalEmitter.emit('redoThumbHeight'),\n      setModalProps,\n      emitVisible: undefined,\n      redoModalHeight: () => {\n        nextTick(() => {\n          if (unref(modalWrapperRef)) (unref(modalWrapperRef) as any).setModalHeight()\n        })\n      },\n    }\n\n    const instance = getCurrentInstance()\n    if (instance) emit('register', modalMethods, instance.uid)\n\n    // Custom title component: get title\n    const getMergeProps = computed((): Recordable => {\n      return {\n        ...props,\n        ...(unref(propsRef) as any),\n      }\n    })\n\n    const { handleFullScreen, getWrapClassName, fullScreenRef } = useFullScreen({\n      modalWrapperRef,\n      extHeightRef,\n      // wrapClassName: toRef(getMergeProps.value, \"wrapClassName\")\n      wrapClassName: toRef(props, 'wrapClassName'),\n    })\n\n    // modal component does not need title and origin buttons\n    const getProps = computed((): Recordable => {\n      const opt = {\n        ...unref(getMergeProps),\n        visible: unref(visibleRef),\n        okButtonProps: undefined,\n        cancelButtonProps: undefined,\n        title: undefined,\n      }\n      return {\n        ...opt,\n        wrapClassName: unref(getWrapClassName),\n      }\n    })\n\n    const getBindValue = computed((): Recordable => {\n      const attr = {\n        ...attrs,\n        ...unref(getMergeProps),\n        visible: unref(visibleRef),\n        wrapClassName: `${unref(getWrapClassName)} ta-basic-modal`,\n      }\n      if (unref(fullScreenRef)) return omit(attr, ['height', 'title'])\n\n      return omit(attr, 'title')\n    })\n\n    const getWrapperHeight = computed(() => {\n      if (unref(fullScreenRef)) return undefined\n      return unref(getProps).height\n    })\n\n    watchEffect(() => {\n      visibleRef.value = !!props.visible\n      fullScreenRef.value = !!props.defaultFullscreen\n    })\n\n    watch(\n      () => unref(visibleRef),\n      (v) => {\n        emit('visible-change', v)\n        emit('update:visible', v)\n        instance && modalMethods.emitVisible?.(v, instance.uid)\n        nextTick(() => {\n          if (props.scrollTop && v && unref(modalWrapperRef))\n            (unref(modalWrapperRef) as any).scrollTop()\n        })\n      },\n      {\n        immediate: false,\n      }\n    )\n\n    // 取消事件\n    async function handleCancel(e: Event) {\n      e?.stopPropagation()\n      // 过滤自定义关闭按钮的空白区域\n      if ((e.target as HTMLElement)?.classList?.contains(`${prefixCls}-close--custom`)) return\n      if (props.closeFunc && isFunction(props.closeFunc)) {\n        const isClose: boolean = await props.closeFunc()\n        visibleRef.value = !isClose\n        return\n      }\n\n      visibleRef.value = false\n      emit('cancel', e)\n    }\n\n    /**\n     * @description: 设置modal参数\n     */\n    function setModalProps(props: Partial<ModalProps>): void {\n      // Keep the last setModalProps\n      propsRef.value = deepMerge(unref(propsRef) || ({} as any), props)\n      if (Reflect.has(props, 'visible')) visibleRef.value = !!props.visible\n\n      if (Reflect.has(props, 'defaultFullscreen')) fullScreenRef.value = !!props.defaultFullscreen\n    }\n\n    function handleOk(e: Event) {\n      emit('ok', e)\n    }\n\n    function handleHeightChange(height: string) {\n      emit('height-change', height)\n    }\n\n    function handleExtHeight(height: number) {\n      extHeightRef.value = height\n    }\n\n    function handleTitleDbClick(e: any) {\n      if (!props.canFullscreen) return\n      e.stopPropagation()\n      handleFullScreen(e)\n    }\n\n    return {\n      handleCancel,\n      getBindValue,\n      getProps,\n      handleFullScreen,\n      fullScreenRef,\n      getMergeProps,\n      handleOk,\n      visibleRef,\n      omit,\n      modalWrapperRef,\n      handleExtHeight,\n      handleHeightChange,\n      handleTitleDbClick,\n      getWrapperHeight,\n    }\n  },\n})\n</script>\n<template>\n  <ModalContent v-bind=\"getBindValue\" @cancel=\"handleCancel\">\n    <template v-if=\"!$slots.closeIcon\" #closeIcon>\n      <ModalClose\n        :can-fullscreen=\"getProps.canFullscreen\"\n        :full-screen=\"fullScreenRef\"\n        @cancel=\"handleCancel\"\n        @fullscreen=\"handleFullScreen\"\n      />\n    </template>\n\n    <template v-if=\"!$slots.title\" #title>\n      <ModalHeader\n        :help-message=\"getProps.helpMessage\"\n        :title=\"getMergeProps.title\"\n        @dblclick=\"handleTitleDbClick\"\n      />\n    </template>\n\n    <template v-if=\"!$slots.footer\" #footer>\n      <ModalFooter v-bind=\"getBindValue\" @ok=\"handleOk\" @cancel=\"handleCancel\">\n        <template v-for=\"item in Object.keys($slots)\" #[item]=\"data\">\n          <slot :name=\"item\" v-bind=\"data || {}\" />\n        </template>\n      </ModalFooter>\n    </template>\n\n    <ModalWrapper\n      ref=\"modalWrapperRef\"\n      :use-wrapper=\"getProps.useWrapper\"\n      :footer-offset=\"wrapperFooterOffset\"\n      :full-screen=\"fullScreenRef\"\n      :loading=\"getProps.loading\"\n      :loading-tip=\"getProps.loadingTip\"\n      :min-height=\"getProps.minHeight\"\n      :height=\"getWrapperHeight\"\n      :visible=\"visibleRef\"\n      :modal-footer-height=\"footer !== undefined && !footer ? 0 : undefined\"\n      v-bind=\"omit(getProps.wrapperProps, 'visible', 'height', 'modalFooterHeight')\"\n      @ext-height=\"handleExtHeight\"\n      @height-change=\"handleHeightChange\"\n    >\n      <slot />\n    </ModalWrapper>\n\n    <template v-for=\"item in Object.keys(omit($slots, 'default'))\" #[item]=\"data\">\n      <slot :name=\"item\" v-bind=\"data || {}\" />\n    </template>\n  </ModalContent>\n</template>\n"],"names":["props","_resolveComponent","_withCtx","_renderSlot","_createSlots","_renderList","_normalizeProps","_guardReactiveProps"],"mappings":"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"}