UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

3 lines (2 loc) 3.59 kB
"use strict";var b=Object.defineProperty;var M=(u,e,t)=>e in u?b(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t;var s=(u,e,t)=>M(u,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("vue");require("./message.vue.cjs");const y=require("@vexip-ui/hooks"),o=require("@vexip-ui/utils"),E=require("./message.vue2.cjs"),v=["top","bottom"];let T=1;function I(){return`message-${T++}`}class l{constructor(e={}){s(this,"name");s(this,"defaults");s(this,"open");s(this,"primary");s(this,"info");s(this,"success");s(this,"warning");s(this,"error");s(this,"_mountedApp");s(this,"_instance");s(this,"_innerApp");s(this,"_container");s(this,"_wrapper");s(this,"_mountedEl");e={...e,duration:e.duration?o.toNumber(e.duration):3e3},this._mountedApp=null,this._instance=null,this._innerApp=null,this._container=null,this._wrapper=null,this._mountedEl=null,this.name="Message",this.defaults={},this.config(e),this.open=(t,n)=>this._open(null,t,n),this.primary=(t,n)=>this._open("primary",t,n),this.info=(t,n)=>this._open("info",t,n),this.success=(t,n)=>this._open("success",t,n),this.warning=(t,n)=>this._open("warning",t,n),this.error=(t,n)=>this._open("error",t,n)}judge(e,t,n,i){e?this.success(t,i):this.error(n,i)}close(e){var t;o.isNull(e)?this.clear():(t=this._getInstance())==null||t.remove(e)}config({placement:e,...t}){var n;e&&((n=this._getInstance())==null||n.config({placement:v.includes(e)?e:v[0]})),this.defaults={...this.defaults,...t}}clone(){const e=new l(this.defaults);return e._mountedApp=this._mountedApp,e}clear(){var e;(e=this._getInstance())==null||e.clear()}destroy(){var e,t;this._mountedEl&&((e=this._wrapper)==null||e.removeChild(this._mountedEl)),(t=this._innerApp)==null||t.unmount(),this._container&&c.render(null,this._container),o.destroyObject(this)}isDestroyed(){return!1}install(e,t={}){const{property:n,...i}=t;this.config(i),this._mountedApp=e,(n||!e.config.globalProperties.$message)&&(e.config.globalProperties[n||"$message"]=this)}transferTo(e){if(!o.isClient)return;const t=y.unrefElement(e);t&&(this._wrapper=t,this._instance?this._mountedEl&&this._wrapper.appendChild(this._mountedEl):this._getInstance())}_getInstance(){if(!this._instance&&o.isClient){if(!this._mountedApp)console.warn("[vexip-ui:Message]: App missing, the plugin maybe not installed."),this._container=document.createElement("div"),this._innerApp=c.createApp(E),this._instance=this._innerApp.mount(this._container);else{const e=c.createVNode(E,null,null);this._container=document.createElement("div"),e.appContext=this._mountedApp._context,c.render(e,this._container),this._instance=y.proxyExposed(e)}this._mountedEl=this._container.firstElementChild,(this._wrapper||document.body).appendChild(this._mountedEl)}return this._instance}_open(e,t,n){if(!o.isClient)return o.noop;const i=typeof t=="string"?{content:t,duration:n}:t,h=i.key??I(),p=this._getInstance();let a;const _=i.onClose,A=()=>{if(clearTimeout(a),typeof _=="function")return _()},d=i.onEnter,w=()=>{if(i.liveOnEnter&&clearTimeout(a),typeof d=="function")return d()},m=i.onLeave,C=()=>{if(i.liveOnEnter&&(clearTimeout(a),f()),typeof m=="function")return m()},r={...this.defaults,...i,key:h,type:e??i.type,onClose:A,onEnter:w,onLeave:C};r.icon&&typeof r.icon!="function"&&(r.icon=c.markRaw(r.icon)),p.add(r),f();function f(){const g=typeof r.duration=="number"?r.duration:3e3;g>=500&&(a=setTimeout(()=>{p.remove(h)},g))}return()=>{clearTimeout(a),p.remove(h)}}}const q=new l;exports.Message=q;exports.MessageManager=l; //# sourceMappingURL=index.cjs.map