{"version":3,"file":"Notification.cjs","sources":["../../../../../../packages/components/notification/src/Notification.tsx"],"sourcesContent":["import type {\n  NotificationInstance as VCNotificationInstance,\n} from '@antdv/vue-components/vc-notification/src/Notification';\nimport type {\n  IconType,\n  NotificationApi,\n  NotificationArgsProps,\n  NotificationConfig,\n  NotificationPlacement,\n} from './interface';\nimport {\n  CheckCircleOutlined,\n  CloseCircleOutlined,\n  CloseOutlined,\n  ExclamationCircleOutlined,\n  InfoCircleOutlined,\n} from '@ant-design/icons-vue';\nimport { classNames, renderHelper } from '@antdv/utils';\nimport VcNotification from '@antdv/vue-components/vc-notification/src/Notification';\nimport { globalConfig } from '../../config-provider/src/config';\nimport useStyle from '../style';\nimport useNotification from './useNotification';\nimport { getPlacementStyle } from './util';\n\nconst notificationInstance: { [key: string]: VCNotificationInstance } = {};\nlet defaultDuration = 4.5;\nlet defaultTop = '24px';\nlet defaultBottom = '24px';\nlet defaultPrefixCls = '';\nlet defaultPlacement: NotificationPlacement = 'topRight';\nlet defaultGetContainer = () => document.body;\nlet defaultCloseIcon = null;\nlet rtl = false;\nlet maxCount: number;\n\nfunction setNotificationConfig(options: NotificationConfig) {\n  const { duration, placement, bottom, top, getContainer, closeIcon, prefixCls } = options;\n  if (prefixCls !== undefined)\n    defaultPrefixCls = prefixCls;\n\n  if (duration !== undefined)\n    defaultDuration = duration;\n\n  if (placement !== undefined)\n    defaultPlacement = placement;\n\n  if (bottom !== undefined)\n    defaultBottom = typeof bottom === 'number' ? `${bottom}px` : bottom;\n\n  if (top !== undefined)\n    defaultTop = typeof top === 'number' ? `${top}px` : top;\n\n  if (getContainer !== undefined)\n    defaultGetContainer = getContainer;\n\n  if (closeIcon !== undefined)\n    defaultCloseIcon = closeIcon;\n\n  if (options.rtl !== undefined)\n    rtl = options.rtl;\n\n  if (options.maxCount !== undefined)\n    maxCount = options.maxCount;\n}\n\nfunction getNotificationInstance(\n  {\n    prefixCls: customizePrefixCls,\n    placement = defaultPlacement,\n    getContainer = defaultGetContainer,\n    top,\n    bottom,\n    closeIcon = defaultCloseIcon,\n    appContext,\n  }: NotificationArgsProps,\n  callback: (n: VCNotificationInstance) => void,\n) {\n  const { getPrefixCls } = globalConfig();\n  const prefixCls = getPrefixCls('notification', customizePrefixCls || defaultPrefixCls);\n  const cacheKey = `${prefixCls}-${placement}-${rtl}`;\n  const cacheInstance = notificationInstance[cacheKey];\n  if (cacheInstance) {\n    Promise.resolve(cacheInstance).then((instance) => {\n      callback(instance);\n    });\n\n    return;\n  }\n\n  const notificationClass = classNames(`${prefixCls}-${placement}`, {\n    [`${prefixCls}-rtl`]: rtl === true,\n  });\n  VcNotification.newInstance(\n    {\n      name: 'notification',\n      prefixCls: customizePrefixCls || defaultPrefixCls,\n      useStyle,\n      class: notificationClass,\n      style: getPlacementStyle(placement, top ?? defaultTop, bottom ?? defaultBottom),\n      appContext,\n      getContainer,\n      closeIcon: ({ prefixCls }) => {\n        const closeIconToRender = (\n          <span class={`${prefixCls}-close-x`}>\n            {renderHelper(closeIcon, {}, <CloseOutlined class={`${prefixCls}-close-icon`} />)}\n          </span>\n        );\n        return closeIconToRender;\n      },\n      maxCount,\n      hasTransitionName: true,\n    },\n    (notification: any) => {\n      notificationInstance[cacheKey] = notification;\n      callback(notification);\n    },\n  );\n}\n\nconst typeToIcon = {\n  success: CheckCircleOutlined,\n  info: InfoCircleOutlined,\n  error: CloseCircleOutlined,\n  warning: ExclamationCircleOutlined,\n  warn: ExclamationCircleOutlined,\n};\n\nfunction notice(args: NotificationArgsProps) {\n  const { icon, type, description, message, btn } = args;\n  const duration = args.duration === undefined ? defaultDuration : args.duration;\n  getNotificationInstance(args, (notification) => {\n    notification.notice({\n      content: ({ prefixCls: outerPrefixCls }) => {\n        const prefixCls = `${outerPrefixCls}-notice`;\n        let iconNode = null;\n        if (icon) {\n          iconNode = () => <span class={`${prefixCls}-icon`}>{renderHelper(icon)}</span>;\n        } else if (type) {\n          const Icon = typeToIcon[type];\n          iconNode = () => <Icon class={`${prefixCls}-icon ${prefixCls}-icon-${type}`} />;\n        }\n        return (\n          <div class={iconNode ? `${prefixCls}-with-icon` : ''}>\n            {iconNode && iconNode()}\n            <div class={`${prefixCls}-message`}>\n              {!description && iconNode\n                ? (\n                    <span class={`${prefixCls}-message-single-line-auto-margin`} />\n                  )\n                : null}\n              {renderHelper(message)}\n            </div>\n            <div class={`${prefixCls}-description`}>{renderHelper(description)}</div>\n            {btn ? <span class={`${prefixCls}-btn`}>{renderHelper(btn)}</span> : null}\n          </div>\n        );\n      },\n      duration,\n      closable: true,\n      onClose: args.onClose,\n      onClick: args.onClick,\n      key: args.key,\n      style: args.style || {},\n      class: args.class,\n    });\n  });\n}\n\nconst api: any = {\n  open: notice,\n  close(key: string) {\n    Object.keys(notificationInstance).forEach(cacheKey =>\n      Promise.resolve(notificationInstance[cacheKey]).then((instance) => {\n        instance.removeNotice(key);\n      }),\n    );\n  },\n  config: setNotificationConfig,\n  destroy() {\n    Object.keys(notificationInstance).forEach((cacheKey) => {\n      Promise.resolve(notificationInstance[cacheKey]).then((instance) => {\n        instance.destroy();\n      });\n      delete notificationInstance[cacheKey]; // lgtm[js/missing-await]\n    });\n  },\n};\n\nconst iconTypes: IconType[] = ['success', 'info', 'warning', 'warn', 'error'];\niconTypes.forEach((type) => {\n  api[type] = args =>\n    api.open({\n      ...args,\n      type,\n    });\n});\n\napi.useNotification = useNotification;\n\n/** @private test Only function. Not work on production */\nexport async function getInstance(cacheKey: string) {\n  return process.env.NODE_ENV === 'test' ? notificationInstance[cacheKey] : null;\n}\n\nexport default api as NotificationApi;\n"],"names":["notificationInstance","defaultDuration","defaultTop","defaultBottom","defaultPrefixCls","defaultPlacement","defaultGetContainer","document","body","defaultCloseIcon","rtl","maxCount","setNotificationConfig","options","duration","placement","bottom","top","getContainer","closeIcon","prefixCls","undefined","getNotificationInstance","customizePrefixCls","appContext","callback","getPrefixCls","globalConfig","cacheKey","cacheInstance","Promise","resolve","then","instance","notificationClass","classNames","VcNotification","newInstance","name","useStyle","class","style","getPlacementStyle","closeIconToRender","_createVNode","renderHelper","CloseOutlined","hasTransitionName","notification","typeToIcon","success","CheckCircleOutlined","info","InfoCircleOutlined","error","CloseCircleOutlined","warning","ExclamationCircleOutlined","warn","notice","args","icon","type","description","message","btn","content","outerPrefixCls","iconNode","Icon","closable","onClose","onClick","key","api","open","close","Object","keys","forEach","removeNotice","config","destroy","iconTypes","useNotification","getInstance","process","env","NODE_ENV"],"mappings":";;;;;;;;;;;;;;;AAwBA,MAAMA,uBAAkE,EAAC,CAAA;AACzE,IAAIC,eAAkB,GAAA,GAAA,CAAA;AACtB,IAAIC,UAAa,GAAA,MAAA,CAAA;AACjB,IAAIC,aAAgB,GAAA,MAAA,CAAA;AACpB,IAAIC,gBAAmB,GAAA,EAAA,CAAA;AACvB,IAAIC,gBAA0C,GAAA,UAAA,CAAA;AAC9C,IAAIC,mBAAAA,GAAsBA,MAAMC,QAASC,CAAAA,IAAAA,CAAAA;AACzC,IAAIC,gBAAmB,GAAA,IAAA,CAAA;AACvB,IAAIC,GAAM,GAAA,KAAA,CAAA;AACV,IAAIC,QAAAA,CAAAA;AAEJ,SAASC,sBAAsBC,OAA6B,EAAA;AAC1D,EAAM,MAAA;AAAA,IAAEC,QAAAA;AAAAA,IAAUC,SAAAA;AAAAA,IAAWC,MAAAA;AAAAA,IAAQC,GAAAA;AAAAA,IAAKC,YAAAA;AAAAA,IAAcC,SAAAA;AAAAA,IAAWC,SAAAA;AAAAA,GAAcP,GAAAA,OAAAA,CAAAA;AACjF,EAAA,IAAIO,SAAcC,KAAAA,KAAAA,CAAAA;AAChBjB,IAAmBgB,gBAAAA,GAAAA,SAAAA,CAAAA;AAErB,EAAA,IAAIN,QAAaO,KAAAA,KAAAA,CAAAA;AACfpB,IAAkBa,eAAAA,GAAAA,QAAAA,CAAAA;AAEpB,EAAA,IAAIC,SAAcM,KAAAA,KAAAA,CAAAA;AAChBhB,IAAmBU,gBAAAA,GAAAA,SAAAA,CAAAA;AAErB,EAAA,IAAIC,MAAWK,KAAAA,KAAAA,CAAAA;AACblB,IAAAA,aAAAA,GAAgB,OAAOa,MAAAA,KAAW,QAAY,GAAA,CAAA,EAAEA,MAAO,CAAMA,EAAAA,CAAAA,GAAAA,MAAAA,CAAAA;AAE/D,EAAA,IAAIC,GAAQI,KAAAA,KAAAA,CAAAA;AACVnB,IAAAA,UAAAA,GAAa,OAAOe,GAAAA,KAAQ,QAAY,GAAA,CAAA,EAAEA,GAAI,CAAMA,EAAAA,CAAAA,GAAAA,GAAAA,CAAAA;AAEtD,EAAA,IAAIC,YAAiBG,KAAAA,KAAAA,CAAAA;AACnBf,IAAsBY,mBAAAA,GAAAA,YAAAA,CAAAA;AAExB,EAAA,IAAIC,SAAcE,KAAAA,KAAAA,CAAAA;AAChBZ,IAAmBU,gBAAAA,GAAAA,SAAAA,CAAAA;AAErB,EAAA,IAAIN,QAAQH,GAAQW,KAAAA,KAAAA,CAAAA;AAClBX,IAAAA,GAAAA,GAAMG,OAAQH,CAAAA,GAAAA,CAAAA;AAEhB,EAAA,IAAIG,QAAQF,QAAaU,KAAAA,KAAAA,CAAAA;AACvBV,IAAAA,QAAAA,GAAWE,OAAQF,CAAAA,QAAAA,CAAAA;AACvB,CAAA;AAEA,SAASW,uBACP,CAAA;AAAA,EACEF,SAAWG,EAAAA,kBAAAA;AAAAA,EACXR,SAAYV,GAAAA,gBAAAA;AAAAA,EACZa,YAAeZ,GAAAA,mBAAAA;AAAAA,EACfW,GAAAA;AAAAA,EACAD,MAAAA;AAAAA,EACAG,SAAYV,GAAAA,gBAAAA;AAAAA,EACZe,UAAAA;AACqB,CAAA,EACvBC,QACA,EAAA;AACA,EAAM,MAAA;AAAA,IAAEC,YAAAA;AAAAA,MAAiBC,mBAAa,EAAA,CAAA;AACtC,EAAA,MAAMP,SAAYM,GAAAA,YAAAA,CAAa,cAAgBH,EAAAA,kBAAAA,IAAsBnB,gBAAgB,CAAA,CAAA;AACrF,EAAA,MAAMwB,WAAY,CAAER,EAAAA,SAAU,CAAGL,CAAAA,EAAAA,SAAU,IAAGL,GAAI,CAAA,CAAA,CAAA;AAClD,EAAMmB,MAAAA,aAAAA,GAAgB7B,qBAAqB4B,QAAQ,CAAA,CAAA;AACnD,EAAA,IAAIC,aAAe,EAAA;AACjBC,IAAAA,OAAAA,CAAQC,OAAQF,CAAAA,aAAa,CAAEG,CAAAA,IAAAA,CAAMC,CAAa,QAAA,KAAA;AAChDR,MAAAA,QAAAA,CAASQ,QAAQ,CAAA,CAAA;AAAA,KAClB,CAAA,CAAA;AAED,IAAA,OAAA;AAAA,GACF;AAEA,EAAA,MAAMC,oBAAoBC,iBAAY,CAAA,CAAA,EAAEf,SAAU,CAAA,CAAA,EAAGL,SAAU,CAAG,CAAA,EAAA;AAAA,IAChE,CAAE,CAAA,EAAEK,SAAU,CAAA,IAAA,CAAK,GAAGV,GAAQ,KAAA,IAAA;AAAA,GAC/B,CAAA,CAAA;AACD0B,EAAAA,oBAAAA,CAAeC,WACb,CAAA;AAAA,IACEC,IAAM,EAAA,cAAA;AAAA,IACNlB,WAAWG,kBAAsBnB,IAAAA,gBAAAA;AAAAA,cACjCmC,aAAAA;AAAAA,IACAC,KAAON,EAAAA,iBAAAA;AAAAA,IACPO,OAAOC,sBAAkB3B,CAAAA,SAAAA,EAAWE,GAAOf,IAAAA,IAAAA,GAAAA,GAAAA,GAAAA,UAAAA,EAAYc,0BAAUb,aAAa,CAAA;AAAA,IAC9EqB,UAAAA;AAAAA,IACAN,YAAAA;AAAAA,IACAC,WAAWA,CAAC;AAAA,MAAEC,SAAAA,EAAAA,UAAAA;AAAAA,KAAgB,KAAA;AAC5B,MAAMuB,MAAAA,iBAAAA,GAAiBC,gBAAA,MAAA,EAAA;AAAA,QAAA,OAAA,EACP,GAAExB,UAAU,CAAA,QAAA,CAAA;AAAA,SACvByB,CAAAA,mBAAAA,CAAa1B,WAAW,EAAC,EAACyB,gBAAAE,sBAAA,EAAA;AAAA,QAAA,OAAA,EAAyB,GAAE1B,UAAU,CAAA,WAAA,CAAA;AAAA,OAAY,EAAA,IAAA,CAAI,CAAC,CAEpF,CAAA,CAAA;AACD,MAAOuB,OAAAA,iBAAAA,CAAAA;AAAAA,KACT;AAAA,IACAhC,QAAAA;AAAAA,IACAoC,iBAAmB,EAAA,IAAA;AAAA,KAEpBC,CAAsB,YAAA,KAAA;AACrBhD,IAAAA,oBAAAA,CAAqB4B,QAAQ,CAAIoB,GAAAA,YAAAA,CAAAA;AACjCvB,IAAAA,QAAAA,CAASuB,YAAY,CAAA,CAAA;AAAA,GAEzB,CAAA,CAAA;AACF,CAAA;AAEA,MAAMC,UAAa,GAAA;AAAA,EACjBC,OAASC,EAAAA,4BAAAA;AAAAA,EACTC,IAAMC,EAAAA,2BAAAA;AAAAA,EACNC,KAAOC,EAAAA,4BAAAA;AAAAA,EACPC,OAASC,EAAAA,kCAAAA;AAAAA,EACTC,IAAMD,EAAAA,kCAAAA;AACR,CAAA,CAAA;AAEA,SAASE,OAAOC,IAA6B,EAAA;AAC3C,EAAM,MAAA;AAAA,IAAEC,IAAAA;AAAAA,IAAMC,IAAAA;AAAAA,IAAMC,WAAAA;AAAAA,IAAaC,OAAAA;AAAAA,IAASC,GAAAA;AAAAA,GAAQL,GAAAA,IAAAA,CAAAA;AAClD,EAAA,MAAM9C,QAAW8C,GAAAA,IAAAA,CAAK9C,QAAaO,KAAAA,KAAAA,CAAAA,GAAYpB,kBAAkB2D,IAAK9C,CAAAA,QAAAA,CAAAA;AACtEQ,EAAAA,uBAAAA,CAAwBsC,MAAOZ,CAAiB,YAAA,KAAA;AAC9CA,IAAAA,YAAAA,CAAaW,MAAO,CAAA;AAAA,MAClBO,SAASA,CAAC;AAAA,QAAE9C,SAAW+C,EAAAA,cAAAA;AAAAA,OAAqB,KAAA;AAC1C,QAAM/C,MAAAA,SAAAA,GAAa,GAAE+C,cAAe,CAAA,OAAA,CAAA,CAAA;AACpC,QAAA,IAAIC,QAAW,GAAA,IAAA,CAAA;AACf,QAAA,IAAIP,IAAM,EAAA;AACRO,UAAWA,QAAAA,GAAAA,MAAAxB,gBAAA,MAAA,EAAA;AAAA,YAAA,OAAA,EAAoB,GAAExB,SAAU,CAAA,KAAA,CAAA;AAAA,WAAM,EAAA,CAAGyB,mBAAagB,CAAAA,IAAI,CAAC,CAAQ,CAAA,CAAA;AAAA,mBACrEC,IAAM,EAAA;AACf,UAAMO,MAAAA,IAAAA,GAAOpB,WAAWa,IAAI,CAAA,CAAA;AAC5BM,UAAWA,QAAAA,GAAAA,MAAAxB,gBAAAyB,IAAA,EAAA;AAAA,YAAA,SAAoB,CAAEjD,EAAAA,SAAU,CAAQA,MAAAA,EAAAA,SAAU,SAAQ0C,IAAK,CAAA,CAAA;AAAA,aAAK,IAAA,CAAA,CAAA;AAAA,SACjF;AACA,QAAA,OAAAlB,gBAAA,KAAA,EAAA;AAAA,UAAA,OACcwB,EAAAA,QAAAA,GAAY,CAAEhD,EAAAA,SAAU,CAAc,UAAA,CAAA,GAAA,EAAA;AAAA,WAAE,CACjDgD,QAAAA,IAAYA,QAAS,EAAA,EAACxB,gBAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EACV,GAAExB,SAAU,CAAA,QAAA,CAAA;AAAA,WAAS,CAC/B,CAAC2C,WAAeK,IAAAA,QAAAA,GAAQxB,gBAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EAEL,GAAExB,SAAU,CAAA,gCAAA,CAAA;AAAA,SAAiC,EAAA,IAAA,CAAA,GAE7D,IACHyB,EAAAA,mBAAAA,CAAamB,OAAO,CAAC,EAAApB,EAAAA,eAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAEX,GAAExB,SAAU,CAAA,YAAA,CAAA;AAAA,SAAa,EAAA,CAAGyB,mBAAakB,CAAAA,WAAW,CAAC,CACjEE,CAAAA,EAAAA,GAAGrB,GAAAA,eAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EAAiB,GAAExB,SAAU,CAAA,IAAA,CAAA;AAAA,SAAK,EAAA,CAAGyB,mBAAaoB,CAAAA,GAAG,CAAC,KAAW,IAAI,CAAA,CAAA,CAAA;AAAA,OAG/E;AAAA,MACAnD,QAAAA;AAAAA,MACAwD,QAAU,EAAA,IAAA;AAAA,MACVC,SAASX,IAAKW,CAAAA,OAAAA;AAAAA,MACdC,SAASZ,IAAKY,CAAAA,OAAAA;AAAAA,MACdC,KAAKb,IAAKa,CAAAA,GAAAA;AAAAA,MACVhC,KAAAA,EAAOmB,IAAKnB,CAAAA,KAAAA,IAAS,EAAC;AAAA,MACtBD,OAAOoB,IAAKpB,CAAAA,KAAAA;AAAAA,KACb,CAAA,CAAA;AAAA,GACF,CAAA,CAAA;AACH,CAAA;AAEA,MAAMkC,GAAW,GAAA;AAAA,EACfC,IAAMhB,EAAAA,MAAAA;AAAAA,EACNiB,MAAMH,GAAa,EAAA;AACjBI,IAAAA,MAAAA,CAAOC,IAAK9E,CAAAA,oBAAoB,CAAE+E,CAAAA,OAAAA,CAAQnD,CACxCE,QAAAA,KAAAA,OAAAA,CAAQC,OAAQ/B,CAAAA,oBAAAA,CAAqB4B,QAAQ,CAAC,CAAEI,CAAAA,IAAAA,CAAMC,CAAa,QAAA,KAAA;AACjEA,MAAAA,QAAAA,CAAS+C,aAAaP,GAAG,CAAA,CAAA;AAAA,KAC1B,CACH,CAAA,CAAA;AAAA,GACF;AAAA,EACAQ,MAAQrE,EAAAA,qBAAAA;AAAAA,EACRsE,OAAU,GAAA;AACRL,IAAAA,MAAAA,CAAOC,IAAK9E,CAAAA,oBAAoB,CAAE+E,CAAAA,OAAAA,CAASnD,CAAa,QAAA,KAAA;AACtDE,MAAAA,OAAAA,CAAQC,QAAQ/B,oBAAqB4B,CAAAA,QAAQ,CAAC,CAAA,CAAEI,KAAMC,CAAa,QAAA,KAAA;AACjEA,QAAAA,QAAAA,CAASiD,OAAQ,EAAA,CAAA;AAAA,OAClB,CAAA,CAAA;AACD,MAAA,OAAOlF,qBAAqB4B,QAAQ,CAAA,CAAA;AAAA,KACrC,CAAA,CAAA;AAAA,GACH;AACF,EAAA;AAEA,MAAMuD,YAAwB,CAAC,SAAA,EAAW,MAAQ,EAAA,SAAA,EAAW,QAAQ,OAAO,CAAA,CAAA;AAC5EA,SAAAA,CAAUJ,QAASjB,CAAS,IAAA,KAAA;AAC1BY,EAAAA,GAAAA,CAAIZ,IAAI,CAAA,GAAIF,CACVc,IAAAA,KAAAA,GAAAA,CAAIC,IAAK,CAAA;AAAA,IACP,GAAGf,IAAAA;AAAAA,IACHE,IAAAA;AAAAA,GACD,CAAA,CAAA;AACL,CAAC,CAAA,CAAA;AAEDY,GAAAA,CAAIU,eAAkBA,GAAAA,uBAAAA,CAAAA;AAGtB,eAAsBC,YAAYzD,QAAkB,EAAA;AAClD,EAAA,OAAO0D,QAAQC,GAAIC,CAAAA,QAAAA,KAAa,MAASxF,GAAAA,oBAAAA,CAAqB4B,QAAQ,CAAI,GAAA,IAAA,CAAA;AAC5E;;;;;"}