From 23b0f584dd9535110687e10029f6eb5ccc77cc41 Mon Sep 17 00:00:00 2001 From: Hunter Date: Sun, 26 Dec 2021 11:10:40 +0800 Subject: [PATCH] fix: add lockScroll prop --- packages/lib/dist/VueFinalModal.esm.js | 2 +- packages/lib/dist/VueFinalModal.esm.js.map | 2 +- packages/lib/dist/VueFinalModal.umd.js | 2 +- packages/lib/dist/VueFinalModal.umd.js.map | 2 +- packages/lib/src/hoc/VBottomSheet.vue | 5 +++-- packages/lib/src/hoc/VFullScreen.vue | 5 +++-- 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/lib/dist/VueFinalModal.esm.js b/packages/lib/dist/VueFinalModal.esm.js index 39f3dbb9..21ab8b63 100644 --- a/packages/lib/dist/VueFinalModal.esm.js +++ b/packages/lib/dist/VueFinalModal.esm.js @@ -1,2 +1,2 @@ -import{ref as e,watch as t,nextTick as n,onBeforeUnmount as o,reactive as a,computed as i,onMounted as l,withDirectives as s,openBlock as r,createElementBlock as d,mergeProps as u,withKeys as c,createVNode as f,Transition as v,toHandlers as m,withCtx as p,normalizeClass as h,normalizeStyle as y,createCommentVNode as b,createElementVNode as g,withModifiers as w,renderSlot as x,Fragment as S,renderList as T,vShow as C,createBlock as E,resolveDynamicComponent as k,createSlots as M,markRaw as z,shallowReactive as O,useAttrs as D,unref as L}from"vue";import{useEventListener as _}from"@vueuse/core";const I="enter",V="entering",R="leave",A="leavng",B=()=>{const t=e(null),n={beforeEnter(){t.value=V},afterEnter(){t.value=I},beforeLeave(){t.value=A},afterLeave(){t.value=R}};return{state:t,listeners:n}},N=e=>e==document.activeElement;class P{constructor(){this.root=null,this.elements=[],this.onKeyDown=this.onKeyDown.bind(this)}get lastElement(){return this.elements[this.elements.length-1]||null}get firstElement(){return this.elements[0]||null}get isEnabled(){return!!this.root}onKeyDown(e){if((e=>"Tab"===e.key||9===e.keyCode)(e)){if(!e.shiftKey)return!document.activeElement||N(this.lastElement)?(this.firstElement.focus(),void e.preventDefault()):void 0;N(this.firstElement)&&(this.lastElement.focus(),e.preventDefault())}}enable(e){e&&(this.root=e,this.elements=((e,t)=>[...e.querySelectorAll(t)||[]])(this.root,'button:not([disabled]), select:not([disabled]), a[href]:not([disabled]), area[href]:not([disabled]), [contentEditable=""]:not([disabled]), [contentEditable="true"]:not([disabled]), [contentEditable="TRUE"]:not([disabled]), textarea:not([disabled]), iframe:not([disabled]), input:not([disabled]), summary:not([disabled]), [tabindex]:not([tabindex="-1"])'),this.root.addEventListener("keydown",this.onKeyDown))}disable(){this.root.removeEventListener("keydown",this.onKeyDown),this.root=null}}let $=null;function j({props:e,vfmContainer:n,modalTransitionState:o}){return null==$&&($=new P),t(o,(t=>{switch(t){case I:(e.focusRetain||e.focusTrap)&&n.value.focus(),e.focusTrap&&$.enable(n.value);break;case A:$.enabled&&$.disable()}})),{focusTrap:$}}const H=()=>{},F=()=>{const e=document.activeElement;e&&e!==document.body&&e.blur()},W=e=>{const{clientX:t,clientY:n}=e.targetTouches?e.targetTouches[0]:e;return{x:t,y:n}},G={down:{pc:"mousedown",m:"touchstart"},move:{pc:"mousemove",m:"touchmove"},up:{pc:"mouseup",m:"touchend"}},K=(e,t,n)=>{t&&t.addEventListener(G[e].pc,n),t&&t.addEventListener(G[e].m,n,{passive:!1})},Y=(e,t,n)=>{t&&t.removeEventListener(G[e].pc,n),t&&t.removeEventListener(G[e].m,n)};const U={t:"ns-resize",tr:"nesw-resize",r:"ew-resize",br:"nwse-resize",b:"ns-resize",bl:"nesw-resize",l:"ew-resize",tl:"nwse-resize"},X=(e,t,n)=>("number"!=typeof e&&(e=Math.min(t,n)||t),"number"!=typeof n&&(n=Math.max(t,e)),Math.min(Math.max(t,e),n)),q=e=>e&&Number(e.replace(/px$/,""))||0;function Z({props:o,visible:a,vfmContainer:i,vfmContent:l,vfmResize:s,modalTransitionState:r,onEvent:d=(()=>{})}){const u=e(!1),c=e(null),f=e({});function v(e){e.stopPropagation();const t="resize",n="drag",a=e.target.getAttribute("direction");let s;if(a)s=t;else{if(!((e,t,n)=>""===n||[...t.querySelectorAll(n)].includes(e.target))(e,l.value,o.dragSelector))return;s=n}c.value=`${s}:start`,d?.(e);const r=W(e),u=i.value.getBoundingClientRect(),v=l.value.getBoundingClientRect(),m="absolute"===window.getComputedStyle(l.value).position,p=q(f.value.top),h=q(f.value.left),y=(()=>{if(o.fitParent){const e={absolute:()=>({minTop:0,minLeft:0,maxTop:u.height-v.height,maxLeft:u.width-v.width}),relative:()=>({minTop:p+u.top-v.top,minLeft:h+u.left-v.left,maxTop:p+u.bottom-v.bottom,maxLeft:h+u.right-v.right})};return m?e.absolute():e.relative()}return{}})(),b=s===t&&((e,t,n)=>{const o=e.style[t];return e.style[t]=n,()=>{e.style[t]=o}})(document.body,"cursor",U[a]),g=e=>{e.stopPropagation(),c.value=`${s}:move`,d?.(e);const i=W(e);let l,b,g={x:i.x-r.x,y:i.y-r.y};s===t&&(g=function(e,t,n,a,i){const l=e=>{let n=t[e.axis];n=o.fitParent?X(e.min,n,e.max):n;let a=X(e.minEdge,e.getEdge(n),e.maxEdge);return n=e.getOffsetAxis(a,i),{[e.edgeName]:a,[e.axis]:n}},s=(e,t,i,l)=>{const s=a[t],r=n[e]-a[e],d=(u=t).charAt(0).toUpperCase()+u.slice(1);var u;return{axis:i,edgeName:t,min:l?r:-s,max:l?s:r,minEdge:o[`min${d}`],maxEdge:o[`max${d}`],getEdge:e=>a[t]-e*(l?1:-1),getOffsetAxis:(e,n)=>{const o=a[t]-e;return n?l?o:0:(l?1:-1)*o/2}}},r={t:["top","height","y",!0],b:["bottom","height","y",!1],l:["left","width","x",!0],r:["right","width","x",!1]};let d={x:0,y:0};return e.split("").forEach((e=>{const t=s(...r[e]);d={...d,...l(t)}})),d}(a,g,u,v,m)),m?(l=v.top-u.top+g.y,b=v.left-u.left+g.x):(l=p+g.y,b=h+g.x),s===n&&o.fitParent&&(l=X(y.minTop,l,y.maxTop),b=X(y.minLeft,b,y.maxLeft));const w={position:"relative",top:l+"px",left:b+"px",margin:"unset",touchAction:"none",...m&&{position:"absolute",transform:"unset",width:v.width+"px",height:v.height+"px"},...g.width&&{width:g.width+"px"},...g.height&&{height:g.height+"px"}};f.value={...f.value,...w}},w=e=>{e.stopPropagation(),s===t&&b&&b(),setTimeout((()=>{c.value=`${s}:end`,d?.(e)})),Y("move",document,g),Y("up",document,w)};K("move",document,g),K("up",document,w)}function m(){K("down",l.value,v),f.value.touchAction="none"}function p(){Y("down",l.value,v)}function h(){u.value=!0,n((()=>{K("down",s.value,v)}))}function y(){Y("down",s.value,v),u.value=!1}return t(r,(e=>{switch(e){case I:o.drag&&m(),o.resize&&h();break;case R:o.keepChangedStyle||(f.value={})}})),t((()=>o.drag),(e=>{a.value&&(e?m():p())})),t((()=>o.resize),(e=>{a.value&&(e?h():y())})),t((()=>o.keepChangedStyle),(e=>{e||(f.value={})})),{resizeVisible:u,state:c,dragResizeStyle:f,removeDragDown:p,removeResizeDown:y}}let J=!1;if("undefined"!=typeof window){const e={get passive(){J=!0}};window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}const Q="undefined"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1);let ee,te,ne=[],oe=!1,ae=0,ie=-1;const le=(e,t)=>{let n=!1;return(e=>{const t=[];for(;e;){if(t.push(e),e.classList.contains("vfm"))return t;e=e.parentElement}return t})(e).forEach((e=>{(e=>{if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return["auto","scroll"].includes(t.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&((e,t)=>!(0===e.scrollTop&&t<0||e.scrollTop+e.clientHeight+t>=e.scrollHeight&&t>0))(e,t)&&(n=!0)})),n},se=e=>ne.some((()=>le(e,-ae))),re=e=>{const t=e||window.event;return!!se(t.target)||(t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1))},de=(e,t)=>{if(!e)return void console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");if(ne.some((t=>t.targetElement===e)))return;const n={targetElement:e,options:t||{}};ne=[...ne,n],Q?(e.ontouchstart=e=>{1===e.targetTouches.length&&(ie=e.targetTouches[0].clientY)},e.ontouchmove=t=>{1===t.targetTouches.length&&((e,t)=>{ae=e.targetTouches[0].clientY-ie,!se(e.target)&&(t&&0===t.scrollTop&&ae>0||(e=>!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight)(t)&&ae<0?re(e):e.stopPropagation())})(t,e)},oe||(document.addEventListener("touchmove",re,J?{passive:!1}:void 0),oe=!0)):(e=>{if(void 0===te){const t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){const e=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);te=document.body.style.paddingRight,document.body.style.paddingRight=`${e+n}px`}}void 0===ee&&(ee=document.body.style.overflow,document.body.style.overflow="hidden")})(t)},ue=e=>{e?(ne=ne.filter((t=>t.targetElement!==e)),Q?(e.ontouchstart=null,e.ontouchmove=null,oe&&0===ne.length&&(document.removeEventListener("touchmove",re,J?{passive:!1}:void 0),oe=!1)):ne.length||(void 0!==te&&(document.body.style.paddingRight=te,te=void 0),void 0!==ee&&(document.body.style.overflow=ee,ee=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")};function ce({props:e,vfmContainer:a,modalTransitionState:i}){function l(){e.modelValue&&n((()=>{e.lockScroll?a.value&&de(a.value,{reserveScrollBarGap:!0}):s()}))}function s(){e.lockScroll&&a.value&&ue(a.value)}return t((()=>e.lockScroll),l),t(i,(e=>{e===R&&s()})),o((()=>{s()})),{handleLockScroll:l}}var fe={inheritAttrs:!1,props:{name:{type:String,default:null},modelValue:{type:Boolean,default:!1},displayDirective:{type:String,default:"show",validator:e=>-1!==["if","show"].indexOf(e)},classes:{type:[String,Object,Array],default:""},overlayClass:{type:[String,Object,Array],default:""},contentClass:{type:[String,Object,Array],default:""},styles:{type:[Object,Array],default:()=>({})},overlayStyle:{type:[Object,Array],default:()=>({})},contentStyle:{type:[Object,Array],default:()=>({})},lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},nonModal:{type:Boolean,default:!1},attach:{type:null,default:!1,validator(e){const t=typeof e;return"boolean"===t||"string"===t||e.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:()=>["t","tr","r","br","b","bl","l","tl"],validator:e=>["t","tr","r","br","b","bl","l","tl"].filter((t=>-1!==e.indexOf(t))).length===e.length},minWidth:{type:[Number,String],default:0},minHeight:{type:[Number,String],default:0},maxWidth:{type:[Number,String],default:1/0},maxHeight:{type:[Number,String],default:1/0}},emits:["update:modelValue","click-outside","before-open","opened","_before-close","before-close","closed","_before-open","_opened","_closed","drag:start","drag:move","drag:end","resize:start","resize:move","resize:end"],setup(s,{emit:r}){const d=Symbol("vfm"),u=e(null),c=e(null),f=e(null),v=e(null),m=e(null),p=e(null),h=e(null),y=e(!1),b=a({modal:!1,overlay:!1}),{state:g,listeners:w}=B(),{state:x,listeners:S}=B(),T=e(!1),{focusTrap:C}=j({props:s,vfmContainer:c,modalTransitionState:x}),{resizeVisible:E,state:k,dragResizeStyle:M,removeDragDown:z,removeResizeDown:O}=Z({props:s,visible:y,vfmContainer:c,vfmContent:f,vfmResize:v,modalTransitionState:x,onEvent(e){r(k.value,e)}}),{handleLockScroll:D}=ce({props:s,vfmContainer:c,modalTransitionState:x}),L=e(null);let _=H,V=H;const A=i((()=>"string"==typeof s.overlayTransition?{name:s.overlayTransition}:{...s.overlayTransition})),N=i((()=>"string"==typeof s.transition?{name:s.transition}:{...s.transition})),P=i((()=>(s.hideOverlay||g.value===R)&&x.value===R)),$=i((()=>!1===s.zIndex?!!s.zIndexAuto&&+s.zIndexBase+2*(h.value||0):s.zIndex)),F=i((()=>({...!1!==$.value&&{zIndex:$.value}}))),W=i((()=>{let e=[M.value];return Array.isArray(s.contentStyle)?e.push(...s.contentStyle):e.push(s.contentStyle),e}));function G(){return{uid:d,props:s,emit:r,vfmContainer:c,vfmContent:f,vfmResize:v,vfmOverlayTransition:m,vfmTransition:p,getAttachElement:U,modalStackIndex:h,visibility:b,handleLockScroll:D,toggle:J}}function K(){if(s.modelValue){if(r("_before-open",X({type:"_before-open"})),q("before-open",!1))return void V("show");let e=U();if(e||!1===s.attach){!1!==s.attach&&e.appendChild(u.value);let t=s.api.openedModals.findIndex((e=>e.uid===d));-1!==t&&s.api.openedModals.splice(t,1),s.api.openedModals.push(G()),h.value=s.api.openedModals.length-1,D(),s.api.openedModals.filter((e=>e.uid!==d)).forEach(((t,n)=>{t.getAttachElement()===e&&(t.modalStackIndex.value=n,t.visibility.overlay=!1)})),y.value=!0,n((()=>{b.overlay=!0,b.modal=!0}))}else!1!==e&&console.warn("Unable to locate target ".concat(s.attach))}}function Y(){let e=s.api.openedModals.findIndex((e=>e.uid===d));if(-1!==e&&s.api.openedModals.splice(e,1),s.api.openedModals.length>0){const e=s.api.openedModals[s.api.openedModals.length-1];e.props.focusTrap&&n((()=>{C.enable(e.vfmContainer.value),C.firstElement.focus()})),(e.props.focusRetain||e.props.focusTrap)&&e.vfmContainer.value.focus(),!e.props.hideOverlay&&(e.visibility.overlay=!0)}s.drag&&z(),s.resize&&O(),k.value=null,b.overlay=!1,b.modal=!1}function U(){let e;return e=!1!==s.attach&&("string"==typeof s.attach?!!window&&window.document.querySelector(s.attach):s.attach),e}function X(e={}){return{ref:G(),...e}}function q(e,t){let o=!1;const a=X({type:e,stop(){o=!0}});return r(e,a),!!o&&(T.value=!0,n((()=>{r("update:modelValue",t)})),!0)}function J(e){return new Promise(((t,n)=>{_=e=>{t(e),_=H},V=e=>{n(e),V=H};const o="boolean"==typeof e?e:!s.modelValue;r("update:modelValue",o)}))}return t((()=>s.modelValue),(e=>{if(T.value)T.value=!1;else if(K(),!e){if(r("_before-close",X({type:"_before-close"})),q("before-close",!0))return void V("hide");Y()}})),t((()=>s.hideOverlay),(e=>{s.modelValue&&!e&&(b.overlay=!0)})),t((()=>s.attach),K),t(P,(e=>{e&&(y.value=!1,c.value.style.display="none")}),{flush:"post"}),t(x,(e=>{switch(e){case I:r("_opened"),r("opened",X({type:"opened"})),_("show");break;case R:h.value=null,r("_closed"),r("closed",X({type:"closed"})),_("hide")}})),s.api.modals.push(G()),l((()=>{K()})),o((()=>{Y(),u?.value?.remove();let e=s.api.modals.findIndex((e=>e.uid===d));s.api.modals.splice(e,1)})),{root:u,vfmContainer:c,vfmContent:f,vfmResize:v,vfmOverlayTransition:m,vfmTransition:p,computedOverlayTransition:A,computedTransition:N,overlayListeners:w,modalListeners:S,visible:y,visibility:b,resizeVisible:E,calculateZIndex:$,bindStyle:F,bindContentStyle:W,onMousedown:function(e){L.value=e?.target},onMouseupContainer:function(){L.value===c.value&&"resize:move"!==k.value&&(r("click-outside",X({type:"click-outside"})),s.clickToClose&&r("update:modelValue",!1))},onEsc:function(){y.value&&s.escToClose&&r("update:modelValue",!1)}}}};const ve=["aria-expanded"],me={key:0,ref:"vfmResize",class:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},pe=["direction"];function he(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&o.firstChild?o.insertBefore(a,o.firstChild):o.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}he("\n.vfm--fixed[data-v-72c09f54] {\n position: fixed;\n}\n.vfm--absolute[data-v-72c09f54] {\n position: absolute;\n}\n.vfm--inset[data-v-72c09f54] {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.vfm--overlay[data-v-72c09f54] {\n background-color: rgba(0, 0, 0, 0.5);\n}\n.vfm--prevent-none[data-v-72c09f54] {\n pointer-events: none;\n}\n.vfm--prevent-auto[data-v-72c09f54] {\n pointer-events: auto;\n}\n.vfm--outline-none[data-v-72c09f54]:focus {\n outline: none;\n}\n.vfm-enter-active[data-v-72c09f54],\n.vfm-leave-active[data-v-72c09f54] {\n transition: opacity 0.2s;\n}\n.vfm-enter-from[data-v-72c09f54],\n.vfm-leave-to[data-v-72c09f54] {\n opacity: 0;\n}\n.vfm--touch-none[data-v-72c09f54] {\n touch-action: none;\n}\n.vfm--select-none[data-v-72c09f54] {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vfm--resize-tr[data-v-72c09f54],\n.vfm--resize-br[data-v-72c09f54],\n.vfm--resize-bl[data-v-72c09f54],\n.vfm--resize-tl[data-v-72c09f54] {\n width: 12px;\n height: 12px;\n z-index: 10;\n}\n.vfm--resize-t[data-v-72c09f54] {\n top: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-tr[data-v-72c09f54] {\n top: -6px;\n right: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-r[data-v-72c09f54] {\n top: 0;\n right: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-br[data-v-72c09f54] {\n bottom: -6px;\n right: -6px;\n cursor: nwse-resize;\n}\n.vfm--resize-b[data-v-72c09f54] {\n bottom: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-bl[data-v-72c09f54] {\n bottom: -6px;\n left: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-l[data-v-72c09f54] {\n top: 0;\n left: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-tl[data-v-72c09f54] {\n top: -6px;\n left: -6px;\n cursor: nwse-resize;\n}\n"),fe.render=function(e,t,n,o,a,i){return"if"!==n.displayDirective||o.visible?s((r(),d("div",u({key:0},e.$attrs,{ref:"root",style:o.bindStyle,class:["vfm vfm--inset",[!1===n.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":n.nonModal}]],onKeydown:t[3]||(t[3]=c(((...e)=>o.onEsc&&o.onEsc(...e)),["esc"]))}),[f(v,u(o.computedOverlayTransition,m(o.overlayListeners)),{default:p((()=>[!n.hideOverlay&&o.visibility.overlay?(r(),d("div",{key:0,class:h(["vfm__overlay vfm--overlay vfm--absolute vfm--inset",n.overlayClass]),style:y(n.overlayStyle)},null,6)):b("v-if",!0)])),_:1},16),f(v,u(o.computedTransition,m(o.modalListeners)),{default:p((()=>[s(g("div",{ref:"vfmContainer",class:h(["vfm__container vfm--absolute vfm--inset vfm--outline-none",n.classes]),style:y(n.styles),"aria-expanded":o.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1",onMouseup:t[1]||(t[1]=w(((...e)=>o.onMouseupContainer&&o.onMouseupContainer(...e)),["self"])),onMousedown:t[2]||(t[2]=w(((...e)=>o.onMousedown&&o.onMousedown(...e)),["self"]))},[g("div",{ref:"vfmContent",class:h(["vfm__content",[n.contentClass,{"vfm--prevent-auto":n.nonModal}]]),style:y(o.bindContentStyle),onMousedown:t[0]||(t[0]=e=>o.onMousedown(null))},[x(e.$slots,"default",{close:()=>e.$emit("update:modelValue",!1)}),o.resizeVisible&&o.visibility.modal?(r(),d("div",me,[(r(!0),d(S,null,T(n.resizeDirections,(e=>(r(),d("div",{key:e,direction:e,class:h([`vfm--resize-${e}`,"vfm--absolute vfm--prevent-auto"])},null,10,pe)))),128))],512)):b("v-if",!0)],38)],46,ve),[[C,o.visibility.modal]])])),_:3},16)],16)),[[C,"show"!==n.displayDirective||o.visible]]):b("v-if",!0)},fe.__scopeId="data-v-72c09f54",fe.__file="src/VueFinalModal.vue";var ye={methods:{slice(e){this.api.dynamicModals.splice(e,1)},closed(e,t){this.slice(e),t.closed&&t.closed()},beforeClose(e){e.value&&e?.rejectClose("hide")},async beforeOpen(e,t,n){await this.$nextTick(),await this.$nextTick(),t.value||(this.slice(n),t?.reject("show"))},isString:e=>"string"==typeof e}};const be={class:"modals-container"},ge=["innerHTML"];ye.render=function(e,t,n,o,a,i){return r(),d("div",be,[(r(!0),d(S,null,T(e.api.dynamicModals,((e,t)=>(r(),E(k(e.component),u({key:e.id},e.bind,{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t},m(e.on),{on_beforeClose:t=>i.beforeClose(e),on_closed:n=>i.closed(t,e),on_beforeOpen:n=>i.beforeOpen(n,e,t),on_opened:e.opened}),M({_:2},[T(e.slots,((e,t)=>({name:t,fn:p((()=>[b(" eslint-disable vue/no-v-html "),i.isString(e)?(r(),d("div",{key:0,innerHTML:e},null,8,ge)):(r(),E(k(e.component),u({key:1},e.bind,m(e.on||{})),null,16))]))})))]),1040,["modelValue","onUpdate:modelValue","on_beforeClose","on_closed","on_beforeOpen","on_opened"])))),128))])},ye.__file="src/ModalsContainer.vue";class we{constructor(){const e=e=>{const t={...e,props:{...e.props}};return Object.assign(t.props,{api:{type:Object,default:()=>this}}),z(t)};this.modals=[],this.openedModals=[],this.VueFinalModal=e(fe),this.dynamicModals=O([]),this.ModalsContainer=e(ye)}show(e,...t){switch(typeof e){case"string":return this.toggle(e,!0,...t);case"object":{const{show:n}=this.useModal(e,t[0]);return n()}}}hide(...e){return this.toggle(e,!1)}hideAll(){return this.hide(...this.openedModals.map((e=>e.props.name)))}toggle(e,...t){const n=Array.isArray(e)?this.get(...e):this.get(e);return Promise.allSettled(n.map((e=>e.toggle(...t))))}get(...e){return this.modals.filter((t=>e.includes(t.props.name)))}existModal(e){return-1!==this.dynamicModals.indexOf(e)}useModal(e){let t=a({value:!1,component:this.VueFinalModal,id:Symbol("useModal"),bind:{},slots:{},on:{},...e});return{show:()=>this.existModal(t)?Promise.resolve("[Vue Final Modal] modal is already opened"):new Promise(((e,n)=>{t.value=!0,t.reject=n,t.opened=()=>{e("show")},this.dynamicModals.push(t)})),hide:()=>this.existModal(t)?new Promise(((e,n)=>{t.value=!1,t.rejectClose=n,t.closed=()=>{e("hide")}})):Promise.resolve("[Vue Final Modal] modal is already closed"),options:t}}}const xe=()=>{let e=new we;return{$vfm:e,VueFinalModal:e.VueFinalModal,ModalsContainer:e.ModalsContainer,useModal:e.useModal.bind(e)}},Se=xe(),{$vfm:Te,VueFinalModal:Ce,ModalsContainer:Ee,useModal:ke}=Se,Me="UP",ze="RIGHT",Oe="DOWN",De="LEFT",Le="NONE";function _e(t,{threshold:n=50,onSwipeStart:o,onSwipe:l,onSwipeEnd:s,passive:r=!0}){const d=a({x:0,y:0}),u=a({x:0,y:0}),c=i((()=>d.x-u.x)),f=i((()=>d.y-u.y)),{max:v,abs:m}=Math,p=i((()=>v(m(c.value),m(f.value))>=n)),h=e(!1),y=i((()=>p.value?m(c.value)>m(f.value)?c.value>0?De:ze:f.value>0?Me:Oe:Le)),b=(e,t)=>{u.x=e,u.y=t};let g;const w=function(e){if(!e)return!1;let t=!1;const n={get passive(){return t=!0,!1}};return e.addEventListener("x",H,n),e.removeEventListener("x",H),t}(window?.document);let x;function S(e){g.capture&&!g.passive&&e.preventDefault();const{x:n,y:a}=W(e);((e,t)=>{d.x=e,d.y=t})(n,a),b(n,a),o?.(e),x=[_(t,"mousemove",T,g),_(t,"touchmove",T,g),_(t,"mouseup",C,g),_(t,"touchend",C,g),_(t,"touchcancel",C,g)]}function T(e){const{x:t,y:n}=W(e);b(t,n),!h.value&&p.value&&(h.value=!0),h.value&&l?.(e)}function C(e){h.value&&s?.(e,y.value),h.value=!1,x.forEach((e=>e()))}g=r?w?{passive:!0}:{capture:!1}:w?{passive:!1,capture:!0}:{capture:!0};const E=[_(t,"mousedown",S,g),_(t,"touchstart",S,g)];return{isPassiveEventSupported:w,isSwiping:h,direction:y,coordsStart:d,coordsEnd:u,lengthX:c,lengthY:f,stop:()=>{E.forEach((e=>e())),x.forEach((e=>e()))}}}var Ie=Object.assign({inheritAttrs:!1},{props:{swipeToCloseDirection:{type:String,default:"",validator:e=>-1!==["","DOWN"].includes(e)},threshold:{type:Number,default:30}},setup:function(n,{emit:o}){const a=n,i=D(),l=e(null),s=e(0),d=e(!0);let c=H,f=!0,v=null,m=!1;const{lengthY:b,direction:S,isSwiping:T}=_e(l,{threshold:a.threshold,onSwipeStart(e){c=_(document,"selectionchange",(()=>{d.value=window.getSelection().isCollapsed})),v=(new Date).getTime(),m=C(e.target)},onSwipe(){var e,t,n;if(m&&S.value===a.swipeToCloseDirection){if(!d.value)return;s.value=(e=Math.abs(b.value),t=0,n=l.value.offsetHeight,-(e>n?n:e.1*l.value.offsetHeight;f&&m&&i&&(r||n-v<=300)?o("update:modelValue",!1):s.value=0}});function C(e){const t=0===e.scrollTop;return e===l.value?t:t&&C(e.parentElement)}return t((()=>i.modelValue),(e=>{e&&(s.value=0)})),t((()=>d.value),(e=>{e||(s.value=0)})),t((()=>s.value),((e,t)=>{"DOWN"===a.swipeToCloseDirection&&(f=e(r(),E(L(Ce),u(L(i),{transition:{"enter-active-class":"slideInDown","leave-active-class":"slideOutDown"},"lock-scroll":!1,onMousedown:t[0]||(t[0]=w((()=>{}),["stop"])),onTouchstartPassive:t[1]||(t[1]=w((()=>{}),["stop"])),onClosed:L(F)}),{default:p((()=>[x(e.$slots,"prepend"),g("div",{ref:(e,t)=>{t.bottomSheetEl=e,l.value=e},class:h(["vfm-bottom-sheet",{"vfm-transition":!L(T)}]),style:y({transform:`translateY(${-s.value}px)`})},[x(e.$slots,"default")],6),x(e.$slots,"append")])),_:3},16,["onClosed"]))}});he("\n.vfm-bottom-sheet[data-v-730a320a] {\n position: absolute;\n bottom: 0;\n width: 100%;\n max-height: 90%;\n overflow-y: auto;\n background-color: #fff;\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n}\n.vfm-transition[data-v-730a320a] {\n transition-property: transform;\n transition-duration: 150ms;\n}\n@-webkit-keyframes slideInDown-730a320a {\nfrom {\n transform: translate3d(0, 100%, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInDown-730a320a {\nfrom {\n transform: translate3d(0, 100%, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-730a320a] .slideInDown {\n -webkit-animation-name: slideInDown-730a320a;\n animation-name: slideInDown-730a320a;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutDown-730a320a {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(0, 100%, 0);\n}\n}\n@keyframes slideOutDown-730a320a {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(0, 100%, 0);\n}\n}\n[data-v-730a320a] .slideOutDown {\n -webkit-animation-name: slideOutDown-730a320a;\n animation-name: slideOutDown-730a320a;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n"),Ie.__scopeId="data-v-730a320a",Ie.__file="src/hoc/VBottomSheet.vue";var Ve=Object.assign({inheritAttrs:!1},{props:{fullScreenClass:{type:[String,Object,Array],default:""},fullScreenStyle:{type:[Object,Array],default:()=>({})},swipeToCloseDirection:{type:String,default:"",validator:e=>-1!==["","RIGHT","LEFT"].includes(e)},threshold:{type:Number,default:30}},setup:function(n,{emit:o}){const a=n,l=D(),s=e(null),d=e(0),c=e(!0);let f=H,v=!0,m=null,b=!1;const S=i((()=>a.swipeToCloseDirection?{"enter-active-class":"RIGHT"===a.swipeToCloseDirection?"slideInRight":"slideInLeft","leave-active-class":"RIGHT"===a.swipeToCloseDirection?"slideOutRight":"slideOutLeft"}:{})),{lengthX:T,direction:C,isSwiping:k}=a.swipeToCloseDirection?_e(s,{threshold:a.threshold,onSwipeStart(e){f=_(document,"selectionchange",(()=>{c.value=window.getSelection().isCollapsed})),m=(new Date).getTime(),b=M(e.target)},onSwipe(){var e,t,n;if(b&&C.value===a.swipeToCloseDirection){if(!c.value)return;s.value.classList.add("vfm-overflow-hidden");const o=(e=Math.abs(T.value),t=0,n=s.value.offsetWidth,(e>n?n:e.1*s.value.offsetWidth;v&&b&&i&&(l||n-m<=300)?o("update:modelValue",!1):d.value=0}}):{};function M(e){const t=0===e.scrollLeft;return e===s.value?t:t&&M(e.parentElement)}return t((()=>l.modelValue),(e=>{e&&(d.value=0)})),t((()=>c.value),(e=>{e||(d.value=0)})),t((()=>d.value),((e,t)=>{"RIGHT"===a.swipeToCloseDirection?v=et)})),(e,t)=>(r(),E(L(Ce),u(L(l),{"hide-overlay":"",transition:L(S),"content-style":[{transform:`translateX(${-d.value}px)`}],"content-class":{"vfm-transition":!L(k)},"lock-scroll":!1,onMousedown:t[0]||(t[0]=w((()=>{}),["stop"])),onTouchstartPassive:t[1]||(t[1]=w((()=>{}),["stop"])),onClosed:L(F)}),{default:p((()=>[x(e.$slots,"prepend"),g("div",{ref:(e,t)=>{t.modalContent=e,s.value=e},class:h(["vfm-full-screen",n.fullScreenClass]),style:y(n.fullScreenStyle)},[x(e.$slots,"default")],6),x(e.$slots,"append")])),_:3},16,["transition","content-style","content-class","onClosed"]))}});he("\n.vfm-full-screen[data-v-1a4bac96] {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n background-color: #fff;\n}\n.vfm-overflow-hidden[data-v-1a4bac96],[data-v-1a4bac96] .vfm-overflow-hidden * {\n overflow: hidden;\n}\n[data-v-1a4bac96] .vfm-transition {\n transition-property: transform;\n transition-duration: 0.3s;\n}\n[data-v-1a4bac96] .vfm__content {\n width: 100%;\n height: 100%;\n}\n@-webkit-keyframes slideInLeft-1a4bac96 {\nfrom {\n transform: translate3d(-100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInLeft-1a4bac96 {\nfrom {\n transform: translate3d(-100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideInLeft {\n -webkit-animation-name: slideInLeft-1a4bac96;\n animation-name: slideInLeft-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideInRight-1a4bac96 {\nfrom {\n transform: translate3d(100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInRight-1a4bac96 {\nfrom {\n transform: translate3d(100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideInRight {\n -webkit-animation-name: slideInRight-1a4bac96;\n animation-name: slideInRight-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutLeft-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(-100%, 0, 0);\n}\n}\n@keyframes slideOutLeft-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(-100%, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideOutLeft {\n -webkit-animation-name: slideOutLeft-1a4bac96;\n animation-name: slideOutLeft-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutRight-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(100%, 0, 0);\n}\n}\n@keyframes slideOutRight-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(100%, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideOutRight {\n -webkit-animation-name: slideOutRight-1a4bac96;\n animation-name: slideOutRight-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n"),Ve.__scopeId="data-v-1a4bac96",Ve.__file="src/hoc/VFullScreen.vue";export{Te as $vfm,we as ModalInstance,Ee as ModalsContainer,Ie as VBottomSheet,Ve as VFullScreen,Ce as VueFinalModal,xe as createModalInstance,ke as useModal}; +import{ref as e,watch as t,nextTick as n,onBeforeUnmount as o,reactive as a,computed as i,onMounted as l,withDirectives as s,openBlock as r,createElementBlock as d,mergeProps as u,withKeys as c,createVNode as f,Transition as v,toHandlers as m,withCtx as p,normalizeClass as h,normalizeStyle as y,createCommentVNode as b,createElementVNode as g,withModifiers as w,renderSlot as x,Fragment as S,renderList as T,vShow as C,createBlock as E,resolveDynamicComponent as k,createSlots as M,markRaw as z,shallowReactive as O,useAttrs as D,unref as L}from"vue";import{useEventListener as _}from"@vueuse/core";const I="enter",V="entering",R="leave",A="leavng",B=()=>{const t=e(null),n={beforeEnter(){t.value=V},afterEnter(){t.value=I},beforeLeave(){t.value=A},afterLeave(){t.value=R}};return{state:t,listeners:n}},N=e=>e==document.activeElement;class P{constructor(){this.root=null,this.elements=[],this.onKeyDown=this.onKeyDown.bind(this)}get lastElement(){return this.elements[this.elements.length-1]||null}get firstElement(){return this.elements[0]||null}get isEnabled(){return!!this.root}onKeyDown(e){if((e=>"Tab"===e.key||9===e.keyCode)(e)){if(!e.shiftKey)return!document.activeElement||N(this.lastElement)?(this.firstElement.focus(),void e.preventDefault()):void 0;N(this.firstElement)&&(this.lastElement.focus(),e.preventDefault())}}enable(e){e&&(this.root=e,this.elements=((e,t)=>[...e.querySelectorAll(t)||[]])(this.root,'button:not([disabled]), select:not([disabled]), a[href]:not([disabled]), area[href]:not([disabled]), [contentEditable=""]:not([disabled]), [contentEditable="true"]:not([disabled]), [contentEditable="TRUE"]:not([disabled]), textarea:not([disabled]), iframe:not([disabled]), input:not([disabled]), summary:not([disabled]), [tabindex]:not([tabindex="-1"])'),this.root.addEventListener("keydown",this.onKeyDown))}disable(){this.root.removeEventListener("keydown",this.onKeyDown),this.root=null}}let $=null;function j({props:e,vfmContainer:n,modalTransitionState:o}){return null==$&&($=new P),t(o,(t=>{switch(t){case I:(e.focusRetain||e.focusTrap)&&n.value.focus(),e.focusTrap&&$.enable(n.value);break;case A:$.enabled&&$.disable()}})),{focusTrap:$}}const H=()=>{},F=()=>{const e=document.activeElement;e&&e!==document.body&&e.blur()},W=e=>{const{clientX:t,clientY:n}=e.targetTouches?e.targetTouches[0]:e;return{x:t,y:n}},G={down:{pc:"mousedown",m:"touchstart"},move:{pc:"mousemove",m:"touchmove"},up:{pc:"mouseup",m:"touchend"}},K=(e,t,n)=>{t&&t.addEventListener(G[e].pc,n),t&&t.addEventListener(G[e].m,n,{passive:!1})},Y=(e,t,n)=>{t&&t.removeEventListener(G[e].pc,n),t&&t.removeEventListener(G[e].m,n)};const U={t:"ns-resize",tr:"nesw-resize",r:"ew-resize",br:"nwse-resize",b:"ns-resize",bl:"nesw-resize",l:"ew-resize",tl:"nwse-resize"},X=(e,t,n)=>("number"!=typeof e&&(e=Math.min(t,n)||t),"number"!=typeof n&&(n=Math.max(t,e)),Math.min(Math.max(t,e),n)),q=e=>e&&Number(e.replace(/px$/,""))||0;function Z({props:o,visible:a,vfmContainer:i,vfmContent:l,vfmResize:s,modalTransitionState:r,onEvent:d=(()=>{})}){const u=e(!1),c=e(null),f=e({});function v(e){e.stopPropagation();const t="resize",n="drag",a=e.target.getAttribute("direction");let s;if(a)s=t;else{if(!((e,t,n)=>""===n||[...t.querySelectorAll(n)].includes(e.target))(e,l.value,o.dragSelector))return;s=n}c.value=`${s}:start`,d?.(e);const r=W(e),u=i.value.getBoundingClientRect(),v=l.value.getBoundingClientRect(),m="absolute"===window.getComputedStyle(l.value).position,p=q(f.value.top),h=q(f.value.left),y=(()=>{if(o.fitParent){const e={absolute:()=>({minTop:0,minLeft:0,maxTop:u.height-v.height,maxLeft:u.width-v.width}),relative:()=>({minTop:p+u.top-v.top,minLeft:h+u.left-v.left,maxTop:p+u.bottom-v.bottom,maxLeft:h+u.right-v.right})};return m?e.absolute():e.relative()}return{}})(),b=s===t&&((e,t,n)=>{const o=e.style[t];return e.style[t]=n,()=>{e.style[t]=o}})(document.body,"cursor",U[a]),g=e=>{e.stopPropagation(),c.value=`${s}:move`,d?.(e);const i=W(e);let l,b,g={x:i.x-r.x,y:i.y-r.y};s===t&&(g=function(e,t,n,a,i){const l=e=>{let n=t[e.axis];n=o.fitParent?X(e.min,n,e.max):n;let a=X(e.minEdge,e.getEdge(n),e.maxEdge);return n=e.getOffsetAxis(a,i),{[e.edgeName]:a,[e.axis]:n}},s=(e,t,i,l)=>{const s=a[t],r=n[e]-a[e],d=(u=t).charAt(0).toUpperCase()+u.slice(1);var u;return{axis:i,edgeName:t,min:l?r:-s,max:l?s:r,minEdge:o[`min${d}`],maxEdge:o[`max${d}`],getEdge:e=>a[t]-e*(l?1:-1),getOffsetAxis:(e,n)=>{const o=a[t]-e;return n?l?o:0:(l?1:-1)*o/2}}},r={t:["top","height","y",!0],b:["bottom","height","y",!1],l:["left","width","x",!0],r:["right","width","x",!1]};let d={x:0,y:0};return e.split("").forEach((e=>{const t=s(...r[e]);d={...d,...l(t)}})),d}(a,g,u,v,m)),m?(l=v.top-u.top+g.y,b=v.left-u.left+g.x):(l=p+g.y,b=h+g.x),s===n&&o.fitParent&&(l=X(y.minTop,l,y.maxTop),b=X(y.minLeft,b,y.maxLeft));const w={position:"relative",top:l+"px",left:b+"px",margin:"unset",touchAction:"none",...m&&{position:"absolute",transform:"unset",width:v.width+"px",height:v.height+"px"},...g.width&&{width:g.width+"px"},...g.height&&{height:g.height+"px"}};f.value={...f.value,...w}},w=e=>{e.stopPropagation(),s===t&&b&&b(),setTimeout((()=>{c.value=`${s}:end`,d?.(e)})),Y("move",document,g),Y("up",document,w)};K("move",document,g),K("up",document,w)}function m(){K("down",l.value,v),f.value.touchAction="none"}function p(){Y("down",l.value,v)}function h(){u.value=!0,n((()=>{K("down",s.value,v)}))}function y(){Y("down",s.value,v),u.value=!1}return t(r,(e=>{switch(e){case I:o.drag&&m(),o.resize&&h();break;case R:o.keepChangedStyle||(f.value={})}})),t((()=>o.drag),(e=>{a.value&&(e?m():p())})),t((()=>o.resize),(e=>{a.value&&(e?h():y())})),t((()=>o.keepChangedStyle),(e=>{e||(f.value={})})),{resizeVisible:u,state:c,dragResizeStyle:f,removeDragDown:p,removeResizeDown:y}}let J=!1;if("undefined"!=typeof window){const e={get passive(){J=!0}};window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}const Q="undefined"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1);let ee,te,ne=[],oe=!1,ae=0,ie=-1;const le=(e,t)=>{let n=!1;return(e=>{const t=[];for(;e;){if(t.push(e),e.classList.contains("vfm"))return t;e=e.parentElement}return t})(e).forEach((e=>{(e=>{if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return["auto","scroll"].includes(t.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&((e,t)=>!(0===e.scrollTop&&t<0||e.scrollTop+e.clientHeight+t>=e.scrollHeight&&t>0))(e,t)&&(n=!0)})),n},se=e=>ne.some((()=>le(e,-ae))),re=e=>{const t=e||window.event;return!!se(t.target)||(t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1))},de=(e,t)=>{if(!e)return void console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");if(ne.some((t=>t.targetElement===e)))return;const n={targetElement:e,options:t||{}};ne=[...ne,n],Q?(e.ontouchstart=e=>{1===e.targetTouches.length&&(ie=e.targetTouches[0].clientY)},e.ontouchmove=t=>{1===t.targetTouches.length&&((e,t)=>{ae=e.targetTouches[0].clientY-ie,!se(e.target)&&(t&&0===t.scrollTop&&ae>0||(e=>!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight)(t)&&ae<0?re(e):e.stopPropagation())})(t,e)},oe||(document.addEventListener("touchmove",re,J?{passive:!1}:void 0),oe=!0)):(e=>{if(void 0===te){const t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){const e=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);te=document.body.style.paddingRight,document.body.style.paddingRight=`${e+n}px`}}void 0===ee&&(ee=document.body.style.overflow,document.body.style.overflow="hidden")})(t)},ue=e=>{e?(ne=ne.filter((t=>t.targetElement!==e)),Q?(e.ontouchstart=null,e.ontouchmove=null,oe&&0===ne.length&&(document.removeEventListener("touchmove",re,J?{passive:!1}:void 0),oe=!1)):ne.length||(void 0!==te&&(document.body.style.paddingRight=te,te=void 0),void 0!==ee&&(document.body.style.overflow=ee,ee=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")};function ce({props:e,vfmContainer:a,modalTransitionState:i}){function l(){e.modelValue&&n((()=>{e.lockScroll?a.value&&de(a.value,{reserveScrollBarGap:!0}):s()}))}function s(){e.lockScroll&&a.value&&ue(a.value)}return t((()=>e.lockScroll),l),t(i,(e=>{e===R&&s()})),o((()=>{s()})),{handleLockScroll:l}}var fe={inheritAttrs:!1,props:{name:{type:String,default:null},modelValue:{type:Boolean,default:!1},displayDirective:{type:String,default:"show",validator:e=>-1!==["if","show"].indexOf(e)},classes:{type:[String,Object,Array],default:""},overlayClass:{type:[String,Object,Array],default:""},contentClass:{type:[String,Object,Array],default:""},styles:{type:[Object,Array],default:()=>({})},overlayStyle:{type:[Object,Array],default:()=>({})},contentStyle:{type:[Object,Array],default:()=>({})},lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},nonModal:{type:Boolean,default:!1},attach:{type:null,default:!1,validator(e){const t=typeof e;return"boolean"===t||"string"===t||e.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:()=>["t","tr","r","br","b","bl","l","tl"],validator:e=>["t","tr","r","br","b","bl","l","tl"].filter((t=>-1!==e.indexOf(t))).length===e.length},minWidth:{type:[Number,String],default:0},minHeight:{type:[Number,String],default:0},maxWidth:{type:[Number,String],default:1/0},maxHeight:{type:[Number,String],default:1/0}},emits:["update:modelValue","click-outside","before-open","opened","_before-close","before-close","closed","_before-open","_opened","_closed","drag:start","drag:move","drag:end","resize:start","resize:move","resize:end"],setup(s,{emit:r}){const d=Symbol("vfm"),u=e(null),c=e(null),f=e(null),v=e(null),m=e(null),p=e(null),h=e(null),y=e(!1),b=a({modal:!1,overlay:!1}),{state:g,listeners:w}=B(),{state:x,listeners:S}=B(),T=e(!1),{focusTrap:C}=j({props:s,vfmContainer:c,modalTransitionState:x}),{resizeVisible:E,state:k,dragResizeStyle:M,removeDragDown:z,removeResizeDown:O}=Z({props:s,visible:y,vfmContainer:c,vfmContent:f,vfmResize:v,modalTransitionState:x,onEvent(e){r(k.value,e)}}),{handleLockScroll:D}=ce({props:s,vfmContainer:c,modalTransitionState:x}),L=e(null);let _=H,V=H;const A=i((()=>"string"==typeof s.overlayTransition?{name:s.overlayTransition}:{...s.overlayTransition})),N=i((()=>"string"==typeof s.transition?{name:s.transition}:{...s.transition})),P=i((()=>(s.hideOverlay||g.value===R)&&x.value===R)),$=i((()=>!1===s.zIndex?!!s.zIndexAuto&&+s.zIndexBase+2*(h.value||0):s.zIndex)),F=i((()=>({...!1!==$.value&&{zIndex:$.value}}))),W=i((()=>{let e=[M.value];return Array.isArray(s.contentStyle)?e.push(...s.contentStyle):e.push(s.contentStyle),e}));function G(){return{uid:d,props:s,emit:r,vfmContainer:c,vfmContent:f,vfmResize:v,vfmOverlayTransition:m,vfmTransition:p,getAttachElement:U,modalStackIndex:h,visibility:b,handleLockScroll:D,toggle:J}}function K(){if(s.modelValue){if(r("_before-open",X({type:"_before-open"})),q("before-open",!1))return void V("show");let e=U();if(e||!1===s.attach){!1!==s.attach&&e.appendChild(u.value);let t=s.api.openedModals.findIndex((e=>e.uid===d));-1!==t&&s.api.openedModals.splice(t,1),s.api.openedModals.push(G()),h.value=s.api.openedModals.length-1,D(),s.api.openedModals.filter((e=>e.uid!==d)).forEach(((t,n)=>{t.getAttachElement()===e&&(t.modalStackIndex.value=n,t.visibility.overlay=!1)})),y.value=!0,n((()=>{b.overlay=!0,b.modal=!0}))}else!1!==e&&console.warn("Unable to locate target ".concat(s.attach))}}function Y(){let e=s.api.openedModals.findIndex((e=>e.uid===d));if(-1!==e&&s.api.openedModals.splice(e,1),s.api.openedModals.length>0){const e=s.api.openedModals[s.api.openedModals.length-1];e.props.focusTrap&&n((()=>{C.enable(e.vfmContainer.value),C.firstElement.focus()})),(e.props.focusRetain||e.props.focusTrap)&&e.vfmContainer.value.focus(),!e.props.hideOverlay&&(e.visibility.overlay=!0)}s.drag&&z(),s.resize&&O(),k.value=null,b.overlay=!1,b.modal=!1}function U(){let e;return e=!1!==s.attach&&("string"==typeof s.attach?!!window&&window.document.querySelector(s.attach):s.attach),e}function X(e={}){return{ref:G(),...e}}function q(e,t){let o=!1;const a=X({type:e,stop(){o=!0}});return r(e,a),!!o&&(T.value=!0,n((()=>{r("update:modelValue",t)})),!0)}function J(e){return new Promise(((t,n)=>{_=e=>{t(e),_=H},V=e=>{n(e),V=H};const o="boolean"==typeof e?e:!s.modelValue;r("update:modelValue",o)}))}return t((()=>s.modelValue),(e=>{if(T.value)T.value=!1;else if(K(),!e){if(r("_before-close",X({type:"_before-close"})),q("before-close",!0))return void V("hide");Y()}})),t((()=>s.hideOverlay),(e=>{s.modelValue&&!e&&(b.overlay=!0)})),t((()=>s.attach),K),t(P,(e=>{e&&(y.value=!1,c.value.style.display="none")}),{flush:"post"}),t(x,(e=>{switch(e){case I:r("_opened"),r("opened",X({type:"opened"})),_("show");break;case R:h.value=null,r("_closed"),r("closed",X({type:"closed"})),_("hide")}})),s.api.modals.push(G()),l((()=>{K()})),o((()=>{Y(),u?.value?.remove();let e=s.api.modals.findIndex((e=>e.uid===d));s.api.modals.splice(e,1)})),{root:u,vfmContainer:c,vfmContent:f,vfmResize:v,vfmOverlayTransition:m,vfmTransition:p,computedOverlayTransition:A,computedTransition:N,overlayListeners:w,modalListeners:S,visible:y,visibility:b,resizeVisible:E,calculateZIndex:$,bindStyle:F,bindContentStyle:W,onMousedown:function(e){L.value=e?.target},onMouseupContainer:function(){L.value===c.value&&"resize:move"!==k.value&&(r("click-outside",X({type:"click-outside"})),s.clickToClose&&r("update:modelValue",!1))},onEsc:function(){y.value&&s.escToClose&&r("update:modelValue",!1)}}}};const ve=["aria-expanded"],me={key:0,ref:"vfmResize",class:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},pe=["direction"];function he(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&o.firstChild?o.insertBefore(a,o.firstChild):o.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}he("\n.vfm--fixed[data-v-72c09f54] {\n position: fixed;\n}\n.vfm--absolute[data-v-72c09f54] {\n position: absolute;\n}\n.vfm--inset[data-v-72c09f54] {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.vfm--overlay[data-v-72c09f54] {\n background-color: rgba(0, 0, 0, 0.5);\n}\n.vfm--prevent-none[data-v-72c09f54] {\n pointer-events: none;\n}\n.vfm--prevent-auto[data-v-72c09f54] {\n pointer-events: auto;\n}\n.vfm--outline-none[data-v-72c09f54]:focus {\n outline: none;\n}\n.vfm-enter-active[data-v-72c09f54],\n.vfm-leave-active[data-v-72c09f54] {\n transition: opacity 0.2s;\n}\n.vfm-enter-from[data-v-72c09f54],\n.vfm-leave-to[data-v-72c09f54] {\n opacity: 0;\n}\n.vfm--touch-none[data-v-72c09f54] {\n touch-action: none;\n}\n.vfm--select-none[data-v-72c09f54] {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vfm--resize-tr[data-v-72c09f54],\n.vfm--resize-br[data-v-72c09f54],\n.vfm--resize-bl[data-v-72c09f54],\n.vfm--resize-tl[data-v-72c09f54] {\n width: 12px;\n height: 12px;\n z-index: 10;\n}\n.vfm--resize-t[data-v-72c09f54] {\n top: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-tr[data-v-72c09f54] {\n top: -6px;\n right: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-r[data-v-72c09f54] {\n top: 0;\n right: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-br[data-v-72c09f54] {\n bottom: -6px;\n right: -6px;\n cursor: nwse-resize;\n}\n.vfm--resize-b[data-v-72c09f54] {\n bottom: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-bl[data-v-72c09f54] {\n bottom: -6px;\n left: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-l[data-v-72c09f54] {\n top: 0;\n left: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-tl[data-v-72c09f54] {\n top: -6px;\n left: -6px;\n cursor: nwse-resize;\n}\n"),fe.render=function(e,t,n,o,a,i){return"if"!==n.displayDirective||o.visible?s((r(),d("div",u({key:0},e.$attrs,{ref:"root",style:o.bindStyle,class:["vfm vfm--inset",[!1===n.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":n.nonModal}]],onKeydown:t[3]||(t[3]=c(((...e)=>o.onEsc&&o.onEsc(...e)),["esc"]))}),[f(v,u(o.computedOverlayTransition,m(o.overlayListeners)),{default:p((()=>[!n.hideOverlay&&o.visibility.overlay?(r(),d("div",{key:0,class:h(["vfm__overlay vfm--overlay vfm--absolute vfm--inset",n.overlayClass]),style:y(n.overlayStyle)},null,6)):b("v-if",!0)])),_:1},16),f(v,u(o.computedTransition,m(o.modalListeners)),{default:p((()=>[s(g("div",{ref:"vfmContainer",class:h(["vfm__container vfm--absolute vfm--inset vfm--outline-none",n.classes]),style:y(n.styles),"aria-expanded":o.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1",onMouseup:t[1]||(t[1]=w(((...e)=>o.onMouseupContainer&&o.onMouseupContainer(...e)),["self"])),onMousedown:t[2]||(t[2]=w(((...e)=>o.onMousedown&&o.onMousedown(...e)),["self"]))},[g("div",{ref:"vfmContent",class:h(["vfm__content",[n.contentClass,{"vfm--prevent-auto":n.nonModal}]]),style:y(o.bindContentStyle),onMousedown:t[0]||(t[0]=e=>o.onMousedown(null))},[x(e.$slots,"default",{close:()=>e.$emit("update:modelValue",!1)}),o.resizeVisible&&o.visibility.modal?(r(),d("div",me,[(r(!0),d(S,null,T(n.resizeDirections,(e=>(r(),d("div",{key:e,direction:e,class:h([`vfm--resize-${e}`,"vfm--absolute vfm--prevent-auto"])},null,10,pe)))),128))],512)):b("v-if",!0)],38)],46,ve),[[C,o.visibility.modal]])])),_:3},16)],16)),[[C,"show"!==n.displayDirective||o.visible]]):b("v-if",!0)},fe.__scopeId="data-v-72c09f54",fe.__file="src/VueFinalModal.vue";var ye={methods:{slice(e){this.api.dynamicModals.splice(e,1)},closed(e,t){this.slice(e),t.closed&&t.closed()},beforeClose(e){e.value&&e?.rejectClose("hide")},async beforeOpen(e,t,n){await this.$nextTick(),await this.$nextTick(),t.value||(this.slice(n),t?.reject("show"))},isString:e=>"string"==typeof e}};const be={class:"modals-container"},ge=["innerHTML"];ye.render=function(e,t,n,o,a,i){return r(),d("div",be,[(r(!0),d(S,null,T(e.api.dynamicModals,((e,t)=>(r(),E(k(e.component),u({key:e.id},e.bind,{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t},m(e.on),{on_beforeClose:t=>i.beforeClose(e),on_closed:n=>i.closed(t,e),on_beforeOpen:n=>i.beforeOpen(n,e,t),on_opened:e.opened}),M({_:2},[T(e.slots,((e,t)=>({name:t,fn:p((()=>[b(" eslint-disable vue/no-v-html "),i.isString(e)?(r(),d("div",{key:0,innerHTML:e},null,8,ge)):(r(),E(k(e.component),u({key:1},e.bind,m(e.on||{})),null,16))]))})))]),1040,["modelValue","onUpdate:modelValue","on_beforeClose","on_closed","on_beforeOpen","on_opened"])))),128))])},ye.__file="src/ModalsContainer.vue";class we{constructor(){const e=e=>{const t={...e,props:{...e.props}};return Object.assign(t.props,{api:{type:Object,default:()=>this}}),z(t)};this.modals=[],this.openedModals=[],this.VueFinalModal=e(fe),this.dynamicModals=O([]),this.ModalsContainer=e(ye)}show(e,...t){switch(typeof e){case"string":return this.toggle(e,!0,...t);case"object":{const{show:n}=this.useModal(e,t[0]);return n()}}}hide(...e){return this.toggle(e,!1)}hideAll(){return this.hide(...this.openedModals.map((e=>e.props.name)))}toggle(e,...t){const n=Array.isArray(e)?this.get(...e):this.get(e);return Promise.allSettled(n.map((e=>e.toggle(...t))))}get(...e){return this.modals.filter((t=>e.includes(t.props.name)))}existModal(e){return-1!==this.dynamicModals.indexOf(e)}useModal(e){let t=a({value:!1,component:this.VueFinalModal,id:Symbol("useModal"),bind:{},slots:{},on:{},...e});return{show:()=>this.existModal(t)?Promise.resolve("[Vue Final Modal] modal is already opened"):new Promise(((e,n)=>{t.value=!0,t.reject=n,t.opened=()=>{e("show")},this.dynamicModals.push(t)})),hide:()=>this.existModal(t)?new Promise(((e,n)=>{t.value=!1,t.rejectClose=n,t.closed=()=>{e("hide")}})):Promise.resolve("[Vue Final Modal] modal is already closed"),options:t}}}const xe=()=>{let e=new we;return{$vfm:e,VueFinalModal:e.VueFinalModal,ModalsContainer:e.ModalsContainer,useModal:e.useModal.bind(e)}},Se=xe(),{$vfm:Te,VueFinalModal:Ce,ModalsContainer:Ee,useModal:ke}=Se,Me="UP",ze="RIGHT",Oe="DOWN",De="LEFT",Le="NONE";function _e(t,{threshold:n=50,onSwipeStart:o,onSwipe:l,onSwipeEnd:s,passive:r=!0}){const d=a({x:0,y:0}),u=a({x:0,y:0}),c=i((()=>d.x-u.x)),f=i((()=>d.y-u.y)),{max:v,abs:m}=Math,p=i((()=>v(m(c.value),m(f.value))>=n)),h=e(!1),y=i((()=>p.value?m(c.value)>m(f.value)?c.value>0?De:ze:f.value>0?Me:Oe:Le)),b=(e,t)=>{u.x=e,u.y=t};let g;const w=function(e){if(!e)return!1;let t=!1;const n={get passive(){return t=!0,!1}};return e.addEventListener("x",H,n),e.removeEventListener("x",H),t}(window?.document);let x;function S(e){g.capture&&!g.passive&&e.preventDefault();const{x:n,y:a}=W(e);((e,t)=>{d.x=e,d.y=t})(n,a),b(n,a),o?.(e),x=[_(t,"mousemove",T,g),_(t,"touchmove",T,g),_(t,"mouseup",C,g),_(t,"touchend",C,g),_(t,"touchcancel",C,g)]}function T(e){const{x:t,y:n}=W(e);b(t,n),!h.value&&p.value&&(h.value=!0),h.value&&l?.(e)}function C(e){h.value&&s?.(e,y.value),h.value=!1,x.forEach((e=>e()))}g=r?w?{passive:!0}:{capture:!1}:w?{passive:!1,capture:!0}:{capture:!0};const E=[_(t,"mousedown",S,g),_(t,"touchstart",S,g)];return{isPassiveEventSupported:w,isSwiping:h,direction:y,coordsStart:d,coordsEnd:u,lengthX:c,lengthY:f,stop:()=>{E.forEach((e=>e())),x.forEach((e=>e()))}}}var Ie=Object.assign({inheritAttrs:!1},{props:{swipeToCloseDirection:{type:String,default:"",validator:e=>-1!==["","DOWN"].includes(e)},threshold:{type:Number,default:30},lockScroll:{type:Boolean,default:!1}},setup:function(n,{emit:o}){const a=n,i=D(),l=e(null),s=e(0),d=e(!0);let c=H,f=!0,v=null,m=!1;const{lengthY:b,direction:S,isSwiping:T}=_e(l,{threshold:a.threshold,onSwipeStart(e){c=_(document,"selectionchange",(()=>{d.value=window.getSelection().isCollapsed})),v=(new Date).getTime(),m=C(e.target)},onSwipe(){var e,t,n;if(m&&S.value===a.swipeToCloseDirection){if(!d.value)return;s.value=(e=Math.abs(b.value),t=0,n=l.value.offsetHeight,-(e>n?n:e.1*l.value.offsetHeight;f&&m&&i&&(r||n-v<=300)?o("update:modelValue",!1):s.value=0}});function C(e){const t=0===e.scrollTop;return e===l.value?t:t&&C(e.parentElement)}return t((()=>i.modelValue),(e=>{e&&(s.value=0)})),t((()=>d.value),(e=>{e||(s.value=0)})),t((()=>s.value),((e,t)=>{"DOWN"===a.swipeToCloseDirection&&(f=e(r(),E(L(Ce),u(L(i),{transition:{"enter-active-class":"slideInDown","leave-active-class":"slideOutDown"},"lock-scroll":n.lockScroll,onMousedown:t[0]||(t[0]=w((()=>{}),["stop"])),onTouchstartPassive:t[1]||(t[1]=w((()=>{}),["stop"])),onClosed:L(F)}),{default:p((()=>[x(e.$slots,"prepend"),g("div",{ref:(e,t)=>{t.bottomSheetEl=e,l.value=e},class:h(["vfm-bottom-sheet",{"vfm-transition":!L(T)}]),style:y({transform:`translateY(${-s.value}px)`})},[x(e.$slots,"default")],6),x(e.$slots,"append")])),_:3},16,["lock-scroll","onClosed"]))}});he("\n.vfm-bottom-sheet[data-v-730a320a] {\n position: absolute;\n bottom: 0;\n width: 100%;\n max-height: 90%;\n overflow-y: auto;\n background-color: #fff;\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n}\n.vfm-transition[data-v-730a320a] {\n transition-property: transform;\n transition-duration: 150ms;\n}\n@-webkit-keyframes slideInDown-730a320a {\nfrom {\n transform: translate3d(0, 100%, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInDown-730a320a {\nfrom {\n transform: translate3d(0, 100%, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-730a320a] .slideInDown {\n -webkit-animation-name: slideInDown-730a320a;\n animation-name: slideInDown-730a320a;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutDown-730a320a {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(0, 100%, 0);\n}\n}\n@keyframes slideOutDown-730a320a {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(0, 100%, 0);\n}\n}\n[data-v-730a320a] .slideOutDown {\n -webkit-animation-name: slideOutDown-730a320a;\n animation-name: slideOutDown-730a320a;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n"),Ie.__scopeId="data-v-730a320a",Ie.__file="src/hoc/VBottomSheet.vue";var Ve=Object.assign({inheritAttrs:!1},{props:{fullScreenClass:{type:[String,Object,Array],default:""},fullScreenStyle:{type:[Object,Array],default:()=>({})},swipeToCloseDirection:{type:String,default:"",validator:e=>-1!==["","RIGHT","LEFT"].includes(e)},threshold:{type:Number,default:30},lockScroll:{type:Boolean,default:!1}},setup:function(n,{emit:o}){const a=n,l=D(),s=e(null),d=e(0),c=e(!0);let f=H,v=!0,m=null,b=!1;const S=i((()=>a.swipeToCloseDirection?{"enter-active-class":"RIGHT"===a.swipeToCloseDirection?"slideInRight":"slideInLeft","leave-active-class":"RIGHT"===a.swipeToCloseDirection?"slideOutRight":"slideOutLeft"}:{})),{lengthX:T,direction:C,isSwiping:k}=a.swipeToCloseDirection?_e(s,{threshold:a.threshold,onSwipeStart(e){f=_(document,"selectionchange",(()=>{c.value=window.getSelection().isCollapsed})),m=(new Date).getTime(),b=M(e.target)},onSwipe(){var e,t,n;if(b&&C.value===a.swipeToCloseDirection){if(!c.value)return;s.value.classList.add("vfm-overflow-hidden");const o=(e=Math.abs(T.value),t=0,n=s.value.offsetWidth,(e>n?n:e.1*s.value.offsetWidth;v&&b&&i&&(l||n-m<=300)?o("update:modelValue",!1):d.value=0}}):{};function M(e){const t=0===e.scrollLeft;return e===s.value?t:t&&M(e.parentElement)}return t((()=>l.modelValue),(e=>{e&&(d.value=0)})),t((()=>c.value),(e=>{e||(d.value=0)})),t((()=>d.value),((e,t)=>{"RIGHT"===a.swipeToCloseDirection?v=et)})),(e,t)=>(r(),E(L(Ce),u(L(l),{"hide-overlay":"",transition:L(S),"content-style":[{transform:`translateX(${-d.value}px)`}],"content-class":{"vfm-transition":!L(k)},"lock-scroll":n.lockScroll,onMousedown:t[0]||(t[0]=w((()=>{}),["stop"])),onTouchstartPassive:t[1]||(t[1]=w((()=>{}),["stop"])),onClosed:L(F)}),{default:p((()=>[x(e.$slots,"prepend"),g("div",{ref:(e,t)=>{t.modalContent=e,s.value=e},class:h(["vfm-full-screen",n.fullScreenClass]),style:y(n.fullScreenStyle)},[x(e.$slots,"default")],6),x(e.$slots,"append")])),_:3},16,["transition","content-style","content-class","lock-scroll","onClosed"]))}});he("\n.vfm-full-screen[data-v-1a4bac96] {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n background-color: #fff;\n}\n.vfm-overflow-hidden[data-v-1a4bac96],[data-v-1a4bac96] .vfm-overflow-hidden * {\n overflow: hidden;\n}\n[data-v-1a4bac96] .vfm-transition {\n transition-property: transform;\n transition-duration: 0.3s;\n}\n[data-v-1a4bac96] .vfm__content {\n width: 100%;\n height: 100%;\n}\n@-webkit-keyframes slideInLeft-1a4bac96 {\nfrom {\n transform: translate3d(-100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInLeft-1a4bac96 {\nfrom {\n transform: translate3d(-100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideInLeft {\n -webkit-animation-name: slideInLeft-1a4bac96;\n animation-name: slideInLeft-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideInRight-1a4bac96 {\nfrom {\n transform: translate3d(100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInRight-1a4bac96 {\nfrom {\n transform: translate3d(100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideInRight {\n -webkit-animation-name: slideInRight-1a4bac96;\n animation-name: slideInRight-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutLeft-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(-100%, 0, 0);\n}\n}\n@keyframes slideOutLeft-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(-100%, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideOutLeft {\n -webkit-animation-name: slideOutLeft-1a4bac96;\n animation-name: slideOutLeft-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutRight-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(100%, 0, 0);\n}\n}\n@keyframes slideOutRight-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(100%, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideOutRight {\n -webkit-animation-name: slideOutRight-1a4bac96;\n animation-name: slideOutRight-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n"),Ve.__scopeId="data-v-1a4bac96",Ve.__file="src/hoc/VFullScreen.vue";export{Te as $vfm,we as ModalInstance,Ee as ModalsContainer,Ie as VBottomSheet,Ve as VFullScreen,Ce as VueFinalModal,xe as createModalInstance,ke as useModal}; //# sourceMappingURL=VueFinalModal.esm.js.map diff --git a/packages/lib/dist/VueFinalModal.esm.js.map b/packages/lib/dist/VueFinalModal.esm.js.map index 9213bb42..51519e95 100644 --- a/packages/lib/dist/VueFinalModal.esm.js.map +++ b/packages/lib/dist/VueFinalModal.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"VueFinalModal.esm.js","sources":["../src/utils/transitionState.js","../src/utils/focusTrap.js","../src/utils/index.js","../src/utils/dom.js","../src/utils/dragResize.js","../src/utils/bodyScrollLock.js","../src/VueFinalModal.vue","../src/VueFinalModal.vue?vue&type=template&id=72c09f54&lang.js","../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/ModalsContainer.vue","../src/ModalsContainer.vue?vue&type=template&id=437c4752&lang.js","../src/modalInstance.js","../src/utils/swipeable.js","../src/hoc/VBottomSheet.vue","../src/hoc/VFullScreen.vue"],"sourcesContent":["import { ref } from 'vue'\n\nexport const TransitionState = {\n Enter: 'enter',\n Entering: 'entering',\n Leave: 'leave',\n Leaving: 'leavng'\n}\n\nexport const useTransitionState = () => {\n const state = ref(null)\n\n const listeners = {\n beforeEnter() {\n state.value = TransitionState.Entering\n },\n afterEnter() {\n state.value = TransitionState.Enter\n },\n beforeLeave() {\n state.value = TransitionState.Leaving\n },\n afterLeave() {\n state.value = TransitionState.Leave\n }\n }\n\n return {\n state,\n listeners\n }\n}\n","import { watch } from 'vue'\nimport { TransitionState } from './transitionState'\n\n// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n }\n\n /**\n * Get last Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n /**\n * Get first Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get firstElement() {\n return this.elements[0] || null\n }\n\n /**\n * Get whether the trap is enabled\n *\n * @return {boolean} isEnabled\n */\n get isEnabled() {\n return !!this.root\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement)) {\n this.lastElement.focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement)) {\n this.firstElement.focus()\n event.preventDefault()\n return\n }\n }\n\n /**\n * Enable focus trap\n *\n * @param {HTMLElement} root - the focus trap root element\n */\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n /**\n * Disable focus trap\n */\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\n/**\n * @type {FocusTrap | null}\n */\nlet focusTrap = null\n\n/**\n * Get FocusTrap focusTrap\n *\n * @returns {FocusTrap} focusTrap\n */\nexport function useFocusTrap({ props, vfmContainer, modalTransitionState }) {\n if (focusTrap == null) {\n focusTrap = new FocusTrap()\n }\n\n watch(modalTransitionState, state => {\n switch (state) {\n case TransitionState.Enter:\n if (props.focusRetain || props.focusTrap) {\n vfmContainer.value.focus()\n }\n props.focusTrap && focusTrap.enable(vfmContainer.value)\n break\n case TransitionState.Leaving:\n if (focusTrap.enabled) {\n focusTrap.disable()\n }\n break\n }\n })\n\n return { focusTrap }\n}\n","export const noop = () => {}\n","import { noop } from './index'\n\nexport const looseFocus = () => {\n const element = document.activeElement\n if (element && element !== document.body) {\n element.blur()\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\n\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n\nexport function checkPassiveEventSupport(document) {\n if (!document) return false\n let supportsPassive = false\n const optionsBlock = {\n get passive() {\n supportsPassive = true\n return false\n }\n }\n document.addEventListener('x', noop, optionsBlock)\n document.removeEventListener('x', noop)\n return supportsPassive\n}\n","import { watch, ref, nextTick } from 'vue'\nimport { TransitionState } from './transitionState'\nimport { addListener, removeListener, getPosition } from './dom'\n\nconst resizeCursor = {\n t: 'ns-resize',\n tr: 'nesw-resize',\n r: 'ew-resize',\n br: 'nwse-resize',\n b: 'ns-resize',\n bl: 'nesw-resize',\n l: 'ew-resize',\n tl: 'nwse-resize'\n}\n\nexport const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nexport function useDragResize({\n props,\n visible,\n vfmContainer,\n vfmContent,\n vfmResize,\n modalTransitionState,\n onEvent = () => {}\n}) {\n const resizeVisible = ref(false)\n const state = ref(null)\n const dragResizeStyle = ref({})\n\n watch(modalTransitionState, val => {\n switch (val) {\n case TransitionState.Enter:\n props.drag && addDragDown()\n props.resize && addResizeDown()\n break\n case TransitionState.Leave:\n if (!props.keepChangedStyle) {\n dragResizeStyle.value = {}\n }\n break\n }\n })\n\n watch(\n () => props.drag,\n val => {\n if (visible.value) {\n val ? addDragDown() : removeDragDown()\n }\n }\n )\n\n watch(\n () => props.resize,\n val => {\n if (visible.value) {\n val ? addResizeDown() : removeResizeDown()\n }\n }\n )\n\n watch(\n () => props.keepChangedStyle,\n val => {\n if (!val) {\n dragResizeStyle.value = {}\n }\n }\n )\n\n function pointerDown(e) {\n e.stopPropagation()\n const STATE_RESIZE = 'resize'\n const STATE_DRAG = 'drag'\n const direction = e.target.getAttribute('direction')\n let _state\n if (direction) {\n _state = STATE_RESIZE\n } else if (validDragElement(e, vfmContent.value, props.dragSelector)) {\n _state = STATE_DRAG\n } else {\n return\n }\n state.value = `${_state}:start`\n onEvent?.(e)\n const down = getPosition(e)\n const rectContainer = vfmContainer.value.getBoundingClientRect()\n const rectContent = vfmContent.value.getBoundingClientRect()\n const isAbsolute = window.getComputedStyle(vfmContent.value).position === 'absolute'\n const position = {\n top: trimPx(dragResizeStyle.value.top),\n left: trimPx(dragResizeStyle.value.left)\n }\n const limit = (() => {\n if (props.fitParent) {\n const limit = {\n absolute() {\n return {\n minTop: 0,\n minLeft: 0,\n maxTop: rectContainer.height - rectContent.height,\n maxLeft: rectContainer.width - rectContent.width\n }\n },\n relative() {\n return {\n minTop: position.top + rectContainer.top - rectContent.top,\n minLeft: position.left + rectContainer.left - rectContent.left,\n maxTop: position.top + rectContainer.bottom - rectContent.bottom,\n maxLeft: position.left + rectContainer.right - rectContent.right\n }\n }\n }\n return isAbsolute ? limit.absolute() : limit.relative()\n } else {\n return {}\n }\n })()\n const resetBodyCursor = _state === STATE_RESIZE && setStyle(document.body, 'cursor', resizeCursor[direction])\n\n const moving = e => {\n // onPointerMove\n e.stopPropagation()\n state.value = `${_state}:move`\n onEvent?.(e)\n const move = getPosition(e)\n let offset = {\n x: move.x - down.x,\n y: move.y - down.y\n }\n if (_state === STATE_RESIZE) {\n offset = getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute)\n }\n\n let top\n let left\n if (isAbsolute) {\n top = rectContent.top - rectContainer.top + offset.y\n left = rectContent.left - rectContainer.left + offset.x\n } else {\n top = position.top + offset.y\n left = position.left + offset.x\n }\n if (_state === STATE_DRAG && props.fitParent) {\n top = clamp(limit.minTop, top, limit.maxTop)\n left = clamp(limit.minLeft, left, limit.maxLeft)\n }\n const style = {\n position: 'relative',\n top: top + 'px',\n left: left + 'px',\n margin: 'unset',\n touchAction: 'none',\n ...(isAbsolute && {\n position: 'absolute',\n transform: 'unset',\n width: rectContent.width + 'px',\n height: rectContent.height + 'px'\n }),\n ...(offset.width && { width: offset.width + 'px' }),\n ...(offset.height && { height: offset.height + 'px' })\n }\n\n dragResizeStyle.value = {\n ...dragResizeStyle.value,\n ...style\n }\n }\n const end = e => {\n // onPointerUp\n e.stopPropagation()\n if (_state === STATE_RESIZE) {\n resetBodyCursor && resetBodyCursor()\n }\n // Excute onMouseupContainer before trigger onEvent\n setTimeout(() => {\n state.value = `${_state}:end`\n onEvent?.(e)\n })\n removeListener('move', document, moving)\n removeListener('up', document, end)\n }\n addListener('move', document, moving)\n addListener('up', document, end)\n }\n function addDragDown() {\n addListener('down', vfmContent.value, pointerDown)\n dragResizeStyle.value.touchAction = 'none'\n }\n function removeDragDown() {\n removeListener('down', vfmContent.value, pointerDown)\n }\n function addResizeDown() {\n resizeVisible.value = true\n nextTick(() => {\n addListener('down', vfmResize.value, pointerDown)\n })\n }\n function removeResizeDown() {\n removeListener('down', vfmResize.value, pointerDown)\n resizeVisible.value = false\n }\n function getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute) {\n const setOffset = dir => {\n let offsetAxis = offset[dir.axis]\n offsetAxis = props.fitParent ? clamp(dir.min, offsetAxis, dir.max) : offsetAxis\n let edge = clamp(dir.minEdge, dir.getEdge(offsetAxis), dir.maxEdge)\n offsetAxis = dir.getOffsetAxis(edge, isAbsolute)\n return {\n [dir.edgeName]: edge,\n [dir.axis]: offsetAxis\n }\n }\n\n const getDirectionInfo = (position, edgeName, axis, isPositive) => {\n const rectContentEdge = rectContent[edgeName]\n const positionOffset = rectContainer[position] - rectContent[position]\n const EdgeName = capitalize(edgeName)\n return {\n axis,\n edgeName,\n min: isPositive ? positionOffset : -rectContentEdge,\n max: isPositive ? rectContentEdge : positionOffset,\n minEdge: props[`min${EdgeName}`],\n maxEdge: props[`max${EdgeName}`],\n getEdge: offsetAxis => rectContent[edgeName] - offsetAxis * (isPositive ? 1 : -1),\n getOffsetAxis: (edge, isAbsolute) => {\n const offsetAxis = rectContent[edgeName] - edge\n if (isAbsolute) {\n return isPositive ? offsetAxis : 0\n } else {\n return ((isPositive ? 1 : -1) * offsetAxis) / 2\n }\n }\n }\n }\n\n const directions = {\n t: ['top', 'height', 'y', true],\n b: ['bottom', 'height', 'y', false],\n l: ['left', 'width', 'x', true],\n r: ['right', 'width', 'x', false]\n }\n\n let _offset = { x: 0, y: 0 }\n direction.split('').forEach(dir => {\n const directionInfo = getDirectionInfo(...directions[dir])\n _offset = {\n ..._offset,\n ...setOffset(directionInfo)\n }\n })\n return _offset\n }\n\n return {\n resizeVisible,\n state,\n dragResizeStyle,\n removeDragDown,\n removeResizeDown\n }\n}\n","import { watch, nextTick, onBeforeUnmount } from 'vue'\nimport { TransitionState } from './transitionState'\n\n// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n\nexport function useLockScroll({ props, vfmContainer, modalTransitionState }) {\n watch(() => props.lockScroll, handleLockScroll)\n\n watch(modalTransitionState, state => {\n if (state === TransitionState.Leave) {\n enable()\n }\n })\n\n onBeforeUnmount(() => {\n enable()\n })\n\n function handleLockScroll() {\n if (!props.modelValue) return\n nextTick(() => {\n props.lockScroll ? disable() : enable()\n })\n }\n\n function enable() {\n props.lockScroll && vfmContainer.value && enableBodyScroll(vfmContainer.value)\n }\n\n function disable() {\n vfmContainer.value &&\n disableBodyScroll(vfmContainer.value, {\n reserveScrollBarGap: true\n })\n }\n\n return { handleLockScroll }\n}\n","\n\n\n\n\n","\n\n\n\n\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","\n\n\n","\n\n\n","import VueFinalModalComponent from './VueFinalModal.vue'\nimport ModalsContainerComponent from './ModalsContainer.vue'\nimport { markRaw, reactive, shallowReactive } from 'vue'\n\nexport class ModalInstance {\n constructor() {\n const bindApi = component => {\n const _component = { ...component, props: { ...component.props } }\n Object.assign(_component.props, {\n api: { type: Object, default: () => this }\n })\n return markRaw(_component)\n }\n\n this.modals = []\n this.openedModals = []\n this.VueFinalModal = bindApi(VueFinalModalComponent)\n\n this.dynamicModals = shallowReactive([])\n this.ModalsContainer = bindApi(ModalsContainerComponent)\n }\n\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n const { show } = this.useModal(modal, args[0])\n return show()\n }\n }\n }\n\n hide(...names) {\n return this.toggle(names, false)\n }\n\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.props.name))\n }\n\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n }\n\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.props.name))\n }\n\n existModal(options) {\n return this.dynamicModals.indexOf(options) !== -1\n }\n\n useModal(_options) {\n let options = reactive({\n value: false,\n component: this.VueFinalModal,\n id: Symbol('useModal'),\n bind: {},\n slots: {},\n on: {},\n ..._options\n })\n\n const show = () => {\n return this.existModal(options)\n ? Promise.resolve('[Vue Final Modal] modal is already opened')\n : new Promise((resolve, reject) => {\n options.value = true\n options.reject = reject\n options.opened = () => {\n resolve('show')\n }\n this.dynamicModals.push(options)\n })\n }\n\n const hide = () => {\n return this.existModal(options)\n ? new Promise((resolve, reject) => {\n options.value = false\n options.rejectClose = reject\n options.closed = () => {\n resolve('hide')\n }\n })\n : Promise.resolve('[Vue Final Modal] modal is already closed')\n }\n\n return { show, hide, options }\n }\n}\n\n/**\n * @description Support create multiple modal instance\n */\nexport const createModalInstance = () => {\n let modalInstance = new ModalInstance()\n return {\n $vfm: modalInstance,\n VueFinalModal: modalInstance.VueFinalModal,\n ModalsContainer: modalInstance.ModalsContainer,\n useModal: modalInstance.useModal.bind(modalInstance)\n }\n}\n\n/**\n * @description Create modal instance by default for directly support `import { $vfm, VueFinalModal, ModalsContainer, useModal } from 'vue-final-modal'`\n */\nconst modalInstance = createModalInstance()\n\nexport const { $vfm, VueFinalModal, ModalsContainer, useModal } = modalInstance\n","import { computed, reactive, ref } from 'vue'\nimport { getPosition, checkPassiveEventSupport } from './dom'\nimport { useEventListener } from '@vueuse/core'\n\nconst SwipeDirection = {\n UP: 'UP',\n RIGHT: 'RIGHT',\n DOWN: 'DOWN',\n LEFT: 'LEFT',\n NONE: 'NONE'\n}\n\nexport function useSwipeable(el, { threshold = 50, onSwipeStart, onSwipe, onSwipeEnd, passive = true }) {\n const coordsStart = reactive({ x: 0, y: 0 })\n const coordsEnd = reactive({ x: 0, y: 0 })\n\n const diffX = computed(() => coordsStart.x - coordsEnd.x)\n const diffY = computed(() => coordsStart.y - coordsEnd.y)\n\n const { max, abs } = Math\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold)\n const isSwiping = ref(false)\n\n const direction = computed(() => {\n if (!isThresholdExceeded.value) return SwipeDirection.NONE\n\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT\n } else {\n return diffY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN\n }\n })\n\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x\n coordsStart.y = y\n }\n\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x\n coordsEnd.y = y\n }\n\n let listenerOptions\n\n const isPassiveEventSupported = checkPassiveEventSupport(window?.document)\n\n if (!passive) {\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true }\n } else {\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false }\n }\n\n let events\n function pointerStart(e) {\n if (listenerOptions.capture && !listenerOptions.passive) {\n e.preventDefault()\n }\n const { x, y } = getPosition(e)\n updateCoordsStart(x, y)\n updateCoordsEnd(x, y)\n onSwipeStart?.(e)\n\n events = [\n useEventListener(el, 'mousemove', pointerMove, listenerOptions),\n useEventListener(el, 'touchmove', pointerMove, listenerOptions),\n useEventListener(el, 'mouseup', pointerEnd, listenerOptions),\n useEventListener(el, 'touchend', pointerEnd, listenerOptions),\n useEventListener(el, 'touchcancel', pointerEnd, listenerOptions)\n ]\n }\n\n function pointerMove(e) {\n const { x, y } = getPosition(e)\n updateCoordsEnd(x, y)\n if (!isSwiping.value && isThresholdExceeded.value) {\n isSwiping.value = true\n }\n if (isSwiping.value) {\n onSwipe?.(e)\n }\n }\n\n function pointerEnd(e) {\n if (isSwiping.value) {\n onSwipeEnd?.(e, direction.value)\n }\n\n isSwiping.value = false\n\n events.forEach(s => s())\n }\n\n const stops = [\n useEventListener(el, 'mousedown', pointerStart, listenerOptions),\n useEventListener(el, 'touchstart', pointerStart, listenerOptions)\n ]\n\n const stop = () => {\n stops.forEach(s => s())\n events.forEach(s => s())\n }\n\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n }\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"names":["TransitionState","useTransitionState","state","ref","listeners","beforeEnter","value","afterEnter","beforeLeave","afterLeave","isFocused","element","document","activeElement","FocusTrap","constructor","this","root","elements","onKeyDown","bind","lastElement","length","firstElement","isEnabled","event","key","keyCode","isTabPressed","shiftKey","focus","preventDefault","enable","selector","querySelectorAll","addEventListener","disable","removeEventListener","focusTrap","useFocusTrap","props","vfmContainer","modalTransitionState","watch","focusRetain","enabled","noop","looseFocus","body","blur","getPosition","e","clientX","x","clientY","y","targetTouches","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","resizeCursor","t","tr","r","br","b","bl","l","tl","clamp","min","num","max","Math","trimPx","distance","Number","replace","useDragResize","visible","vfmContent","vfmResize","onEvent","resizeVisible","dragResizeStyle","pointerDown","stopPropagation","STATE_RESIZE","STATE_DRAG","direction","target","getAttribute","_state","dragSelector","includes","validDragElement","rectContainer","getBoundingClientRect","rectContent","isAbsolute","window","getComputedStyle","position","top","left","limit","fitParent","absolute","minTop","minLeft","maxTop","height","maxLeft","width","relative","bottom","right","resetBodyCursor","cacheStyle","style","setStyle","moving","offset","setOffset","dir","offsetAxis","axis","edge","minEdge","getEdge","maxEdge","getOffsetAxis","edgeName","getDirectionInfo","isPositive","rectContentEdge","positionOffset","EdgeName","s","charAt","toUpperCase","slice","directions","_offset","split","forEach","directionInfo","getResizeOffset","margin","touchAction","transform","end","setTimeout","addDragDown","removeDragDown","addResizeDown","nextTick","removeResizeDown","val","drag","resize","keepChangedStyle","hasPassiveEvents","passiveTestOptions","isIosDevice","navigator","platform","test","maxTouchPoints","previousBodyOverflowSetting","previousBodyPaddingRight","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","nodeType","Node","ELEMENT_NODE","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","touches","disableBodyScroll","targetElement","options","console","error","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","getPropertyValue","paddingRight","overflow","setOverflowHidden","enableBodyScroll","filter","useLockScroll","handleLockScroll","modelValue","lockScroll","onBeforeUnmount","inheritAttrs","name","String","default","Boolean","displayDirective","validator","indexOf","classes","Object","Array","overlayClass","contentClass","styles","overlayStyle","contentStyle","hideOverlay","clickToClose","escToClose","nonModal","attach","transition","overlayTransition","zIndexAuto","zIndexBase","zIndex","resizeDirections","minWidth","minHeight","maxWidth","Infinity","maxHeight","emits","setup","emit","uid","Symbol","vfmOverlayTransition","vfmTransition","modalStackIndex","visibility","reactive","modal","overlay","overlayTransitionState","overlayListeners","modalListeners","_stopEvent","lastMousedownEl","resolveToggle","rejectToggle","computedOverlayTransition","computed","computedTransition","isComponentReadyToBeDestroyed","calculateZIndex","bindStyle","bindContentStyle","isArray","getModalInfo","getAttachElement","toggle","mounted","createModalEvent","emitEvent","appendChild","index","api","openedModals","findIndex","vm","splice","warn","concat","close","$_vm","querySelector","eventProps","eventType","stopEvent","stop","show","Promise","resolve","reject","res","err","display","flush","modals","onMounted","remove","onMousedown","onMouseupContainer","onEsc","class","styleInject","css","insertAt","head","getElementsByTagName","createElement","firstChild","insertBefore","styleSheet","cssText","createTextNode","$props","$setup","_createElementBlock","_mergeProps","_ctx","onKeydown","_createVNode","_toHandlers","_createElementVNode","toString","role","tabindex","onMouseup","_renderSlot","_hoisted_2","methods","dynamicModals","closed","beforeClose","rejectClose","beforeOpen","$nextTick","isString","_hoisted_1","_createBlock","component","id","on","on_beforeClose","$options","on_closed","on_beforeOpen","on_opened","opened","slots","slot","_createCommentVNode","innerHTML","ModalInstance","bindApi","_component","assign","markRaw","VueFinalModal","VueFinalModalComponent","shallowReactive","ModalsContainer","ModalsContainerComponent","args","useModal","hide","names","hideAll","map","get","allSettled","existModal","_options","createModalInstance","modalInstance","$vfm","SwipeDirection","useSwipeable","threshold","onSwipeStart","onSwipe","onSwipeEnd","coordsStart","coordsEnd","diffX","diffY","abs","isThresholdExceeded","isSwiping","updateCoordsEnd","listenerOptions","isPassiveEventSupported","supportsPassive","optionsBlock","checkPassiveEventSupport","events","pointerStart","capture","updateCoordsStart","useEventListener","pointerMove","pointerEnd","stops","lengthX","lengthY","attrs","useAttrs","bottomSheetEl","offsetY","isCollapsed","stopSelectionChange","shouldCloseModal","swipeStart","allowSwipe","getSelection","Date","getTime","canSwipe","swipeToCloseDirection","offsetHeight","swipeEnd","validDirection","validDistance","allow","newValue","oldValue","modalContent","offsetX","add","_offsetX","offsetWidth","scrollLeft"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"VueFinalModal.esm.js","sources":["../src/utils/transitionState.js","../src/utils/focusTrap.js","../src/utils/index.js","../src/utils/dom.js","../src/utils/dragResize.js","../src/utils/bodyScrollLock.js","../src/VueFinalModal.vue","../src/VueFinalModal.vue?vue&type=template&id=72c09f54&lang.js","../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/ModalsContainer.vue","../src/ModalsContainer.vue?vue&type=template&id=437c4752&lang.js","../src/modalInstance.js","../src/utils/swipeable.js","../src/hoc/VBottomSheet.vue","../src/hoc/VFullScreen.vue"],"sourcesContent":["import { ref } from 'vue'\n\nexport const TransitionState = {\n Enter: 'enter',\n Entering: 'entering',\n Leave: 'leave',\n Leaving: 'leavng'\n}\n\nexport const useTransitionState = () => {\n const state = ref(null)\n\n const listeners = {\n beforeEnter() {\n state.value = TransitionState.Entering\n },\n afterEnter() {\n state.value = TransitionState.Enter\n },\n beforeLeave() {\n state.value = TransitionState.Leaving\n },\n afterLeave() {\n state.value = TransitionState.Leave\n }\n }\n\n return {\n state,\n listeners\n }\n}\n","import { watch } from 'vue'\nimport { TransitionState } from './transitionState'\n\n// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n }\n\n /**\n * Get last Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n /**\n * Get first Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get firstElement() {\n return this.elements[0] || null\n }\n\n /**\n * Get whether the trap is enabled\n *\n * @return {boolean} isEnabled\n */\n get isEnabled() {\n return !!this.root\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement)) {\n this.lastElement.focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement)) {\n this.firstElement.focus()\n event.preventDefault()\n return\n }\n }\n\n /**\n * Enable focus trap\n *\n * @param {HTMLElement} root - the focus trap root element\n */\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n /**\n * Disable focus trap\n */\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\n/**\n * @type {FocusTrap | null}\n */\nlet focusTrap = null\n\n/**\n * Get FocusTrap focusTrap\n *\n * @returns {FocusTrap} focusTrap\n */\nexport function useFocusTrap({ props, vfmContainer, modalTransitionState }) {\n if (focusTrap == null) {\n focusTrap = new FocusTrap()\n }\n\n watch(modalTransitionState, state => {\n switch (state) {\n case TransitionState.Enter:\n if (props.focusRetain || props.focusTrap) {\n vfmContainer.value.focus()\n }\n props.focusTrap && focusTrap.enable(vfmContainer.value)\n break\n case TransitionState.Leaving:\n if (focusTrap.enabled) {\n focusTrap.disable()\n }\n break\n }\n })\n\n return { focusTrap }\n}\n","export const noop = () => {}\n","import { noop } from './index'\n\nexport const looseFocus = () => {\n const element = document.activeElement\n if (element && element !== document.body) {\n element.blur()\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\n\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n\nexport function checkPassiveEventSupport(document) {\n if (!document) return false\n let supportsPassive = false\n const optionsBlock = {\n get passive() {\n supportsPassive = true\n return false\n }\n }\n document.addEventListener('x', noop, optionsBlock)\n document.removeEventListener('x', noop)\n return supportsPassive\n}\n","import { watch, ref, nextTick } from 'vue'\nimport { TransitionState } from './transitionState'\nimport { addListener, removeListener, getPosition } from './dom'\n\nconst resizeCursor = {\n t: 'ns-resize',\n tr: 'nesw-resize',\n r: 'ew-resize',\n br: 'nwse-resize',\n b: 'ns-resize',\n bl: 'nesw-resize',\n l: 'ew-resize',\n tl: 'nwse-resize'\n}\n\nexport const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nexport function useDragResize({\n props,\n visible,\n vfmContainer,\n vfmContent,\n vfmResize,\n modalTransitionState,\n onEvent = () => {}\n}) {\n const resizeVisible = ref(false)\n const state = ref(null)\n const dragResizeStyle = ref({})\n\n watch(modalTransitionState, val => {\n switch (val) {\n case TransitionState.Enter:\n props.drag && addDragDown()\n props.resize && addResizeDown()\n break\n case TransitionState.Leave:\n if (!props.keepChangedStyle) {\n dragResizeStyle.value = {}\n }\n break\n }\n })\n\n watch(\n () => props.drag,\n val => {\n if (visible.value) {\n val ? addDragDown() : removeDragDown()\n }\n }\n )\n\n watch(\n () => props.resize,\n val => {\n if (visible.value) {\n val ? addResizeDown() : removeResizeDown()\n }\n }\n )\n\n watch(\n () => props.keepChangedStyle,\n val => {\n if (!val) {\n dragResizeStyle.value = {}\n }\n }\n )\n\n function pointerDown(e) {\n e.stopPropagation()\n const STATE_RESIZE = 'resize'\n const STATE_DRAG = 'drag'\n const direction = e.target.getAttribute('direction')\n let _state\n if (direction) {\n _state = STATE_RESIZE\n } else if (validDragElement(e, vfmContent.value, props.dragSelector)) {\n _state = STATE_DRAG\n } else {\n return\n }\n state.value = `${_state}:start`\n onEvent?.(e)\n const down = getPosition(e)\n const rectContainer = vfmContainer.value.getBoundingClientRect()\n const rectContent = vfmContent.value.getBoundingClientRect()\n const isAbsolute = window.getComputedStyle(vfmContent.value).position === 'absolute'\n const position = {\n top: trimPx(dragResizeStyle.value.top),\n left: trimPx(dragResizeStyle.value.left)\n }\n const limit = (() => {\n if (props.fitParent) {\n const limit = {\n absolute() {\n return {\n minTop: 0,\n minLeft: 0,\n maxTop: rectContainer.height - rectContent.height,\n maxLeft: rectContainer.width - rectContent.width\n }\n },\n relative() {\n return {\n minTop: position.top + rectContainer.top - rectContent.top,\n minLeft: position.left + rectContainer.left - rectContent.left,\n maxTop: position.top + rectContainer.bottom - rectContent.bottom,\n maxLeft: position.left + rectContainer.right - rectContent.right\n }\n }\n }\n return isAbsolute ? limit.absolute() : limit.relative()\n } else {\n return {}\n }\n })()\n const resetBodyCursor = _state === STATE_RESIZE && setStyle(document.body, 'cursor', resizeCursor[direction])\n\n const moving = e => {\n // onPointerMove\n e.stopPropagation()\n state.value = `${_state}:move`\n onEvent?.(e)\n const move = getPosition(e)\n let offset = {\n x: move.x - down.x,\n y: move.y - down.y\n }\n if (_state === STATE_RESIZE) {\n offset = getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute)\n }\n\n let top\n let left\n if (isAbsolute) {\n top = rectContent.top - rectContainer.top + offset.y\n left = rectContent.left - rectContainer.left + offset.x\n } else {\n top = position.top + offset.y\n left = position.left + offset.x\n }\n if (_state === STATE_DRAG && props.fitParent) {\n top = clamp(limit.minTop, top, limit.maxTop)\n left = clamp(limit.minLeft, left, limit.maxLeft)\n }\n const style = {\n position: 'relative',\n top: top + 'px',\n left: left + 'px',\n margin: 'unset',\n touchAction: 'none',\n ...(isAbsolute && {\n position: 'absolute',\n transform: 'unset',\n width: rectContent.width + 'px',\n height: rectContent.height + 'px'\n }),\n ...(offset.width && { width: offset.width + 'px' }),\n ...(offset.height && { height: offset.height + 'px' })\n }\n\n dragResizeStyle.value = {\n ...dragResizeStyle.value,\n ...style\n }\n }\n const end = e => {\n // onPointerUp\n e.stopPropagation()\n if (_state === STATE_RESIZE) {\n resetBodyCursor && resetBodyCursor()\n }\n // Excute onMouseupContainer before trigger onEvent\n setTimeout(() => {\n state.value = `${_state}:end`\n onEvent?.(e)\n })\n removeListener('move', document, moving)\n removeListener('up', document, end)\n }\n addListener('move', document, moving)\n addListener('up', document, end)\n }\n function addDragDown() {\n addListener('down', vfmContent.value, pointerDown)\n dragResizeStyle.value.touchAction = 'none'\n }\n function removeDragDown() {\n removeListener('down', vfmContent.value, pointerDown)\n }\n function addResizeDown() {\n resizeVisible.value = true\n nextTick(() => {\n addListener('down', vfmResize.value, pointerDown)\n })\n }\n function removeResizeDown() {\n removeListener('down', vfmResize.value, pointerDown)\n resizeVisible.value = false\n }\n function getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute) {\n const setOffset = dir => {\n let offsetAxis = offset[dir.axis]\n offsetAxis = props.fitParent ? clamp(dir.min, offsetAxis, dir.max) : offsetAxis\n let edge = clamp(dir.minEdge, dir.getEdge(offsetAxis), dir.maxEdge)\n offsetAxis = dir.getOffsetAxis(edge, isAbsolute)\n return {\n [dir.edgeName]: edge,\n [dir.axis]: offsetAxis\n }\n }\n\n const getDirectionInfo = (position, edgeName, axis, isPositive) => {\n const rectContentEdge = rectContent[edgeName]\n const positionOffset = rectContainer[position] - rectContent[position]\n const EdgeName = capitalize(edgeName)\n return {\n axis,\n edgeName,\n min: isPositive ? positionOffset : -rectContentEdge,\n max: isPositive ? rectContentEdge : positionOffset,\n minEdge: props[`min${EdgeName}`],\n maxEdge: props[`max${EdgeName}`],\n getEdge: offsetAxis => rectContent[edgeName] - offsetAxis * (isPositive ? 1 : -1),\n getOffsetAxis: (edge, isAbsolute) => {\n const offsetAxis = rectContent[edgeName] - edge\n if (isAbsolute) {\n return isPositive ? offsetAxis : 0\n } else {\n return ((isPositive ? 1 : -1) * offsetAxis) / 2\n }\n }\n }\n }\n\n const directions = {\n t: ['top', 'height', 'y', true],\n b: ['bottom', 'height', 'y', false],\n l: ['left', 'width', 'x', true],\n r: ['right', 'width', 'x', false]\n }\n\n let _offset = { x: 0, y: 0 }\n direction.split('').forEach(dir => {\n const directionInfo = getDirectionInfo(...directions[dir])\n _offset = {\n ..._offset,\n ...setOffset(directionInfo)\n }\n })\n return _offset\n }\n\n return {\n resizeVisible,\n state,\n dragResizeStyle,\n removeDragDown,\n removeResizeDown\n }\n}\n","import { watch, nextTick, onBeforeUnmount } from 'vue'\nimport { TransitionState } from './transitionState'\n\n// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n\nexport function useLockScroll({ props, vfmContainer, modalTransitionState }) {\n watch(() => props.lockScroll, handleLockScroll)\n\n watch(modalTransitionState, state => {\n if (state === TransitionState.Leave) {\n enable()\n }\n })\n\n onBeforeUnmount(() => {\n enable()\n })\n\n function handleLockScroll() {\n if (!props.modelValue) return\n nextTick(() => {\n props.lockScroll ? disable() : enable()\n })\n }\n\n function enable() {\n props.lockScroll && vfmContainer.value && enableBodyScroll(vfmContainer.value)\n }\n\n function disable() {\n vfmContainer.value &&\n disableBodyScroll(vfmContainer.value, {\n reserveScrollBarGap: true\n })\n }\n\n return { handleLockScroll }\n}\n","\n\n\n\n\n","\n\n\n\n\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","\n\n\n","\n\n\n","import VueFinalModalComponent from './VueFinalModal.vue'\nimport ModalsContainerComponent from './ModalsContainer.vue'\nimport { markRaw, reactive, shallowReactive } from 'vue'\n\nexport class ModalInstance {\n constructor() {\n const bindApi = component => {\n const _component = { ...component, props: { ...component.props } }\n Object.assign(_component.props, {\n api: { type: Object, default: () => this }\n })\n return markRaw(_component)\n }\n\n this.modals = []\n this.openedModals = []\n this.VueFinalModal = bindApi(VueFinalModalComponent)\n\n this.dynamicModals = shallowReactive([])\n this.ModalsContainer = bindApi(ModalsContainerComponent)\n }\n\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n const { show } = this.useModal(modal, args[0])\n return show()\n }\n }\n }\n\n hide(...names) {\n return this.toggle(names, false)\n }\n\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.props.name))\n }\n\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n }\n\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.props.name))\n }\n\n existModal(options) {\n return this.dynamicModals.indexOf(options) !== -1\n }\n\n useModal(_options) {\n let options = reactive({\n value: false,\n component: this.VueFinalModal,\n id: Symbol('useModal'),\n bind: {},\n slots: {},\n on: {},\n ..._options\n })\n\n const show = () => {\n return this.existModal(options)\n ? Promise.resolve('[Vue Final Modal] modal is already opened')\n : new Promise((resolve, reject) => {\n options.value = true\n options.reject = reject\n options.opened = () => {\n resolve('show')\n }\n this.dynamicModals.push(options)\n })\n }\n\n const hide = () => {\n return this.existModal(options)\n ? new Promise((resolve, reject) => {\n options.value = false\n options.rejectClose = reject\n options.closed = () => {\n resolve('hide')\n }\n })\n : Promise.resolve('[Vue Final Modal] modal is already closed')\n }\n\n return { show, hide, options }\n }\n}\n\n/**\n * @description Support create multiple modal instance\n */\nexport const createModalInstance = () => {\n let modalInstance = new ModalInstance()\n return {\n $vfm: modalInstance,\n VueFinalModal: modalInstance.VueFinalModal,\n ModalsContainer: modalInstance.ModalsContainer,\n useModal: modalInstance.useModal.bind(modalInstance)\n }\n}\n\n/**\n * @description Create modal instance by default for directly support `import { $vfm, VueFinalModal, ModalsContainer, useModal } from 'vue-final-modal'`\n */\nconst modalInstance = createModalInstance()\n\nexport const { $vfm, VueFinalModal, ModalsContainer, useModal } = modalInstance\n","import { computed, reactive, ref } from 'vue'\nimport { getPosition, checkPassiveEventSupport } from './dom'\nimport { useEventListener } from '@vueuse/core'\n\nconst SwipeDirection = {\n UP: 'UP',\n RIGHT: 'RIGHT',\n DOWN: 'DOWN',\n LEFT: 'LEFT',\n NONE: 'NONE'\n}\n\nexport function useSwipeable(el, { threshold = 50, onSwipeStart, onSwipe, onSwipeEnd, passive = true }) {\n const coordsStart = reactive({ x: 0, y: 0 })\n const coordsEnd = reactive({ x: 0, y: 0 })\n\n const diffX = computed(() => coordsStart.x - coordsEnd.x)\n const diffY = computed(() => coordsStart.y - coordsEnd.y)\n\n const { max, abs } = Math\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold)\n const isSwiping = ref(false)\n\n const direction = computed(() => {\n if (!isThresholdExceeded.value) return SwipeDirection.NONE\n\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT\n } else {\n return diffY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN\n }\n })\n\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x\n coordsStart.y = y\n }\n\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x\n coordsEnd.y = y\n }\n\n let listenerOptions\n\n const isPassiveEventSupported = checkPassiveEventSupport(window?.document)\n\n if (!passive) {\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true }\n } else {\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false }\n }\n\n let events\n function pointerStart(e) {\n if (listenerOptions.capture && !listenerOptions.passive) {\n e.preventDefault()\n }\n const { x, y } = getPosition(e)\n updateCoordsStart(x, y)\n updateCoordsEnd(x, y)\n onSwipeStart?.(e)\n\n events = [\n useEventListener(el, 'mousemove', pointerMove, listenerOptions),\n useEventListener(el, 'touchmove', pointerMove, listenerOptions),\n useEventListener(el, 'mouseup', pointerEnd, listenerOptions),\n useEventListener(el, 'touchend', pointerEnd, listenerOptions),\n useEventListener(el, 'touchcancel', pointerEnd, listenerOptions)\n ]\n }\n\n function pointerMove(e) {\n const { x, y } = getPosition(e)\n updateCoordsEnd(x, y)\n if (!isSwiping.value && isThresholdExceeded.value) {\n isSwiping.value = true\n }\n if (isSwiping.value) {\n onSwipe?.(e)\n }\n }\n\n function pointerEnd(e) {\n if (isSwiping.value) {\n onSwipeEnd?.(e, direction.value)\n }\n\n isSwiping.value = false\n\n events.forEach(s => s())\n }\n\n const stops = [\n useEventListener(el, 'mousedown', pointerStart, listenerOptions),\n useEventListener(el, 'touchstart', pointerStart, listenerOptions)\n ]\n\n const stop = () => {\n stops.forEach(s => s())\n events.forEach(s => s())\n }\n\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n }\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"names":["TransitionState","useTransitionState","state","ref","listeners","beforeEnter","value","afterEnter","beforeLeave","afterLeave","isFocused","element","document","activeElement","FocusTrap","constructor","this","root","elements","onKeyDown","bind","lastElement","length","firstElement","isEnabled","event","key","keyCode","isTabPressed","shiftKey","focus","preventDefault","enable","selector","querySelectorAll","addEventListener","disable","removeEventListener","focusTrap","useFocusTrap","props","vfmContainer","modalTransitionState","watch","focusRetain","enabled","noop","looseFocus","body","blur","getPosition","e","clientX","x","clientY","y","targetTouches","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","resizeCursor","t","tr","r","br","b","bl","l","tl","clamp","min","num","max","Math","trimPx","distance","Number","replace","useDragResize","visible","vfmContent","vfmResize","onEvent","resizeVisible","dragResizeStyle","pointerDown","stopPropagation","STATE_RESIZE","STATE_DRAG","direction","target","getAttribute","_state","dragSelector","includes","validDragElement","rectContainer","getBoundingClientRect","rectContent","isAbsolute","window","getComputedStyle","position","top","left","limit","fitParent","absolute","minTop","minLeft","maxTop","height","maxLeft","width","relative","bottom","right","resetBodyCursor","cacheStyle","style","setStyle","moving","offset","setOffset","dir","offsetAxis","axis","edge","minEdge","getEdge","maxEdge","getOffsetAxis","edgeName","getDirectionInfo","isPositive","rectContentEdge","positionOffset","EdgeName","s","charAt","toUpperCase","slice","directions","_offset","split","forEach","directionInfo","getResizeOffset","margin","touchAction","transform","end","setTimeout","addDragDown","removeDragDown","addResizeDown","nextTick","removeResizeDown","val","drag","resize","keepChangedStyle","hasPassiveEvents","passiveTestOptions","isIosDevice","navigator","platform","test","maxTouchPoints","previousBodyOverflowSetting","previousBodyPaddingRight","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","nodeType","Node","ELEMENT_NODE","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","touches","disableBodyScroll","targetElement","options","console","error","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","getPropertyValue","paddingRight","overflow","setOverflowHidden","enableBodyScroll","filter","useLockScroll","handleLockScroll","modelValue","lockScroll","onBeforeUnmount","inheritAttrs","name","String","default","Boolean","displayDirective","validator","indexOf","classes","Object","Array","overlayClass","contentClass","styles","overlayStyle","contentStyle","hideOverlay","clickToClose","escToClose","nonModal","attach","transition","overlayTransition","zIndexAuto","zIndexBase","zIndex","resizeDirections","minWidth","minHeight","maxWidth","Infinity","maxHeight","emits","setup","emit","uid","Symbol","vfmOverlayTransition","vfmTransition","modalStackIndex","visibility","reactive","modal","overlay","overlayTransitionState","overlayListeners","modalListeners","_stopEvent","lastMousedownEl","resolveToggle","rejectToggle","computedOverlayTransition","computed","computedTransition","isComponentReadyToBeDestroyed","calculateZIndex","bindStyle","bindContentStyle","isArray","getModalInfo","getAttachElement","toggle","mounted","createModalEvent","emitEvent","appendChild","index","api","openedModals","findIndex","vm","splice","warn","concat","close","$_vm","querySelector","eventProps","eventType","stopEvent","stop","show","Promise","resolve","reject","res","err","display","flush","modals","onMounted","remove","onMousedown","onMouseupContainer","onEsc","class","styleInject","css","insertAt","head","getElementsByTagName","createElement","firstChild","insertBefore","styleSheet","cssText","createTextNode","$props","$setup","_createElementBlock","_mergeProps","_ctx","onKeydown","_createVNode","_toHandlers","_createElementVNode","toString","role","tabindex","onMouseup","_renderSlot","_hoisted_2","methods","dynamicModals","closed","beforeClose","rejectClose","beforeOpen","$nextTick","isString","_hoisted_1","_createBlock","component","id","on","on_beforeClose","$options","on_closed","on_beforeOpen","on_opened","opened","slots","slot","_createCommentVNode","innerHTML","ModalInstance","bindApi","_component","assign","markRaw","VueFinalModal","VueFinalModalComponent","shallowReactive","ModalsContainer","ModalsContainerComponent","args","useModal","hide","names","hideAll","map","get","allSettled","existModal","_options","createModalInstance","modalInstance","$vfm","SwipeDirection","useSwipeable","threshold","onSwipeStart","onSwipe","onSwipeEnd","coordsStart","coordsEnd","diffX","diffY","abs","isThresholdExceeded","isSwiping","updateCoordsEnd","listenerOptions","isPassiveEventSupported","supportsPassive","optionsBlock","checkPassiveEventSupport","events","pointerStart","capture","updateCoordsStart","useEventListener","pointerMove","pointerEnd","stops","lengthX","lengthY","attrs","useAttrs","bottomSheetEl","offsetY","isCollapsed","stopSelectionChange","shouldCloseModal","swipeStart","allowSwipe","getSelection","Date","getTime","canSwipe","swipeToCloseDirection","offsetHeight","swipeEnd","validDirection","validDistance","allow","newValue","oldValue","modalContent","offsetX","add","_offsetX","offsetWidth","scrollLeft"],"mappings":"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"} \ No newline at end of file diff --git a/packages/lib/dist/VueFinalModal.umd.js b/packages/lib/dist/VueFinalModal.umd.js index e0f9ec6c..7c3d11fa 100644 --- a/packages/lib/dist/VueFinalModal.umd.js +++ b/packages/lib/dist/VueFinalModal.umd.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue"),require("@vueuse/core")):"function"==typeof define&&define.amd?define(["exports","vue","@vueuse/core"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VueFinalModal={},e.Vue,e.VueUse)}(this,(function(e,t,n){"use strict";const o="enter",a="entering",i="leave",l="leavng",s=()=>{const e=t.ref(null),n={beforeEnter(){e.value=a},afterEnter(){e.value=o},beforeLeave(){e.value=l},afterLeave(){e.value=i}};return{state:e,listeners:n}},r=e=>e==document.activeElement;class d{constructor(){this.root=null,this.elements=[],this.onKeyDown=this.onKeyDown.bind(this)}get lastElement(){return this.elements[this.elements.length-1]||null}get firstElement(){return this.elements[0]||null}get isEnabled(){return!!this.root}onKeyDown(e){if((e=>"Tab"===e.key||9===e.keyCode)(e)){if(!e.shiftKey)return!document.activeElement||r(this.lastElement)?(this.firstElement.focus(),void e.preventDefault()):void 0;r(this.firstElement)&&(this.lastElement.focus(),e.preventDefault())}}enable(e){e&&(this.root=e,this.elements=((e,t)=>[...e.querySelectorAll(t)||[]])(this.root,'button:not([disabled]), select:not([disabled]), a[href]:not([disabled]), area[href]:not([disabled]), [contentEditable=""]:not([disabled]), [contentEditable="true"]:not([disabled]), [contentEditable="TRUE"]:not([disabled]), textarea:not([disabled]), iframe:not([disabled]), input:not([disabled]), summary:not([disabled]), [tabindex]:not([tabindex="-1"])'),this.root.addEventListener("keydown",this.onKeyDown))}disable(){this.root.removeEventListener("keydown",this.onKeyDown),this.root=null}}let u=null;function c({props:e,vfmContainer:n,modalTransitionState:a}){return null==u&&(u=new d),t.watch(a,(t=>{switch(t){case o:(e.focusRetain||e.focusTrap)&&n.value.focus(),e.focusTrap&&u.enable(n.value);break;case l:u.enabled&&u.disable()}})),{focusTrap:u}}const f=()=>{},m=()=>{const e=document.activeElement;e&&e!==document.body&&e.blur()},v=e=>{const{clientX:t,clientY:n}=e.targetTouches?e.targetTouches[0]:e;return{x:t,y:n}},p={down:{pc:"mousedown",m:"touchstart"},move:{pc:"mousemove",m:"touchmove"},up:{pc:"mouseup",m:"touchend"}},h=(e,t,n)=>{t&&t.addEventListener(p[e].pc,n),t&&t.addEventListener(p[e].m,n,{passive:!1})},y=(e,t,n)=>{t&&t.removeEventListener(p[e].pc,n),t&&t.removeEventListener(p[e].m,n)};const w={t:"ns-resize",tr:"nesw-resize",r:"ew-resize",br:"nwse-resize",b:"ns-resize",bl:"nesw-resize",l:"ew-resize",tl:"nwse-resize"},b=(e,t,n)=>("number"!=typeof e&&(e=Math.min(t,n)||t),"number"!=typeof n&&(n=Math.max(t,e)),Math.min(Math.max(t,e),n)),g=e=>e&&Number(e.replace(/px$/,""))||0;function x({props:e,visible:n,vfmContainer:a,vfmContent:l,vfmResize:s,modalTransitionState:r,onEvent:d=(()=>{})}){const u=t.ref(!1),c=t.ref(null),f=t.ref({});function m(t){t.stopPropagation();const n="resize",o="drag",i=t.target.getAttribute("direction");let s;if(i)s=n;else{if(!((e,t,n)=>""===n||[...t.querySelectorAll(n)].includes(e.target))(t,l.value,e.dragSelector))return;s=o}c.value=`${s}:start`,d?.(t);const r=v(t),u=a.value.getBoundingClientRect(),m=l.value.getBoundingClientRect(),p="absolute"===window.getComputedStyle(l.value).position,x=g(f.value.top),S=g(f.value.left),k=(()=>{if(e.fitParent){const e={absolute:()=>({minTop:0,minLeft:0,maxTop:u.height-m.height,maxLeft:u.width-m.width}),relative:()=>({minTop:x+u.top-m.top,minLeft:S+u.left-m.left,maxTop:x+u.bottom-m.bottom,maxLeft:S+u.right-m.right})};return p?e.absolute():e.relative()}return{}})(),T=s===n&&((e,t,n)=>{const o=e.style[t];return e.style[t]=n,()=>{e.style[t]=o}})(document.body,"cursor",w[i]),E=t=>{t.stopPropagation(),c.value=`${s}:move`,d?.(t);const a=v(t);let l,h,y={x:a.x-r.x,y:a.y-r.y};s===n&&(y=function(t,n,o,a,i){const l=t=>{let o=n[t.axis];o=e.fitParent?b(t.min,o,t.max):o;let a=b(t.minEdge,t.getEdge(o),t.maxEdge);return o=t.getOffsetAxis(a,i),{[t.edgeName]:a,[t.axis]:o}},s=(t,n,i,l)=>{const s=a[n],r=o[t]-a[t],d=(u=n).charAt(0).toUpperCase()+u.slice(1);var u;return{axis:i,edgeName:n,min:l?r:-s,max:l?s:r,minEdge:e[`min${d}`],maxEdge:e[`max${d}`],getEdge:e=>a[n]-e*(l?1:-1),getOffsetAxis:(e,t)=>{const o=a[n]-e;return t?l?o:0:(l?1:-1)*o/2}}},r={t:["top","height","y",!0],b:["bottom","height","y",!1],l:["left","width","x",!0],r:["right","width","x",!1]};let d={x:0,y:0};return t.split("").forEach((e=>{const t=s(...r[e]);d={...d,...l(t)}})),d}(i,y,u,m,p)),p?(l=m.top-u.top+y.y,h=m.left-u.left+y.x):(l=x+y.y,h=S+y.x),s===o&&e.fitParent&&(l=b(k.minTop,l,k.maxTop),h=b(k.minLeft,h,k.maxLeft));const w={position:"relative",top:l+"px",left:h+"px",margin:"unset",touchAction:"none",...p&&{position:"absolute",transform:"unset",width:m.width+"px",height:m.height+"px"},...y.width&&{width:y.width+"px"},...y.height&&{height:y.height+"px"}};f.value={...f.value,...w}},C=e=>{e.stopPropagation(),s===n&&T&&T(),setTimeout((()=>{c.value=`${s}:end`,d?.(e)})),y("move",document,E),y("up",document,C)};h("move",document,E),h("up",document,C)}function p(){h("down",l.value,m),f.value.touchAction="none"}function x(){y("down",l.value,m)}function S(){u.value=!0,t.nextTick((()=>{h("down",s.value,m)}))}function k(){y("down",s.value,m),u.value=!1}return t.watch(r,(t=>{switch(t){case o:e.drag&&p(),e.resize&&S();break;case i:e.keepChangedStyle||(f.value={})}})),t.watch((()=>e.drag),(e=>{n.value&&(e?p():x())})),t.watch((()=>e.resize),(e=>{n.value&&(e?S():k())})),t.watch((()=>e.keepChangedStyle),(e=>{e||(f.value={})})),{resizeVisible:u,state:c,dragResizeStyle:f,removeDragDown:x,removeResizeDown:k}}let S=!1;if("undefined"!=typeof window){const e={get passive(){S=!0}};window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}const k="undefined"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1);let T,E,C=[],M=!1,z=0,L=-1;const D=(e,t)=>{let n=!1;return(e=>{const t=[];for(;e;){if(t.push(e),e.classList.contains("vfm"))return t;e=e.parentElement}return t})(e).forEach((e=>{(e=>{if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return["auto","scroll"].includes(t.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&((e,t)=>!(0===e.scrollTop&&t<0||e.scrollTop+e.clientHeight+t>=e.scrollHeight&&t>0))(e,t)&&(n=!0)})),n},O=e=>C.some((()=>D(e,-z))),B=e=>{const t=e||window.event;return!!O(t.target)||(t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1))},V=(e,t)=>{if(!e)return void console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");if(C.some((t=>t.targetElement===e)))return;const n={targetElement:e,options:t||{}};C=[...C,n],k?(e.ontouchstart=e=>{1===e.targetTouches.length&&(L=e.targetTouches[0].clientY)},e.ontouchmove=t=>{1===t.targetTouches.length&&((e,t)=>{z=e.targetTouches[0].clientY-L,!O(e.target)&&(t&&0===t.scrollTop&&z>0||(e=>!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight)(t)&&z<0?B(e):e.stopPropagation())})(t,e)},M||(document.addEventListener("touchmove",B,S?{passive:!1}:void 0),M=!0)):(e=>{if(void 0===E){const t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){const e=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);E=document.body.style.paddingRight,document.body.style.paddingRight=`${e+n}px`}}void 0===T&&(T=document.body.style.overflow,document.body.style.overflow="hidden")})(t)},_=e=>{e?(C=C.filter((t=>t.targetElement!==e)),k?(e.ontouchstart=null,e.ontouchmove=null,M&&0===C.length&&(document.removeEventListener("touchmove",B,S?{passive:!1}:void 0),M=!1)):C.length||(void 0!==E&&(document.body.style.paddingRight=E,E=void 0),void 0!==T&&(document.body.style.overflow=T,T=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")};function I({props:e,vfmContainer:n,modalTransitionState:o}){function a(){e.modelValue&&t.nextTick((()=>{e.lockScroll?n.value&&V(n.value,{reserveScrollBarGap:!0}):l()}))}function l(){e.lockScroll&&n.value&&_(n.value)}return t.watch((()=>e.lockScroll),a),t.watch(o,(e=>{e===i&&l()})),t.onBeforeUnmount((()=>{l()})),{handleLockScroll:a}}var R={inheritAttrs:!1,props:{name:{type:String,default:null},modelValue:{type:Boolean,default:!1},displayDirective:{type:String,default:"show",validator:e=>-1!==["if","show"].indexOf(e)},classes:{type:[String,Object,Array],default:""},overlayClass:{type:[String,Object,Array],default:""},contentClass:{type:[String,Object,Array],default:""},styles:{type:[Object,Array],default:()=>({})},overlayStyle:{type:[Object,Array],default:()=>({})},contentStyle:{type:[Object,Array],default:()=>({})},lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},nonModal:{type:Boolean,default:!1},attach:{type:null,default:!1,validator(e){const t=typeof e;return"boolean"===t||"string"===t||e.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:()=>["t","tr","r","br","b","bl","l","tl"],validator:e=>["t","tr","r","br","b","bl","l","tl"].filter((t=>-1!==e.indexOf(t))).length===e.length},minWidth:{type:[Number,String],default:0},minHeight:{type:[Number,String],default:0},maxWidth:{type:[Number,String],default:1/0},maxHeight:{type:[Number,String],default:1/0}},emits:["update:modelValue","click-outside","before-open","opened","_before-close","before-close","closed","_before-open","_opened","_closed","drag:start","drag:move","drag:end","resize:start","resize:move","resize:end"],setup(e,{emit:n}){const a=Symbol("vfm"),l=t.ref(null),r=t.ref(null),d=t.ref(null),u=t.ref(null),m=t.ref(null),v=t.ref(null),p=t.ref(null),h=t.ref(!1),y=t.reactive({modal:!1,overlay:!1}),{state:w,listeners:b}=s(),{state:g,listeners:S}=s(),k=t.ref(!1),{focusTrap:T}=c({props:e,vfmContainer:r,modalTransitionState:g}),{resizeVisible:E,state:C,dragResizeStyle:M,removeDragDown:z,removeResizeDown:L}=x({props:e,visible:h,vfmContainer:r,vfmContent:d,vfmResize:u,modalTransitionState:g,onEvent(e){n(C.value,e)}}),{handleLockScroll:D}=I({props:e,vfmContainer:r,modalTransitionState:g}),O=t.ref(null);let B=f,V=f;const _=t.computed((()=>"string"==typeof e.overlayTransition?{name:e.overlayTransition}:{...e.overlayTransition})),R=t.computed((()=>"string"==typeof e.transition?{name:e.transition}:{...e.transition})),N=t.computed((()=>(e.hideOverlay||w.value===i)&&g.value===i)),A=t.computed((()=>!1===e.zIndex?!!e.zIndexAuto&&+e.zIndexBase+2*(p.value||0):e.zIndex)),P=t.computed((()=>({...!1!==A.value&&{zIndex:A.value}}))),$=t.computed((()=>{let t=[M.value];return Array.isArray(e.contentStyle)?t.push(...e.contentStyle):t.push(e.contentStyle),t}));function H(){return{uid:a,props:e,emit:n,vfmContainer:r,vfmContent:d,vfmResize:u,vfmOverlayTransition:m,vfmTransition:v,getAttachElement:U,modalStackIndex:p,visibility:y,handleLockScroll:D,toggle:K}}function j(){if(e.modelValue){if(n("_before-open",W({type:"_before-open"})),G("before-open",!1))return void V("show");let o=U();if(o||!1===e.attach){!1!==e.attach&&o.appendChild(l.value);let n=e.api.openedModals.findIndex((e=>e.uid===a));-1!==n&&e.api.openedModals.splice(n,1),e.api.openedModals.push(H()),p.value=e.api.openedModals.length-1,D(),e.api.openedModals.filter((e=>e.uid!==a)).forEach(((e,t)=>{e.getAttachElement()===o&&(e.modalStackIndex.value=t,e.visibility.overlay=!1)})),h.value=!0,t.nextTick((()=>{y.overlay=!0,y.modal=!0}))}else!1!==o&&console.warn("Unable to locate target ".concat(e.attach))}}function F(){let n=e.api.openedModals.findIndex((e=>e.uid===a));if(-1!==n&&e.api.openedModals.splice(n,1),e.api.openedModals.length>0){const n=e.api.openedModals[e.api.openedModals.length-1];n.props.focusTrap&&t.nextTick((()=>{T.enable(n.vfmContainer.value),T.firstElement.focus()})),(n.props.focusRetain||n.props.focusTrap)&&n.vfmContainer.value.focus(),!n.props.hideOverlay&&(n.visibility.overlay=!0)}e.drag&&z(),e.resize&&L(),C.value=null,y.overlay=!1,y.modal=!1}function U(){let t;return t=!1!==e.attach&&("string"==typeof e.attach?!!window&&window.document.querySelector(e.attach):e.attach),t}function W(e={}){return{ref:H(),...e}}function G(e,o){let a=!1;const i=W({type:e,stop(){a=!0}});return n(e,i),!!a&&(k.value=!0,t.nextTick((()=>{n("update:modelValue",o)})),!0)}function K(t){return new Promise(((o,a)=>{B=e=>{o(e),B=f},V=e=>{a(e),V=f};const i="boolean"==typeof t?t:!e.modelValue;n("update:modelValue",i)}))}return t.watch((()=>e.modelValue),(e=>{if(k.value)k.value=!1;else if(j(),!e){if(n("_before-close",W({type:"_before-close"})),G("before-close",!0))return void V("hide");F()}})),t.watch((()=>e.hideOverlay),(t=>{e.modelValue&&!t&&(y.overlay=!0)})),t.watch((()=>e.attach),j),t.watch(N,(e=>{e&&(h.value=!1,r.value.style.display="none")}),{flush:"post"}),t.watch(g,(e=>{switch(e){case o:n("_opened"),n("opened",W({type:"opened"})),B("show");break;case i:p.value=null,n("_closed"),n("closed",W({type:"closed"})),B("hide")}})),e.api.modals.push(H()),t.onMounted((()=>{j()})),t.onBeforeUnmount((()=>{F(),l?.value?.remove();let t=e.api.modals.findIndex((e=>e.uid===a));e.api.modals.splice(t,1)})),{root:l,vfmContainer:r,vfmContent:d,vfmResize:u,vfmOverlayTransition:m,vfmTransition:v,computedOverlayTransition:_,computedTransition:R,overlayListeners:b,modalListeners:S,visible:h,visibility:y,resizeVisible:E,calculateZIndex:A,bindStyle:P,bindContentStyle:$,onMousedown:function(e){O.value=e?.target},onMouseupContainer:function(){O.value===r.value&&"resize:move"!==C.value&&(n("click-outside",W({type:"click-outside"})),e.clickToClose&&n("update:modelValue",!1))},onEsc:function(){h.value&&e.escToClose&&n("update:modelValue",!1)}}}};const N=["aria-expanded"],A={key:0,ref:"vfmResize",class:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},P=["direction"];function $(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&o.firstChild?o.insertBefore(a,o.firstChild):o.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}$("\n.vfm--fixed[data-v-72c09f54] {\n position: fixed;\n}\n.vfm--absolute[data-v-72c09f54] {\n position: absolute;\n}\n.vfm--inset[data-v-72c09f54] {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.vfm--overlay[data-v-72c09f54] {\n background-color: rgba(0, 0, 0, 0.5);\n}\n.vfm--prevent-none[data-v-72c09f54] {\n pointer-events: none;\n}\n.vfm--prevent-auto[data-v-72c09f54] {\n pointer-events: auto;\n}\n.vfm--outline-none[data-v-72c09f54]:focus {\n outline: none;\n}\n.vfm-enter-active[data-v-72c09f54],\n.vfm-leave-active[data-v-72c09f54] {\n transition: opacity 0.2s;\n}\n.vfm-enter-from[data-v-72c09f54],\n.vfm-leave-to[data-v-72c09f54] {\n opacity: 0;\n}\n.vfm--touch-none[data-v-72c09f54] {\n touch-action: none;\n}\n.vfm--select-none[data-v-72c09f54] {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vfm--resize-tr[data-v-72c09f54],\n.vfm--resize-br[data-v-72c09f54],\n.vfm--resize-bl[data-v-72c09f54],\n.vfm--resize-tl[data-v-72c09f54] {\n width: 12px;\n height: 12px;\n z-index: 10;\n}\n.vfm--resize-t[data-v-72c09f54] {\n top: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-tr[data-v-72c09f54] {\n top: -6px;\n right: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-r[data-v-72c09f54] {\n top: 0;\n right: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-br[data-v-72c09f54] {\n bottom: -6px;\n right: -6px;\n cursor: nwse-resize;\n}\n.vfm--resize-b[data-v-72c09f54] {\n bottom: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-bl[data-v-72c09f54] {\n bottom: -6px;\n left: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-l[data-v-72c09f54] {\n top: 0;\n left: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-tl[data-v-72c09f54] {\n top: -6px;\n left: -6px;\n cursor: nwse-resize;\n}\n"),R.render=function(e,n,o,a,i,l){return"if"!==o.displayDirective||a.visible?t.withDirectives((t.openBlock(),t.createElementBlock("div",t.mergeProps({key:0},e.$attrs,{ref:"root",style:a.bindStyle,class:["vfm vfm--inset",[!1===o.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":o.nonModal}]],onKeydown:n[3]||(n[3]=t.withKeys(((...e)=>a.onEsc&&a.onEsc(...e)),["esc"]))}),[t.createVNode(t.Transition,t.mergeProps(a.computedOverlayTransition,t.toHandlers(a.overlayListeners)),{default:t.withCtx((()=>[!o.hideOverlay&&a.visibility.overlay?(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["vfm__overlay vfm--overlay vfm--absolute vfm--inset",o.overlayClass]),style:t.normalizeStyle(o.overlayStyle)},null,6)):t.createCommentVNode("v-if",!0)])),_:1},16),t.createVNode(t.Transition,t.mergeProps(a.computedTransition,t.toHandlers(a.modalListeners)),{default:t.withCtx((()=>[t.withDirectives(t.createElementVNode("div",{ref:"vfmContainer",class:t.normalizeClass(["vfm__container vfm--absolute vfm--inset vfm--outline-none",o.classes]),style:t.normalizeStyle(o.styles),"aria-expanded":a.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1",onMouseup:n[1]||(n[1]=t.withModifiers(((...e)=>a.onMouseupContainer&&a.onMouseupContainer(...e)),["self"])),onMousedown:n[2]||(n[2]=t.withModifiers(((...e)=>a.onMousedown&&a.onMousedown(...e)),["self"]))},[t.createElementVNode("div",{ref:"vfmContent",class:t.normalizeClass(["vfm__content",[o.contentClass,{"vfm--prevent-auto":o.nonModal}]]),style:t.normalizeStyle(a.bindContentStyle),onMousedown:n[0]||(n[0]=e=>a.onMousedown(null))},[t.renderSlot(e.$slots,"default",{close:()=>e.$emit("update:modelValue",!1)}),a.resizeVisible&&a.visibility.modal?(t.openBlock(),t.createElementBlock("div",A,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o.resizeDirections,(e=>(t.openBlock(),t.createElementBlock("div",{key:e,direction:e,class:t.normalizeClass([`vfm--resize-${e}`,"vfm--absolute vfm--prevent-auto"])},null,10,P)))),128))],512)):t.createCommentVNode("v-if",!0)],38)],46,N),[[t.vShow,a.visibility.modal]])])),_:3},16)],16)),[[t.vShow,"show"!==o.displayDirective||a.visible]]):t.createCommentVNode("v-if",!0)},R.__scopeId="data-v-72c09f54",R.__file="src/VueFinalModal.vue";var H={methods:{slice(e){this.api.dynamicModals.splice(e,1)},closed(e,t){this.slice(e),t.closed&&t.closed()},beforeClose(e){e.value&&e?.rejectClose("hide")},async beforeOpen(e,t,n){await this.$nextTick(),await this.$nextTick(),t.value||(this.slice(n),t?.reject("show"))},isString:e=>"string"==typeof e}};const j={class:"modals-container"},F=["innerHTML"];H.render=function(e,n,o,a,i,l){return t.openBlock(),t.createElementBlock("div",j,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.api.dynamicModals,((e,n)=>(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.component),t.mergeProps({key:e.id},e.bind,{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t},t.toHandlers(e.on),{on_beforeClose:t=>l.beforeClose(e),on_closed:t=>l.closed(n,e),on_beforeOpen:t=>l.beforeOpen(t,e,n),on_opened:e.opened}),t.createSlots({_:2},[t.renderList(e.slots,((e,n)=>({name:n,fn:t.withCtx((()=>[t.createCommentVNode(" eslint-disable vue/no-v-html "),l.isString(e)?(t.openBlock(),t.createElementBlock("div",{key:0,innerHTML:e},null,8,F)):(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.component),t.mergeProps({key:1},e.bind,t.toHandlers(e.on||{})),null,16))]))})))]),1040,["modelValue","onUpdate:modelValue","on_beforeClose","on_closed","on_beforeOpen","on_opened"])))),128))])},H.__file="src/ModalsContainer.vue";class U{constructor(){const e=e=>{const n={...e,props:{...e.props}};return Object.assign(n.props,{api:{type:Object,default:()=>this}}),t.markRaw(n)};this.modals=[],this.openedModals=[],this.VueFinalModal=e(R),this.dynamicModals=t.shallowReactive([]),this.ModalsContainer=e(H)}show(e,...t){switch(typeof e){case"string":return this.toggle(e,!0,...t);case"object":{const{show:n}=this.useModal(e,t[0]);return n()}}}hide(...e){return this.toggle(e,!1)}hideAll(){return this.hide(...this.openedModals.map((e=>e.props.name)))}toggle(e,...t){const n=Array.isArray(e)?this.get(...e):this.get(e);return Promise.allSettled(n.map((e=>e.toggle(...t))))}get(...e){return this.modals.filter((t=>e.includes(t.props.name)))}existModal(e){return-1!==this.dynamicModals.indexOf(e)}useModal(e){let n=t.reactive({value:!1,component:this.VueFinalModal,id:Symbol("useModal"),bind:{},slots:{},on:{},...e});return{show:()=>this.existModal(n)?Promise.resolve("[Vue Final Modal] modal is already opened"):new Promise(((e,t)=>{n.value=!0,n.reject=t,n.opened=()=>{e("show")},this.dynamicModals.push(n)})),hide:()=>this.existModal(n)?new Promise(((e,t)=>{n.value=!1,n.rejectClose=t,n.closed=()=>{e("hide")}})):Promise.resolve("[Vue Final Modal] modal is already closed"),options:n}}}const W=()=>{let e=new U;return{$vfm:e,VueFinalModal:e.VueFinalModal,ModalsContainer:e.ModalsContainer,useModal:e.useModal.bind(e)}},G=W(),{$vfm:K,VueFinalModal:Y,ModalsContainer:q,useModal:X}=G,Z="UP",J="RIGHT",Q="DOWN",ee="LEFT",te="NONE";function ne(e,{threshold:o=50,onSwipeStart:a,onSwipe:i,onSwipeEnd:l,passive:s=!0}){const r=t.reactive({x:0,y:0}),d=t.reactive({x:0,y:0}),u=t.computed((()=>r.x-d.x)),c=t.computed((()=>r.y-d.y)),{max:m,abs:p}=Math,h=t.computed((()=>m(p(u.value),p(c.value))>=o)),y=t.ref(!1),w=t.computed((()=>h.value?p(u.value)>p(c.value)?u.value>0?ee:J:c.value>0?Z:Q:te)),b=(e,t)=>{d.x=e,d.y=t};let g;const x=function(e){if(!e)return!1;let t=!1;const n={get passive(){return t=!0,!1}};return e.addEventListener("x",f,n),e.removeEventListener("x",f),t}(window?.document);let S;function k(t){g.capture&&!g.passive&&t.preventDefault();const{x:o,y:i}=v(t);((e,t)=>{r.x=e,r.y=t})(o,i),b(o,i),a?.(t),S=[n.useEventListener(e,"mousemove",T,g),n.useEventListener(e,"touchmove",T,g),n.useEventListener(e,"mouseup",E,g),n.useEventListener(e,"touchend",E,g),n.useEventListener(e,"touchcancel",E,g)]}function T(e){const{x:t,y:n}=v(e);b(t,n),!y.value&&h.value&&(y.value=!0),y.value&&i?.(e)}function E(e){y.value&&l?.(e,w.value),y.value=!1,S.forEach((e=>e()))}g=s?x?{passive:!0}:{capture:!1}:x?{passive:!1,capture:!0}:{capture:!0};const C=[n.useEventListener(e,"mousedown",k,g),n.useEventListener(e,"touchstart",k,g)];return{isPassiveEventSupported:x,isSwiping:y,direction:w,coordsStart:r,coordsEnd:d,lengthX:u,lengthY:c,stop:()=>{C.forEach((e=>e())),S.forEach((e=>e()))}}}var oe=Object.assign({inheritAttrs:!1},{props:{swipeToCloseDirection:{type:String,default:"",validator:e=>-1!==["","DOWN"].includes(e)},threshold:{type:Number,default:30}},setup:function(e,{emit:o}){const a=e,i=t.useAttrs(),l=t.ref(null),s=t.ref(0),r=t.ref(!0);let d=f,u=!0,c=null,v=!1;const{lengthY:p,direction:h,isSwiping:y}=ne(l,{threshold:a.threshold,onSwipeStart(e){d=n.useEventListener(document,"selectionchange",(()=>{r.value=window.getSelection().isCollapsed})),c=(new Date).getTime(),v=w(e.target)},onSwipe(){var e,t,n;if(v&&h.value===a.swipeToCloseDirection){if(!r.value)return;s.value=(e=Math.abs(p.value),t=0,n=l.value.offsetHeight,-(e>n?n:e.1*l.value.offsetHeight;u&&v&&i&&(f||n-c<=300)?o("update:modelValue",!1):s.value=0}});function w(e){const t=0===e.scrollTop;return e===l.value?t:t&&w(e.parentElement)}return t.watch((()=>i.modelValue),(e=>{e&&(s.value=0)})),t.watch((()=>r.value),(e=>{e||(s.value=0)})),t.watch((()=>s.value),((e,t)=>{"DOWN"===a.swipeToCloseDirection&&(u=e(t.openBlock(),t.createBlock(t.unref(Y),t.mergeProps(t.unref(i),{transition:{"enter-active-class":"slideInDown","leave-active-class":"slideOutDown"},"lock-scroll":!1,onMousedown:n[0]||(n[0]=t.withModifiers((()=>{}),["stop"])),onTouchstartPassive:n[1]||(n[1]=t.withModifiers((()=>{}),["stop"])),onClosed:t.unref(m)}),{default:t.withCtx((()=>[t.renderSlot(e.$slots,"prepend"),t.createElementVNode("div",{ref:(e,t)=>{t.bottomSheetEl=e,l.value=e},class:t.normalizeClass(["vfm-bottom-sheet",{"vfm-transition":!t.unref(y)}]),style:t.normalizeStyle({transform:`translateY(${-s.value}px)`})},[t.renderSlot(e.$slots,"default")],6),t.renderSlot(e.$slots,"append")])),_:3},16,["onClosed"]))}});$("\n.vfm-bottom-sheet[data-v-730a320a] {\n position: absolute;\n bottom: 0;\n width: 100%;\n max-height: 90%;\n overflow-y: auto;\n background-color: #fff;\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n}\n.vfm-transition[data-v-730a320a] {\n transition-property: transform;\n transition-duration: 150ms;\n}\n@-webkit-keyframes slideInDown-730a320a {\nfrom {\n transform: translate3d(0, 100%, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInDown-730a320a {\nfrom {\n transform: translate3d(0, 100%, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-730a320a] .slideInDown {\n -webkit-animation-name: slideInDown-730a320a;\n animation-name: slideInDown-730a320a;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutDown-730a320a {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(0, 100%, 0);\n}\n}\n@keyframes slideOutDown-730a320a {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(0, 100%, 0);\n}\n}\n[data-v-730a320a] .slideOutDown {\n -webkit-animation-name: slideOutDown-730a320a;\n animation-name: slideOutDown-730a320a;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n"),oe.__scopeId="data-v-730a320a",oe.__file="src/hoc/VBottomSheet.vue";var ae=Object.assign({inheritAttrs:!1},{props:{fullScreenClass:{type:[String,Object,Array],default:""},fullScreenStyle:{type:[Object,Array],default:()=>({})},swipeToCloseDirection:{type:String,default:"",validator:e=>-1!==["","RIGHT","LEFT"].includes(e)},threshold:{type:Number,default:30}},setup:function(e,{emit:o}){const a=e,i=t.useAttrs(),l=t.ref(null),s=t.ref(0),r=t.ref(!0);let d=f,u=!0,c=null,v=!1;const p=t.computed((()=>a.swipeToCloseDirection?{"enter-active-class":"RIGHT"===a.swipeToCloseDirection?"slideInRight":"slideInLeft","leave-active-class":"RIGHT"===a.swipeToCloseDirection?"slideOutRight":"slideOutLeft"}:{})),{lengthX:h,direction:y,isSwiping:w}=a.swipeToCloseDirection?ne(l,{threshold:a.threshold,onSwipeStart(e){d=n.useEventListener(document,"selectionchange",(()=>{r.value=window.getSelection().isCollapsed})),c=(new Date).getTime(),v=b(e.target)},onSwipe(){var e,t,n;if(v&&y.value===a.swipeToCloseDirection){if(!r.value)return;l.value.classList.add("vfm-overflow-hidden");const o=(e=Math.abs(h.value),t=0,n=l.value.offsetWidth,(e>n?n:e.1*l.value.offsetWidth;u&&v&&i&&(f||n-c<=300)?o("update:modelValue",!1):s.value=0}}):{};function b(e){const t=0===e.scrollLeft;return e===l.value?t:t&&b(e.parentElement)}return t.watch((()=>i.modelValue),(e=>{e&&(s.value=0)})),t.watch((()=>r.value),(e=>{e||(s.value=0)})),t.watch((()=>s.value),((e,t)=>{"RIGHT"===a.swipeToCloseDirection?u=et)})),(n,o)=>(t.openBlock(),t.createBlock(t.unref(Y),t.mergeProps(t.unref(i),{"hide-overlay":"",transition:t.unref(p),"content-style":[{transform:`translateX(${-s.value}px)`}],"content-class":{"vfm-transition":!t.unref(w)},"lock-scroll":!1,onMousedown:o[0]||(o[0]=t.withModifiers((()=>{}),["stop"])),onTouchstartPassive:o[1]||(o[1]=t.withModifiers((()=>{}),["stop"])),onClosed:t.unref(m)}),{default:t.withCtx((()=>[t.renderSlot(n.$slots,"prepend"),t.createElementVNode("div",{ref:(e,t)=>{t.modalContent=e,l.value=e},class:t.normalizeClass(["vfm-full-screen",e.fullScreenClass]),style:t.normalizeStyle(e.fullScreenStyle)},[t.renderSlot(n.$slots,"default")],6),t.renderSlot(n.$slots,"append")])),_:3},16,["transition","content-style","content-class","onClosed"]))}});$("\n.vfm-full-screen[data-v-1a4bac96] {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n background-color: #fff;\n}\n.vfm-overflow-hidden[data-v-1a4bac96],[data-v-1a4bac96] .vfm-overflow-hidden * {\n overflow: hidden;\n}\n[data-v-1a4bac96] .vfm-transition {\n transition-property: transform;\n transition-duration: 0.3s;\n}\n[data-v-1a4bac96] .vfm__content {\n width: 100%;\n height: 100%;\n}\n@-webkit-keyframes slideInLeft-1a4bac96 {\nfrom {\n transform: translate3d(-100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInLeft-1a4bac96 {\nfrom {\n transform: translate3d(-100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideInLeft {\n -webkit-animation-name: slideInLeft-1a4bac96;\n animation-name: slideInLeft-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideInRight-1a4bac96 {\nfrom {\n transform: translate3d(100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInRight-1a4bac96 {\nfrom {\n transform: translate3d(100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideInRight {\n -webkit-animation-name: slideInRight-1a4bac96;\n animation-name: slideInRight-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutLeft-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(-100%, 0, 0);\n}\n}\n@keyframes slideOutLeft-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(-100%, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideOutLeft {\n -webkit-animation-name: slideOutLeft-1a4bac96;\n animation-name: slideOutLeft-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutRight-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(100%, 0, 0);\n}\n}\n@keyframes slideOutRight-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(100%, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideOutRight {\n -webkit-animation-name: slideOutRight-1a4bac96;\n animation-name: slideOutRight-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n"),ae.__scopeId="data-v-1a4bac96",ae.__file="src/hoc/VFullScreen.vue",e.$vfm=K,e.ModalInstance=U,e.ModalsContainer=q,e.VBottomSheet=oe,e.VFullScreen=ae,e.VueFinalModal=Y,e.createModalInstance=W,e.useModal=X,Object.defineProperty(e,"__esModule",{value:!0})})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue"),require("@vueuse/core")):"function"==typeof define&&define.amd?define(["exports","vue","@vueuse/core"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VueFinalModal={},e.Vue,e.VueUse)}(this,(function(e,t,n){"use strict";const o="enter",a="entering",l="leave",i="leavng",r=()=>{const e=t.ref(null),n={beforeEnter(){e.value=a},afterEnter(){e.value=o},beforeLeave(){e.value=i},afterLeave(){e.value=l}};return{state:e,listeners:n}},s=e=>e==document.activeElement;class d{constructor(){this.root=null,this.elements=[],this.onKeyDown=this.onKeyDown.bind(this)}get lastElement(){return this.elements[this.elements.length-1]||null}get firstElement(){return this.elements[0]||null}get isEnabled(){return!!this.root}onKeyDown(e){if((e=>"Tab"===e.key||9===e.keyCode)(e)){if(!e.shiftKey)return!document.activeElement||s(this.lastElement)?(this.firstElement.focus(),void e.preventDefault()):void 0;s(this.firstElement)&&(this.lastElement.focus(),e.preventDefault())}}enable(e){e&&(this.root=e,this.elements=((e,t)=>[...e.querySelectorAll(t)||[]])(this.root,'button:not([disabled]), select:not([disabled]), a[href]:not([disabled]), area[href]:not([disabled]), [contentEditable=""]:not([disabled]), [contentEditable="true"]:not([disabled]), [contentEditable="TRUE"]:not([disabled]), textarea:not([disabled]), iframe:not([disabled]), input:not([disabled]), summary:not([disabled]), [tabindex]:not([tabindex="-1"])'),this.root.addEventListener("keydown",this.onKeyDown))}disable(){this.root.removeEventListener("keydown",this.onKeyDown),this.root=null}}let u=null;function c({props:e,vfmContainer:n,modalTransitionState:a}){return null==u&&(u=new d),t.watch(a,(t=>{switch(t){case o:(e.focusRetain||e.focusTrap)&&n.value.focus(),e.focusTrap&&u.enable(n.value);break;case i:u.enabled&&u.disable()}})),{focusTrap:u}}const f=()=>{},m=()=>{const e=document.activeElement;e&&e!==document.body&&e.blur()},v=e=>{const{clientX:t,clientY:n}=e.targetTouches?e.targetTouches[0]:e;return{x:t,y:n}},p={down:{pc:"mousedown",m:"touchstart"},move:{pc:"mousemove",m:"touchmove"},up:{pc:"mouseup",m:"touchend"}},h=(e,t,n)=>{t&&t.addEventListener(p[e].pc,n),t&&t.addEventListener(p[e].m,n,{passive:!1})},y=(e,t,n)=>{t&&t.removeEventListener(p[e].pc,n),t&&t.removeEventListener(p[e].m,n)};const w={t:"ns-resize",tr:"nesw-resize",r:"ew-resize",br:"nwse-resize",b:"ns-resize",bl:"nesw-resize",l:"ew-resize",tl:"nwse-resize"},b=(e,t,n)=>("number"!=typeof e&&(e=Math.min(t,n)||t),"number"!=typeof n&&(n=Math.max(t,e)),Math.min(Math.max(t,e),n)),g=e=>e&&Number(e.replace(/px$/,""))||0;function x({props:e,visible:n,vfmContainer:a,vfmContent:i,vfmResize:r,modalTransitionState:s,onEvent:d=(()=>{})}){const u=t.ref(!1),c=t.ref(null),f=t.ref({});function m(t){t.stopPropagation();const n="resize",o="drag",l=t.target.getAttribute("direction");let r;if(l)r=n;else{if(!((e,t,n)=>""===n||[...t.querySelectorAll(n)].includes(e.target))(t,i.value,e.dragSelector))return;r=o}c.value=`${r}:start`,d?.(t);const s=v(t),u=a.value.getBoundingClientRect(),m=i.value.getBoundingClientRect(),p="absolute"===window.getComputedStyle(i.value).position,x=g(f.value.top),S=g(f.value.left),k=(()=>{if(e.fitParent){const e={absolute:()=>({minTop:0,minLeft:0,maxTop:u.height-m.height,maxLeft:u.width-m.width}),relative:()=>({minTop:x+u.top-m.top,minLeft:S+u.left-m.left,maxTop:x+u.bottom-m.bottom,maxLeft:S+u.right-m.right})};return p?e.absolute():e.relative()}return{}})(),T=r===n&&((e,t,n)=>{const o=e.style[t];return e.style[t]=n,()=>{e.style[t]=o}})(document.body,"cursor",w[l]),E=t=>{t.stopPropagation(),c.value=`${r}:move`,d?.(t);const a=v(t);let i,h,y={x:a.x-s.x,y:a.y-s.y};r===n&&(y=function(t,n,o,a,l){const i=t=>{let o=n[t.axis];o=e.fitParent?b(t.min,o,t.max):o;let a=b(t.minEdge,t.getEdge(o),t.maxEdge);return o=t.getOffsetAxis(a,l),{[t.edgeName]:a,[t.axis]:o}},r=(t,n,l,i)=>{const r=a[n],s=o[t]-a[t],d=(u=n).charAt(0).toUpperCase()+u.slice(1);var u;return{axis:l,edgeName:n,min:i?s:-r,max:i?r:s,minEdge:e[`min${d}`],maxEdge:e[`max${d}`],getEdge:e=>a[n]-e*(i?1:-1),getOffsetAxis:(e,t)=>{const o=a[n]-e;return t?i?o:0:(i?1:-1)*o/2}}},s={t:["top","height","y",!0],b:["bottom","height","y",!1],l:["left","width","x",!0],r:["right","width","x",!1]};let d={x:0,y:0};return t.split("").forEach((e=>{const t=r(...s[e]);d={...d,...i(t)}})),d}(l,y,u,m,p)),p?(i=m.top-u.top+y.y,h=m.left-u.left+y.x):(i=x+y.y,h=S+y.x),r===o&&e.fitParent&&(i=b(k.minTop,i,k.maxTop),h=b(k.minLeft,h,k.maxLeft));const w={position:"relative",top:i+"px",left:h+"px",margin:"unset",touchAction:"none",...p&&{position:"absolute",transform:"unset",width:m.width+"px",height:m.height+"px"},...y.width&&{width:y.width+"px"},...y.height&&{height:y.height+"px"}};f.value={...f.value,...w}},C=e=>{e.stopPropagation(),r===n&&T&&T(),setTimeout((()=>{c.value=`${r}:end`,d?.(e)})),y("move",document,E),y("up",document,C)};h("move",document,E),h("up",document,C)}function p(){h("down",i.value,m),f.value.touchAction="none"}function x(){y("down",i.value,m)}function S(){u.value=!0,t.nextTick((()=>{h("down",r.value,m)}))}function k(){y("down",r.value,m),u.value=!1}return t.watch(s,(t=>{switch(t){case o:e.drag&&p(),e.resize&&S();break;case l:e.keepChangedStyle||(f.value={})}})),t.watch((()=>e.drag),(e=>{n.value&&(e?p():x())})),t.watch((()=>e.resize),(e=>{n.value&&(e?S():k())})),t.watch((()=>e.keepChangedStyle),(e=>{e||(f.value={})})),{resizeVisible:u,state:c,dragResizeStyle:f,removeDragDown:x,removeResizeDown:k}}let S=!1;if("undefined"!=typeof window){const e={get passive(){S=!0}};window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}const k="undefined"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1);let T,E,C=[],M=!1,z=0,L=-1;const D=(e,t)=>{let n=!1;return(e=>{const t=[];for(;e;){if(t.push(e),e.classList.contains("vfm"))return t;e=e.parentElement}return t})(e).forEach((e=>{(e=>{if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return["auto","scroll"].includes(t.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&((e,t)=>!(0===e.scrollTop&&t<0||e.scrollTop+e.clientHeight+t>=e.scrollHeight&&t>0))(e,t)&&(n=!0)})),n},O=e=>C.some((()=>D(e,-z))),B=e=>{const t=e||window.event;return!!O(t.target)||(t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1))},V=(e,t)=>{if(!e)return void console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");if(C.some((t=>t.targetElement===e)))return;const n={targetElement:e,options:t||{}};C=[...C,n],k?(e.ontouchstart=e=>{1===e.targetTouches.length&&(L=e.targetTouches[0].clientY)},e.ontouchmove=t=>{1===t.targetTouches.length&&((e,t)=>{z=e.targetTouches[0].clientY-L,!O(e.target)&&(t&&0===t.scrollTop&&z>0||(e=>!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight)(t)&&z<0?B(e):e.stopPropagation())})(t,e)},M||(document.addEventListener("touchmove",B,S?{passive:!1}:void 0),M=!0)):(e=>{if(void 0===E){const t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){const e=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);E=document.body.style.paddingRight,document.body.style.paddingRight=`${e+n}px`}}void 0===T&&(T=document.body.style.overflow,document.body.style.overflow="hidden")})(t)},_=e=>{e?(C=C.filter((t=>t.targetElement!==e)),k?(e.ontouchstart=null,e.ontouchmove=null,M&&0===C.length&&(document.removeEventListener("touchmove",B,S?{passive:!1}:void 0),M=!1)):C.length||(void 0!==E&&(document.body.style.paddingRight=E,E=void 0),void 0!==T&&(document.body.style.overflow=T,T=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")};function I({props:e,vfmContainer:n,modalTransitionState:o}){function a(){e.modelValue&&t.nextTick((()=>{e.lockScroll?n.value&&V(n.value,{reserveScrollBarGap:!0}):i()}))}function i(){e.lockScroll&&n.value&&_(n.value)}return t.watch((()=>e.lockScroll),a),t.watch(o,(e=>{e===l&&i()})),t.onBeforeUnmount((()=>{i()})),{handleLockScroll:a}}var R={inheritAttrs:!1,props:{name:{type:String,default:null},modelValue:{type:Boolean,default:!1},displayDirective:{type:String,default:"show",validator:e=>-1!==["if","show"].indexOf(e)},classes:{type:[String,Object,Array],default:""},overlayClass:{type:[String,Object,Array],default:""},contentClass:{type:[String,Object,Array],default:""},styles:{type:[Object,Array],default:()=>({})},overlayStyle:{type:[Object,Array],default:()=>({})},contentStyle:{type:[Object,Array],default:()=>({})},lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},nonModal:{type:Boolean,default:!1},attach:{type:null,default:!1,validator(e){const t=typeof e;return"boolean"===t||"string"===t||e.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:()=>["t","tr","r","br","b","bl","l","tl"],validator:e=>["t","tr","r","br","b","bl","l","tl"].filter((t=>-1!==e.indexOf(t))).length===e.length},minWidth:{type:[Number,String],default:0},minHeight:{type:[Number,String],default:0},maxWidth:{type:[Number,String],default:1/0},maxHeight:{type:[Number,String],default:1/0}},emits:["update:modelValue","click-outside","before-open","opened","_before-close","before-close","closed","_before-open","_opened","_closed","drag:start","drag:move","drag:end","resize:start","resize:move","resize:end"],setup(e,{emit:n}){const a=Symbol("vfm"),i=t.ref(null),s=t.ref(null),d=t.ref(null),u=t.ref(null),m=t.ref(null),v=t.ref(null),p=t.ref(null),h=t.ref(!1),y=t.reactive({modal:!1,overlay:!1}),{state:w,listeners:b}=r(),{state:g,listeners:S}=r(),k=t.ref(!1),{focusTrap:T}=c({props:e,vfmContainer:s,modalTransitionState:g}),{resizeVisible:E,state:C,dragResizeStyle:M,removeDragDown:z,removeResizeDown:L}=x({props:e,visible:h,vfmContainer:s,vfmContent:d,vfmResize:u,modalTransitionState:g,onEvent(e){n(C.value,e)}}),{handleLockScroll:D}=I({props:e,vfmContainer:s,modalTransitionState:g}),O=t.ref(null);let B=f,V=f;const _=t.computed((()=>"string"==typeof e.overlayTransition?{name:e.overlayTransition}:{...e.overlayTransition})),R=t.computed((()=>"string"==typeof e.transition?{name:e.transition}:{...e.transition})),N=t.computed((()=>(e.hideOverlay||w.value===l)&&g.value===l)),A=t.computed((()=>!1===e.zIndex?!!e.zIndexAuto&&+e.zIndexBase+2*(p.value||0):e.zIndex)),P=t.computed((()=>({...!1!==A.value&&{zIndex:A.value}}))),$=t.computed((()=>{let t=[M.value];return Array.isArray(e.contentStyle)?t.push(...e.contentStyle):t.push(e.contentStyle),t}));function H(){return{uid:a,props:e,emit:n,vfmContainer:s,vfmContent:d,vfmResize:u,vfmOverlayTransition:m,vfmTransition:v,getAttachElement:U,modalStackIndex:p,visibility:y,handleLockScroll:D,toggle:K}}function j(){if(e.modelValue){if(n("_before-open",W({type:"_before-open"})),G("before-open",!1))return void V("show");let o=U();if(o||!1===e.attach){!1!==e.attach&&o.appendChild(i.value);let n=e.api.openedModals.findIndex((e=>e.uid===a));-1!==n&&e.api.openedModals.splice(n,1),e.api.openedModals.push(H()),p.value=e.api.openedModals.length-1,D(),e.api.openedModals.filter((e=>e.uid!==a)).forEach(((e,t)=>{e.getAttachElement()===o&&(e.modalStackIndex.value=t,e.visibility.overlay=!1)})),h.value=!0,t.nextTick((()=>{y.overlay=!0,y.modal=!0}))}else!1!==o&&console.warn("Unable to locate target ".concat(e.attach))}}function F(){let n=e.api.openedModals.findIndex((e=>e.uid===a));if(-1!==n&&e.api.openedModals.splice(n,1),e.api.openedModals.length>0){const n=e.api.openedModals[e.api.openedModals.length-1];n.props.focusTrap&&t.nextTick((()=>{T.enable(n.vfmContainer.value),T.firstElement.focus()})),(n.props.focusRetain||n.props.focusTrap)&&n.vfmContainer.value.focus(),!n.props.hideOverlay&&(n.visibility.overlay=!0)}e.drag&&z(),e.resize&&L(),C.value=null,y.overlay=!1,y.modal=!1}function U(){let t;return t=!1!==e.attach&&("string"==typeof e.attach?!!window&&window.document.querySelector(e.attach):e.attach),t}function W(e={}){return{ref:H(),...e}}function G(e,o){let a=!1;const l=W({type:e,stop(){a=!0}});return n(e,l),!!a&&(k.value=!0,t.nextTick((()=>{n("update:modelValue",o)})),!0)}function K(t){return new Promise(((o,a)=>{B=e=>{o(e),B=f},V=e=>{a(e),V=f};const l="boolean"==typeof t?t:!e.modelValue;n("update:modelValue",l)}))}return t.watch((()=>e.modelValue),(e=>{if(k.value)k.value=!1;else if(j(),!e){if(n("_before-close",W({type:"_before-close"})),G("before-close",!0))return void V("hide");F()}})),t.watch((()=>e.hideOverlay),(t=>{e.modelValue&&!t&&(y.overlay=!0)})),t.watch((()=>e.attach),j),t.watch(N,(e=>{e&&(h.value=!1,s.value.style.display="none")}),{flush:"post"}),t.watch(g,(e=>{switch(e){case o:n("_opened"),n("opened",W({type:"opened"})),B("show");break;case l:p.value=null,n("_closed"),n("closed",W({type:"closed"})),B("hide")}})),e.api.modals.push(H()),t.onMounted((()=>{j()})),t.onBeforeUnmount((()=>{F(),i?.value?.remove();let t=e.api.modals.findIndex((e=>e.uid===a));e.api.modals.splice(t,1)})),{root:i,vfmContainer:s,vfmContent:d,vfmResize:u,vfmOverlayTransition:m,vfmTransition:v,computedOverlayTransition:_,computedTransition:R,overlayListeners:b,modalListeners:S,visible:h,visibility:y,resizeVisible:E,calculateZIndex:A,bindStyle:P,bindContentStyle:$,onMousedown:function(e){O.value=e?.target},onMouseupContainer:function(){O.value===s.value&&"resize:move"!==C.value&&(n("click-outside",W({type:"click-outside"})),e.clickToClose&&n("update:modelValue",!1))},onEsc:function(){h.value&&e.escToClose&&n("update:modelValue",!1)}}}};const N=["aria-expanded"],A={key:0,ref:"vfmResize",class:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},P=["direction"];function $(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&o.firstChild?o.insertBefore(a,o.firstChild):o.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}$("\n.vfm--fixed[data-v-72c09f54] {\n position: fixed;\n}\n.vfm--absolute[data-v-72c09f54] {\n position: absolute;\n}\n.vfm--inset[data-v-72c09f54] {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.vfm--overlay[data-v-72c09f54] {\n background-color: rgba(0, 0, 0, 0.5);\n}\n.vfm--prevent-none[data-v-72c09f54] {\n pointer-events: none;\n}\n.vfm--prevent-auto[data-v-72c09f54] {\n pointer-events: auto;\n}\n.vfm--outline-none[data-v-72c09f54]:focus {\n outline: none;\n}\n.vfm-enter-active[data-v-72c09f54],\n.vfm-leave-active[data-v-72c09f54] {\n transition: opacity 0.2s;\n}\n.vfm-enter-from[data-v-72c09f54],\n.vfm-leave-to[data-v-72c09f54] {\n opacity: 0;\n}\n.vfm--touch-none[data-v-72c09f54] {\n touch-action: none;\n}\n.vfm--select-none[data-v-72c09f54] {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vfm--resize-tr[data-v-72c09f54],\n.vfm--resize-br[data-v-72c09f54],\n.vfm--resize-bl[data-v-72c09f54],\n.vfm--resize-tl[data-v-72c09f54] {\n width: 12px;\n height: 12px;\n z-index: 10;\n}\n.vfm--resize-t[data-v-72c09f54] {\n top: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-tr[data-v-72c09f54] {\n top: -6px;\n right: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-r[data-v-72c09f54] {\n top: 0;\n right: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-br[data-v-72c09f54] {\n bottom: -6px;\n right: -6px;\n cursor: nwse-resize;\n}\n.vfm--resize-b[data-v-72c09f54] {\n bottom: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-bl[data-v-72c09f54] {\n bottom: -6px;\n left: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-l[data-v-72c09f54] {\n top: 0;\n left: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-tl[data-v-72c09f54] {\n top: -6px;\n left: -6px;\n cursor: nwse-resize;\n}\n"),R.render=function(e,n,o,a,l,i){return"if"!==o.displayDirective||a.visible?t.withDirectives((t.openBlock(),t.createElementBlock("div",t.mergeProps({key:0},e.$attrs,{ref:"root",style:a.bindStyle,class:["vfm vfm--inset",[!1===o.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":o.nonModal}]],onKeydown:n[3]||(n[3]=t.withKeys(((...e)=>a.onEsc&&a.onEsc(...e)),["esc"]))}),[t.createVNode(t.Transition,t.mergeProps(a.computedOverlayTransition,t.toHandlers(a.overlayListeners)),{default:t.withCtx((()=>[!o.hideOverlay&&a.visibility.overlay?(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["vfm__overlay vfm--overlay vfm--absolute vfm--inset",o.overlayClass]),style:t.normalizeStyle(o.overlayStyle)},null,6)):t.createCommentVNode("v-if",!0)])),_:1},16),t.createVNode(t.Transition,t.mergeProps(a.computedTransition,t.toHandlers(a.modalListeners)),{default:t.withCtx((()=>[t.withDirectives(t.createElementVNode("div",{ref:"vfmContainer",class:t.normalizeClass(["vfm__container vfm--absolute vfm--inset vfm--outline-none",o.classes]),style:t.normalizeStyle(o.styles),"aria-expanded":a.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1",onMouseup:n[1]||(n[1]=t.withModifiers(((...e)=>a.onMouseupContainer&&a.onMouseupContainer(...e)),["self"])),onMousedown:n[2]||(n[2]=t.withModifiers(((...e)=>a.onMousedown&&a.onMousedown(...e)),["self"]))},[t.createElementVNode("div",{ref:"vfmContent",class:t.normalizeClass(["vfm__content",[o.contentClass,{"vfm--prevent-auto":o.nonModal}]]),style:t.normalizeStyle(a.bindContentStyle),onMousedown:n[0]||(n[0]=e=>a.onMousedown(null))},[t.renderSlot(e.$slots,"default",{close:()=>e.$emit("update:modelValue",!1)}),a.resizeVisible&&a.visibility.modal?(t.openBlock(),t.createElementBlock("div",A,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o.resizeDirections,(e=>(t.openBlock(),t.createElementBlock("div",{key:e,direction:e,class:t.normalizeClass([`vfm--resize-${e}`,"vfm--absolute vfm--prevent-auto"])},null,10,P)))),128))],512)):t.createCommentVNode("v-if",!0)],38)],46,N),[[t.vShow,a.visibility.modal]])])),_:3},16)],16)),[[t.vShow,"show"!==o.displayDirective||a.visible]]):t.createCommentVNode("v-if",!0)},R.__scopeId="data-v-72c09f54",R.__file="src/VueFinalModal.vue";var H={methods:{slice(e){this.api.dynamicModals.splice(e,1)},closed(e,t){this.slice(e),t.closed&&t.closed()},beforeClose(e){e.value&&e?.rejectClose("hide")},async beforeOpen(e,t,n){await this.$nextTick(),await this.$nextTick(),t.value||(this.slice(n),t?.reject("show"))},isString:e=>"string"==typeof e}};const j={class:"modals-container"},F=["innerHTML"];H.render=function(e,n,o,a,l,i){return t.openBlock(),t.createElementBlock("div",j,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.api.dynamicModals,((e,n)=>(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.component),t.mergeProps({key:e.id},e.bind,{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t},t.toHandlers(e.on),{on_beforeClose:t=>i.beforeClose(e),on_closed:t=>i.closed(n,e),on_beforeOpen:t=>i.beforeOpen(t,e,n),on_opened:e.opened}),t.createSlots({_:2},[t.renderList(e.slots,((e,n)=>({name:n,fn:t.withCtx((()=>[t.createCommentVNode(" eslint-disable vue/no-v-html "),i.isString(e)?(t.openBlock(),t.createElementBlock("div",{key:0,innerHTML:e},null,8,F)):(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.component),t.mergeProps({key:1},e.bind,t.toHandlers(e.on||{})),null,16))]))})))]),1040,["modelValue","onUpdate:modelValue","on_beforeClose","on_closed","on_beforeOpen","on_opened"])))),128))])},H.__file="src/ModalsContainer.vue";class U{constructor(){const e=e=>{const n={...e,props:{...e.props}};return Object.assign(n.props,{api:{type:Object,default:()=>this}}),t.markRaw(n)};this.modals=[],this.openedModals=[],this.VueFinalModal=e(R),this.dynamicModals=t.shallowReactive([]),this.ModalsContainer=e(H)}show(e,...t){switch(typeof e){case"string":return this.toggle(e,!0,...t);case"object":{const{show:n}=this.useModal(e,t[0]);return n()}}}hide(...e){return this.toggle(e,!1)}hideAll(){return this.hide(...this.openedModals.map((e=>e.props.name)))}toggle(e,...t){const n=Array.isArray(e)?this.get(...e):this.get(e);return Promise.allSettled(n.map((e=>e.toggle(...t))))}get(...e){return this.modals.filter((t=>e.includes(t.props.name)))}existModal(e){return-1!==this.dynamicModals.indexOf(e)}useModal(e){let n=t.reactive({value:!1,component:this.VueFinalModal,id:Symbol("useModal"),bind:{},slots:{},on:{},...e});return{show:()=>this.existModal(n)?Promise.resolve("[Vue Final Modal] modal is already opened"):new Promise(((e,t)=>{n.value=!0,n.reject=t,n.opened=()=>{e("show")},this.dynamicModals.push(n)})),hide:()=>this.existModal(n)?new Promise(((e,t)=>{n.value=!1,n.rejectClose=t,n.closed=()=>{e("hide")}})):Promise.resolve("[Vue Final Modal] modal is already closed"),options:n}}}const W=()=>{let e=new U;return{$vfm:e,VueFinalModal:e.VueFinalModal,ModalsContainer:e.ModalsContainer,useModal:e.useModal.bind(e)}},G=W(),{$vfm:K,VueFinalModal:Y,ModalsContainer:q,useModal:X}=G,Z="UP",J="RIGHT",Q="DOWN",ee="LEFT",te="NONE";function ne(e,{threshold:o=50,onSwipeStart:a,onSwipe:l,onSwipeEnd:i,passive:r=!0}){const s=t.reactive({x:0,y:0}),d=t.reactive({x:0,y:0}),u=t.computed((()=>s.x-d.x)),c=t.computed((()=>s.y-d.y)),{max:m,abs:p}=Math,h=t.computed((()=>m(p(u.value),p(c.value))>=o)),y=t.ref(!1),w=t.computed((()=>h.value?p(u.value)>p(c.value)?u.value>0?ee:J:c.value>0?Z:Q:te)),b=(e,t)=>{d.x=e,d.y=t};let g;const x=function(e){if(!e)return!1;let t=!1;const n={get passive(){return t=!0,!1}};return e.addEventListener("x",f,n),e.removeEventListener("x",f),t}(window?.document);let S;function k(t){g.capture&&!g.passive&&t.preventDefault();const{x:o,y:l}=v(t);((e,t)=>{s.x=e,s.y=t})(o,l),b(o,l),a?.(t),S=[n.useEventListener(e,"mousemove",T,g),n.useEventListener(e,"touchmove",T,g),n.useEventListener(e,"mouseup",E,g),n.useEventListener(e,"touchend",E,g),n.useEventListener(e,"touchcancel",E,g)]}function T(e){const{x:t,y:n}=v(e);b(t,n),!y.value&&h.value&&(y.value=!0),y.value&&l?.(e)}function E(e){y.value&&i?.(e,w.value),y.value=!1,S.forEach((e=>e()))}g=r?x?{passive:!0}:{capture:!1}:x?{passive:!1,capture:!0}:{capture:!0};const C=[n.useEventListener(e,"mousedown",k,g),n.useEventListener(e,"touchstart",k,g)];return{isPassiveEventSupported:x,isSwiping:y,direction:w,coordsStart:s,coordsEnd:d,lengthX:u,lengthY:c,stop:()=>{C.forEach((e=>e())),S.forEach((e=>e()))}}}var oe=Object.assign({inheritAttrs:!1},{props:{swipeToCloseDirection:{type:String,default:"",validator:e=>-1!==["","DOWN"].includes(e)},threshold:{type:Number,default:30},lockScroll:{type:Boolean,default:!1}},setup:function(e,{emit:o}){const a=e,l=t.useAttrs(),i=t.ref(null),r=t.ref(0),s=t.ref(!0);let d=f,u=!0,c=null,v=!1;const{lengthY:p,direction:h,isSwiping:y}=ne(i,{threshold:a.threshold,onSwipeStart(e){d=n.useEventListener(document,"selectionchange",(()=>{s.value=window.getSelection().isCollapsed})),c=(new Date).getTime(),v=w(e.target)},onSwipe(){var e,t,n;if(v&&h.value===a.swipeToCloseDirection){if(!s.value)return;r.value=(e=Math.abs(p.value),t=0,n=i.value.offsetHeight,-(e>n?n:e.1*i.value.offsetHeight;u&&v&&l&&(f||n-c<=300)?o("update:modelValue",!1):r.value=0}});function w(e){const t=0===e.scrollTop;return e===i.value?t:t&&w(e.parentElement)}return t.watch((()=>l.modelValue),(e=>{e&&(r.value=0)})),t.watch((()=>s.value),(e=>{e||(r.value=0)})),t.watch((()=>r.value),((e,t)=>{"DOWN"===a.swipeToCloseDirection&&(u=e(t.openBlock(),t.createBlock(t.unref(Y),t.mergeProps(t.unref(l),{transition:{"enter-active-class":"slideInDown","leave-active-class":"slideOutDown"},"lock-scroll":e.lockScroll,onMousedown:o[0]||(o[0]=t.withModifiers((()=>{}),["stop"])),onTouchstartPassive:o[1]||(o[1]=t.withModifiers((()=>{}),["stop"])),onClosed:t.unref(m)}),{default:t.withCtx((()=>[t.renderSlot(n.$slots,"prepend"),t.createElementVNode("div",{ref:(e,t)=>{t.bottomSheetEl=e,i.value=e},class:t.normalizeClass(["vfm-bottom-sheet",{"vfm-transition":!t.unref(y)}]),style:t.normalizeStyle({transform:`translateY(${-r.value}px)`})},[t.renderSlot(n.$slots,"default")],6),t.renderSlot(n.$slots,"append")])),_:3},16,["lock-scroll","onClosed"]))}});$("\n.vfm-bottom-sheet[data-v-730a320a] {\n position: absolute;\n bottom: 0;\n width: 100%;\n max-height: 90%;\n overflow-y: auto;\n background-color: #fff;\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n}\n.vfm-transition[data-v-730a320a] {\n transition-property: transform;\n transition-duration: 150ms;\n}\n@-webkit-keyframes slideInDown-730a320a {\nfrom {\n transform: translate3d(0, 100%, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInDown-730a320a {\nfrom {\n transform: translate3d(0, 100%, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-730a320a] .slideInDown {\n -webkit-animation-name: slideInDown-730a320a;\n animation-name: slideInDown-730a320a;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutDown-730a320a {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(0, 100%, 0);\n}\n}\n@keyframes slideOutDown-730a320a {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(0, 100%, 0);\n}\n}\n[data-v-730a320a] .slideOutDown {\n -webkit-animation-name: slideOutDown-730a320a;\n animation-name: slideOutDown-730a320a;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n"),oe.__scopeId="data-v-730a320a",oe.__file="src/hoc/VBottomSheet.vue";var ae=Object.assign({inheritAttrs:!1},{props:{fullScreenClass:{type:[String,Object,Array],default:""},fullScreenStyle:{type:[Object,Array],default:()=>({})},swipeToCloseDirection:{type:String,default:"",validator:e=>-1!==["","RIGHT","LEFT"].includes(e)},threshold:{type:Number,default:30},lockScroll:{type:Boolean,default:!1}},setup:function(e,{emit:o}){const a=e,l=t.useAttrs(),i=t.ref(null),r=t.ref(0),s=t.ref(!0);let d=f,u=!0,c=null,v=!1;const p=t.computed((()=>a.swipeToCloseDirection?{"enter-active-class":"RIGHT"===a.swipeToCloseDirection?"slideInRight":"slideInLeft","leave-active-class":"RIGHT"===a.swipeToCloseDirection?"slideOutRight":"slideOutLeft"}:{})),{lengthX:h,direction:y,isSwiping:w}=a.swipeToCloseDirection?ne(i,{threshold:a.threshold,onSwipeStart(e){d=n.useEventListener(document,"selectionchange",(()=>{s.value=window.getSelection().isCollapsed})),c=(new Date).getTime(),v=b(e.target)},onSwipe(){var e,t,n;if(v&&y.value===a.swipeToCloseDirection){if(!s.value)return;i.value.classList.add("vfm-overflow-hidden");const o=(e=Math.abs(h.value),t=0,n=i.value.offsetWidth,(e>n?n:e.1*i.value.offsetWidth;u&&v&&l&&(f||n-c<=300)?o("update:modelValue",!1):r.value=0}}):{};function b(e){const t=0===e.scrollLeft;return e===i.value?t:t&&b(e.parentElement)}return t.watch((()=>l.modelValue),(e=>{e&&(r.value=0)})),t.watch((()=>s.value),(e=>{e||(r.value=0)})),t.watch((()=>r.value),((e,t)=>{"RIGHT"===a.swipeToCloseDirection?u=et)})),(n,o)=>(t.openBlock(),t.createBlock(t.unref(Y),t.mergeProps(t.unref(l),{"hide-overlay":"",transition:t.unref(p),"content-style":[{transform:`translateX(${-r.value}px)`}],"content-class":{"vfm-transition":!t.unref(w)},"lock-scroll":e.lockScroll,onMousedown:o[0]||(o[0]=t.withModifiers((()=>{}),["stop"])),onTouchstartPassive:o[1]||(o[1]=t.withModifiers((()=>{}),["stop"])),onClosed:t.unref(m)}),{default:t.withCtx((()=>[t.renderSlot(n.$slots,"prepend"),t.createElementVNode("div",{ref:(e,t)=>{t.modalContent=e,i.value=e},class:t.normalizeClass(["vfm-full-screen",e.fullScreenClass]),style:t.normalizeStyle(e.fullScreenStyle)},[t.renderSlot(n.$slots,"default")],6),t.renderSlot(n.$slots,"append")])),_:3},16,["transition","content-style","content-class","lock-scroll","onClosed"]))}});$("\n.vfm-full-screen[data-v-1a4bac96] {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n background-color: #fff;\n}\n.vfm-overflow-hidden[data-v-1a4bac96],[data-v-1a4bac96] .vfm-overflow-hidden * {\n overflow: hidden;\n}\n[data-v-1a4bac96] .vfm-transition {\n transition-property: transform;\n transition-duration: 0.3s;\n}\n[data-v-1a4bac96] .vfm__content {\n width: 100%;\n height: 100%;\n}\n@-webkit-keyframes slideInLeft-1a4bac96 {\nfrom {\n transform: translate3d(-100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInLeft-1a4bac96 {\nfrom {\n transform: translate3d(-100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideInLeft {\n -webkit-animation-name: slideInLeft-1a4bac96;\n animation-name: slideInLeft-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideInRight-1a4bac96 {\nfrom {\n transform: translate3d(100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n@keyframes slideInRight-1a4bac96 {\nfrom {\n transform: translate3d(100%, 0, 0);\n}\nto {\n transform: translate3d(0, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideInRight {\n -webkit-animation-name: slideInRight-1a4bac96;\n animation-name: slideInRight-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutLeft-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(-100%, 0, 0);\n}\n}\n@keyframes slideOutLeft-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(-100%, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideOutLeft {\n -webkit-animation-name: slideOutLeft-1a4bac96;\n animation-name: slideOutLeft-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n@-webkit-keyframes slideOutRight-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(100%, 0, 0);\n}\n}\n@keyframes slideOutRight-1a4bac96 {\nfrom {\n transform: translate3d(0, 0, 0);\n}\nto {\n transform: translate3d(100%, 0, 0);\n}\n}\n[data-v-1a4bac96] .slideOutRight {\n -webkit-animation-name: slideOutRight-1a4bac96;\n animation-name: slideOutRight-1a4bac96;\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n}\n"),ae.__scopeId="data-v-1a4bac96",ae.__file="src/hoc/VFullScreen.vue",e.$vfm=K,e.ModalInstance=U,e.ModalsContainer=q,e.VBottomSheet=oe,e.VFullScreen=ae,e.VueFinalModal=Y,e.createModalInstance=W,e.useModal=X,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=VueFinalModal.umd.js.map diff --git a/packages/lib/dist/VueFinalModal.umd.js.map b/packages/lib/dist/VueFinalModal.umd.js.map index b438258d..a63852f7 100644 --- a/packages/lib/dist/VueFinalModal.umd.js.map +++ b/packages/lib/dist/VueFinalModal.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"VueFinalModal.umd.js","sources":["../src/utils/transitionState.js","../src/utils/focusTrap.js","../src/utils/index.js","../src/utils/dom.js","../src/utils/dragResize.js","../src/utils/bodyScrollLock.js","../src/VueFinalModal.vue","../src/VueFinalModal.vue?vue&type=template&id=72c09f54&lang.js","../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/ModalsContainer.vue","../src/ModalsContainer.vue?vue&type=template&id=437c4752&lang.js","../src/modalInstance.js","../src/utils/swipeable.js","../src/hoc/VBottomSheet.vue","../src/hoc/VFullScreen.vue"],"sourcesContent":["import { ref } from 'vue'\n\nexport const TransitionState = {\n Enter: 'enter',\n Entering: 'entering',\n Leave: 'leave',\n Leaving: 'leavng'\n}\n\nexport const useTransitionState = () => {\n const state = ref(null)\n\n const listeners = {\n beforeEnter() {\n state.value = TransitionState.Entering\n },\n afterEnter() {\n state.value = TransitionState.Enter\n },\n beforeLeave() {\n state.value = TransitionState.Leaving\n },\n afterLeave() {\n state.value = TransitionState.Leave\n }\n }\n\n return {\n state,\n listeners\n }\n}\n","import { watch } from 'vue'\nimport { TransitionState } from './transitionState'\n\n// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n }\n\n /**\n * Get last Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n /**\n * Get first Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get firstElement() {\n return this.elements[0] || null\n }\n\n /**\n * Get whether the trap is enabled\n *\n * @return {boolean} isEnabled\n */\n get isEnabled() {\n return !!this.root\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement)) {\n this.lastElement.focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement)) {\n this.firstElement.focus()\n event.preventDefault()\n return\n }\n }\n\n /**\n * Enable focus trap\n *\n * @param {HTMLElement} root - the focus trap root element\n */\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n /**\n * Disable focus trap\n */\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\n/**\n * @type {FocusTrap | null}\n */\nlet focusTrap = null\n\n/**\n * Get FocusTrap focusTrap\n *\n * @returns {FocusTrap} focusTrap\n */\nexport function useFocusTrap({ props, vfmContainer, modalTransitionState }) {\n if (focusTrap == null) {\n focusTrap = new FocusTrap()\n }\n\n watch(modalTransitionState, state => {\n switch (state) {\n case TransitionState.Enter:\n if (props.focusRetain || props.focusTrap) {\n vfmContainer.value.focus()\n }\n props.focusTrap && focusTrap.enable(vfmContainer.value)\n break\n case TransitionState.Leaving:\n if (focusTrap.enabled) {\n focusTrap.disable()\n }\n break\n }\n })\n\n return { focusTrap }\n}\n","export const noop = () => {}\n","import { noop } from './index'\n\nexport const looseFocus = () => {\n const element = document.activeElement\n if (element && element !== document.body) {\n element.blur()\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\n\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n\nexport function checkPassiveEventSupport(document) {\n if (!document) return false\n let supportsPassive = false\n const optionsBlock = {\n get passive() {\n supportsPassive = true\n return false\n }\n }\n document.addEventListener('x', noop, optionsBlock)\n document.removeEventListener('x', noop)\n return supportsPassive\n}\n","import { watch, ref, nextTick } from 'vue'\nimport { TransitionState } from './transitionState'\nimport { addListener, removeListener, getPosition } from './dom'\n\nconst resizeCursor = {\n t: 'ns-resize',\n tr: 'nesw-resize',\n r: 'ew-resize',\n br: 'nwse-resize',\n b: 'ns-resize',\n bl: 'nesw-resize',\n l: 'ew-resize',\n tl: 'nwse-resize'\n}\n\nexport const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nexport function useDragResize({\n props,\n visible,\n vfmContainer,\n vfmContent,\n vfmResize,\n modalTransitionState,\n onEvent = () => {}\n}) {\n const resizeVisible = ref(false)\n const state = ref(null)\n const dragResizeStyle = ref({})\n\n watch(modalTransitionState, val => {\n switch (val) {\n case TransitionState.Enter:\n props.drag && addDragDown()\n props.resize && addResizeDown()\n break\n case TransitionState.Leave:\n if (!props.keepChangedStyle) {\n dragResizeStyle.value = {}\n }\n break\n }\n })\n\n watch(\n () => props.drag,\n val => {\n if (visible.value) {\n val ? addDragDown() : removeDragDown()\n }\n }\n )\n\n watch(\n () => props.resize,\n val => {\n if (visible.value) {\n val ? addResizeDown() : removeResizeDown()\n }\n }\n )\n\n watch(\n () => props.keepChangedStyle,\n val => {\n if (!val) {\n dragResizeStyle.value = {}\n }\n }\n )\n\n function pointerDown(e) {\n e.stopPropagation()\n const STATE_RESIZE = 'resize'\n const STATE_DRAG = 'drag'\n const direction = e.target.getAttribute('direction')\n let _state\n if (direction) {\n _state = STATE_RESIZE\n } else if (validDragElement(e, vfmContent.value, props.dragSelector)) {\n _state = STATE_DRAG\n } else {\n return\n }\n state.value = `${_state}:start`\n onEvent?.(e)\n const down = getPosition(e)\n const rectContainer = vfmContainer.value.getBoundingClientRect()\n const rectContent = vfmContent.value.getBoundingClientRect()\n const isAbsolute = window.getComputedStyle(vfmContent.value).position === 'absolute'\n const position = {\n top: trimPx(dragResizeStyle.value.top),\n left: trimPx(dragResizeStyle.value.left)\n }\n const limit = (() => {\n if (props.fitParent) {\n const limit = {\n absolute() {\n return {\n minTop: 0,\n minLeft: 0,\n maxTop: rectContainer.height - rectContent.height,\n maxLeft: rectContainer.width - rectContent.width\n }\n },\n relative() {\n return {\n minTop: position.top + rectContainer.top - rectContent.top,\n minLeft: position.left + rectContainer.left - rectContent.left,\n maxTop: position.top + rectContainer.bottom - rectContent.bottom,\n maxLeft: position.left + rectContainer.right - rectContent.right\n }\n }\n }\n return isAbsolute ? limit.absolute() : limit.relative()\n } else {\n return {}\n }\n })()\n const resetBodyCursor = _state === STATE_RESIZE && setStyle(document.body, 'cursor', resizeCursor[direction])\n\n const moving = e => {\n // onPointerMove\n e.stopPropagation()\n state.value = `${_state}:move`\n onEvent?.(e)\n const move = getPosition(e)\n let offset = {\n x: move.x - down.x,\n y: move.y - down.y\n }\n if (_state === STATE_RESIZE) {\n offset = getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute)\n }\n\n let top\n let left\n if (isAbsolute) {\n top = rectContent.top - rectContainer.top + offset.y\n left = rectContent.left - rectContainer.left + offset.x\n } else {\n top = position.top + offset.y\n left = position.left + offset.x\n }\n if (_state === STATE_DRAG && props.fitParent) {\n top = clamp(limit.minTop, top, limit.maxTop)\n left = clamp(limit.minLeft, left, limit.maxLeft)\n }\n const style = {\n position: 'relative',\n top: top + 'px',\n left: left + 'px',\n margin: 'unset',\n touchAction: 'none',\n ...(isAbsolute && {\n position: 'absolute',\n transform: 'unset',\n width: rectContent.width + 'px',\n height: rectContent.height + 'px'\n }),\n ...(offset.width && { width: offset.width + 'px' }),\n ...(offset.height && { height: offset.height + 'px' })\n }\n\n dragResizeStyle.value = {\n ...dragResizeStyle.value,\n ...style\n }\n }\n const end = e => {\n // onPointerUp\n e.stopPropagation()\n if (_state === STATE_RESIZE) {\n resetBodyCursor && resetBodyCursor()\n }\n // Excute onMouseupContainer before trigger onEvent\n setTimeout(() => {\n state.value = `${_state}:end`\n onEvent?.(e)\n })\n removeListener('move', document, moving)\n removeListener('up', document, end)\n }\n addListener('move', document, moving)\n addListener('up', document, end)\n }\n function addDragDown() {\n addListener('down', vfmContent.value, pointerDown)\n dragResizeStyle.value.touchAction = 'none'\n }\n function removeDragDown() {\n removeListener('down', vfmContent.value, pointerDown)\n }\n function addResizeDown() {\n resizeVisible.value = true\n nextTick(() => {\n addListener('down', vfmResize.value, pointerDown)\n })\n }\n function removeResizeDown() {\n removeListener('down', vfmResize.value, pointerDown)\n resizeVisible.value = false\n }\n function getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute) {\n const setOffset = dir => {\n let offsetAxis = offset[dir.axis]\n offsetAxis = props.fitParent ? clamp(dir.min, offsetAxis, dir.max) : offsetAxis\n let edge = clamp(dir.minEdge, dir.getEdge(offsetAxis), dir.maxEdge)\n offsetAxis = dir.getOffsetAxis(edge, isAbsolute)\n return {\n [dir.edgeName]: edge,\n [dir.axis]: offsetAxis\n }\n }\n\n const getDirectionInfo = (position, edgeName, axis, isPositive) => {\n const rectContentEdge = rectContent[edgeName]\n const positionOffset = rectContainer[position] - rectContent[position]\n const EdgeName = capitalize(edgeName)\n return {\n axis,\n edgeName,\n min: isPositive ? positionOffset : -rectContentEdge,\n max: isPositive ? rectContentEdge : positionOffset,\n minEdge: props[`min${EdgeName}`],\n maxEdge: props[`max${EdgeName}`],\n getEdge: offsetAxis => rectContent[edgeName] - offsetAxis * (isPositive ? 1 : -1),\n getOffsetAxis: (edge, isAbsolute) => {\n const offsetAxis = rectContent[edgeName] - edge\n if (isAbsolute) {\n return isPositive ? offsetAxis : 0\n } else {\n return ((isPositive ? 1 : -1) * offsetAxis) / 2\n }\n }\n }\n }\n\n const directions = {\n t: ['top', 'height', 'y', true],\n b: ['bottom', 'height', 'y', false],\n l: ['left', 'width', 'x', true],\n r: ['right', 'width', 'x', false]\n }\n\n let _offset = { x: 0, y: 0 }\n direction.split('').forEach(dir => {\n const directionInfo = getDirectionInfo(...directions[dir])\n _offset = {\n ..._offset,\n ...setOffset(directionInfo)\n }\n })\n return _offset\n }\n\n return {\n resizeVisible,\n state,\n dragResizeStyle,\n removeDragDown,\n removeResizeDown\n }\n}\n","import { watch, nextTick, onBeforeUnmount } from 'vue'\nimport { TransitionState } from './transitionState'\n\n// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n\nexport function useLockScroll({ props, vfmContainer, modalTransitionState }) {\n watch(() => props.lockScroll, handleLockScroll)\n\n watch(modalTransitionState, state => {\n if (state === TransitionState.Leave) {\n enable()\n }\n })\n\n onBeforeUnmount(() => {\n enable()\n })\n\n function handleLockScroll() {\n if (!props.modelValue) return\n nextTick(() => {\n props.lockScroll ? disable() : enable()\n })\n }\n\n function enable() {\n props.lockScroll && vfmContainer.value && enableBodyScroll(vfmContainer.value)\n }\n\n function disable() {\n vfmContainer.value &&\n disableBodyScroll(vfmContainer.value, {\n reserveScrollBarGap: true\n })\n }\n\n return { handleLockScroll }\n}\n","\n\n\n\n\n","\n\n\n\n\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","\n\n\n","\n\n\n","import VueFinalModalComponent from './VueFinalModal.vue'\nimport ModalsContainerComponent from './ModalsContainer.vue'\nimport { markRaw, reactive, shallowReactive } from 'vue'\n\nexport class ModalInstance {\n constructor() {\n const bindApi = component => {\n const _component = { ...component, props: { ...component.props } }\n Object.assign(_component.props, {\n api: { type: Object, default: () => this }\n })\n return markRaw(_component)\n }\n\n this.modals = []\n this.openedModals = []\n this.VueFinalModal = bindApi(VueFinalModalComponent)\n\n this.dynamicModals = shallowReactive([])\n this.ModalsContainer = bindApi(ModalsContainerComponent)\n }\n\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n const { show } = this.useModal(modal, args[0])\n return show()\n }\n }\n }\n\n hide(...names) {\n return this.toggle(names, false)\n }\n\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.props.name))\n }\n\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n }\n\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.props.name))\n }\n\n existModal(options) {\n return this.dynamicModals.indexOf(options) !== -1\n }\n\n useModal(_options) {\n let options = reactive({\n value: false,\n component: this.VueFinalModal,\n id: Symbol('useModal'),\n bind: {},\n slots: {},\n on: {},\n ..._options\n })\n\n const show = () => {\n return this.existModal(options)\n ? Promise.resolve('[Vue Final Modal] modal is already opened')\n : new Promise((resolve, reject) => {\n options.value = true\n options.reject = reject\n options.opened = () => {\n resolve('show')\n }\n this.dynamicModals.push(options)\n })\n }\n\n const hide = () => {\n return this.existModal(options)\n ? new Promise((resolve, reject) => {\n options.value = false\n options.rejectClose = reject\n options.closed = () => {\n resolve('hide')\n }\n })\n : Promise.resolve('[Vue Final Modal] modal is already closed')\n }\n\n return { show, hide, options }\n }\n}\n\n/**\n * @description Support create multiple modal instance\n */\nexport const createModalInstance = () => {\n let modalInstance = new ModalInstance()\n return {\n $vfm: modalInstance,\n VueFinalModal: modalInstance.VueFinalModal,\n ModalsContainer: modalInstance.ModalsContainer,\n useModal: modalInstance.useModal.bind(modalInstance)\n }\n}\n\n/**\n * @description Create modal instance by default for directly support `import { $vfm, VueFinalModal, ModalsContainer, useModal } from 'vue-final-modal'`\n */\nconst modalInstance = createModalInstance()\n\nexport const { $vfm, VueFinalModal, ModalsContainer, useModal } = modalInstance\n","import { computed, reactive, ref } from 'vue'\nimport { getPosition, checkPassiveEventSupport } from './dom'\nimport { useEventListener } from '@vueuse/core'\n\nconst SwipeDirection = {\n UP: 'UP',\n RIGHT: 'RIGHT',\n DOWN: 'DOWN',\n LEFT: 'LEFT',\n NONE: 'NONE'\n}\n\nexport function useSwipeable(el, { threshold = 50, onSwipeStart, onSwipe, onSwipeEnd, passive = true }) {\n const coordsStart = reactive({ x: 0, y: 0 })\n const coordsEnd = reactive({ x: 0, y: 0 })\n\n const diffX = computed(() => coordsStart.x - coordsEnd.x)\n const diffY = computed(() => coordsStart.y - coordsEnd.y)\n\n const { max, abs } = Math\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold)\n const isSwiping = ref(false)\n\n const direction = computed(() => {\n if (!isThresholdExceeded.value) return SwipeDirection.NONE\n\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT\n } else {\n return diffY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN\n }\n })\n\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x\n coordsStart.y = y\n }\n\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x\n coordsEnd.y = y\n }\n\n let listenerOptions\n\n const isPassiveEventSupported = checkPassiveEventSupport(window?.document)\n\n if (!passive) {\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true }\n } else {\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false }\n }\n\n let events\n function pointerStart(e) {\n if (listenerOptions.capture && !listenerOptions.passive) {\n e.preventDefault()\n }\n const { x, y } = getPosition(e)\n updateCoordsStart(x, y)\n updateCoordsEnd(x, y)\n onSwipeStart?.(e)\n\n events = [\n useEventListener(el, 'mousemove', pointerMove, listenerOptions),\n useEventListener(el, 'touchmove', pointerMove, listenerOptions),\n useEventListener(el, 'mouseup', pointerEnd, listenerOptions),\n useEventListener(el, 'touchend', pointerEnd, listenerOptions),\n useEventListener(el, 'touchcancel', pointerEnd, listenerOptions)\n ]\n }\n\n function pointerMove(e) {\n const { x, y } = getPosition(e)\n updateCoordsEnd(x, y)\n if (!isSwiping.value && isThresholdExceeded.value) {\n isSwiping.value = true\n }\n if (isSwiping.value) {\n onSwipe?.(e)\n }\n }\n\n function pointerEnd(e) {\n if (isSwiping.value) {\n onSwipeEnd?.(e, direction.value)\n }\n\n isSwiping.value = false\n\n events.forEach(s => s())\n }\n\n const stops = [\n useEventListener(el, 'mousedown', pointerStart, listenerOptions),\n useEventListener(el, 'touchstart', pointerStart, listenerOptions)\n ]\n\n const stop = () => {\n stops.forEach(s => s())\n events.forEach(s => s())\n }\n\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n }\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"names":["TransitionState","useTransitionState","state","ref","listeners","beforeEnter","value","afterEnter","beforeLeave","afterLeave","isFocused","element","document","activeElement","FocusTrap","constructor","this","root","elements","onKeyDown","bind","lastElement","length","firstElement","isEnabled","event","key","keyCode","isTabPressed","shiftKey","focus","preventDefault","enable","selector","querySelectorAll","addEventListener","disable","removeEventListener","focusTrap","useFocusTrap","props","vfmContainer","modalTransitionState","watch","focusRetain","enabled","noop","looseFocus","body","blur","getPosition","e","clientX","x","clientY","y","targetTouches","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","resizeCursor","t","tr","r","br","b","bl","l","tl","clamp","min","num","max","Math","trimPx","distance","Number","replace","useDragResize","visible","vfmContent","vfmResize","onEvent","resizeVisible","dragResizeStyle","pointerDown","stopPropagation","STATE_RESIZE","STATE_DRAG","direction","target","getAttribute","_state","dragSelector","includes","validDragElement","rectContainer","getBoundingClientRect","rectContent","isAbsolute","window","getComputedStyle","position","top","left","limit","fitParent","absolute","minTop","minLeft","maxTop","height","maxLeft","width","relative","bottom","right","resetBodyCursor","cacheStyle","style","setStyle","moving","offset","setOffset","dir","offsetAxis","axis","edge","minEdge","getEdge","maxEdge","getOffsetAxis","edgeName","getDirectionInfo","isPositive","rectContentEdge","positionOffset","EdgeName","s","charAt","toUpperCase","slice","directions","_offset","split","forEach","directionInfo","getResizeOffset","margin","touchAction","transform","end","setTimeout","addDragDown","removeDragDown","addResizeDown","nextTick","removeResizeDown","val","drag","resize","keepChangedStyle","hasPassiveEvents","passiveTestOptions","isIosDevice","navigator","platform","test","maxTouchPoints","previousBodyOverflowSetting","previousBodyPaddingRight","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","nodeType","Node","ELEMENT_NODE","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","touches","disableBodyScroll","targetElement","options","console","error","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","getPropertyValue","paddingRight","overflow","setOverflowHidden","enableBodyScroll","filter","useLockScroll","handleLockScroll","modelValue","lockScroll","onBeforeUnmount","inheritAttrs","name","String","default","Boolean","displayDirective","validator","indexOf","classes","Object","Array","overlayClass","contentClass","styles","overlayStyle","contentStyle","hideOverlay","clickToClose","escToClose","nonModal","attach","transition","overlayTransition","zIndexAuto","zIndexBase","zIndex","resizeDirections","minWidth","minHeight","maxWidth","Infinity","maxHeight","emits","setup","emit","uid","Symbol","vfmOverlayTransition","vfmTransition","modalStackIndex","visibility","reactive","modal","overlay","overlayTransitionState","overlayListeners","modalListeners","_stopEvent","lastMousedownEl","resolveToggle","rejectToggle","computedOverlayTransition","computed","computedTransition","isComponentReadyToBeDestroyed","calculateZIndex","bindStyle","bindContentStyle","isArray","getModalInfo","getAttachElement","toggle","mounted","createModalEvent","emitEvent","appendChild","index","api","openedModals","findIndex","vm","splice","warn","concat","close","$_vm","querySelector","eventProps","eventType","stopEvent","stop","show","Promise","resolve","reject","res","err","display","flush","modals","onMounted","remove","onMousedown","onMouseupContainer","onEsc","class","styleInject","css","insertAt","head","getElementsByTagName","createElement","firstChild","insertBefore","styleSheet","cssText","createTextNode","$props","$setup","_createElementBlock","_mergeProps","_ctx","onKeydown","_createVNode","_toHandlers","_createElementVNode","toString","role","tabindex","onMouseup","_renderSlot","_hoisted_2","methods","dynamicModals","closed","beforeClose","rejectClose","beforeOpen","$nextTick","isString","_hoisted_1","_createBlock","component","id","on","on_beforeClose","$options","on_closed","on_beforeOpen","on_opened","opened","slots","slot","_createCommentVNode","innerHTML","ModalInstance","bindApi","_component","assign","markRaw","VueFinalModal","VueFinalModalComponent","shallowReactive","ModalsContainer","ModalsContainerComponent","args","useModal","hide","names","hideAll","map","get","allSettled","existModal","_options","createModalInstance","modalInstance","$vfm","SwipeDirection","useSwipeable","threshold","onSwipeStart","onSwipe","onSwipeEnd","coordsStart","coordsEnd","diffX","diffY","abs","isThresholdExceeded","isSwiping","updateCoordsEnd","listenerOptions","isPassiveEventSupported","supportsPassive","optionsBlock","checkPassiveEventSupport","events","pointerStart","capture","updateCoordsStart","useEventListener","pointerMove","pointerEnd","stops","lengthX","lengthY","attrs","useAttrs","bottomSheetEl","offsetY","isCollapsed","stopSelectionChange","shouldCloseModal","swipeStart","allowSwipe","getSelection","Date","getTime","canSwipe","swipeToCloseDirection","offsetHeight","swipeEnd","validDirection","validDistance","allow","newValue","oldValue","modalContent","offsetX","add","_offsetX","offsetWidth","scrollLeft"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"VueFinalModal.umd.js","sources":["../src/utils/transitionState.js","../src/utils/focusTrap.js","../src/utils/index.js","../src/utils/dom.js","../src/utils/dragResize.js","../src/utils/bodyScrollLock.js","../src/VueFinalModal.vue","../src/VueFinalModal.vue?vue&type=template&id=72c09f54&lang.js","../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/ModalsContainer.vue","../src/ModalsContainer.vue?vue&type=template&id=437c4752&lang.js","../src/modalInstance.js","../src/utils/swipeable.js","../src/hoc/VBottomSheet.vue","../src/hoc/VFullScreen.vue"],"sourcesContent":["import { ref } from 'vue'\n\nexport const TransitionState = {\n Enter: 'enter',\n Entering: 'entering',\n Leave: 'leave',\n Leaving: 'leavng'\n}\n\nexport const useTransitionState = () => {\n const state = ref(null)\n\n const listeners = {\n beforeEnter() {\n state.value = TransitionState.Entering\n },\n afterEnter() {\n state.value = TransitionState.Enter\n },\n beforeLeave() {\n state.value = TransitionState.Leaving\n },\n afterLeave() {\n state.value = TransitionState.Leave\n }\n }\n\n return {\n state,\n listeners\n }\n}\n","import { watch } from 'vue'\nimport { TransitionState } from './transitionState'\n\n// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n }\n\n /**\n * Get last Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n /**\n * Get first Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get firstElement() {\n return this.elements[0] || null\n }\n\n /**\n * Get whether the trap is enabled\n *\n * @return {boolean} isEnabled\n */\n get isEnabled() {\n return !!this.root\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement)) {\n this.lastElement.focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement)) {\n this.firstElement.focus()\n event.preventDefault()\n return\n }\n }\n\n /**\n * Enable focus trap\n *\n * @param {HTMLElement} root - the focus trap root element\n */\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n /**\n * Disable focus trap\n */\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\n/**\n * @type {FocusTrap | null}\n */\nlet focusTrap = null\n\n/**\n * Get FocusTrap focusTrap\n *\n * @returns {FocusTrap} focusTrap\n */\nexport function useFocusTrap({ props, vfmContainer, modalTransitionState }) {\n if (focusTrap == null) {\n focusTrap = new FocusTrap()\n }\n\n watch(modalTransitionState, state => {\n switch (state) {\n case TransitionState.Enter:\n if (props.focusRetain || props.focusTrap) {\n vfmContainer.value.focus()\n }\n props.focusTrap && focusTrap.enable(vfmContainer.value)\n break\n case TransitionState.Leaving:\n if (focusTrap.enabled) {\n focusTrap.disable()\n }\n break\n }\n })\n\n return { focusTrap }\n}\n","export const noop = () => {}\n","import { noop } from './index'\n\nexport const looseFocus = () => {\n const element = document.activeElement\n if (element && element !== document.body) {\n element.blur()\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\n\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n\nexport function checkPassiveEventSupport(document) {\n if (!document) return false\n let supportsPassive = false\n const optionsBlock = {\n get passive() {\n supportsPassive = true\n return false\n }\n }\n document.addEventListener('x', noop, optionsBlock)\n document.removeEventListener('x', noop)\n return supportsPassive\n}\n","import { watch, ref, nextTick } from 'vue'\nimport { TransitionState } from './transitionState'\nimport { addListener, removeListener, getPosition } from './dom'\n\nconst resizeCursor = {\n t: 'ns-resize',\n tr: 'nesw-resize',\n r: 'ew-resize',\n br: 'nwse-resize',\n b: 'ns-resize',\n bl: 'nesw-resize',\n l: 'ew-resize',\n tl: 'nwse-resize'\n}\n\nexport const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nexport function useDragResize({\n props,\n visible,\n vfmContainer,\n vfmContent,\n vfmResize,\n modalTransitionState,\n onEvent = () => {}\n}) {\n const resizeVisible = ref(false)\n const state = ref(null)\n const dragResizeStyle = ref({})\n\n watch(modalTransitionState, val => {\n switch (val) {\n case TransitionState.Enter:\n props.drag && addDragDown()\n props.resize && addResizeDown()\n break\n case TransitionState.Leave:\n if (!props.keepChangedStyle) {\n dragResizeStyle.value = {}\n }\n break\n }\n })\n\n watch(\n () => props.drag,\n val => {\n if (visible.value) {\n val ? addDragDown() : removeDragDown()\n }\n }\n )\n\n watch(\n () => props.resize,\n val => {\n if (visible.value) {\n val ? addResizeDown() : removeResizeDown()\n }\n }\n )\n\n watch(\n () => props.keepChangedStyle,\n val => {\n if (!val) {\n dragResizeStyle.value = {}\n }\n }\n )\n\n function pointerDown(e) {\n e.stopPropagation()\n const STATE_RESIZE = 'resize'\n const STATE_DRAG = 'drag'\n const direction = e.target.getAttribute('direction')\n let _state\n if (direction) {\n _state = STATE_RESIZE\n } else if (validDragElement(e, vfmContent.value, props.dragSelector)) {\n _state = STATE_DRAG\n } else {\n return\n }\n state.value = `${_state}:start`\n onEvent?.(e)\n const down = getPosition(e)\n const rectContainer = vfmContainer.value.getBoundingClientRect()\n const rectContent = vfmContent.value.getBoundingClientRect()\n const isAbsolute = window.getComputedStyle(vfmContent.value).position === 'absolute'\n const position = {\n top: trimPx(dragResizeStyle.value.top),\n left: trimPx(dragResizeStyle.value.left)\n }\n const limit = (() => {\n if (props.fitParent) {\n const limit = {\n absolute() {\n return {\n minTop: 0,\n minLeft: 0,\n maxTop: rectContainer.height - rectContent.height,\n maxLeft: rectContainer.width - rectContent.width\n }\n },\n relative() {\n return {\n minTop: position.top + rectContainer.top - rectContent.top,\n minLeft: position.left + rectContainer.left - rectContent.left,\n maxTop: position.top + rectContainer.bottom - rectContent.bottom,\n maxLeft: position.left + rectContainer.right - rectContent.right\n }\n }\n }\n return isAbsolute ? limit.absolute() : limit.relative()\n } else {\n return {}\n }\n })()\n const resetBodyCursor = _state === STATE_RESIZE && setStyle(document.body, 'cursor', resizeCursor[direction])\n\n const moving = e => {\n // onPointerMove\n e.stopPropagation()\n state.value = `${_state}:move`\n onEvent?.(e)\n const move = getPosition(e)\n let offset = {\n x: move.x - down.x,\n y: move.y - down.y\n }\n if (_state === STATE_RESIZE) {\n offset = getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute)\n }\n\n let top\n let left\n if (isAbsolute) {\n top = rectContent.top - rectContainer.top + offset.y\n left = rectContent.left - rectContainer.left + offset.x\n } else {\n top = position.top + offset.y\n left = position.left + offset.x\n }\n if (_state === STATE_DRAG && props.fitParent) {\n top = clamp(limit.minTop, top, limit.maxTop)\n left = clamp(limit.minLeft, left, limit.maxLeft)\n }\n const style = {\n position: 'relative',\n top: top + 'px',\n left: left + 'px',\n margin: 'unset',\n touchAction: 'none',\n ...(isAbsolute && {\n position: 'absolute',\n transform: 'unset',\n width: rectContent.width + 'px',\n height: rectContent.height + 'px'\n }),\n ...(offset.width && { width: offset.width + 'px' }),\n ...(offset.height && { height: offset.height + 'px' })\n }\n\n dragResizeStyle.value = {\n ...dragResizeStyle.value,\n ...style\n }\n }\n const end = e => {\n // onPointerUp\n e.stopPropagation()\n if (_state === STATE_RESIZE) {\n resetBodyCursor && resetBodyCursor()\n }\n // Excute onMouseupContainer before trigger onEvent\n setTimeout(() => {\n state.value = `${_state}:end`\n onEvent?.(e)\n })\n removeListener('move', document, moving)\n removeListener('up', document, end)\n }\n addListener('move', document, moving)\n addListener('up', document, end)\n }\n function addDragDown() {\n addListener('down', vfmContent.value, pointerDown)\n dragResizeStyle.value.touchAction = 'none'\n }\n function removeDragDown() {\n removeListener('down', vfmContent.value, pointerDown)\n }\n function addResizeDown() {\n resizeVisible.value = true\n nextTick(() => {\n addListener('down', vfmResize.value, pointerDown)\n })\n }\n function removeResizeDown() {\n removeListener('down', vfmResize.value, pointerDown)\n resizeVisible.value = false\n }\n function getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute) {\n const setOffset = dir => {\n let offsetAxis = offset[dir.axis]\n offsetAxis = props.fitParent ? clamp(dir.min, offsetAxis, dir.max) : offsetAxis\n let edge = clamp(dir.minEdge, dir.getEdge(offsetAxis), dir.maxEdge)\n offsetAxis = dir.getOffsetAxis(edge, isAbsolute)\n return {\n [dir.edgeName]: edge,\n [dir.axis]: offsetAxis\n }\n }\n\n const getDirectionInfo = (position, edgeName, axis, isPositive) => {\n const rectContentEdge = rectContent[edgeName]\n const positionOffset = rectContainer[position] - rectContent[position]\n const EdgeName = capitalize(edgeName)\n return {\n axis,\n edgeName,\n min: isPositive ? positionOffset : -rectContentEdge,\n max: isPositive ? rectContentEdge : positionOffset,\n minEdge: props[`min${EdgeName}`],\n maxEdge: props[`max${EdgeName}`],\n getEdge: offsetAxis => rectContent[edgeName] - offsetAxis * (isPositive ? 1 : -1),\n getOffsetAxis: (edge, isAbsolute) => {\n const offsetAxis = rectContent[edgeName] - edge\n if (isAbsolute) {\n return isPositive ? offsetAxis : 0\n } else {\n return ((isPositive ? 1 : -1) * offsetAxis) / 2\n }\n }\n }\n }\n\n const directions = {\n t: ['top', 'height', 'y', true],\n b: ['bottom', 'height', 'y', false],\n l: ['left', 'width', 'x', true],\n r: ['right', 'width', 'x', false]\n }\n\n let _offset = { x: 0, y: 0 }\n direction.split('').forEach(dir => {\n const directionInfo = getDirectionInfo(...directions[dir])\n _offset = {\n ..._offset,\n ...setOffset(directionInfo)\n }\n })\n return _offset\n }\n\n return {\n resizeVisible,\n state,\n dragResizeStyle,\n removeDragDown,\n removeResizeDown\n }\n}\n","import { watch, nextTick, onBeforeUnmount } from 'vue'\nimport { TransitionState } from './transitionState'\n\n// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n\nexport function useLockScroll({ props, vfmContainer, modalTransitionState }) {\n watch(() => props.lockScroll, handleLockScroll)\n\n watch(modalTransitionState, state => {\n if (state === TransitionState.Leave) {\n enable()\n }\n })\n\n onBeforeUnmount(() => {\n enable()\n })\n\n function handleLockScroll() {\n if (!props.modelValue) return\n nextTick(() => {\n props.lockScroll ? disable() : enable()\n })\n }\n\n function enable() {\n props.lockScroll && vfmContainer.value && enableBodyScroll(vfmContainer.value)\n }\n\n function disable() {\n vfmContainer.value &&\n disableBodyScroll(vfmContainer.value, {\n reserveScrollBarGap: true\n })\n }\n\n return { handleLockScroll }\n}\n","\n\n\n\n\n","\n\n\n\n\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","\n\n\n","\n\n\n","import VueFinalModalComponent from './VueFinalModal.vue'\nimport ModalsContainerComponent from './ModalsContainer.vue'\nimport { markRaw, reactive, shallowReactive } from 'vue'\n\nexport class ModalInstance {\n constructor() {\n const bindApi = component => {\n const _component = { ...component, props: { ...component.props } }\n Object.assign(_component.props, {\n api: { type: Object, default: () => this }\n })\n return markRaw(_component)\n }\n\n this.modals = []\n this.openedModals = []\n this.VueFinalModal = bindApi(VueFinalModalComponent)\n\n this.dynamicModals = shallowReactive([])\n this.ModalsContainer = bindApi(ModalsContainerComponent)\n }\n\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n const { show } = this.useModal(modal, args[0])\n return show()\n }\n }\n }\n\n hide(...names) {\n return this.toggle(names, false)\n }\n\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.props.name))\n }\n\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n }\n\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.props.name))\n }\n\n existModal(options) {\n return this.dynamicModals.indexOf(options) !== -1\n }\n\n useModal(_options) {\n let options = reactive({\n value: false,\n component: this.VueFinalModal,\n id: Symbol('useModal'),\n bind: {},\n slots: {},\n on: {},\n ..._options\n })\n\n const show = () => {\n return this.existModal(options)\n ? Promise.resolve('[Vue Final Modal] modal is already opened')\n : new Promise((resolve, reject) => {\n options.value = true\n options.reject = reject\n options.opened = () => {\n resolve('show')\n }\n this.dynamicModals.push(options)\n })\n }\n\n const hide = () => {\n return this.existModal(options)\n ? new Promise((resolve, reject) => {\n options.value = false\n options.rejectClose = reject\n options.closed = () => {\n resolve('hide')\n }\n })\n : Promise.resolve('[Vue Final Modal] modal is already closed')\n }\n\n return { show, hide, options }\n }\n}\n\n/**\n * @description Support create multiple modal instance\n */\nexport const createModalInstance = () => {\n let modalInstance = new ModalInstance()\n return {\n $vfm: modalInstance,\n VueFinalModal: modalInstance.VueFinalModal,\n ModalsContainer: modalInstance.ModalsContainer,\n useModal: modalInstance.useModal.bind(modalInstance)\n }\n}\n\n/**\n * @description Create modal instance by default for directly support `import { $vfm, VueFinalModal, ModalsContainer, useModal } from 'vue-final-modal'`\n */\nconst modalInstance = createModalInstance()\n\nexport const { $vfm, VueFinalModal, ModalsContainer, useModal } = modalInstance\n","import { computed, reactive, ref } from 'vue'\nimport { getPosition, checkPassiveEventSupport } from './dom'\nimport { useEventListener } from '@vueuse/core'\n\nconst SwipeDirection = {\n UP: 'UP',\n RIGHT: 'RIGHT',\n DOWN: 'DOWN',\n LEFT: 'LEFT',\n NONE: 'NONE'\n}\n\nexport function useSwipeable(el, { threshold = 50, onSwipeStart, onSwipe, onSwipeEnd, passive = true }) {\n const coordsStart = reactive({ x: 0, y: 0 })\n const coordsEnd = reactive({ x: 0, y: 0 })\n\n const diffX = computed(() => coordsStart.x - coordsEnd.x)\n const diffY = computed(() => coordsStart.y - coordsEnd.y)\n\n const { max, abs } = Math\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold)\n const isSwiping = ref(false)\n\n const direction = computed(() => {\n if (!isThresholdExceeded.value) return SwipeDirection.NONE\n\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT\n } else {\n return diffY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN\n }\n })\n\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x\n coordsStart.y = y\n }\n\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x\n coordsEnd.y = y\n }\n\n let listenerOptions\n\n const isPassiveEventSupported = checkPassiveEventSupport(window?.document)\n\n if (!passive) {\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true }\n } else {\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false }\n }\n\n let events\n function pointerStart(e) {\n if (listenerOptions.capture && !listenerOptions.passive) {\n e.preventDefault()\n }\n const { x, y } = getPosition(e)\n updateCoordsStart(x, y)\n updateCoordsEnd(x, y)\n onSwipeStart?.(e)\n\n events = [\n useEventListener(el, 'mousemove', pointerMove, listenerOptions),\n useEventListener(el, 'touchmove', pointerMove, listenerOptions),\n useEventListener(el, 'mouseup', pointerEnd, listenerOptions),\n useEventListener(el, 'touchend', pointerEnd, listenerOptions),\n useEventListener(el, 'touchcancel', pointerEnd, listenerOptions)\n ]\n }\n\n function pointerMove(e) {\n const { x, y } = getPosition(e)\n updateCoordsEnd(x, y)\n if (!isSwiping.value && isThresholdExceeded.value) {\n isSwiping.value = true\n }\n if (isSwiping.value) {\n onSwipe?.(e)\n }\n }\n\n function pointerEnd(e) {\n if (isSwiping.value) {\n onSwipeEnd?.(e, direction.value)\n }\n\n isSwiping.value = false\n\n events.forEach(s => s())\n }\n\n const stops = [\n useEventListener(el, 'mousedown', pointerStart, listenerOptions),\n useEventListener(el, 'touchstart', pointerStart, listenerOptions)\n ]\n\n const stop = () => {\n stops.forEach(s => s())\n events.forEach(s => s())\n }\n\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n }\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"names":["TransitionState","useTransitionState","state","ref","listeners","beforeEnter","value","afterEnter","beforeLeave","afterLeave","isFocused","element","document","activeElement","FocusTrap","constructor","this","root","elements","onKeyDown","bind","lastElement","length","firstElement","isEnabled","event","key","keyCode","isTabPressed","shiftKey","focus","preventDefault","enable","selector","querySelectorAll","addEventListener","disable","removeEventListener","focusTrap","useFocusTrap","props","vfmContainer","modalTransitionState","watch","focusRetain","enabled","noop","looseFocus","body","blur","getPosition","e","clientX","x","clientY","y","targetTouches","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","resizeCursor","t","tr","r","br","b","bl","l","tl","clamp","min","num","max","Math","trimPx","distance","Number","replace","useDragResize","visible","vfmContent","vfmResize","onEvent","resizeVisible","dragResizeStyle","pointerDown","stopPropagation","STATE_RESIZE","STATE_DRAG","direction","target","getAttribute","_state","dragSelector","includes","validDragElement","rectContainer","getBoundingClientRect","rectContent","isAbsolute","window","getComputedStyle","position","top","left","limit","fitParent","absolute","minTop","minLeft","maxTop","height","maxLeft","width","relative","bottom","right","resetBodyCursor","cacheStyle","style","setStyle","moving","offset","setOffset","dir","offsetAxis","axis","edge","minEdge","getEdge","maxEdge","getOffsetAxis","edgeName","getDirectionInfo","isPositive","rectContentEdge","positionOffset","EdgeName","s","charAt","toUpperCase","slice","directions","_offset","split","forEach","directionInfo","getResizeOffset","margin","touchAction","transform","end","setTimeout","addDragDown","removeDragDown","addResizeDown","nextTick","removeResizeDown","val","drag","resize","keepChangedStyle","hasPassiveEvents","passiveTestOptions","isIosDevice","navigator","platform","test","maxTouchPoints","previousBodyOverflowSetting","previousBodyPaddingRight","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","nodeType","Node","ELEMENT_NODE","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","touches","disableBodyScroll","targetElement","options","console","error","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","getPropertyValue","paddingRight","overflow","setOverflowHidden","enableBodyScroll","filter","useLockScroll","handleLockScroll","modelValue","lockScroll","onBeforeUnmount","inheritAttrs","name","String","default","Boolean","displayDirective","validator","indexOf","classes","Object","Array","overlayClass","contentClass","styles","overlayStyle","contentStyle","hideOverlay","clickToClose","escToClose","nonModal","attach","transition","overlayTransition","zIndexAuto","zIndexBase","zIndex","resizeDirections","minWidth","minHeight","maxWidth","Infinity","maxHeight","emits","setup","emit","uid","Symbol","vfmOverlayTransition","vfmTransition","modalStackIndex","visibility","reactive","modal","overlay","overlayTransitionState","overlayListeners","modalListeners","_stopEvent","lastMousedownEl","resolveToggle","rejectToggle","computedOverlayTransition","computed","computedTransition","isComponentReadyToBeDestroyed","calculateZIndex","bindStyle","bindContentStyle","isArray","getModalInfo","getAttachElement","toggle","mounted","createModalEvent","emitEvent","appendChild","index","api","openedModals","findIndex","vm","splice","warn","concat","close","$_vm","querySelector","eventProps","eventType","stopEvent","stop","show","Promise","resolve","reject","res","err","display","flush","modals","onMounted","remove","onMousedown","onMouseupContainer","onEsc","class","styleInject","css","insertAt","head","getElementsByTagName","createElement","firstChild","insertBefore","styleSheet","cssText","createTextNode","$props","$setup","_createElementBlock","_mergeProps","_ctx","onKeydown","_createVNode","_toHandlers","_createElementVNode","toString","role","tabindex","onMouseup","_renderSlot","_hoisted_2","methods","dynamicModals","closed","beforeClose","rejectClose","beforeOpen","$nextTick","isString","_hoisted_1","_createBlock","component","id","on","on_beforeClose","$options","on_closed","on_beforeOpen","on_opened","opened","slots","slot","_createCommentVNode","innerHTML","ModalInstance","bindApi","_component","assign","markRaw","VueFinalModal","VueFinalModalComponent","shallowReactive","ModalsContainer","ModalsContainerComponent","args","useModal","hide","names","hideAll","map","get","allSettled","existModal","_options","createModalInstance","modalInstance","$vfm","SwipeDirection","useSwipeable","threshold","onSwipeStart","onSwipe","onSwipeEnd","coordsStart","coordsEnd","diffX","diffY","abs","isThresholdExceeded","isSwiping","updateCoordsEnd","listenerOptions","isPassiveEventSupported","supportsPassive","optionsBlock","checkPassiveEventSupport","events","pointerStart","capture","updateCoordsStart","useEventListener","pointerMove","pointerEnd","stops","lengthX","lengthY","attrs","useAttrs","bottomSheetEl","offsetY","isCollapsed","stopSelectionChange","shouldCloseModal","swipeStart","allowSwipe","getSelection","Date","getTime","canSwipe","swipeToCloseDirection","offsetHeight","swipeEnd","validDirection","validDistance","allow","newValue","oldValue","modalContent","offsetX","add","_offsetX","offsetWidth","scrollLeft"],"mappings":"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"} \ No newline at end of file diff --git a/packages/lib/src/hoc/VBottomSheet.vue b/packages/lib/src/hoc/VBottomSheet.vue index 9e3b363a..24617065 100644 --- a/packages/lib/src/hoc/VBottomSheet.vue +++ b/packages/lib/src/hoc/VBottomSheet.vue @@ -5,7 +5,7 @@ 'enter-active-class': 'slideInDown', 'leave-active-class': 'slideOutDown' }" - :lock-scroll="false" + :lock-scroll="lockScroll" @mousedown.stop @touchstart.stop.passive @closed="looseFocus" @@ -52,7 +52,8 @@ const props = defineProps({ return ['', 'DOWN'].includes(val) !== -1 } }, - threshold: { type: Number, default: 30 } + threshold: { type: Number, default: 30 }, + lockScroll: { type: Boolean, default: false } }) const attrs = useAttrs() diff --git a/packages/lib/src/hoc/VFullScreen.vue b/packages/lib/src/hoc/VFullScreen.vue index f9d6cc12..13b914f7 100644 --- a/packages/lib/src/hoc/VFullScreen.vue +++ b/packages/lib/src/hoc/VFullScreen.vue @@ -5,7 +5,7 @@ :transition="transition" :content-style="[{ transform: `translateX(${-offsetX}px)` }]" :content-class="{ 'vfm-transition': !isSwiping }" - :lock-scroll="false" + :lock-scroll="lockScroll" @mousedown.stop @touchstart.stop.passive @closed="looseFocus" @@ -49,7 +49,8 @@ const props = defineProps({ return ['', 'RIGHT', 'LEFT'].includes(val) !== -1 } }, - threshold: { type: Number, default: 30 } + threshold: { type: Number, default: 30 }, + lockScroll: { type: Boolean, default: false } }) const attrs = useAttrs()