{"version":3,"file":"Drawer.mjs","sources":["../../../../../../packages/components/drawer/src/Drawer.tsx"],"sourcesContent":["import type { CustomSlotsType } from '@antdv/types';\nimport type { CSSProperties } from 'vue';\nimport type { PushState } from './interface';\nimport { CloseOutlined } from '@ant-design/icons-vue';\nimport { useScrollLocker } from '@antdv/hooks';\nimport {\n  classNames,\n  devWarning,\n  getPropsSlot,\n  initDefaultProps,\n  isNumeric,\n  omit,\n} from '@antdv/utils';\nimport { getTransitionName, getTransitionProps } from '@antdv/vue-components';\nimport {\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  onMounted,\n  onUnmounted,\n  provide,\n  shallowRef,\n  watch,\n} from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\n\nimport { NoCompactStyle } from '../../space';\nimport useStyle from '../style';\nimport DrawerWrapper from './DrawerWrapper';\nimport { drawerProps } from './props';\n\nconst defaultPushState: PushState = { distance: 180 };\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ADrawer',\n  inheritAttrs: false,\n  props: initDefaultProps(drawerProps(), {\n    closable: true,\n    placement: 'right',\n    maskClosable: true,\n    mask: true,\n    level: null,\n    keyboard: true,\n    push: defaultPushState,\n  }),\n  slots: Object as CustomSlotsType<{\n    closeIcon: any\n    title: any\n    extra: any\n    footer: any\n    handle: any\n    default: any\n  }>,\n  // emits: ['update:visible', 'close', 'afterVisibleChange'],\n  setup(props, { emit, slots, attrs }) {\n    const sPush = shallowRef(false);\n    const destroyClose = shallowRef(false);\n    const vcDrawer = shallowRef(null);\n    const load = shallowRef(false);\n    const visible = shallowRef(false);\n    const mergedOpen = computed(() => props.open ?? props.visible);\n    watch(\n      mergedOpen,\n      () => {\n        if (mergedOpen.value)\n          load.value = true;\n        else\n          visible.value = false;\n      },\n      { immediate: true },\n    );\n    watch(\n      [mergedOpen, load],\n      () => {\n        if (mergedOpen.value && load.value)\n          visible.value = true;\n      },\n      { immediate: true },\n    );\n    const parentDrawerOpts = inject('parentDrawerOpts', null);\n    const { prefixCls, getPopupContainer, direction } = useConfigInject('drawer', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const getContainer = computed(() =>\n      // 有可能为 false，所以不能直接判断\n      props.getContainer === undefined && getPopupContainer?.value\n        ? () => getPopupContainer.value(document.body)\n        : props.getContainer,\n    );\n\n    devWarning(\n      !props.afterVisibleChange,\n      'Drawer',\n      '`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead',\n    );\n    // ========================== Warning ===========================\n    if (process.env.NODE_ENV !== 'production') {\n      [\n        ['visible', 'open'],\n        ['onUpdate:visible', 'onUpdate:open'],\n        ['onAfterVisibleChange', 'onAfterOpenChange'],\n      ].forEach(([deprecatedName, newName]) => {\n        devWarning(\n          !props[deprecatedName],\n          'Drawer',\n          `\\`${deprecatedName}\\` is deprecated, please use \\`${newName}\\` instead.`,\n        );\n      });\n    }\n    const domFocus = () => {\n      vcDrawer.value?.domFocus?.();\n    };\n\n    const setPush = () => {\n      sPush.value = true;\n    };\n\n    const setPull = () => {\n      sPush.value = false;\n      nextTick(() => {\n        domFocus();\n      });\n    };\n    provide('parentDrawerOpts', {\n      setPush,\n      setPull,\n    });\n\n    if (props.lockScroll)\n      useScrollLocker(visible);\n\n    onMounted(() => {\n      if (mergedOpen.value && parentDrawerOpts)\n        parentDrawerOpts.setPush();\n    });\n\n    onUnmounted(() => {\n      if (parentDrawerOpts)\n        parentDrawerOpts.setPull();\n    });\n\n    watch(\n      visible,\n      () => {\n        if (parentDrawerOpts) {\n          if (visible.value)\n            parentDrawerOpts.setPush();\n          else\n            parentDrawerOpts.setPull();\n        }\n      },\n      { flush: 'post' },\n    );\n\n    const close = (e: Event) => {\n      emit('update:visible', false);\n      emit('update:open', false);\n      emit('close', e);\n    };\n\n    const afterVisibleChange = (open: boolean) => {\n      if (!open) {\n        if (destroyClose.value === false) {\n          // set true only once\n          destroyClose.value = true;\n        }\n        if (props.destroyOnClose)\n          load.value = false;\n      }\n      props.afterVisibleChange?.(open);\n      emit('afterVisibleChange', open);\n      emit('afterOpenChange', open);\n    };\n\n    const pushTransform = computed(() => {\n      const { push, placement } = props;\n      let distance: number | string;\n      if (typeof push === 'boolean')\n        distance = push ? defaultPushState.distance : 0;\n      else\n        distance = push!.distance;\n\n      distance = Number.parseFloat(String(distance || 0));\n\n      if (placement === 'left' || placement === 'right')\n        return `translateX(${placement === 'left' ? distance : -distance}px)`;\n\n      if (placement === 'top' || placement === 'bottom')\n        return `translateY(${placement === 'top' ? distance : -distance}px)`;\n\n      return null;\n    });\n    // ============================ Size ============================\n    const mergedWidth = computed(() => props.width ?? (props.size === 'large' ? 736 : 378));\n    const mergedHeight = computed(() => props.height ?? (props.size === 'large' ? 736 : 378));\n    const offsetStyle = computed(() => {\n      // https://github.com/ant-design/ant-design/issues/24287\n      const { mask, placement } = props;\n      if (!visible.value && !mask)\n        return {};\n\n      const val: CSSProperties = {};\n      if (placement === 'left' || placement === 'right')\n        val.width = isNumeric(mergedWidth.value) ? `${mergedWidth.value}px` : mergedWidth.value;\n      else\n        val.height = isNumeric(mergedHeight.value) ? `${mergedHeight.value}px` : mergedHeight.value;\n\n      return val;\n    });\n\n    const wrapperStyle = computed(() => {\n      const { zIndex, contentWrapperStyle } = props;\n      const val = offsetStyle.value;\n      return [\n        { zIndex, transform: sPush.value ? pushTransform.value : undefined },\n        { ...contentWrapperStyle },\n        val,\n      ];\n    });\n\n    const renderCloseIcon = (prefixCls: string) => {\n      const { closable } = props;\n      const $closeIcon = slots.closeIcon ? slots.closeIcon?.() : props.closeIcon;\n      return (\n        closable && (\n          <button key=\"closer\" onClick={close} aria-label=\"Close\" class={`${prefixCls}-close`}>\n            {$closeIcon === undefined ? <CloseOutlined></CloseOutlined> : $closeIcon}\n          </button>\n        )\n      );\n    };\n\n    const renderHeader = (prefixCls: string) => {\n      const { closable, headerStyle } = props;\n      const extra = getPropsSlot(slots, props, 'extra');\n      const title = getPropsSlot(slots, props, 'title');\n      if (!title && !closable)\n        return null;\n\n      return (\n        <div\n          class={classNames(`${prefixCls}-header`, {\n            [`${prefixCls}-header-close-only`]: closable && !title && !extra,\n          })}\n          style={headerStyle}\n        >\n          <div class={`${prefixCls}-header-title`}>\n            {renderCloseIcon(prefixCls)}\n            {title && <div class={`${prefixCls}-title`}>{title}</div>}\n          </div>\n          {extra && <div class={`${prefixCls}-extra`}>{extra}</div>}\n        </div>\n      );\n    };\n\n    const renderFooter = (prefix: string) => {\n      const footer = getPropsSlot(slots, props, 'footer');\n      if (!footer)\n        return null;\n\n      const footerClassName = `${prefix}-footer`;\n      return (\n        <div class={footerClassName} style={props.footerStyle}>\n          {footer}\n        </div>\n      );\n    };\n\n    const renderBody = (prefix: string) => {\n      if (destroyClose.value && !props.forceRender && !load.value)\n        return null;\n\n      const { bodyStyle, drawerStyle } = props;\n\n      return (\n        <div class={`${prefix}-wrapper-body`} style={drawerStyle}>\n          {renderHeader(prefix)}\n          <div key=\"body\" class={`${prefix}-body`} style={bodyStyle}>\n            {slots.default?.()}\n          </div>\n          {renderFooter(prefix)}\n        </div>\n      );\n    };\n\n    const drawerClassName = computed(() =>\n      classNames(\n        {\n          'no-mask': !props.mask,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        props.rootClassName,\n        hashId.value,\n      ),\n    );\n    // =========================== Motion ===========================\n    const maskMotion = computed(() => {\n      return getTransitionProps(getTransitionName(prefixCls.value, 'mask-motion'));\n    });\n    const panelMotion = (motionPlacement: string) => {\n      return getTransitionProps(\n        getTransitionName(prefixCls.value, `panel-motion-${motionPlacement}`),\n      );\n    };\n\n    return () => {\n      const { width, height, placement, mask, forceRender, ...rest } = props;\n\n      const vcDrawerProps: any = {\n        ...attrs,\n        ...omit(rest, [\n          'size',\n          'closeIcon',\n          'closable',\n          'destroyOnClose',\n          'drawerStyle',\n          'headerStyle',\n          'bodyStyle',\n          'title',\n          'push',\n          'onAfterVisibleChange',\n          'onClose',\n          'onUpdate:visible',\n          'onUpdate:open',\n          'visible',\n        ]),\n        forceRender,\n        onClose: close,\n        afterVisibleChange,\n        handler: false,\n        prefixCls: prefixCls.value,\n        open: visible.value,\n        showMask: mask,\n        placement,\n        ref: vcDrawer,\n      };\n      return wrapSSR(\n        <NoCompactStyle>\n          <DrawerWrapper\n            {...vcDrawerProps}\n            maskMotion={maskMotion.value}\n            motion={panelMotion}\n            width={mergedWidth.value}\n            height={mergedHeight.value}\n            getContainer={getContainer.value}\n            rootClassName={drawerClassName.value}\n            rootStyle={props.rootStyle}\n            contentWrapperStyle={wrapperStyle.value}\n            v-slots={{\n              handler: props.handle ? () => props.handle : slots.handle,\n              default: () => renderBody(prefixCls.value),\n            }}\n          >\n          </DrawerWrapper>\n        </NoCompactStyle>,\n      );\n    };\n  },\n});\n"],"names":["defaultPushState","distance","compatConfig","MODE","name","inheritAttrs","props","initDefaultProps","drawerProps","closable","placement","maskClosable","mask","level","keyboard","push","slots","Object","setup","emit","attrs","sPush","shallowRef","destroyClose","vcDrawer","load","visible","mergedOpen","computed","open","watch","value","immediate","parentDrawerOpts","inject","prefixCls","getPopupContainer","direction","useConfigInject","wrapSSR","hashId","useStyle","getContainer","undefined","document","body","devWarning","afterVisibleChange","process","env","NODE_ENV","forEach","deprecatedName","newName","domFocus","setPush","setPull","nextTick","provide","lockScroll","useScrollLocker","onMounted","onUnmounted","flush","close","e","destroyOnClose","pushTransform","Number","parseFloat","String","mergedWidth","width","size","mergedHeight","height","offsetStyle","val","isNumeric","wrapperStyle","zIndex","contentWrapperStyle","transform","renderCloseIcon","$closeIcon","closeIcon","_createVNode","CloseOutlined","renderHeader","headerStyle","extra","getPropsSlot","title","classNames","renderFooter","prefix","footer","footerClassName","footerStyle","renderBody","forceRender","bodyStyle","drawerStyle","default","drawerClassName","rootClassName","maskMotion","getTransitionProps","getTransitionName","panelMotion","motionPlacement","rest","vcDrawerProps","omit","onClose","handler","showMask","ref","NoCompactStyle","DrawerWrapper","rootStyle","handle"],"mappings":"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"}