UNPKG

vexip-ui

Version:

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

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