{"version":3,"file":"plugin.mjs","sources":["../../src/toast/plugin.ts"],"sourcesContent":["import { createApp, App, DefineComponent } from 'vue';\nimport { isObject } from 'lodash-es';\nimport Toast from './toast';\nimport { ToastOptions } from './type';\nimport { isBrowser } from '../shared';\nimport { getAttach } from '../shared/dom';\n\nexport type ToastProps = ToastOptions;\n\nlet instance: any = null;\nlet app: App<Element>;\n\n/** 展示提示 */\nexport function ToastPlugin(props: string | Partial<ToastOptions>): DefineComponent<ToastOptions> {\n  if (!isBrowser) return;\n  const root = document.createElement('div');\n\n  const container = getAttach(isObject(props) ? props.attach : 'body');\n  if (container) {\n    container.appendChild(root);\n  } else {\n    console.error('attach is not exist');\n  }\n\n  const propsObject = {\n    duration: 2000,\n    ...parseOptions(props),\n  };\n\n  instance?.clear();\n  instance = Toast;\n\n  instance.clear = () => {\n    clearTimeout(instance.timer);\n    app.unmount();\n    root.remove();\n    if (propsObject.onClose) {\n      propsObject.onClose();\n    }\n    instance = null;\n  };\n\n  if (propsObject.duration && propsObject.duration > 0) {\n    instance.timer = setTimeout(() => {\n      instance.clear();\n      if (propsObject.onDestroy) {\n        propsObject.onDestroy();\n      }\n    }, propsObject.duration);\n  }\n\n  app = createApp(instance, { ...propsObject });\n  app.mount(root);\n\n  return instance;\n}\n\n/** 关闭提示 */\nToastPlugin.clear = () => instance?.clear();\n\n/** 展示失败提示 */\nToastPlugin.error = (options: ToastOptions | string) => ToastPlugin({ ...parseOptions(options), theme: 'error' });\n\n/** 展示加载提示 */\nToastPlugin.loading = (options: ToastOptions | string) => ToastPlugin({ ...parseOptions(options), theme: 'loading' });\n\n/** 展示警告提示 */\nToastPlugin.warning = (options: ToastOptions | string) => ToastPlugin({ ...parseOptions(options), theme: 'warning' });\n\n/** 展示成功提示 */\nToastPlugin.success = (options: ToastOptions | string) => ToastPlugin({ ...parseOptions(options), theme: 'success' });\n\nfunction parseOptions(message?: Partial<ToastOptions> | string) {\n  if (typeof message === 'string') {\n    return { message };\n  }\n  return message;\n}\n\nToastPlugin.install = (app: App) => {\n  app.config.globalProperties.$toast = ToastPlugin;\n};\n\nexport default ToastPlugin;\n\ndeclare module 'vue' {\n  // Bind to `this` keyword\n  export interface ComponentCustomProperties {\n    $toast: typeof ToastPlugin;\n  }\n}\n"],"names":["instance","app","ToastPlugin","props","_instance","isBrowser","root","document","createElement","container","getAttach","isObject","attach","appendChild","console","error","propsObject","_objectSpread","duration","parseOptions","clear","Toast","clearTimeout","timer","unmount","remove","onClose","setTimeout","onDestroy","createApp","mount","_instance2","options","theme","loading","warning","success","message","install","config","globalProperties","$toast"],"mappings":"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"}