{"version":3,"file":"Notice.cjs","sources":["../../../../../../packages/vue-components/vc-notification/src/Notice.tsx"],"sourcesContent":["import type { Key, MouseEventHandler } from '@antdv/types';\nimport type { CSSProperties, HTMLAttributes } from 'vue';\nimport { classNames } from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  onMounted,\n  onUnmounted,\n  Teleport,\n  watch,\n} from 'vue';\n\ninterface DivProps extends HTMLAttributes {\n  // Ideally we would allow all data-* props but this would depend on https://github.com/microsoft/TypeScript/issues/28960\n  'data-testid'?: string;\n}\n\nexport interface NoticeProps {\n  prefixCls: string;\n  duration?: number | null;\n  updateMark?: string;\n  /** Mark as final key since set maxCount may keep the key but user pass key is different */\n  noticeKey: Key;\n  closeIcon?: any;\n  closable?: boolean;\n  props?: DivProps;\n  onClick?: MouseEventHandler;\n  onClose?: (key: Key) => void;\n\n  /** @private Only for internal usage. We don't promise that we will refactor this */\n  holder?: HTMLDivElement;\n\n  /** @private Provided by CSSMotionList */\n  visible?: boolean;\n}\n\nexport default defineComponent<NoticeProps>({\n  name: 'Notice',\n  inheritAttrs: false,\n  props: [\n    'prefixCls',\n    'duration',\n    'updateMark',\n    'noticeKey',\n    'closeIcon',\n    'closable',\n    'props',\n    'onClick',\n    'onClose',\n    'holder',\n    'visible',\n  ] as any,\n  setup(props, { attrs, slots }) {\n    let closeTimer: any;\n    let isUnMounted = false;\n    const duration = computed(() => (props.duration === undefined ? 4.5 : props.duration));\n    const startCloseTimer = () => {\n      if (duration.value && !isUnMounted) {\n        closeTimer = setTimeout(() => {\n          close();\n        }, duration.value * 1000);\n      }\n    };\n\n    const clearCloseTimer = () => {\n      if (closeTimer) {\n        clearTimeout(closeTimer);\n        closeTimer = null;\n      }\n    };\n    const close = (e?: MouseEvent) => {\n      if (e)\n        e.stopPropagation();\n\n      clearCloseTimer();\n      const { onClose, noticeKey } = props;\n      if (onClose)\n        onClose(noticeKey);\n    };\n    const restartCloseTimer = () => {\n      clearCloseTimer();\n      startCloseTimer();\n    };\n    onMounted(() => {\n      startCloseTimer();\n    });\n    onUnmounted(() => {\n      isUnMounted = true;\n      clearCloseTimer();\n    });\n\n    watch(\n      [duration, () => props.updateMark, () => props.visible],\n      ([preDuration, preUpdateMark, preVisible], [newDuration, newUpdateMark, newVisible]) => {\n        if (\n          preDuration !== newDuration\n          || preUpdateMark !== newUpdateMark\n          || (preVisible !== newVisible && newVisible)\n        ) {\n          restartCloseTimer();\n        }\n      },\n      { flush: 'post' },\n    );\n    return () => {\n      const { prefixCls, closable, closeIcon = slots.closeIcon?.(), onClick, holder } = props;\n      const { class: className, style } = attrs;\n      const componentClass = `${prefixCls}-notice`;\n      const dataOrAriaAttributeProps = Object.keys(attrs).reduce(\n        (acc: Record<string, string>, key: string) => {\n          if (key.startsWith('data-') || key.startsWith('aria-') || key === 'role')\n            acc[key] = (attrs as any)[key];\n\n          return acc;\n        },\n        {},\n      );\n      const node = (\n        <div\n          class={classNames(componentClass, className, {\n            [`${componentClass}-closable`]: closable,\n          })}\n          style={style as CSSProperties}\n          onMouseenter={clearCloseTimer}\n          onMouseleave={startCloseTimer}\n          onClick={onClick}\n          {...dataOrAriaAttributeProps}\n        >\n          <div class={`${componentClass}-content`}>{slots.default?.()}</div>\n          {closable\n            ? (\n                <a tabindex={0} onClick={close} class={`${componentClass}-close`}>\n                  {closeIcon || <span class={`${componentClass}-close-x`} />}\n                </a>\n              )\n            : null}\n        </div>\n      );\n\n      if (holder)\n        return <Teleport to={holder} v-slots={{ default: () => node }}></Teleport>;\n\n      return node;\n    };\n  },\n});\n"],"names":["defineComponent","name","inheritAttrs","props","setup","attrs","slots","closeTimer","isUnMounted","duration","computed","undefined","startCloseTimer","value","setTimeout","close","clearCloseTimer","clearTimeout","e","stopPropagation","onClose","noticeKey","restartCloseTimer","onMounted","onUnmounted","watch","updateMark","visible","preDuration","preUpdateMark","preVisible","newDuration","newUpdateMark","newVisible","flush","prefixCls","closable","closeIcon","onClick","holder","class","className","style","componentClass","dataOrAriaAttributeProps","Object","keys","reduce","acc","key","startsWith","node","_createVNode","classNames","default","Teleport"],"mappings":"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"}