xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 6.29 kB
Source Map (JSON)
{"version":3,"file":"plugin.mjs","sources":["../../src/notification/plugin.ts"],"sourcesContent":["import { App, Plugin, createApp, nextTick, ComponentPublicInstance } from 'vue';\nimport NotificationList from './notificationList';\nimport { getAttach } from '../utils/dom';\nimport {\n NotificationOptions,\n NotificationInstance,\n NotificationMethod,\n NotificationInfoMethod,\n NotificationWarningMethod,\n NotificationErrorMethod,\n NotificationSuccessMethod,\n NotificationCloseMethod,\n NotificationCloseAllMethod,\n} from './type';\nimport { AttachNodeReturnValue } from '../common';\nimport './style';\n\nlet seed = 0;\n// 存储不同 attach 和 不同 placement 消息列表实例\nconst instanceMap: Map<AttachNodeReturnValue, Record<string, ComponentPublicInstance>> = new Map();\n\nconst NotificationFunction = (options: NotificationOptions): Promise<NotificationInstance> => {\n seed += 1;\n const hackOptions = {\n placement: 'top-right',\n zIndex: 6000,\n attach: 'body',\n id: seed,\n ...options,\n };\n hackOptions.content = options.content ? options.content : '';\n\n const attachEl = getAttach(hackOptions.attach);\n\n if (!instanceMap.get(attachEl)) {\n instanceMap.set(attachEl, {});\n }\n let tmpInstance = instanceMap.get(attachEl)[hackOptions.placement];\n if (!tmpInstance) {\n const wrapper = document.createElement('div');\n\n const instance = createApp(NotificationList, {\n placement: hackOptions.placement,\n }).mount(wrapper);\n\n instance.add(hackOptions);\n instanceMap.get(attachEl)[hackOptions.placement] = instance;\n tmpInstance = instance;\n attachEl.appendChild(instance.$el);\n } else {\n tmpInstance.add(hackOptions);\n }\n\n return new Promise((resolve) => {\n const ins = instanceMap.get(attachEl)[hackOptions.placement];\n nextTick(() => {\n const { notificationList } = ins;\n resolve(notificationList[notificationList.length - 1]);\n });\n });\n};\n\nconst showThemeNotification: NotificationMethod = (theme, options) => {\n const hackOptions = { ...options, theme };\n return NotificationFunction(hackOptions);\n};\n\ninterface ExtraApi {\n info: NotificationInfoMethod;\n success: NotificationSuccessMethod;\n warning: NotificationWarningMethod;\n error: NotificationErrorMethod;\n close: NotificationCloseMethod;\n closeAll: NotificationCloseAllMethod;\n}\n\nconst extraApi: ExtraApi = {\n info: (options) => showThemeNotification('info', options),\n success: (options) => showThemeNotification('success', options),\n warning: (options) => showThemeNotification('warning', options),\n error: (options) => showThemeNotification('error', options),\n close: (promise) => {\n promise.then((instance) => instance.close());\n },\n closeAll: () => {\n instanceMap.forEach((attach) => {\n Object.keys(attach).forEach((placement) => {\n attach[placement].removeAll();\n });\n });\n },\n};\nexport type NotificationPluginType = Plugin & ExtraApi & NotificationMethod;\n\nconst NotificationPlugin: NotificationPluginType = showThemeNotification as NotificationPluginType;\n\nNotificationPlugin.install = (app: App) => {\n app.config.globalProperties.$notify = showThemeNotification;\n Object.keys(extraApi).forEach((funcName) => {\n app.config.globalProperties.$notify[funcName] = extraApi[funcName];\n });\n};\n\nObject.keys(extraApi).forEach((funcName) => {\n NotificationPlugin[funcName] = extraApi[funcName];\n});\n\nexport default NotificationPlugin;\n"],"names":["seed","placement","zIndex","attach","id","instanceMap","instance","tmpInstance","attachEl","nextTick","theme","close","promise","NotificationPlugin","app","Object"],"mappings":"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"}