{"version":3,"file":"Dialog.cjs","sources":["../../../../../../packages/vue-components/vc-dialog/src/Dialog.tsx"],"sourcesContent":["import type { MouseEventHandler } from '@antdv/types';\nimport type { ScrollLocker } from '@antdv/utils';\nimport type { PropType } from 'vue';\nimport type { ContentRef } from './Content';\nimport {\n  classNames,\n  contains,\n  initDefaultProps,\n  KeyCode,\n  omit,\n  pickAttrs,\n} from '@antdv/utils';\nimport { defineComponent, onBeforeUnmount, shallowRef, watch, watchEffect } from 'vue';\nimport Content from './Content';\nimport dialogPropTypes from './IDialogPropTypes';\nimport Mask from './Mask';\nimport { getMotionName, getUUID } from './util';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'VcDialog',\n  inheritAttrs: false,\n  props: initDefaultProps(\n    {\n      ...dialogPropTypes(),\n      getOpenCount: Function as PropType<() => number>,\n      scrollLocker: Object as PropType<ScrollLocker>,\n    },\n    {\n      mask: true,\n      visible: false,\n      keyboard: true,\n      closable: true,\n      maskClosable: true,\n      destroyOnClose: false,\n      prefixCls: 'rc-dialog',\n      getOpenCount: () => null,\n      focusTriggerAfterClose: true,\n    },\n  ),\n  setup(props, { attrs, slots }) {\n    const lastOutSideActiveElementRef = shallowRef<HTMLElement>();\n    const wrapperRef = shallowRef<HTMLDivElement>();\n    const contentRef = shallowRef<ContentRef>();\n    const animatedVisible = shallowRef(props.visible);\n    const ariaIdRef = shallowRef<string>(`vcDialogTitle${getUUID()}`);\n\n    // ========================= Events =========================\n    const onDialogVisibleChanged = (newVisible: boolean) => {\n      if (newVisible) {\n        // Try to focus\n        if (!contains(wrapperRef.value, document.activeElement as HTMLElement)) {\n          lastOutSideActiveElementRef.value = document.activeElement as HTMLElement;\n          contentRef.value?.focus();\n        }\n      } else {\n        const preAnimatedVisible = animatedVisible.value;\n        // Clean up scroll bar & focus back\n        animatedVisible.value = false;\n        if (props.mask && lastOutSideActiveElementRef.value && props.focusTriggerAfterClose) {\n          try {\n            lastOutSideActiveElementRef.value.focus({ preventScroll: true });\n          } catch (e) {\n            // Do nothing\n          }\n          lastOutSideActiveElementRef.value = null;\n        }\n\n        // Trigger afterClose only when change visible from true to false\n        if (preAnimatedVisible)\n          props.afterClose?.();\n      }\n    };\n\n    const onInternalClose = (e: MouseEvent | KeyboardEvent) => {\n      props.onClose?.(e);\n    };\n\n    // >>> Content\n    const contentClickRef = shallowRef(false);\n    const contentTimeoutRef = shallowRef<any>();\n\n    // We need record content click incase content popup out of dialog\n    const onContentMouseDown: MouseEventHandler = () => {\n      clearTimeout(contentTimeoutRef.value);\n      contentClickRef.value = true;\n    };\n\n    const onContentMouseUp: MouseEventHandler = () => {\n      contentTimeoutRef.value = setTimeout(() => {\n        contentClickRef.value = false;\n      });\n    };\n\n    const onWrapperClick = (e: MouseEvent) => {\n      if (!props.maskClosable) return null;\n      if (contentClickRef.value)\n        contentClickRef.value = false;\n      else if (wrapperRef.value === e.target)\n        onInternalClose(e);\n    };\n    const onWrapperKeyDown = (e: KeyboardEvent) => {\n      if (props.keyboard && e.keyCode === KeyCode.ESC) {\n        e.stopPropagation();\n        onInternalClose(e);\n        return;\n      }\n\n      // keep focus inside dialog\n      if (props.visible) {\n        if (e.keyCode === KeyCode.TAB)\n          contentRef.value.changeActive(!e.shiftKey);\n      }\n    };\n\n    watch(\n      () => props.visible,\n      () => {\n        if (props.visible)\n          animatedVisible.value = true;\n      },\n      { flush: 'post' },\n    );\n\n    onBeforeUnmount(() => {\n      clearTimeout(contentTimeoutRef.value);\n      props.scrollLocker?.unLock();\n    });\n    watchEffect(() => {\n      props.scrollLocker?.unLock();\n      if (animatedVisible.value)\n        props.scrollLocker?.lock();\n    });\n\n    return () => {\n      const {\n        prefixCls,\n        mask,\n        visible,\n        maskTransitionName,\n        maskAnimation,\n        zIndex,\n        wrapClassName,\n        rootClassName,\n        wrapStyle,\n        closable,\n        maskProps,\n        maskStyle,\n        transitionName,\n        animation,\n        wrapProps,\n        title = slots.title,\n      } = props;\n      const { style, class: className } = attrs;\n      return (\n        <div class={[`${prefixCls}-root`, rootClassName]} {...pickAttrs(props, { data: true })}>\n          <Mask\n            prefixCls={prefixCls}\n            visible={mask && visible}\n            motionName={getMotionName(prefixCls, maskTransitionName, maskAnimation)}\n            style={{\n              zIndex,\n              ...maskStyle,\n            }}\n            maskProps={maskProps}\n          />\n          <div\n            tabIndex={-1}\n            onKeydown={onWrapperKeyDown}\n            class={classNames(`${prefixCls}-wrap`, wrapClassName)}\n            ref={wrapperRef}\n            onClick={onWrapperClick}\n            role=\"dialog\"\n            aria-labelledby={title ? ariaIdRef.value : null}\n            style={{ zIndex, ...wrapStyle, display: !animatedVisible.value ? 'none' : null }}\n            {...wrapProps}\n          >\n            <Content\n              {...omit(props, ['scrollLocker'])}\n              style={style}\n              class={className}\n              v-slots={slots}\n              onMousedown={onContentMouseDown}\n              onMouseup={onContentMouseUp}\n              ref={contentRef}\n              closable={closable}\n              ariaId={ariaIdRef.value}\n              prefixCls={prefixCls}\n              visible={visible}\n              onClose={onInternalClose}\n              onVisibleChanged={onDialogVisibleChanged}\n              motionName={getMotionName(prefixCls, transitionName, animation)}\n            />\n          </div>\n        </div>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","compatConfig","MODE","name","inheritAttrs","props","initDefaultProps","dialogPropTypes","getOpenCount","Function","scrollLocker","Object","mask","visible","keyboard","closable","maskClosable","destroyOnClose","prefixCls","focusTriggerAfterClose","setup","attrs","slots","lastOutSideActiveElementRef","shallowRef","wrapperRef","contentRef","animatedVisible","ariaIdRef","getUUID","onDialogVisibleChanged","newVisible","contains","value","document","activeElement","focus","preAnimatedVisible","preventScroll","e","afterClose","onInternalClose","onClose","contentClickRef","contentTimeoutRef","onContentMouseDown","clearTimeout","onContentMouseUp","setTimeout","onWrapperClick","target","onWrapperKeyDown","keyCode","KeyCode","ESC","stopPropagation","TAB","changeActive","shiftKey","watch","flush","onBeforeUnmount","unLock","watchEffect","lock","maskTransitionName","maskAnimation","zIndex","wrapClassName","rootClassName","wrapStyle","maskProps","maskStyle","transitionName","animation","wrapProps","title","style","class","className","_createVNode","pickAttrs","data","Mask","getMotionName","classNames","display","Content","omit"],"mappings":"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"}