UNPKG

vexip-ui

Version:

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

3 lines (2 loc) 4.07 kB
"use strict";var N=Object.defineProperty;var R=(u,e,t)=>e in u?N(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t;var s=(u,e,t)=>R(u,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"),r=require("@vexip-ui/utils"),v=require("./notice.vue2.cjs"),A=["top-right","top-left","bottom-right","bottom-left"];let T=1;function I(){return`notice-${T++}`}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");s(this,"_installed");s(this,"_configRecord");e={...e,marker:!!e.marker,duration:e.duration?r.toNumber(e.duration):4e3},this._mountedApp=null,this._instance=null,this._innerApp=null,this._container=null,this._wrapper=null,this._mountedEl=null,this._installed=!1,this._configRecord=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;r.isNull(e)?this.clear():(t=this._getInstance())==null||t.remove(e)}config({placement:e,startOffset:t,itemGap:n,...i}){if(this._configRecord={placement:e,startOffset:t,itemGap:n},this.defaults={...this.defaults,...i},this._installed){const o=this._getInstance();o&&(e&&o.config({placement:A.includes(e)?e:A[0]}),o.config({startOffset:t,itemGap:n}))}}clone(){const e=new h(this.defaults);return e._mountedApp=this._mountedApp,e._configRecord=this._configRecord,e._installed=this._installed,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),r.destroyObject(this)}isDestroyed(){return!1}install(e,t={}){const{property:n,...i}=t;this._mountedApp=e,this._installed=!0,this.config({...this._configRecord,...i}),(n||!e.config.globalProperties.$notice)&&(e.config.globalProperties[n||"$notice"]=this)}transferTo(e){if(!r.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&&r.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(!r.isClient)return r.noop;let o;r.isObject(t)?o=t:typeof n=="number"?o={title:t,duration:n}:n?o={title:t,content:n,duration:i}:o={title:t,duration:i};const _=o.key??I(),p=this._getInstance();let l;const d=o.onClose,b=()=>{if(clearTimeout(l),typeof d=="function")return d()},f=o.onEnter,w=()=>{if(o.liveOnEnter&&clearTimeout(l),typeof f=="function")return f()},m=o.onLeave,C=()=>{if(o.liveOnEnter&&(clearTimeout(l),g()),typeof m=="function")return m()},c={...this.defaults,...o,key:_,type:e??o.type,onClose:b,onEnter:w,onLeave:C};c.icon&&typeof c.icon!="function"&&(c.icon=a.markRaw(c.icon)),p.add(c),g();function g(){const y=typeof c.duration=="number"?c.duration:4e3;y>=500&&(l=setTimeout(()=>{p.remove(_)},y))}return()=>{clearTimeout(l),p.remove(_)}}}const k=new h;exports.Notice=k;exports.NoticeManager=h; //# sourceMappingURL=index.cjs.map