Current section

Files

Jump to
live_pane priv static live_pane.min.js
Raw

priv/static/live_pane.min.js

"use strict";var LiveMotion=(()=>{var A=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var Z=Object.prototype.hasOwnProperty;var ee=(t,e)=>{for(var n in e)A(t,n,{get:e[n],enumerable:!0})},te=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Q(e))!Z.call(t,o)&&o!==n&&A(t,o,{get:()=>e[o],enumerable:!(s=K(e,o))||s.enumerable});return t};var ne=t=>te(A({},"__esModule",{value:!0}),t);var ze={};ee(ze,{createLivePaneHooks:()=>he});function p(t,e="Assertion failed!"){if(!t)throw console.error(e),Error(e)}function F(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}function C(t){return t.type.startsWith("mouse")}function z(t){let e=new Set;function n(i){if(F(t,i)){t=i;for(let a of e)a(i)}}function s(){return t}function o(i){n(i(t))}function r(i){return e.add(i),i(t),()=>{e.delete(i)}}return{set:n,get:s,update:o,subscribe:r}}var H=10,y=new Map,T=new Map,k=new Map,v=z(null);function x(t,e,n=H){return S(t,e,n)===0}function S(t,e,n=H){let s=O(t,n),o=O(e,n);return Math.sign(s-o)}function w(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}function O(t,e){return parseFloat(t.toFixed(e))}function D({paneConstraintsArray:t,paneIndex:e,size:n}){p(t[e]!=null,"Pane constraints should not be null.");let{collapsedSize:s,collapsible:o,maxSize:r,minSize:i}=t[e],a=n;return S(a,i)<0&&(a=re(a,o,s,i)),a=Math.min(r,a),parseFloat(a.toFixed(H))}function re(t,e,n,s){if(!e)return s;let o=(n+s)/2;return S(t,o)<0?n:s}function N(){return{mounted(){if(!this.el.id)throw Error("Pane Group must have an id.");if(y.has(this.el.id))throw Error(`Pane Group with id "${this.el.id}" already exists.`);let e=this.el.getAttribute("data-pane-direction")||"horizontal",n=z([]),s=z(!1),o=z(e),r=z([]),i=z(0),a="",l=oe(r,n,s),d={paneDataArray:n,paneDataArrayChanged:s,direction:o,dragHandleId:a,layout:r,prevDelta:i,unsubFromPaneDataChange:l};y.set(this.el.id,d)},destroyed(){var e;(e=y.get(this.el.id))==null||e.unsubFromPaneDataChange(),y.delete(this.el.id)}}}function oe(t,e,n){return n.subscribe(s=>{if(!s)return;n.set(!1);let o=t.get(),r=e.get(),i=null;i==null&&(i=ie({paneDataArray:r}));let a=se({layout:i,paneConstraintsArray:r.map(l=>l.constraints)});w(o,a)||t.set(a)})}function ie({paneDataArray:t}){let e=Array(t.length),n=t.map(r=>r.constraints),s=0,o=100;for(let r=0;r<t.length;r++){let i=n[r];p(i);let{defaultSize:a}=i;a!=null&&(s++,e[r]=a,o-=a)}for(let r=0;r<t.length;r++){let i=n[r];p(i);let{defaultSize:a}=i;if(a!=null)continue;let l=t.length-s,d=o/l;s++,e[r]=d,o-=d}return e}function se({layout:t,paneConstraintsArray:e}){let n=[...t],s=n.reduce((r,i)=>r+i,0);if(n.length!==e.length)throw Error(`Invalid ${e.length} pane layout: ${n.map(r=>`${r}%`).join(", ")}`);if(!x(s,100))for(let r=0;r<e.length;r++){let i=n[r];p(i!=null);let a=100/s*i;n[r]=a}let o=0;for(let r=0;r<e.length;r++){let i=n[r];p(i!=null);let a=D({paneConstraintsArray:e,paneIndex:r,size:i});i!=a&&(o+=i-a,n[r]=a)}if(!x(o,0))for(let r=0;r<e.length;r++){let i=n[r];p(i!=null);let a=i+o,l=D({paneConstraintsArray:e,paneIndex:r,size:a});if(i!==l&&(o-=l-i,n[r]=l,x(o,0)))break}return n}function G(t){return Object.keys(t).reduce((e,n)=>t[n]===void 0?e:e+`${n}:${t[n]};`,"")}var L=null,P=null;function W(t){switch(t){case"horizontal":return"ew-resize";case"horizontal-max":return"w-resize";case"horizontal-min":return"e-resize";case"vertical":return"ns-resize";case"vertical-max":return"n-resize";case"vertical-min":return"s-resize"}}function $(){P!==null&&(document.head.removeChild(P),L=null,P=null)}function R(t){if(L===t)return;L=t;let e=W(t);P===null&&(P=document.createElement("style"),document.head.appendChild(P)),P.innerHTML=`*{cursor: ${e}!important;}`}function U({defaultSize:t,dragState:e,layout:n,paneData:s,paneIndex:o,precision:r=3}){let i=n[o],a;return i==null?a=t!=null?t:"1":s.length===1?a="1":a=i.toPrecision(r),G({"flex-basis":0,"flex-grow":a,"flex-shrink":1,overflow:"hidden","pointer-events":e!==null?"none":void 0})}function j(){return{mounted(){let e=this.el.getAttribute("data-pane-group-id");if(!e)throw Error("data-pane-group-id must exist for pane components!");let n=this.el.id;if(!n)throw Error("Id must exist for pane components!");let s=this.el.getAttribute("data-pane-order"),o=s?Number(s):0,r=y.get(e);if(!r)throw Error('Group with id "'+e+'" does not exist.');let i={id:this.el.id,order:o,constraints:{collapsedSize:0,collapsible:!1,defaultSize:void 0,maxSize:100,minSize:0}};ae(i,r.paneDataArray,r.paneDataArrayChanged);let a=le(this.el,r,i,void 0);T.set(n,{groupId:e,unsubs:a})},destroyed(){let{groupId:e,unsubs:n}=T.get(this.el.id);for(let o of n)o();let s=y.get(e);ue(this.el.id,s.paneDataArray,s.paneDataArrayChanged),T.delete(this.el.id)}}}function ae(t,e,n){e.update(s=>{let o=[...s,t];return o.sort((r,i)=>{let a=r.order,l=i.order;return a==null&&l==null?0:a==null?-1:l==null?1:a-l}),o}),n.set(!0)}function ue(t,e,n){let s=e.get(),o=q(s,t);o<0||e.update(r=>(r.splice(o,1),n.set(!0),r))}function q(t,e){return t.findIndex(n=>n.id===e)}function le(t,e,n,s){let o=()=>{let l=q(e.paneDataArray.get(),n.id);return U({defaultSize:s,dragState:v.get(),layout:e.layout.get(),paneData:e.paneDataArray.get(),paneIndex:l})},r=e.paneDataArray.subscribe(l=>t.style.cssText=o()),i=e.layout.subscribe(l=>{t.style.cssText=o()}),a=v.subscribe(l=>t.style.cssText=o());return[r,i,a]}function B(...t){return(...e)=>{for(let n of t)typeof n=="function"&&n(...e)}}function I(t,e,n,s){let o=Array.isArray(e)?e:[e];return o.forEach(r=>t.addEventListener(r,n,s)),()=>{o.forEach(r=>t.removeEventListener(r,n,s))}}function _({delta:t,layout:e,paneConstraintsArray:n,pivotIndices:s,trigger:o}){if(x(t,0))return e;let r=[...e],[i,a]=s;p(i!=null,"Invalid first pivot index"),p(a!=null,"Invalid second pivot index");let l=0;if(o==="keyboard"){{let c=t<0?a:i,u=n[c];if(p(u),u.collapsible){let f=e[c];p(f!=null);let m=n[c];p(m);let{collapsedSize:b=0,minSize:h=0}=m;if(x(f,b)){let g=h-f;S(g,Math.abs(t))>0&&(t=t<0?0-g:g)}}}{let c=t<0?i:a,u=n[c];p(u);let{collapsible:f}=u;if(f){let m=e[c];p(m!=null);let b=n[c];p(b);let{collapsedSize:h=0,minSize:g=0}=b;if(x(m,g)){let E=m-h;S(E,Math.abs(t))>0&&(t=t<0?0-E:E)}}}}{let c=t<0?1:-1,u=t<0?a:i,f=0;for(;;){let b=e[u];p(b!=null);let g=D({paneConstraintsArray:n,paneIndex:u,size:100})-b;if(f+=g,u+=c,u<0||u>=n.length)break}let m=Math.min(Math.abs(t),Math.abs(f));t=t<0?0-m:m}{let u=t<0?i:a;for(;u>=0&&u<n.length;){let f=Math.abs(t)-Math.abs(l),m=e[u];p(m!=null);let b=m-f,h=D({paneConstraintsArray:n,paneIndex:u,size:b});if(!x(m,h)&&(l+=m-h,r[u]=h,l.toPrecision(3).localeCompare(Math.abs(t).toPrecision(3),void 0,{numeric:!0})>=0))break;t<0?u--:u++}}if(x(l,0))return e;{let c=t<0?a:i,u=e[c];p(u!=null);let f=u+l,m=D({paneConstraintsArray:n,paneIndex:c,size:f});if(r[c]=m,!x(m,f)){let b=f-m,g=t<0?a:i;for(;g>=0&&g<n.length;){let E=r[g];p(E!=null);let J=E+b,M=D({paneConstraintsArray:n,paneIndex:g,size:J});if(x(E,M)||(b-=M-E,r[g]=M),x(b,0))break;t>0?g--:g++}}}let d=r.reduce((c,u)=>u+c,0);return x(d,100)?r:e}function V(){let t=!1;return{mounted(){let n=this.el.getAttribute("data-pane-group-id");if(!n)throw Error("data-pane-group-id must exist for resizer components!");let s=this.el.getAttribute("id");if(!s)throw Error("Resizer id must exist for resizer components!");let o=y.get(n);if(!o)throw Error(`Missing group "${n} for resizer "${s}`);let r={disabled:z(!1),isDragging:z(!1),resizeHandlerCallback:null,unsubs:[]};k.set(s,r),o.dragHandleId=s,r.disabled.set(this.el.getAttribute("data-pane-disabled")==="true"),r.disabled.get()||(r.resizeHandlerCallback=d=>{var f,m,b,h;let c=(m=(f=v.get())==null?void 0:f.initialCursorPosition)!=null?m:null,u=(h=(b=v.get())==null?void 0:b.initialLayout)!=null?h:null;de(n,o,u,c,d)});let{update:i,unsub:a}=ce(this.el,r);r.unsubs.push(a),r.unsubs.push(r.disabled.subscribe(d=>i(r))),r.unsubs.push(r.isDragging.subscribe(d=>{i(r)}));let l=G({cursor:W(o.direction.get()),"touch-action":"none","user-select":"none","-webkit-user-select":"none","-webkit-touch-callout":"none"});this.el.style.cssText=l,this.el.onblur=()=>t=!1,this.el.onfocus=()=>t=!0,this.el.onmousedown=d=>{var u;d.preventDefault();let c=pe(o.direction,o.layout,o.dragHandleId,d);v.set(c),r.isDragging.set(((u=v.get())==null?void 0:u.dragHandleId)===s)},this.el.onmouseup=()=>{v.set(null),$(),r.isDragging.set(!1)}},destroyed(){var s,o;let n=this.el.getAttribute("id");for(let r of(o=(s=k.get(n))==null?void 0:s.unsubs)!=null?o:[])r();k.delete(n)}}}function ce(t,e){let n=()=>{};function s(o){n();let{disabled:r,resizeHandlerCallback:i,isDragging:a}=o;if(r.get()||!a.get()||i===null)return;let l=u=>{i(u)},d=u=>{i(u)},c=()=>{t.blur(),a.set(!1),v.set(null),$()};n=B(I(document.body,"contextmenu",c),I(document.body,"mousemove",l),I(document.body,"mouseleave",d),I(window,"mouseup",c))}return s(e),{update:s,unsub:n}}function de(t,e,n,s,o){o.preventDefault();let r=e.direction.get(),i=e.layout.get(),a=e.paneDataArray.get(),l=me(t,e.dragHandleId),d=fe(o,e.dragHandleId,r,s);if(d===0)return;let c=r==="horizontal";document.dir==="rtl"&&c&&(d=-d);let u=a.map(b=>b.constraints),f=_({delta:d,layout:n!=null?n:i,paneConstraintsArray:u,pivotIndices:l,trigger:"mouse-or-touch"}),m=!w(i,f);C(o)&&e.prevDelta.get()!=d&&(e.prevDelta.set(d),m?R(c?"horizontal":"vertical"):c?R(d<0?"horizontal-min":"horizontal-max"):R(d<0?"vertical-min":"vertical-max")),m&&e.layout.set(f)}function pe(t,e,n,s){let o=Y(n);return p(o),{dragHandleId:n,dragHandleRect:o.getBoundingClientRect(),initialCursorPosition:X(t.get(),s),initialLayout:e.get()}}function me(t,e){let n=ge(t,e);return n!=null?[n,n+1]:[-1,-1]}function fe(t,e,n,s){if(s==null)return 0;let o=n==="horizontal",r=Y(e);p(r);let i=r.getAttribute("data-pane-group-id");p(i);let a=X(n,t),l=xe(i);p(l);let d=l.getBoundingClientRect(),c=o?d.width:d.height;return(a-s)/c*100}function X(t,e){var s;let n=t==="horizontal";if(C(e))return n?e.clientX:e.clientY;throw Error(`Unsupported event type "${(s=e.type)!=null?s:"unknown"}"`)}function be(t){return Array.from(document.querySelectorAll(`[data-pane-resizer-id][data-pane-group-id="${t}"]`))}function ge(t,e){let s=be(t).findIndex(o=>o.getAttribute("data-pane-resizer-id")===e);return s!=null?s:null}function Y(t){let e=document.querySelector(`[data-pane-resizer][data-pane-resizer-id="${t}"]`);return e||null}function xe(t){let e=document.querySelector(`[data-pane-group][data-pane-group-id="${t}"]`);return e||null}function he(){let t=N(),e=j(),n=V();return{groupHook:t,paneHook:e,resizerHook:n}}return ne(ze);})();