UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 28.5 kB
(function(E,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(E=typeof globalThis<"u"?globalThis:E||self,e(E["message-box"]={},E.Vue))})(this,function(E,e){"use strict";var Xe=Object.defineProperty;var Ye=(E,e,D)=>e in E?Xe(E,e,{enumerable:!0,configurable:!0,writable:!0,value:D}):E[e]=D;var $=(E,e,D)=>Ye(E,typeof e!="symbol"?e+"":e,D);const D={width:{Type:Number,default:400},type:{Type:String,default:"info"},title:{Type:String,default:""},detail:{Type:String,default:""},okButtonText:{Type:String,default:"确定"},cancelButtonText:{Type:String,default:"取消"},exceptionInfo:{Type:Object,default:null},promptEditorType:{Type:String,default:"text-area"},buttons:{type:Object,default:[]}};function K(){return new DOMException("The request is not allowed","NotAllowedError")}async function se(a){if(!navigator.clipboard)throw K();return navigator.clipboard.writeText(a)}async function re(a){const t=document.createElement("span");t.textContent=a,t.style.whiteSpace="pre",t.style.webkitUserSelect="auto",t.style.userSelect="all",document.body.appendChild(t);const n=window.getSelection(),l=window.document.createRange();n==null||n.removeAllRanges(),l.selectNode(t),n==null||n.addRange(l);let s=!1;try{s=window.document.execCommand("copy")}finally{n==null||n.removeAllRanges(),window.document.body.removeChild(t)}if(!s)throw K()}async function ie(a){try{await se(a)}catch(t){try{await re(a)}catch(n){throw n||t||K()}}}function ce(){async function a(t){await ie(t)}return{onCopy:a}}function ue(a,t,n,l){const s=e.ref(14),u=e.ref(140),d=e.ref(""),r=e.ref(l.value.length),c=e.computed(()=>l.value),f=e.computed(()=>({"font-size":`${s.value}px`,height:"100%"}));function y(v){if(v.currentTarget){const C=v.currentTarget.value||"";r.value=C.length}}return()=>e.createVNode(e.Fragment,null,[e.createVNode("textarea",{title:"promptMessage",name:"promptMessage",class:"form-control",style:f.value,rows:"4",maxlength:u.value,onInput:v=>y(v)},[c.value]),e.createVNode("span",{class:"textarea-wordcount",title:d.value,style:"position: absolute; bottom: 76px; right: 32px; cursor: pointer; text-align: right;"},[r.value+" / "+u.value])])}function de(a,t,n,l){const s=ue(a,t,n,l),u=new Map([["text-area",s]]);function d(r){return u.get(r)||null}return{getEditorRender:d}}function fe(){const a=e.ref(!1),t=e.ref("复制成功");return{feedbackStyle:e.computed(()=>{const l={position:"absolute",left:"50%",top:"50%",width:"100px",height:"40px",background:"#303C53","line-height":"40px","text-align":"center","margin-left":"-30px","margin-top":"-50px","border-radius":"10px","box-shadow":"0px 2px 8px 0px",color:"#fff",transition:"all .3s ease"};return l.opacity=a.value?"0.8":"0",l.display=a.value?"":"none",l}),feedbackMessage:t,toShowFeedback:a}}function he(a,t){const n=t.getEditorRender(a.promptEditorType);return()=>n&&n()}function me(a){const t=e.computed(()=>!!a.value&&!!a.value.date),n=e.computed(()=>`发生时间 : ${a.value&&a.value.date||""}`),l=e.computed(()=>!!a.value&&!!a.value.detail),s=e.computed(()=>"详细信息 : "+(a.value&&a.value.detail||"")),u="exp_switch_"+new Date().getTime();return()=>e.createVNode("div",{class:"toast-msg-detail"},[t.value&&e.createVNode("div",null,[n.value]),l.value&&e.createVNode("div",{class:"exception_wrap"},[e.createVNode("input",{type:"checkbox",id:u,class:"d-none exp_switch"},null),e.createVNode("div",{class:"exception_error_msg"},[e.createVNode("label",{class:"swith",htmlFor:u},null),e.createVNode("div",{innerHTML:s.value},null)])])])}function ve(a){return()=>e.createVNode("p",{class:"toast-msg-detail",innerHTML:a.value},null)}function ge(a,t,n,l){const s=e.ref(a.exceptionInfo),u=e.computed(()=>{const C={"f-icon":!0},M=`f-icon-${t.value}`;return C[M]=!0,C}),d=e.computed(()=>n.value||s.value&&s.value.message),r=e.computed(()=>l.value),c=e.computed(()=>!!l.value),f=e.computed(()=>!!s.value);function y(){return f.value?me(s):c.value?ve(r):()=>null}const v=y();return()=>e.createVNode(e.Fragment,null,[e.createVNode("div",{class:"float-left modal-tips-iconwrap"},[e.createVNode("span",{class:u.value},null)]),e.createVNode("div",{class:"modal-tips-content"},[e.createVNode("p",{class:"toast-msg-title",innerHTML:d.value},null),v()])])}function pe(a,t,n){const{onCopy:l}=t,{toShowFeedback:s}=n,u=e.ref("复制成功"),d=e.ref("复制详细信息"),r=e.ref(a.exceptionInfo||{date:"",message:"",detail:""}),c=e.computed(()=>r.value&&r.value.detail||"");function f(y){l(c.value).catch(v=>{u.value="复制失败"}).finally(()=>{s.value=!0,setTimeout(()=>{s.value=!1},700)})}return()=>e.createVNode("span",{style:"width: 100%;color: #2A87FF;padding-left: 37px;"},[e.createVNode("span",{onClick:f,style:"cursor: pointer;"},[d.value])])}function ye(a,t,n,l){const s=e.ref(a.type),u=e.ref(a.buttons),d=e.ref(a.exceptionInfo),r=e.ref(a.okButtonText),c=e.ref(a.cancelButtonText),f=e.ref(!0),y=e.ref(!0),v=e.computed(()=>!!(u.value&&u.value.length)),C=e.computed(()=>d.value&&d.value.date&&d.value.message&&d.value.detail),M=e.computed(()=>!(u.value&&u.value.length)&&(r.value||c.value)),N=e.computed(()=>y.value&&r.value),z=e.computed(()=>f.value&&c.value),T=pe(a,n,l);function S(R){s.value==="question"&&t.emit("reject"),t.emit("close")}function I(R){s.value==="question"&&t.emit("accept"),t.emit("close")}return()=>e.createVNode("div",{class:"modal-footer"},[C.value&&T(),M.value&&z.value&&e.createVNode("button",{type:"button",class:"btn btn-secondary btn-lg",onClick:S},[c.value]),M.value&&N.value&&e.createVNode("button",{type:"button",class:"btn btn-primary btn-lg",onClick:I},[r.value]),v.value&&u.value.length&&u.value.map(R=>e.createVNode("button",{type:"button",onClick:R.handle,class:R.class},[R.iconClass&&e.createVNode("span",{class:R.iconClass},null),R.text]))])}const X=e.defineComponent({name:"FMessageBox",props:D,emits:["accept","reject","close"],setup(a,t){const n=e.ref(a.type),l=e.ref(a.title),s=e.ref(a.detail),u=e.computed(()=>{const T={"modal-tips":!0,"d-flex":!0,"flex-row":!0},S=`messager-type-${n.value}`;return T[S]=!0,T}),d=e.computed(()=>{const T={};return n.value==="prompt"?T.padding="0.5rem 0.5rem 1rem 1.5rem":n.value==="error"&&(T.padding="0.5rem 1.5rem 1rem 1.5rem"),T}),r=ce(),c=de(a,n,l,s),f=fe(),{feedbackStyle:y,feedbackMessage:v}=f;function C(){return e.createVNode("div",{style:y.value},[v.value])}function M(){switch(n.value){case"prompt":return he(a,c);default:return ge(a,n,l,s)}}const N=M(),z=ye(a,t,r,f);return()=>e.createVNode("div",{class:"farris-messager"},[e.createVNode("section",{class:u.value,style:d.value},[N()]),z(),C()])}}),we={class:{type:String,default:""},title:{type:String,default:""},width:{type:Number,default:500},height:{type:Number,default:320},buttons:{type:Array,default:[]},modelValue:{type:Boolean,default:!1},showHeader:{type:Boolean,default:!0},showButtons:{type:Boolean,default:!0},fitContent:{type:Boolean,default:!0},showCloseButton:{type:Boolean,default:!0},showMaxButton:{type:Boolean,default:!1},minHeight:{type:Number},maxHeight:{type:Number},minWidth:{type:Number},maxWidth:{type:Number},containment:{type:Object,default:null},resizeable:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},dragHandle:{type:Object,default:null},closedCallback:{type:Function,default:null},resizeHandle:{type:Function,default:null},render:{type:Function,default:null},acceptCallback:{type:Function,default:null},rejectCallback:{type:Function,default:null},enableEsc:{type:Boolean,default:!0},enableEnter:{type:Boolean,default:!1},dialogType:{type:String,default:""},src:{type:String,default:""},footerHeight:{type:Number,default:60}};class k{constructor(t,n){this.x=t,this.y=n}static getTransformInfo(t){const l=window.getComputedStyle(t).getPropertyValue("transform").replace(/[^-\d,]/g,"").split(",");if(l.length>=6){const s=parseInt(l[4],10),u=parseInt(l[5],10);return{x:s,y:u}}return{x:0,y:0}}static fromEvent(t,n=null){if(this.isMouseEvent(t))return new k(t.clientX,t.clientY);if(n===null||t.changedTouches.length===1)return new k(t.changedTouches[0].clientX,t.changedTouches[0].clientY);for(let l=0;l<t.changedTouches.length;l++)if(t.changedTouches[l].target===n)return new k(t.changedTouches[l].clientX,t.changedTouches[l].clientY)}static isMouseEvent(t){return Object.prototype.toString.apply(t).indexOf("MouseEvent")===8}static isIPosition(t){return!!t&&"x"in t&&"y"in t}static getCurrent(t){const n=new k(0,0);if(window){const l=window.getComputedStyle(t);if(l){const s=parseInt(l.getPropertyValue("left"),10),u=parseInt(l.getPropertyValue("top"),10);n.x=isNaN(s)?0:s,n.y=isNaN(u)?0:u}return n}return null}static copy(t){return new k(0,0).set(t)}get value(){return{x:this.x,y:this.y}}add(t){return this.x+=t.x,this.y+=t.y,this}subtract(t){return this.x-=t.x,this.y-=t.y,this}multiply(t){this.x*=t,this.y*=t}divide(t){this.x/=t,this.y/=t}reset(){return this.x=0,this.y=0,this}set(t){return this.x=t.x,this.y=t.y,this}}class P{constructor(t,n){this.width=t,this.height=n}static getCurrent(t){const n=new P(0,0);if(window){const l=window.getComputedStyle(t);return l&&(n.width=parseInt(l.getPropertyValue("width"),10),n.height=parseInt(l.getPropertyValue("height"),10)),n}return null}static copy(t){return new P(0,0).set(t)}set(t){return this.width=t.width,this.height=t.height,this}}function be(a,t){const n=e.ref(),l=e.ref(),s=e.ref(),u=e.ref(),d=e.ref(),r=e.ref(),c=e.ref(),f=e.ref(),y=e.ref(),v=e.ref(),C=e.ref(),M=e.ref(),N=e.ref(a.draggable),z=e.ref(!1);function T(){const i=l.value||document.body,h=window.getComputedStyle(i);if(!h||!n.value)return;const w=k.getTransformInfo(n.value),p={};c.value&&(p.deltaL=n.value.offsetLeft-c.value.x,p.deltaT=n.value.offsetTop-c.value.y);const V=h.getPropertyValue("position");p.width=i.clientWidth,p.height=i.clientHeight,p.pr=parseInt(h.getPropertyValue("padding-right"),10),p.pb=parseInt(h.getPropertyValue("padding-bottom"),10),p.position=h.getPropertyValue("position"),V==="static"&&(i.style.position="relative"),p.translateX=w.x,p.translateY=w.y,v.value=p}function S(i){if(n.value){u.value=P.getCurrent(n.value),d.value=k.getCurrent(n.value),r.value=u.value?P.copy(u.value):null,c.value=d.value?k.copy(d.value):null,T();const h=i.target.getAttribute("type")||"";f.value={n:!!h.match(/n/),s:!!h.match(/s/),w:!!h.match(/w/),e:!!h.match(/e/)}}}function I(){var i,h,w,p;if(n.value){const V=n.value;f.value&&((f.value.n||f.value.s)&&((i=r.value)!=null&&i.height)&&(V.style.height=r.value.height+"px"),(f.value.w||f.value.e)&&((h=r.value)!=null&&h.width)&&(V.style.width=r.value.width+"px"),c.value&&((w=c.value)!=null&&w.x&&(V.style.left=c.value.x+"px"),(p=c.value)!=null&&p.y&&(V.style.top=c.value.y+"px")))}}function R(){const i=a.minHeight?a.minHeight:1,h=a.minWidth?a.minWidth:1;r.value&&c.value&&f.value&&u.value&&(r.value.height<i&&(r.value.height=i,f.value.n&&d.value&&(c.value.y=d.value.y+(u.value.height-i))),r.value.width<h&&(r.value.width=h,f.value.w&&d.value&&(c.value.x=d.value.x+(u.value.width-h))),a.maxHeight&&r.value.height>a.maxHeight&&(r.value.height=a.maxHeight,d.value&&f.value.n&&(c.value.y=d.value.y+(u.value.height-a.maxHeight))),a.maxWidth&&r.value.width>a.maxWidth&&(r.value.width=a.maxWidth,f.value.w&&d.value&&(c.value.x=d.value.x+(u.value.width-a.maxWidth))))}function b(){if(l.value){const i=v.value;if(c.value&&r.value&&f.value&&u.value){const h=i.width-i.pr-i.deltaL-i.translateX-c.value.x,w=i.height-i.pb-i.deltaT-i.translateY-c.value.y;f.value.n&&c.value.y+i.translateY<0&&d.value&&(c.value.y=-i.translateY,r.value.height=u.value.height+d.value.y+i.translateY),f.value.w&&c.value.x+i.translateX<0&&d.value&&(c.value.x=-i.translateX,r.value.width=u.value.width+d.value.x+i.translateX),r.value.width>h&&(r.value.width=h),r.value.height>w&&(r.value.height=w)}}}function B(i){if(!s.value||!u.value||!d.value||!f.value)return;i.subtract(s.value);const h=i.x,w=i.y;f.value.n?(c.value.y=d.value.y+w,r.value.height=u.value.height-w):f.value.s&&(r.value.height=u.value.height+w),f.value.e?r.value.width=u.value.width+h:f.value.w&&(r.value.width=u.value.width-h,c.value.x=d.value.x+h),b(),R(),I()}function j(i){if(!y.value)return;const h=k.fromEvent(i);h&&B(h)}function m(){if(n.value){const{width:i,height:h,x:w,y:p}=n.value.getBoundingClientRect(),V=k.getTransformInfo(n.value);return{size:{width:i,height:h},position:{x:w-V.x,y:p-V.y}}}return null}function g(i){if(n.value){const h=m();C.value=h}s.value=void 0,u.value=null,d.value=null,r.value=null,c.value=null,f.value=null,y.value=null,document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",g)}function H(){document.addEventListener("mousemove",j),document.addEventListener("mouseup",g)}function O(i){i instanceof MouseEvent&&i.button===2||N.value&&(document.body.click(),i.stopPropagation(),i.preventDefault(),s.value=k.fromEvent(i),y.value=i.target,S(i),H())}function W(i){return n.value=i,e.createVNode(e.Fragment,null,[e.createVNode("div",{class:"fv-resizable-handle fv-resizable-n",type:"n",onMousedown:h=>O(h)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-e",type:"e",onMousedown:h=>O(h)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-s",type:"s",onMousedown:h=>O(h)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-w",type:"w",onMousedown:h=>O(h)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-ne",type:"ne",onMousedown:h=>O(h)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-se fv-resizable-diagonal",type:"se",onMousedown:h=>O(h)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-sw",type:"sw",onMousedown:h=>O(h)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-nw",type:"nw",onMousedown:h=>O(h)},null)])}function F(i=!0){document.body.click();const h=l.value||document.body,w=P.getCurrent(h),p=n.value;i&&p&&(M.value=m(),M.value.transform=p.style.transform),w&&p&&(r.value=w,p.style.height=r.value.height-14+"px",p.style.width=r.value.width-14+"px",p.style.left="7px",p.style.top="7px",p.style.transform="",C.value={size:r.value,position:{x:0,y:0}},N.value=!1,z.value=!0)}function A(){var i,h;if(document.body.click(),M.value){const w={width:M.value.size.width||0,height:M.value.size.height||0},p={x:(window.innerWidth-w.width)/2,y:(window.innerHeight-w.height)/2};(i=r.value)==null||i.set(w),(h=c.value)==null||h.set(p);const V=n.value;V.style.height=w.height+"px",V.style.width=w.width+"px",V.style.left=`${p.x}px`,V.style.top=`${p.y}px`,V.style.transform="",C.value={size:w,position:p},N.value=a.draggable,z.value=!1}}function _(){if(n.value){const i=P.getCurrent(n.value);if(i){const{width:h,height:w}=i;n.value.style.left=`${(window.innerWidth-h)/2}px`,n.value.style.top=`${(window.innerHeight-w)/2}px`,n.value.style.transform=""}}}function J(){const i=()=>{z.value?F(!1):_(),document.body.click()};return window.addEventListener("resize",i),()=>{window.removeEventListener("resize",i)}}const G=J();return{renderResizeBar:W,boundingElement:l,resizedEventParam:C,maximize:F,restore:A,allowDrag:N,isMaximized:z,unWindowResizeHandle:G}}function xe(a,t,n){const l=e.ref(),s=e.ref(a.draggable),u=e.ref(a.lockAxis),d=e.ref(),r=e.ref(),c=e.ref(!1),f=e.ref(new k(0,0)),y=e.ref(new k(0,0)),v=e.ref(new k(0,0)),C=e.ref(new k(0,0));e.watch(()=>n.value,m=>{d.value.style.cursor=m?"move":"default"});function M(m,g){if(g.tagName==="BUTTON")return!1;if(g===m)return!0;for(const H in g.children)if(Object.prototype.hasOwnProperty.call(g.children,H)&&M(m,g.children[H]))return!0;return!1}function N(){var O,W;let m=v.value.x+y.value.x,g=v.value.y+y.value.y;u.value==="x"?(m=((O=f.value)==null?void 0:O.x)||0,v.value.x=0):u.value==="y"&&(g=((W=f.value)==null?void 0:W.y)||0,v.value.y=0);const H=`translate3d(${Math.round(m)}px, ${Math.round(g)}px, 0px)`;l.value&&(l.value.style.transform=H),C.value.x=m,C.value.y=g}function z(){if(!r.value||!l.value)return null;const m=r.value.getBoundingClientRect(),g=l.value.getBoundingClientRect(),H={top:m.top<g.top,right:m.right>g.right,bottom:m.bottom>g.bottom,left:m.left<g.left};return H.top||(v.value.y-=g.top-m.top),H.bottom||(v.value.y-=g.bottom-m.bottom),H.right||(v.value.x-=g.right-m.right),H.left||(v.value.x-=g.left-m.left),N(),H}function T(m){m&&(f.value&&m.subtract(f.value),v.value.set(m),N(),z())}function S(m){c.value&&s.value&&(m.stopPropagation(),m.preventDefault(),T(k.fromEvent(m,d.value)))}function I(){var m;c.value&&(c.value=!1,y.value.add(v.value),v.value.reset(),(m=l.value)==null||m.classList.remove("ng-dragging"),document.removeEventListener("mousemove",S),document.removeEventListener("mouseup",I))}function R(){!c.value&&d.value&&(c.value=!0,d.value.classList.add("ng-dragging"),document.addEventListener("mousemove",S),document.addEventListener("mouseup",I))}function b(){if(l.value){const m=k.getTransformInfo(l.value);y.value.set(m);return}y.value.reset()}function B(m){if(!n.value||m instanceof MouseEvent&&m.button===2)return;const g=m.target||m.srcElement;d.value!==void 0&&g&&!M(g,d.value)||s.value!==!1&&(document.body.click(),m.stopPropagation(),m.preventDefault(),f.value=k.fromEvent(m,l.value),b(),R())}function j(m,g,H){if(s.value&&g){if(m)d.value=m;else if(a.dragHandle){if(a.dragHandle instanceof HTMLElement)d.value=a.dragHandle;else if(typeof a.dragHandle=="string"){const O=g.querySelector(a.dragHandle);O&&(d.value=O)}}l.value=g,r.value=H,d.value?(d.value.classList.add("ng-draggable"),d.value.addEventListener("mousedown",B)):s.value=!1}}return{registerDraggle:j,resetTranslate:b}}function te(a,t){if(a){const n=l=>{l.key.toLowerCase()===a.toLowerCase()&&t({event:l,key:a})};return document.addEventListener("keydown",n),()=>{document.removeEventListener("keydown",n)}}}function Ce(a,t){const n=e.ref(a.enableEsc);let l=null;return n.value?(l=te("Escape",s=>{t.emit("esc",{event:s.event,type:"esc"})}),{remove:l}):null}function Me(a,t){const n=e.ref(a.enableEnter);let l=null;return n.value?(l=te("Enter",s=>{t.emit("enter",{event:s.event,type:"enter"})}),{remove:l}):null}const Y=e.defineComponent({name:"FModal",props:we,emits:["update:modelValue","accept","cancel","closed","resize","esc","enter"],setup(a,t){const n=e.ref(a.width||300),l=e.ref(a.height||200),s=e.ref(a.modelValue),u=e.ref(""),d=e.ref(a.class),r=e.ref(a.fitContent),c=e.ref(a.showHeader),f=e.ref(""),y=e.ref(a.showCloseButton),v=e.ref(a.showMaxButton),C=e.ref(!1),M=e.ref(a.dialogType),N=e.ref(a.src),z=e.ref(""),T=e.ref(a.showButtons),S=e.ref(a.title),I=e.ref(a.resizeable),R=e.ref(a.containment||null),b=e.ref(),B=e.ref(!1);function j(o,x){s.value=!1,t.emit("update:modelValue",!1),x!=null&&t.emit(x?"accept":"cancel"),t.emit("closed",o)}const m=[{name:"cancel",text:"取消",class:"btn btn-secondary",handle:o=>{j(o,!1)}},{name:"accept",text:"确定",class:"btn btn-primary",handle:o=>{j(o,!0)}}],g=e.ref(a.buttons&&a.buttons.length?a.buttons:m),H=e.computed(()=>!!f.value),O=e.computed(()=>!!T.value&&!!g.value),W=e.ref(),F=e.ref(),A=e.ref(!1),{renderResizeBar:_,maximize:J,restore:G,boundingElement:i,resizedEventParam:h,allowDrag:w,unWindowResizeHandle:p}=be(a),{registerDraggle:V}=xe(a,t,w);function le(){return!!document.querySelectorAll(".farris-modal").length&&document.body.classList.contains("modal-open")}function ke(){const o=document.querySelectorAll(".farris-modal").length;(!o||o-1<=0)&&document.body.classList.remove("modal-open"),b.value&&b.value.classList.remove("show")}e.watch(()=>a.title,(o,x)=>{o!==x&&(S.value=o)}),e.watch(()=>a.modelValue,(o,x)=>{o!==x&&(s.value=o,o||ke()),s.value&&(B.value=le())}),e.watch(()=>a.showHeader,(o,x)=>{o!==x&&(c.value=o)}),e.watch(()=>a.showButtons,(o,x)=>{o!==x&&(T.value=o)}),e.watch(()=>h.value,(o,x)=>{const U=o||{},q=x||{};JSON.stringify(U)!==JSON.stringify(q)&&t.emit("resize",{newSize:o,oldSize:x})});const Q=e.computed(()=>(s.value&&document.body.classList.add("modal-open"),s.value)),Ne=e.computed(()=>{const o={modal:!0,"farris-modal":!0,fade:!0};return o["f-modal-fitContent"]=!!r.value,o.show=!!Q.value,o}),Ve=e.computed(()=>{var U;const o={"modal-dialog":!0},x=(U=d.value)==null?void 0:U.split(" ");return x==null||x.reduce((q,$e)=>(q[$e]=!0,q),o),o}),Ee=e.computed(()=>({position:"absolute",top:`${(window.innerHeight-l.value)/2}px`,left:`${(window.innerWidth-n.value)/2}px`,width:`${n.value}px`,height:r.value?"auto":`${l.value}px`})),ze=e.computed(()=>({"modal-content":!0,"modal-content-has-header":c.value})),Se=e.computed(()=>{const o={display:c.value?"":"none"};return o["pointer-events"]=w.value?"auto":"none",o}),Re=e.computed(()=>({"f-icon":!0,modal_maximize:!0,modalrevert:A.value})),He=e.computed(()=>({"modal-body":!0,"f-utils-flex-column":M.value==="iframe","f-utils-fill":!0}));function Oe(){return{height:`${a.footerHeight||60}px`}}const Ie=e.computed(()=>{const o={textAlgin:z.value},x=Oe();return Object.assign(o,x)});function oe(o){if(o.stopPropagation(),A.value){A.value=!1,G();return}J(),A.value=!0}async function je(o,x){o.handle&&await o.handle(x,o)&&t.emit("closed",x)}function Fe(o){o.width&&(n.value=o.width),o.height&&(l.value=o.height),o.buttons&&(g.value=o.buttons),o.title&&(S.value=o.title)}const Le=e.computed(()=>{const o={display:"inline-block"};return B.value&&(o["background-color"]="transparent"),o});let Z=null,ee=null;e.onBeforeMount(()=>{B.value=le()}),e.onMounted(()=>{F.value&&!R.value&&(R.value=F.value.parentElement,i.value=R.value,V(W.value,F.value,i.value)),Q.value&&document.body.classList.add("modal-open"),Z=Ce(a,t),ee=Me(a,t)}),e.onUnmounted(()=>{p&&p(),Z&&Z.remove(),ee&&ee.remove()}),t.expose({modalElementRef:F,updateModalOptions:Fe,close:j,maxDialog:oe});function De(){return e.createVNode("ul",null,[C.value&&e.createVNode("li",{class:"f-btn-icon f-bare"},[e.createVNode("span",{class:"f-icon modal_minimize"},null)]),v.value&&e.createVNode("li",{onClick:oe,class:"f-btn-icon f-bare",style:"pointer-events: auto;"},[e.createVNode("span",{class:Re.value},null)]),y.value&&e.createVNode("li",{class:"f-btn-icon f-bare",onClick:o=>j(o,!1),style:"pointer-events: auto;"},[e.createVNode("span",{class:"f-icon modal_close"},null)])])}function Pe(){return e.createVNode("div",{class:"modal-footer",style:Ie.value},[g.value&&g.value.map(o=>e.createVNode("button",{name:o.name,type:"button",class:o.class+(o.iconClass?" btn-icontext":""),onClick:x=>{je(o,x)}},[!!o.iconClass&&e.createVNode("i",{class:o.iconClass},null),o.text]))])}function We(){return e.createVNode("div",{ref:W,class:"modal-header",style:Se.value},[e.createVNode("div",{class:"modal-title"},[H.value&&e.createVNode("span",{class:f.value,style:"margin-right: 8px"},null),e.createVNode("span",{class:"modal-title-label"},[S.value])]),e.createVNode("div",{class:"actions"},[De()])])}function Ae(o){o.stopPropagation()}return()=>e.createVNode(e.Teleport,{to:"body"},{default:()=>[Q.value&&e.createVNode(e.Transition,{name:"fade",appear:!0},{default:()=>{var o,x;return[e.createVNode("div",{class:Ne.value,style:Le.value,ref:b,onClick:Ae},[e.createVNode("div",{id:u.value,class:Ve.value,style:Ee.value,ref:F},[e.createVNode("div",{class:ze.value},[c.value&&We(),e.createVNode("div",{class:He.value},[(x=(o=t.slots).default)==null?void 0:x.call(o),M.value==="iframe"&&e.createVNode("iframe",{title:u.value,class:"f-utils-fill",width:"100%",frameborder:"0",src:N.value},null)]),O.value&&Pe()]),!r.value&&I.value&&F.value&&!A.value&&_(F.value)])])]}})]})}});function ae(a){if(a.content&&a.content.render)return a.content.render;if(a.render&&typeof a.render=="function")return a.render}function Te(a){const t=document.createElement("div");t.style.display="contents";const n=e.createApp({setup(l,s){e.onUnmounted(()=>{document.body.removeChild(t)});const u=e.ref(),d=e.ref(a.class||""),r=e.ref(!!a.showButtons),c=e.ref(!!a.showHeader),f=e.ref(a.showCloseButton==null?!0:a.showCloseButton),y=e.ref(!0),v=e.ref(a.title||""),C=a.acceptCallback||(()=>{}),M=a.rejectCallback||(()=>{}),N=a.closedCallback||(I=>{}),z=a.resizeHandle||(I=>{}),T=ae(a),S=I=>{y.value=!1,n.unmount(),N(I)};return e.onMounted(()=>{}),s.expose({modalRef:u}),()=>e.createVNode(Y,{ref:u,class:d.value,modelValue:y.value,"onUpdate:modelValue":I=>y.value=I,title:v.value,width:a.width,height:a.height,buttons:a.buttons,"show-header":c.value,"show-buttons":r.value,"show-close-button":f.value,"show-max-button":!1,onAccept:C,onCancel:M,fitContent:a.fitContent==null?!0:a.fitContent,onClosed:S,onResize:z},{default:()=>[T&&T(n)]})}});return document.body.appendChild(t),n.mount(t),n}class ne{constructor(t){$(this,"appContext",null);$(this,"modalRef",e.ref());$(this,"activeModalIndex",e.ref(0));$(this,"modalRefs",{});$(this,"isUseEscCloseModal",e.ref(!1));$(this,"activeModalInstance",e.computed(()=>this.modalRefs[this.activeModalIndex.value]));this.app=t,this.appContext=t?t._context:null}getCurrentModal(){return this.activeModalInstance.value}adaptToWindow(t,n){const{width:l,height:s}={width:window.innerWidth,height:window.innerHeight};return l<t&&(t=l),s<n&&(n=s),{width:t,height:n}}static show(t){const n=Object.assign({title:"",showButtons:!0,showHeader:!0},t);return Te(n)}close(t){var n,l;t?(l=t.value)==null||l.close():(n=this.getCurrentModal())==null||n.close()}open(t){const n=document.createDocumentFragment();t.showMaxButton&&t.fitContent&&(t.showMaxButton=!1);const l=e.shallowRef(Object.assign({title:"",showButtons:!0,showHeader:!0},t)),s=e.ref(!0),u=l.value.acceptCallback||(()=>{}),d=l.value.rejectCallback||(()=>{}),r=l.value.closedCallback||((b,B)=>{}),c=l.value.resizeHandle||(b=>{});let f;const y=ae(l.value),v=b=>{var j;s.value=!1;const B=(j=b==null?void 0:b.target)==null?void 0:j.classList.contains("modal_close");r(b,this.isUseEscCloseModal.value?"esc":B?"icon":"button")},C=b=>{v(b),f&&e.nextTick(()=>{if(this.modalRefs[this.activeModalIndex.value]&&delete this.modalRefs[this.activeModalIndex.value],e.render(null,n),f=null,this.modalRef.value=null,this.modalRefs){const B=Object.keys(this.modalRefs).map(j=>Number(j));B.length>0?this.activeModalIndex.value=Math.max(...B):this.activeModalIndex.value=0}this.isUseEscCloseModal.value=!1})},M=b=>{var B;this.isUseEscCloseModal.value=!0,this.activeModalInstance&&((B=this.activeModalInstance.value)==null||B.close(b==null?void 0:b.event))},{width:N,height:z}=l.value,T=this.adaptToWindow(N||500,z||320);Object.assign(l.value,T);const S=()=>e.createVNode(Y,e.mergeProps({ref:this.modalRef,modelValue:s.value,"onUpdate:modelValue":b=>s.value=b},l.value,{onAccept:u,onCancel:d,onClosed:C,onResize:c,onEsc:M}),{default:()=>[y&&y(this.app)]});return f=(b=>{const B=e.h(S,b);return B.appContext=this.appContext,e.render(B,n),B})({...l.value}),this.activeModalIndex.value++,this.modalRefs[this.activeModalIndex.value]=this.modalRef.value,{update:b=>{l.value={...l.value,...b},f&&e.render(e.cloneVNode(f,{...l}),n)},destroy:C,modalRef:this.activeModalInstance,close:this.close}}}const Be=Symbol("FModalService");Y.install=a=>{a.component(Y.name,Y);const t=new ne(a);a.provide(Be,t),a.provide("FModalService",t)};class L{static show(t){const n=e.reactive({...t}),l=!1,s=n.type==="error"||n.type==="prompt",u=n.type==="error"?"错误提示":n.type==="prompt"&&n.title||"",d=n.acceptCallback||(()=>{}),r=n.rejectCallback||(()=>{});let c=null,f=new ne(c);const y=()=>{c&&(c==null||c.destroy(),f=null)};return c=f==null?void 0:f.open({class:"modal-message modal-message-type-info",title:u,showButtons:l,showHeader:s,width:n.width||400,fitContent:!0,showMaxButton:!1,draggable:!0,render:()=>e.createVNode(X,e.mergeProps(n,{onAccept:d,onReject:r,onClose:y}),null)}),f==null?void 0:f.getCurrentModal()}static info(t,n){const l=e.reactive({type:"info",title:t,detail:n,okButtonText:"知道了",cancelButtonText:""});L.show(l)}static warning(t,n){const l=e.reactive({type:"warning",title:t,detail:n,okButtonText:"知道了",cancelButtonText:""});L.show(l)}static success(t,n){const l=e.reactive({type:"success",title:t,detail:n,okButtonText:"关闭",cancelButtonText:""});L.show(l)}static error(t,n,l){const s=e.reactive({width:500,type:"error",okButtonText:"关闭",cancelButtonText:"",exceptionInfo:{date:l,message:t,detail:n}});L.show(s)}static prompt(t,n){const l=e.reactive({type:"prompt",title:t,detail:n,okButtonText:"确定",cancelButtonText:"取消"});L.show(l)}static question(t,n,l,s){const u=e.reactive({type:"question",title:t,detail:n,okButtonText:"确定",cancelButtonText:"取消",acceptCallback:l,rejectCallback:s});L.show(u)}}X.install=a=>{a.component(X.name,X),a.provide("FMessageBoxService",L)},E.FMessageBox=X,E.FMessageBoxService=L,E.default=X,E.messageBoxProps=D,Object.defineProperties(E,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});