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