@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 34 kB
JavaScript
(function(H,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("../locale/index.umd.js"),require("../common/index.umd.js"),require("../property-panel/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","../locale/index.umd.js","../common/index.umd.js","../property-panel/index.umd.js"],e):(H=typeof globalThis<"u"?globalThis:H||self,e(H["message-box"]={},H.Vue,H.locale,H.common))})(this,function(H,e,D,ee){"use strict";var et=Object.defineProperty;var tt=(H,e,D)=>e in H?et(H,e,{enumerable:!0,configurable:!0,writable:!0,value:D}):H[e]=D;var U=(H,e,D)=>tt(H,typeof e!="symbol"?e+"":e,D);const re={width:{Type:Number,default:400},type:{Type:String,default:"info"},title:{Type:String,default:""},detail:{Type:String,default:""},okButtonText:{Type:String,default:"确定"},showOkButton:{Type:Boolean,default:!0},showCancelButton:{Type:Boolean,default:!0},cancelButtonText:{Type:String,default:"取消"},exceptionInfo:{Type:Object,default:null},promptEditorType:{Type:String,default:"text-area"},buttons:{type:Object,default:[]}};function te(){return new DOMException("The request is not allowed","NotAllowedError")}async function he(t){if(!navigator.clipboard)throw te();return navigator.clipboard.writeText(t)}async function ge(t){const a=document.createElement("span");a.textContent=t,a.style.whiteSpace="pre",a.style.webkitUserSelect="auto",a.style.userSelect="all",document.body.appendChild(a);const l=window.getSelection(),n=window.document.createRange();l==null||l.removeAllRanges(),n.selectNode(a),l==null||l.addRange(n);let r=!1;try{r=window.document.execCommand("copy")}finally{l==null||l.removeAllRanges(),window.document.body.removeChild(a)}if(!r)throw te()}async function ve(t){try{await he(t)}catch(a){try{await ge(t)}catch(l){throw l||a||te()}}}function pe(){async function t(a){await ve(a)}return{onCopy:t}}function ye(t,a,l,n){const r=e.ref(14),d=e.ref(140),c=e.ref(""),i=e.ref(n.value.length),s=e.computed(()=>n.value),g=e.computed(()=>({"font-size":`${r.value}px`,height:"100%"}));function x(v){if(v.currentTarget){const B=v.currentTarget.value||"";i.value=B.length}}return()=>e.createVNode(e.Fragment,null,[e.createVNode("textarea",{title:"promptMessage",name:"promptMessage",class:"form-control",style:g.value,rows:"4",maxlength:d.value,onInput:v=>x(v)},[s.value]),e.createVNode("span",{class:"textarea-wordcount",title:c.value,style:"position: absolute; bottom: 76px; right: 32px; cursor: pointer; text-align: right;"},[i.value+" / "+d.value])])}function xe(t,a,l,n){const r=ye(t,a,l,n),d=new Map([["text-area",r]]);function c(i){return d.get(i)||null}return{getEditorRender:c}}function we(){const t=e.ref(!1),a=e.ref("复制成功");return{feedbackStyle:e.computed(()=>{const n={position:"absolute",left:"50%",top:"50%","min-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",padding:"0 10px"};return n.opacity=t.value?"0.8":"0",n.display=t.value?"":"none",n}),feedbackMessage:a,toShowFeedback:t}}function be(t,a){const l=a.getEditorRender(t.promptEditorType);return()=>l&&l()}function Ce(t,a){function l(y){if(y==null)return 0;let M=0;for(let N=0;N<y.length;N++){const T=y.charCodeAt(N);T>=0&&T<=128?M++:M=M+2}return M}function n(y,M){if(y!==""&&y!==void 0&&y!==null){y=""+y;const N=y.length;let T="",k=0;for(let C=0;C<N;C++){const S=y.charAt(C);if(k++,encodeURI(S).length>4&&k++,T=T.concat(S),k>=M)return T=T.concat("..."),T}if(k<M)return y}return""}const r=e.computed(()=>!!t.value&&!!t.value.date),d=e.computed(()=>{const y=t.value&&t.value.date||"";return`${a.exception.happend} : ${y}`}),c=e.computed(()=>!!t.value&&!!t.value.detail),i=e.computed(()=>t.value?l(t.value.detail)>160:!1),s=e.ref(!1),g=e.computed(()=>s.value?a.exception.collapse:a.exception.expand),x=e.computed(()=>{const y=a.exception.detail+" : "+(t.value&&t.value.detail)||"";return s.value?y:n(y,160)}),v=e.computed(()=>({bottom:s.value?0:"2px"}));function B(){s.value=!s.value}return()=>e.createVNode("div",{class:"toast-msg-detail",style:"max-height: calc(100vh - 200px);overflow: auto;"},[r.value&&e.createVNode("div",null,[d.value]),c.value&&e.createVNode("div",{class:"exception_wrap"},[e.createVNode("div",{class:"exception_error_msg"},[e.createVNode("div",{innerHTML:x.value},null),i.value&&e.createVNode("span",{class:"exception_toggle_detail",style:v.value,onClick:B},[g.value])])])])}function Me(t){return()=>e.createVNode("p",{class:"toast-msg-detail",innerHTML:t.value,style:"max-height: calc(100vh - 200px);overflow: auto;"},null)}function Be(t,a,l,n,r){const d=e.ref(t.exceptionInfo),c=e.computed(()=>{const M=a.value==="question"?"warning":a.value,N={"f-icon":!0},T=`f-icon-${M}`;return N[T]=!0,N}),i=e.computed(()=>l.value||d.value&&d.value.message),s=e.computed(()=>n.value),g=e.computed(()=>!!n.value),x=e.computed(()=>!!d.value);function v(){return x.value?Ce(d,r):g.value?Me(s):()=>null}const B=v(),y=e.computed(()=>r.locale==="en"?{wordBreak:"keep-all",overflowWrap:"break-word"}:{});return()=>e.createVNode(e.Fragment,null,[e.createVNode("div",{class:"float-left modal-tips-iconwrap"},[e.createVNode("span",{class:c.value},null)]),e.createVNode("div",{class:"modal-tips-content"},[e.createVNode("p",{class:"toast-msg-title",innerHTML:i.value,style:y.value},null),B()])])}function ke(t,a,l,n){const{onCopy:r}=a,{toShowFeedback:d}=l,c=e.ref(n.exception.copySuccess||"复制成功"),i=e.ref(n.exception.copy||"复制详细信息"),s=e.ref(t.exceptionInfo||{date:"",message:"",detail:""}),g=e.computed(()=>s.value&&s.value.detail||"");function x(v){r(g.value).catch(B=>{c.value=n.exception.copyFailed||"复制失败"}).finally(()=>{d.value=!0,setTimeout(()=>{d.value=!1},700)})}return()=>e.createVNode("span",{class:"copy-exception-info"},[e.createVNode("span",{onClick:x,style:"cursor: pointer;"},[i.value])])}function Te(t,a,l,n,r){const d=e.ref(t.type),c=e.ref(t.buttons),i=e.ref(t.exceptionInfo),s=e.ref(r.ok||t.okButtonText),g=e.ref(r.cancel||t.cancelButtonText),x=e.ref(t.showCancelButton),v=e.ref(t.showOkButton),B=e.computed(()=>!!(c.value&&c.value.length)),y=e.computed(()=>!!(i.value&&i.value.detail)),M=e.computed(()=>!(c.value&&c.value.length)&&(v.value||x.value)),N=ke(t,l,n,r);s.value==="关闭"?s.value=r.close:s.value==="知道了"&&(s.value=r.exception.roger);function T(C){d.value==="question"&&a.emit("reject"),a.emit("close")}function k(C){d.value==="question"&&a.emit("accept"),a.emit("close")}return()=>e.createVNode("div",{class:"modal-footer"},[y.value&&N(),M.value&&x.value&&e.createVNode("button",{type:"button",class:"btn btn-secondary btn-lg",onClick:T},[g.value]),M.value&&v.value&&e.createVNode("button",{type:"button",class:"btn btn-primary btn-lg",onClick:k},[s.value]),B.value&&c.value.length&&c.value.map(C=>e.createVNode("button",{type:"button",onClick:C.handle,class:C.class},[C.iconClass&&e.createVNode("span",{class:C.iconClass},null),C.text]))])}function Ee(t){const{getLocaleValue:a}=D.LocaleService,l=D.LocaleService.getLocale();function n(r,d,c){return d===c?a(r):d}return{yes:n("messageBox.yes")||"是",no:n("messageBox.no")||"否",close:n("messageBox.close")||"关闭",ok:n("messageBox.ok",t.okButtonText,"确定")||"确定",cancel:n("messageBox.cancel",t.cancelButtonText,"取消")||"取消",title:n("messageBox.title")||"系统提示",errorTitle:n("messageBox.errorTitle")||"错误提示",exception:{expand:n("messageBox.exception.expand")||"展开",collapse:n("messageBox.exception.collapse")||"收起",happend:n("messageBox.exception.happend")||"发生时间",detail:n("messageBox.exception.detail")||"详细信息",copy:n("messageBox.exception.copy")||"复制详细信息",copySuccess:n("messageBox.exception.copySuccess")||"复制成功",copyFailed:n("messageBox.exception.copyFailed")||"复制失败",roger:n("messageBox.exception.roger")||"知道了"},locale:l}}const X=e.defineComponent({name:"FMessageBox",props:re,emits:["accept","reject","close"],setup(t,a){const l=Ee(t),n=e.ref(t.type),r=e.ref(t.title),d=e.ref(t.detail),c=e.computed(()=>{const k={"modal-tips":!0,"d-flex":!0,"flex-row":!0},C=`messager-type-${n.value}`;return k[C]=!0,k}),i=e.computed(()=>{const k={cursor:"default"};return n.value==="prompt"?k.padding="0.5rem 0.5rem 1rem 1.5rem":n.value==="error"&&(k.padding="0.5rem 1.5rem 1rem 1.5rem"),k}),s=pe(),g=xe(t,n,r,d),x=we(),{feedbackStyle:v,feedbackMessage:B}=x;B.value=l.exception.copySuccess;function y(){return e.createVNode("div",{style:v.value},[B.value])}function M(){switch(n.value){case"prompt":return be(t,g);default:return Be(t,n,r,d,l)}}const N=M(),T=Te(t,a,s,x,l);return()=>e.createVNode("div",{class:"farris-messager"},[!t.exceptionInfo&&e.createVNode("div",{style:"height: 30px;width: 100%;position: absolute;",class:"messager-draggable"},null),e.createVNode("section",{class:c.value,style:i.value},[N()]),T(),y()])}}),Ne={allowClickMaskToClose:{type:Boolean,default:!1},beforeClose:{type:Function,default:()=>!0},class:{type:String,default:""},maskClass:{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},mask:{type:Boolean,default:!0},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},openedCallback:{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},host:{type:Object,default:"body"},isMessager:{type:Boolean,default:!1},maximized:{type:Boolean,default:!1}};class z{constructor(a,l){this.x=a,this.y=l}static getTransformInfo(a){const n=window.getComputedStyle(a).getPropertyValue("transform").replace(/[^-\d,]/g,"").split(",");if(n.length>=6){const r=parseInt(n[4],10),d=parseInt(n[5],10);return{x:r,y:d}}return{x:0,y:0}}static fromEvent(a,l=null){if(this.isMouseEvent(a))return new z(a.clientX,a.clientY);if(l===null||a.changedTouches.length===1)return new z(a.changedTouches[0].clientX,a.changedTouches[0].clientY);for(let n=0;n<a.changedTouches.length;n++)if(a.changedTouches[n].target===l)return new z(a.changedTouches[n].clientX,a.changedTouches[n].clientY)}static isMouseEvent(a){return Object.prototype.toString.apply(a).indexOf("MouseEvent")===8}static isIPosition(a){return!!a&&"x"in a&&"y"in a}static getCurrent(a){const l=new z(0,0);if(window){const n=window.getComputedStyle(a);if(n){const r=parseInt(n.getPropertyValue("left"),10),d=parseInt(n.getPropertyValue("top"),10);l.x=isNaN(r)?0:r,l.y=isNaN(d)?0:d}return l}return null}static copy(a){return new z(0,0).set(a)}get value(){return{x:this.x,y:this.y}}add(a){return this.x+=a.x,this.y+=a.y,this}subtract(a){return this.x-=a.x,this.y-=a.y,this}multiply(a){this.x*=a,this.y*=a}divide(a){this.x/=a,this.y/=a}reset(){return this.x=0,this.y=0,this}set(a){return this.x=a.x,this.y=a.y,this}}class q{constructor(a,l){this.width=a,this.height=l}static getCurrent(a){const l=new q(0,0);if(window){const n=window.getComputedStyle(a);return n&&(l.width=parseInt(n.getPropertyValue("width"),10),l.height=parseInt(n.getPropertyValue("height"),10)),l}return null}static copy(a){return new q(0,0).set(a)}set(a){return this.width=a.width,this.height=a.height,this}}function Se(t,a){const l=e.ref(),n=e.ref(),r=e.ref(),d=e.ref(),c=e.ref(),i=e.ref(),s=e.ref(),g=e.ref(),x=e.ref(),v=e.ref(),B=e.ref(),y=e.ref(t.resizeable),M=e.ref(),N=e.ref(t.draggable),T=e.ref(!1);function k(){const u=n.value||document.body,f=window.getComputedStyle(u);if(!f||!l.value)return;const E=z.getTransformInfo(l.value),b={};s.value&&(b.deltaL=l.value.offsetLeft-s.value.x,b.deltaT=l.value.offsetTop-s.value.y);const L=f.getPropertyValue("position");b.width=u.clientWidth,b.height=u.clientHeight,b.pr=parseInt(f.getPropertyValue("padding-right"),10),b.pb=parseInt(f.getPropertyValue("padding-bottom"),10),b.position=f.getPropertyValue("position"),L==="static"&&(u.style.position="relative"),b.translateX=E.x,b.translateY=E.y,v.value=b}function C(u){if(l.value){d.value=q.getCurrent(l.value),c.value=z.getCurrent(l.value),i.value=d.value?q.copy(d.value):null,s.value=c.value?z.copy(c.value):null,k();const f=u.target.getAttribute("type")||"";g.value={n:!!f.match(/n/),s:!!f.match(/s/),w:!!f.match(/w/),e:!!f.match(/e/)}}}function S(){var u,f,E,b;if(l.value){const L=l.value;g.value&&((g.value.n||g.value.s)&&((u=i.value)!=null&&u.height)&&(L.style.height=i.value.height+"px"),(g.value.w||g.value.e)&&((f=i.value)!=null&&f.width)&&(L.style.width=i.value.width+"px"),s.value&&((E=s.value)!=null&&E.x&&(L.style.left=s.value.x+"px"),(b=s.value)!=null&&b.y&&(L.style.top=s.value.y+"px")))}}function W(){const u=t.minHeight?t.minHeight:1,f=t.minWidth?t.minWidth:1;i.value&&s.value&&g.value&&d.value&&(i.value.height<u&&(i.value.height=u,g.value.n&&c.value&&(s.value.y=c.value.y+(d.value.height-u))),i.value.width<f&&(i.value.width=f,g.value.w&&c.value&&(s.value.x=c.value.x+(d.value.width-f))),t.maxHeight&&i.value.height>t.maxHeight&&(i.value.height=t.maxHeight,c.value&&g.value.n&&(s.value.y=c.value.y+(d.value.height-t.maxHeight))),t.maxWidth&&i.value.width>t.maxWidth&&(i.value.width=t.maxWidth,g.value.w&&c.value&&(s.value.x=c.value.x+(d.value.width-t.maxWidth))))}function $(){if(n.value){const u=v.value;if(s.value&&i.value&&g.value&&d.value){const f=u.width-u.pr-u.deltaL-u.translateX-s.value.x,E=u.height-u.pb-u.deltaT-u.translateY-s.value.y;g.value.n&&s.value.y+u.translateY<0&&c.value&&(s.value.y=-u.translateY,i.value.height=d.value.height+c.value.y+u.translateY),g.value.w&&s.value.x+u.translateX<0&&c.value&&(s.value.x=-u.translateX,i.value.width=d.value.width+c.value.x+u.translateX),i.value.width>f&&(i.value.width=f),i.value.height>E&&(i.value.height=E)}}}function j(u){if(!r.value||!d.value||!c.value||!g.value)return;u.subtract(r.value);const f=u.x,E=u.y;g.value.n?(s.value.y=c.value.y+E,i.value.height=d.value.height-E):g.value.s&&(i.value.height=d.value.height+E),g.value.e?i.value.width=d.value.width+f:g.value.w&&(i.value.width=d.value.width-f,s.value.x=c.value.x+f),$(),W(),S()}function h(u){if(!x.value)return;const f=z.fromEvent(u);f&&j(f)}function m(){if(l.value){const{width:u,height:f,x:E,y:b}=l.value.getBoundingClientRect(),L=z.getTransformInfo(l.value);return{size:{width:u,height:f},position:{x:E-L.x,y:b-L.y}}}return null}function w(u){if(l.value){const f=m();B.value=f}r.value=void 0,d.value=null,c.value=null,i.value=null,s.value=null,g.value=null,x.value=null,document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",w)}function O(){document.addEventListener("mousemove",h),document.addEventListener("mouseup",w)}function V(u){u instanceof MouseEvent&&u.button===2||N.value&&(document.body.click(),u.stopPropagation(),u.preventDefault(),r.value=z.fromEvent(u),x.value=u.target,C(u),O())}function F(u){return l.value=u,y.value&&e.createVNode(e.Fragment,null,[e.createVNode("div",{class:"fv-resizable-handle fv-resizable-n",type:"n",onMousedown:f=>V(f)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-e",type:"e",onMousedown:f=>V(f)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-s",type:"s",onMousedown:f=>V(f)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-w",type:"w",onMousedown:f=>V(f)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-ne",type:"ne",onMousedown:f=>V(f)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-se fv-resizable-diagonal",type:"se",onMousedown:f=>V(f)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-sw",type:"sw",onMousedown:f=>V(f)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-nw",type:"nw",onMousedown:f=>V(f)},null)])}function _(u=!0){document.body.click();const f=n.value||document.body,E=q.getCurrent(f),b=l.value;u&&b&&(M.value=m(),M.value.transform=b.style.transform),E&&b&&(i.value=E,i.value.height-=14,i.value.width-=14,b.style.height=i.value.height+"px",b.style.width=i.value.width+"px",b.style.left="7px",b.style.top="7px",b.style.transform="",B.value={size:i.value,position:{x:0,y:0}},N.value=!1,T.value=!0)}function ae(){var u,f;if(document.body.click(),M.value){const E={width:M.value.size.width||0,height:M.value.size.height||0},b={x:(window.innerWidth-E.width)/2,y:(window.innerHeight-E.height)/2};(u=i.value)==null||u.set(E),(f=s.value)==null||f.set(b);const L=l.value;L.style.height=E.height+"px",L.style.width=E.width+"px",L.style.left=`${b.x}px`,L.style.top=`${b.y}px`,L.style.transform="",B.value={size:E,position:b},N.value=t.draggable,T.value=!1}}function G(){if(l.value){const u=q.getCurrent(l.value);if(u){const{width:f,height:E}=u;l.value.style.left=`${(window.innerWidth-f)/2}px`,l.value.style.top=`${(window.innerHeight-E)/2}px`,l.value.style.transform=""}}}function Y(){const u=()=>{T.value?_(!1):G(),document.body.click()};return window.addEventListener("resize",u),()=>{window.removeEventListener("resize",u)}}const ne=Y();return{renderResizeBar:F,boundingElement:n,resizedEventParam:B,maximize:_,restore:ae,allowDrag:N,isMaximized:T,unWindowResizeHandle:ne,moveToCenter:G}}function Ve(t,a,l){const n=e.ref(),r=e.ref(t.draggable),d=e.ref(t.lockAxis),c=e.ref(),i=e.ref(),s=e.ref(!1),g=e.ref(new z(0,0)),x=e.ref(new z(0,0)),v=e.ref(new z(0,0)),B=e.ref(new z(0,0));e.watch(()=>l.value,h=>{c.value.style.cursor=h?"move":"default"});function y(h,m){if(m.tagName==="BUTTON")return!1;if(m===h)return!0;for(const w in m.children)if(Object.prototype.hasOwnProperty.call(m.children,w)&&y(h,m.children[w]))return!0;return!1}function M(){var O,V;let h=v.value.x+x.value.x,m=v.value.y+x.value.y;d.value==="x"?(h=((O=g.value)==null?void 0:O.x)||0,v.value.x=0):d.value==="y"&&(m=((V=g.value)==null?void 0:V.y)||0,v.value.y=0);const w=`translate3d(${Math.round(h)}px, ${Math.round(m)}px, 0px)`;n.value&&(n.value.style.transform=w),B.value.x=h,B.value.y=m}function N(){if(!i.value||!n.value)return null;const h=i.value.getBoundingClientRect(),m=n.value.getBoundingClientRect(),w={top:h.top<m.top,right:h.right>m.right,bottom:h.bottom>m.bottom,left:h.left<m.left};return w.top||(v.value.y-=m.top-h.top),w.bottom||(v.value.y-=m.bottom-h.bottom),w.right||(v.value.x-=m.right-h.right),w.left||(v.value.x-=m.left-h.left),M(),w}function T(h){h&&(g.value&&h.subtract(g.value),v.value.set(h),M(),N())}function k(h){s.value&&r.value&&(h.stopPropagation(),h.preventDefault(),T(z.fromEvent(h,c.value)))}function C(){var h;s.value&&(s.value=!1,x.value.add(v.value),v.value.reset(),(h=n.value)==null||h.classList.remove("ng-dragging"),a.emit("stopMove"),document.removeEventListener("mousemove",k),document.removeEventListener("mouseup",C))}function S(){!s.value&&c.value&&(s.value=!0,c.value.classList.add("ng-dragging"),document.addEventListener("mousemove",k),document.addEventListener("mouseup",C))}function W(){if(n.value){const h=z.getTransformInfo(n.value);x.value.set(h);return}x.value.reset()}function $(h){if(!l.value||h instanceof MouseEvent&&h.button===2)return;const m=h.target||h.srcElement;c.value!==void 0&&m&&!y(m,c.value)||r.value!==!1&&(document.body.click(),h.stopPropagation(),h.preventDefault(),g.value=z.fromEvent(h,n.value),W(),S())}function j(h,m,w){if(r.value&&m){if(h)c.value=h;else if(t.dragHandle){if(t.dragHandle instanceof HTMLElement)c.value=t.dragHandle;else if(typeof t.dragHandle=="string"){const O=m.querySelector(t.dragHandle);O&&(c.value=O)}}n.value=m,i.value=w,c.value?(c.value.classList.add("ng-draggable"),c.value.addEventListener("mousedown",$)):r.value=!1}}return{registerDraggle:j,resetTranslate:W}}function ie(t,a){if(t){const l=n=>{n.key.toLowerCase()===t.toLowerCase()&&a({event:n,key:t})};return document.addEventListener("keydown",l),()=>{document.removeEventListener("keydown",l)}}}function ze(t,a){const l=e.ref(t.enableEsc);let n=null;return l.value?(n=ie("Escape",r=>{a.emit("esc",{event:r.event,type:"esc"})}),{remove:n}):null}function Re(t,a){const l=e.ref(t.enableEnter);let n=null;return l.value?(n=ie("Enter",r=>{a.emit("enter",{event:r.event,type:"enter"})}),{remove:n}):null}const K=e.defineComponent({name:"FModal",props:Ne,emits:["update:modelValue","accept","cancel","closed","resize","esc","enter","stopMove"],setup(t,a){const l=e.ref(t.width||300),n=e.ref(t.height||200),r=e.ref(t.modelValue),d=e.ref(""),c=e.ref(t.class),i=e.ref(t.fitContent),s=e.ref(t.showHeader),g=e.ref(""),x=e.ref(t.showCloseButton),v=e.ref(t.showMaxButton),B=e.ref(!1),y=e.ref(t.dialogType),M=e.ref(t.src),N=e.ref(""),T=e.ref(t.showButtons),k=e.ref(t.title),C=e.ref(t.containment||null),S=e.ref();k.value==="错误提示"&&(k.value=D.LocaleService.getLocaleValue("messageBox.errorTitle"));const W=e.ref(!1);function $(o,p){const R=p?"accept":"cancel";Promise.resolve().then(()=>{var I;return(I=t.beforeClose)==null?void 0:I.call(t,{closeType:R})}).then(I=>{I&&(r.value=!1,a.emit("update:modelValue",!1),p!=null&&a.emit(p?"accept":"cancel"),a.emit("closed",o))})}const j=[{name:"cancel",text:D.LocaleService.getLocaleValue("messageBox.cancel")||"取消",class:"btn btn-secondary",handle:o=>{$(o,!1)}},{name:"accept",text:D.LocaleService.getLocaleValue("messageBox.ok")||"确定",class:"btn btn-primary",handle:o=>{$(o,!0)}}],h=e.ref(t.buttons&&t.buttons.length?t.buttons:j),m=e.computed(()=>!!g.value),w=e.computed(()=>!!T.value&&!!h.value),O=e.ref(),V=e.ref(),F=e.ref(t.maximized||!1),{renderResizeBar:_,maximize:ae,restore:G,boundingElement:Y,resizedEventParam:ne,allowDrag:u,unWindowResizeHandle:f,moveToCenter:E}=Se(t),{registerDraggle:b}=Ve(t,a,u);function L(){return!!document.querySelectorAll(".farris-modal").length&&document.body.classList.contains("modal-open")}function Le(){const o=document.querySelectorAll(".farris-modal").length;(!o||o-1<=0)&&document.body.classList.remove("modal-open"),S.value&&S.value.classList.remove("show")}e.watch(()=>t.title,(o,p)=>{o!==p&&(k.value=o)}),e.watch(()=>t.modelValue,(o,p)=>{o!==p&&(r.value=o,r.value&&t.draggable&&e.nextTick(()=>{V.value&&!C.value&&(C.value=V.value.parentElement,Y.value=C.value,b(O.value,V.value,Y.value),E())}),o||(C.value&&(C.value=null),Le())),r.value?W.value=L():(F.value=!1,u.value=t.draggable)}),e.watch(()=>t.showHeader,(o,p)=>{o!==p&&(s.value=o)}),e.watch(()=>t.showButtons,(o,p)=>{o!==p&&(T.value=o)}),e.watch(()=>ne.value,(o,p)=>{const R=o||{},I=p||{};JSON.stringify(R)!==JSON.stringify(I)&&a.emit("resize",{newSize:o,oldSize:p,isMaximized:F.value})}),e.watch([()=>t.width,()=>t.height],(o,p)=>{(o[0]!==p[0]||o[1]!==p[1])&&(l.value=o[0]||500,n.value=o[1]||600)}),e.watch(()=>t.class,(o,p)=>{c.value=o});const Q=e.computed(()=>(r.value&&document.body.classList.add("modal-open"),r.value)),Oe=e.computed(()=>{var R;const o={modal:!0,"farris-modal":!0,fade:!0};o["f-modal-fitContent"]=!!i.value,o.show=!!Q.value;const p=(R=t.maskClass)==null?void 0:R.split(" ");return p==null||p.reduce((I,A)=>(I[A]=!0,I),o),o}),Ie=e.computed(()=>{var R;const o={"modal-dialog":!0},p=(R=c.value)==null?void 0:R.split(" ");return p==null||p.reduce((I,A)=>(I[A]=!0,I),o),o}),de=()=>ee.isMobilePhone()&&!t.isMessager,je=e.computed(()=>{const o=document.documentElement.clientWidth,p=document.documentElement.clientHeight;if(F.value)return{position:"fixed",top:"0px",left:"0px",width:"100vw",height:"100vh",margin:"0"};const R=Math.min(l.value,o),I=i.value?"auto":`${Math.min(n.value,p-10)}px`,A={position:"absolute",top:`${(window.innerHeight-parseInt(I==="auto"?"0":I))/2}px`,left:`${(window.innerWidth-R)/2}px`,width:`${R}px`,height:I};return de()&&(A.top="0px",A.left="0px",A.width=`${window.innerWidth}px`,A.height=`${window.innerHeight}px`),t.mask||(A.pointerEvents="auto"),A}),fe=e.ref(ee.getMaxZIndex()||1050),Fe=e.computed(()=>{const o={display:"block",overflow:"hidden"};return t.mask||(o.pointerEvents="none",o.backgroundColor="transparent"),W.value&&(o.backgroundColor="transparent"),o.zIndex=fe.value,o}),De=e.computed(()=>({"modal-content":!0,"modal-content-has-header":s.value,"is-mobile":de()})),Pe=e.computed(()=>{const o={display:s.value?"":"none"};return o["pointer-events"]=u.value?"auto":"none",o}),We=e.computed(()=>({"f-icon":!0,modal_maximize:!0,modalrevert:F.value})),$e=e.computed(()=>({"modal-body":!0,"f-utils-flex-column":y.value==="iframe","f-utils-fill":!0}));function Ae(){return{height:`${t.footerHeight||60}px`}}const qe=e.computed(()=>{const o={textAlgin:N.value},p=Ae();return Object.assign(o,p)});function le(o){if(o==null||o.stopPropagation(),F.value){F.value=!1,G();return}ae(),F.value=!0}async function Ue(o,p){o.handle&&await o.handle(p,o)&&a.emit("closed",p)}function Xe(o){o.width&&(l.value=o.width),o.height&&(n.value=o.height),o.buttons&&(h.value=o.buttons),o.title&&(k.value=o.title)}let oe=null,se=null;e.onBeforeMount(()=>{W.value=L()}),e.onMounted(()=>{V.value&&!C.value&&(C.value=V.value.parentElement,Y.value=C.value,b(O.value,V.value,Y.value)),Q.value&&document.body.classList.add("modal-open"),oe=ze(t,a),se=Re(t,a)}),e.onUnmounted(()=>{f&&f(),oe&&oe.remove(),se&&se.remove()}),a.expose({modalElementRef:V,updateModalOptions:Xe,close:$,maxDialog:le,isMaximized:F,disableButtons:(o,p=!0)=>{h.value.forEach(R=>{R.name&&o.includes(R.name)&&(R.disabled=p)})}});function Ye(){return e.createVNode("ul",null,[B.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:le,class:"f-btn-icon f-bare",style:"pointer-events: auto;"},[e.createVNode("span",{class:We.value},null)]),x.value&&e.createVNode("li",{class:"f-btn-icon f-bare",onClick:o=>$(o,!1),style:"pointer-events: auto;"},[e.createVNode("span",{class:"f-icon modal_close"},null)])])}function Ke(){return e.createVNode("div",{class:"modal-footer",style:qe.value},[h.value&&h.value.map(o=>{const p=e.ref(o.disabled);return e.createVNode("button",{name:o.name,style:o.styles,type:"button",disabled:p.value,class:o.class+(o.iconClass?" btn-icontext":""),onClick:R=>{Ue(o,R)}},[!!o.iconClass&&e.createVNode("i",{class:o.iconClass},null),o.text])})])}function me(o){v.value&&le()}function Je(){return e.createVNode(e.Fragment,null,[F.value&&e.createVNode("div",{class:"modal-header",style:"position: absolute;background: transparent;height: 45px;width: 100%;",onDblclick:o=>me()},null),e.createVNode("div",{ref:O,class:"modal-header",style:Pe.value,onDblclick:o=>me()},[a.slots.headerTemplate?a.slots.headerTemplate():e.createVNode("div",{class:"modal-title"},[m.value&&e.createVNode("span",{class:g.value,style:"margin-right: 8px"},null),e.createVNode("span",{class:"modal-title-label"},[k.value])]),e.createVNode("div",{class:"actions"},[Ye()])])])}function Ze(){return a.slots.footerTemplate?a.slots.footerTemplate():w.value&&Ke()}function _e(o){if(o.stopPropagation(),t.allowClickMaskToClose){if(o.target!==S.value)return;$(o,!1)}}function Ge(){var o,p;return e.createVNode("div",{id:d.value,class:Ie.value,style:je.value,ref:V},[e.createVNode("div",{class:De.value},[s.value&&Je(),e.createVNode("div",{class:$e.value},[(p=(o=a.slots).default)==null?void 0:p.call(o),y.value==="iframe"&&e.createVNode("iframe",{title:d.value,class:"f-utils-fill",width:"100%",frameborder:"0",src:M.value},null)]),Ze()]),!i.value&&V.value&&!F.value&&_(V.value)])}function Qe(o){return o||"body"}return e.watchEffect(()=>{Q.value&&(fe.value=ee.getMaxZIndex()||1050)}),()=>e.createVNode(e.Teleport,{to:Qe(t.host)},{default:()=>[Q.value&&e.createVNode(e.Transition,{name:"fade",appear:!0},{default:()=>[e.createVNode("div",{ref:S,class:Oe.value,style:Fe.value,onClick:_e},[Ge()])]})]})}});function ce(t){if(t.content&&t.content.render)return t.content.render;if(t.render&&typeof t.render=="function")return t.render}function He(t){const a=document.createElement("div");a.style.display="contents";const l=e.createApp({setup(n,r){e.onUnmounted(()=>{document.body.removeChild(a)});const d=e.ref(),c=e.ref(t.class||""),i=e.ref(!!t.showButtons),s=e.ref(!!t.showHeader),g=e.ref(t.showCloseButton==null?!0:t.showCloseButton),x=e.ref(!0),v=e.ref(t.title||""),B=t.acceptCallback||(()=>{}),y=t.rejectCallback||(()=>{}),M=t.closedCallback||(S=>{}),N=t.resizeHandle||(S=>{}),T=t.stopMoveHandle||(S=>{}),k=ce(t),C=S=>{x.value=!1,l.unmount(),M(S)};return e.onMounted(()=>{}),r.expose({modalRef:d}),()=>e.createVNode(K,{ref:d,class:c.value,modelValue:x.value,"onUpdate:modelValue":S=>x.value=S,title:v.value,width:t.width,height:t.height,buttons:t.buttons,"show-header":s.value,"show-buttons":i.value,"show-close-button":g.value,"show-max-button":!1,onAccept:B,onCancel:y,fitContent:t.fitContent==null?!0:t.fitContent,onClosed:C,onResize:N,onStopMove:T},{default:()=>[k&&k(l)]})}});return document.body.appendChild(a),l.use(D.LocaleService.i18n),l.mount(a),l}class ue{constructor(a){U(this,"appContext",null);U(this,"modalRef",e.ref());U(this,"activeModalIndex",e.ref(0));U(this,"modalRefs",{});U(this,"isUseEscCloseModal",e.ref(!1));this.app=a,this.appContext=a?a._context:null}getCurrentModal(){return this.modalRefs[this.activeModalIndex.value]}adaptToWindow(a,l){const{width:n,height:r}={width:window.innerWidth,height:window.innerHeight};return n<a&&(a=n-14),r<l&&(l=r-14),{width:a,height:l}}static show(a){const l=Object.assign({title:"",showButtons:!0,showHeader:!0},a);return He(l)}close(a){var l,n;a?(n=a.value)==null||n.close():(l=this.getCurrentModal())==null||l.close()}open(a){const l=document.createDocumentFragment();a.showMaxButton&&a.fitContent&&(a.showMaxButton=!1);const n=e.shallowRef(Object.assign({title:"",showButtons:!0,showHeader:!0,maximized:!1},a)),r=e.ref(!0),d=n.value.acceptCallback||(()=>{}),c=n.value.rejectCallback||(()=>{}),i=n.value.closedCallback||((m,w)=>{}),s=n.value.openedCallback||(m=>{}),g=n.value.resizeHandle||(m=>{}),x=a.stopMoveHandle||(m=>{});let v;const B=ce(n.value),y=m=>{var O;r.value=!1;const w=(O=m==null?void 0:m.target)==null?void 0:O.classList.contains("modal_close");i(m,this.isUseEscCloseModal.value?"esc":w?"icon":"button")},M=m=>{y(m),v&&e.nextTick(()=>{if(this.modalRefs[this.activeModalIndex.value]&&delete this.modalRefs[this.activeModalIndex.value],e.render(null,l),v=null,this.modalRef.value=null,this.modalRefs){const w=Object.keys(this.modalRefs).map(O=>Number(O));w.length>0?this.activeModalIndex.value=Math.max(...w):this.activeModalIndex.value=0}this.isUseEscCloseModal.value=!1})},N=m=>{var w;this.isUseEscCloseModal.value=!0,(w=this.getCurrentModal())==null||w.close(m==null?void 0:m.event)},{width:T,height:k}=n.value,C=this.adaptToWindow(T||500,k||320);Object.assign(n.value,C);const S=e.ref(),W=()=>e.createVNode(K,e.mergeProps({ref:S,modelValue:r.value,"onUpdate:modelValue":m=>r.value=m},n.value,{isMessager:n.value.class&&n.value.class.indexOf("modal-message")>-1,onAccept:d,onCancel:c,onClosed:M,onResize:g,onEsc:N,onStopMove:x,maximized:n.value.maximized}),{default:()=>[B&&B(this.app)]});v=(m=>{const w=e.h(W,m);return w.appContext=this.appContext,e.render(w,l),w})({...n.value}),this.activeModalIndex.value++;const j=this.activeModalIndex.value;this.modalRefs[j]=S.value;const h=m=>{n.value={...n.value,...m},v&&e.render(e.cloneVNode(v,{...n}),l)};return e.nextTick(()=>{this.modalRefs[j]=S.value,this.modalRef.value=S.value,s(new Event("opened"))}),{update:h,destroy:M,modalRef:this.modalRef,close:()=>{this.modalRefs[j]&&this.modalRefs[j].close()},disableButtons:(m,w=!0)=>{this.modalRefs[j]&&this.modalRefs[j].disableButtons(m,w)}}}}const Z=Symbol("FModalService");K.install=t=>{t.component(K.name,K);const a=new ue(t);t.provide(Z,a),t.provide("FModalService",a)};const P=class P{static show(a){const l=e.reactive({...a}),n=!1,r=l.type==="error"||l.type==="prompt",d=l.type==="error"?"错误提示":l.type==="prompt"&&l.title||"",c=l.acceptCallback||(()=>{}),i=l.rejectCallback||(()=>{}),s=e.getCurrentInstance();let g=null;if(s&&s.appContext){const{provides:y}=s.appContext;Z in y&&(g=y[Z])}g||(g=P.app._context.provides[Z]);let x=null,v=g||new ue(P.app);const B=()=>{x&&(x==null||x.destroy(),v=null)};return x=v==null?void 0:v.open({class:"modal-message modal-message-type-info",title:d,showButtons:n,showHeader:r,width:l.width||400,fitContent:!0,showMaxButton:!1,draggable:!0,dragHandle:".messager-draggable",render:()=>e.createVNode(X,e.mergeProps(l,{onAccept:c,onReject:i,onClose:B}),null)}),v==null?void 0:v.getCurrentModal()}static info(a,l){const n=e.reactive({type:"info",title:a,detail:l,okButtonText:"知道了",showCancelButton:!1});P.show(n)}static warning(a,l){const n=e.reactive({type:"warning",title:a,detail:l,okButtonText:"知道了",showCancelButton:!1});P.show(n)}static success(a,l){const n=e.reactive({type:"success",title:a,detail:l,okButtonText:"关闭",showCancelButton:!1});P.show(n)}static error(a,l,n){const r=e.reactive({width:500,type:"error",okButtonText:"关闭",showCancelButton:!1,exceptionInfo:{date:n,message:a,detail:l}});P.show(r)}static prompt(a,l){const n=e.reactive({type:"prompt",title:a,detail:l,okButtonText:"确定",cancelButtonText:"取消"});P.show(n)}static question(a,l,n,r){const d=e.reactive({type:"question",title:a,detail:l,okButtonText:"确定",cancelButtonText:"取消",acceptCallback:n,rejectCallback:r});P.show(d)}};U(P,"app",null);let J=P;X.install=t=>{t.component(X.name,X),J.app=t,t.provide("FMessageBoxService",J)},H.FMessageBox=X,H.FMessageBoxService=J,H.default=X,H.messageBoxProps=re,Object.defineProperties(H,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});