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 R=Object.defineProperty,ve=Object.defineProperties,Pe=Object.getOwnPropertyDescriptor,Ee=Object.getOwnPropertyDescriptors,De=Object.getOwnPropertyNames,q=Object.getOwnPropertySymbols;var V=Object.prototype.hasOwnProperty,Ie=Object.prototype.propertyIsEnumerable;var j=(e,t,n)=>t in e?R(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,J=(e,t)=>{for(var n in t||(t={}))V.call(t,n)&&j(e,n,t[n]);if(q)for(var n of q(t))Ie.call(t,n)&&j(e,n,t[n]);return e},X=(e,t)=>ve(e,Ee(t));var Ae=(e,t)=>{for(var n in t)R(e,n,{get:t[n],enumerable:!0})},Ce=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of De(t))!V.call(e,r)&&r!==n&&R(e,r,{get:()=>t[r],enumerable:!(a=Pe(t,r))||a.enumerable});return e};var Te=e=>Ce(R({},"__esModule",{value:!0}),e);var Ze={};Ae(Ze,{createLivePaneHooks:()=>Qe});function f(e,t="Assertion failed!"){if(!e)throw console.error(t),Error(t)}function Y(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}function Q(e){return e instanceof HTMLElement}function N(e){return e.type.startsWith("mouse")}function O(e){return e.type.startsWith("touch")}function B(e){return e.type==="keydown"}function T(e,t,n){let a=e.map(p=>p.constraints),r=C(e,t.id),o=a[r],s=r===e.length-1?[r-1,r]:[r,r+1],l=n[r];return X(J({},o),{paneSize:l,pivotIndices:s})}function C(e,t){return e.findIndex(n=>n.id===t)}function w(e,t,n){let{collapsedSize:a=0,collapsible:r,paneSize:o}=T(e,n,t);return r===!0&&o===a}function Z(e,t,n){let{collapsedSize:a=0,collapsible:r,paneSize:o}=T(e,n,t);return!r||o>a}function ee(){return new Promise(e=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e()})})})}function x(e){let t=new Set;function n(i){if(Y(e,i)){e=i;for(let s of t)s(i)}}function a(){return e}function r(i){n(i(e))}function o(i){return t.add(i),i(e),()=>{t.delete(i)}}return{set:n,get:a,update:r,subscribe:o}}function $(e){try{if(typeof localStorage=="undefined")throw new Error("localStorage is not supported in this environment");e.getItem=t=>localStorage.getItem(t),e.setItem=(t,n)=>localStorage.setItem(t,n)}catch(t){console.error(t),e.getItem=()=>null,e.setItem=()=>{}}}function we(e,t,n,a,r){let o=re(e),i=oe(t),s=ae(e,r)||{};s[i]={expandToSizes:Object.fromEntries(n.entries()),layout:a};try{r.setItem(o,JSON.stringify(s))}catch(l){console.error(l)}}function ne(e,t,n){let a=ae(e,n)||{},r=oe(t);return a[r]||null}function re(e){return`livepane:${e}`}function oe(e){return e.map(({id:n})=>n).sort().join(",")}function ae(e,t){try{let n=re(e),a=t.getItem(n),r=JSON.parse(a||"");if(typeof r=="object"&&r!==null)return r}catch(n){}return null}var te={};function He(e,t=10){let n=null;return(...r)=>{n!==null&&clearTimeout(n),n=setTimeout(()=>{e(...r)},t)}}function ie({saveId:e,layout:t,storage:n,paneDataArrayStore:a,paneSizeBeforeCollapseStore:r}){let o=a.get();if(t.length===0||t.length!==o.length)return;let i=te[e];i==null&&(i=He(we,se),te[e]=i);let s=[...o],l=r.get(),p=new Map(l);i(e,s,p,t,n)}var se=100,H=10,S=new Map,G=new Map,W=new Map,h=x(null);var E={getItem:e=>($(E),E.getItem(e)),setItem:(e,t)=>{$(E),E.setItem(e,t)}};function z(e,t,n=H){return D(e,t,n)===0}function D(e,t,n=H){let a=le(e,n),r=le(t,n);return Math.sign(a-r)}function I(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function le(e,t){return parseFloat(e.toFixed(t))}function P({paneConstraintsArray:e,paneIndex:t,size:n}){f(e[t]!=null,"Pane constraints should not be null.");let{collapsedSize:a,collapsible:r,maxSize:o,minSize:i}=e[t],s=n;return D(s,i)<0&&(s=ke(s,r,a,i)),s=Math.min(o,s),parseFloat(s.toFixed(H))}function ke(e,t,n,a){if(!t)return a;let r=(n+a)/2;return D(e,r)<0?n:a}function ue({layout:e,panesArray:t,pivotIndices:n}){let a=0,r=100,o=0,i=0,s=n[0];for(let u=0;u<t.length;u++){let{constraints:d}=t[u],{maxSize:m=100,minSize:b=0}=d;u===s?(a=b,r=m):(o+=b,i+=m)}let l=Math.min(r,100-o),p=Math.max(a,100-i),c=e[s];return{valueMax:l,valueMin:p,valueNow:c}}function ce(){return{mounted(){if(!this.el.id)throw Error("Pane Group must have an id.");if(S.has(this.el.id))throw Error(`Pane Group with id "${this.el.id}" already exists.`);let t=this.el.getAttribute("data-pane-direction")||"horizontal",n=this.el.getAttribute("keyboard-resize-by"),a=n?Number(n):null,r=this.el.getAttribute("auto-save")==="true",o=x([]),i=x(!1),s=x(t),l=x([]),p=x(0),c={},u=x(new Map),d=Re(this.el.id,l,o,i,r,u),m=Le(this.el.id,l,o,u,r),b=We(this.el.id,l,o),y=Ge(l,o),g={paneDataArray:o,paneDataArrayChanged:i,direction:s,layout:l,prevDelta:p,keyboardResizeBy:a,paneIdToLastNotifiedSizeMap:c,paneSizeBeforeCollapseMap:u,autoSave:r,unsubFromPaneDataChange:d,unsubFromLayoutChange:m,unsubFromUpdateAriaValues:b,unsubFromUpdateIsCollapsed:y};S.set(this.el.id,g)},destroyed(){var t,n,a,r;(t=S.get(this.el.id))==null||t.unsubFromUpdateIsCollapsed(),(n=S.get(this.el.id))==null||n.unsubFromPaneDataChange(),(a=S.get(this.el.id))==null||a.unsubFromLayoutChange(),(r=S.get(this.el.id))==null||r.unsubFromUpdateAriaValues(),S.delete(this.el.id)}}}function Le(e,t,n,a,r=!1,o=E){return t.subscribe(i=>{r&&ie({saveId:e,layout:i,storage:o,paneDataArrayStore:n,paneSizeBeforeCollapseStore:a})})}function Re(e,t,n,a,r=!1,o){return a.subscribe(i=>{if(!i)return;a.set(!1);let s=t.get(),l=n.get(),p=null;if(r){let u=ne(e,l,E);u&&(o.set(new Map(Object.entries(u.expandToSizes))),p=u.layout)}p==null&&(p=Fe({paneDataArray:l}));let c=Ue({layout:p,paneConstraintsArray:l.map(u=>u.constraints)});I(s,c)||t.set(c)})}function Ge(e,t){return e.subscribe(n=>{let a=t.get();for(let r=0;r<=a.length-1;r++){let o=a[r];if(w(a,n,o)&&o.state.get()!=="collapsing"){o.state.set("collapsed");continue}Z(a,n,o)&&o.state.get()!=="expanding"&&o.state.set("expanded")}})}function We(e,t,n){return t.subscribe(a=>{let r=Ne(e),o=n.get();for(let i=0;i<o.length-1;i++){let{valueMax:s,valueMin:l,valueNow:p}=ue({layout:a,panesArray:o,pivotIndices:[i,i+1]}),c=r[i];if(Q(c)){let u=o[i];c.setAttribute("aria-controls",u.id),c.setAttribute("aria-valuemax",""+Math.round(s)),c.setAttribute("aria-valuemin",""+Math.round(l)),c.setAttribute("aria-valuenow",p!=null?""+Math.round(p):"")}}})}function Fe({paneDataArray:e}){let t=Array(e.length),n=e.map(o=>o.constraints),a=0,r=100;for(let o=0;o<e.length;o++){let i=n[o];f(i);let{defaultSize:s}=i;s!=null&&(a++,t[o]=s,r-=s)}for(let o=0;o<e.length;o++){let i=n[o];f(i);let{defaultSize:s}=i;if(s!=null)continue;let l=e.length-a,p=r/l;a++,t[o]=p,r-=p}return t}function Ue({layout:e,paneConstraintsArray:t}){let n=[...e],a=n.reduce((o,i)=>o+i,0);if(n.length!==t.length)throw Error(`Invalid ${t.length} pane layout: ${n.map(o=>`${o}%`).join(", ")}`);if(!z(a,100))for(let o=0;o<t.length;o++){let i=n[o];f(i!=null);let s=100/a*i;n[o]=s}let r=0;for(let o=0;o<t.length;o++){let i=n[o];f(i!=null);let s=P({paneConstraintsArray:t,paneIndex:o,size:i});i!=s&&(r+=i-s,n[o]=s)}if(!z(r,0))for(let o=0;o<t.length;o++){let i=n[o];f(i!=null);let s=i+r,l=P({paneConstraintsArray:t,paneIndex:o,size:s});if(i!==l&&(r-=l-i,n[o]=l,z(r,0)))break}return n}function Ne(e){return Array.from(document.querySelectorAll(`[data-pane-resizer-id][data-pane-group-id="${e}"]`))}function K(e){return Object.keys(e).reduce((t,n)=>e[n]===void 0?t:t+`${n}:${e[n]};`,"")}var k=null;function _(e){switch(e){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 M(){k&&(document.documentElement.style.cursor="",k=null)}function F(e){if(k===e)return;let t=document.documentElement;k&&(t.style.cursor=""),t.style.cursor=_(e),k=e}function pe({defaultSize:e,dragState:t,layout:n,paneData:a,paneIndex:r,precision:o=3}){let i=n[r],s;return i==null?s=e!=null?e:"1":a.length===1?s="1":s=i.toPrecision(o),K({"flex-basis":0,"flex-grow":s,"flex-shrink":1,overflow:"hidden","pointer-events":t!==null?"none":void 0})}function L({delta:e,layout:t,paneConstraintsArray:n,pivotIndices:a,trigger:r}){if(z(e,0))return t;let o=[...t],[i,s]=a;f(i!=null,"Invalid first pivot index"),f(s!=null,"Invalid second pivot index");let l=0;if(r==="keyboard"){{let c=e<0?s:i,u=n[c];if(f(u),u.collapsible){let d=t[c];f(d!=null);let m=n[c];f(m);let{collapsedSize:b=0,minSize:y=0}=m;if(z(d,b)){let g=y-d;D(g,Math.abs(e))>0&&(e=e<0?0-g:g)}}}{let c=e<0?i:s,u=n[c];f(u);let{collapsible:d}=u;if(d){let m=t[c];f(m!=null);let b=n[c];f(b);let{collapsedSize:y=0,minSize:g=0}=b;if(z(m,g)){let v=m-y;D(v,Math.abs(e))>0&&(e=e<0?0-v:v)}}}}{let c=e<0?1:-1,u=e<0?s:i,d=0;for(;;){let b=t[u];f(b!=null);let g=P({paneConstraintsArray:n,paneIndex:u,size:100})-b;if(d+=g,u+=c,u<0||u>=n.length)break}let m=Math.min(Math.abs(e),Math.abs(d));e=e<0?0-m:m}{let u=e<0?i:s;for(;u>=0&&u<n.length;){let d=Math.abs(e)-Math.abs(l),m=t[u];f(m!=null);let b=m-d,y=P({paneConstraintsArray:n,paneIndex:u,size:b});if(!z(m,y)&&(l+=m-y,o[u]=y,l.toPrecision(3).localeCompare(Math.abs(e).toPrecision(3),void 0,{numeric:!0})>=0))break;e<0?u--:u++}}if(z(l,0))return t;{let c=e<0?s:i,u=t[c];f(u!=null);let d=u+l,m=P({paneConstraintsArray:n,paneIndex:c,size:d});if(o[c]=m,!z(m,d)){let b=d-m,g=e<0?s:i;for(;g>=0&&g<n.length;){let v=o[g];f(v!=null);let Se=v+b,U=P({paneConstraintsArray:n,paneIndex:g,size:Se});if(z(v,U)||(b-=U-v,o[g]=U),z(b,0))break;e>0?g--:g++}}}let p=o.reduce((c,u)=>u+c,0);return z(p,100)?o:t}function me(){return{mounted(){let t=this.el.getAttribute("data-pane-group-id");if(!t)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 a=this.el.getAttribute("data-pane-order"),r=a?Number(a):0,o=S.get(t);if(!o)throw Error('Group with id "'+t+'" does not exist.');let i=Number(this.el.getAttribute("collapsed-size"))||0,s=this.el.getAttribute("collapsible")==="true",l=Number(this.el.getAttribute("default-size"))||void 0,p=Number(this.el.getAttribute("max-size"))||100,c=Number(this.el.getAttribute("min-size"))||0,u="expanded";l&&s&&l<=i&&(u="collapsed");let d={id:this.el.id,order:r,constraints:{collapsedSize:i,collapsible:s,defaultSize:l,maxSize:p,minSize:c},state:x(u)};Oe(d,o.paneDataArray,o.paneDataArrayChanged);let m=$e(this.el,o,d,l),b=d.state.subscribe(y=>{let g=this.el.getAttribute("on-collapse");if(g&&y==="collapsed"){this.liveSocket.execJS(this.el,g),this.el.setAttribute("data-pane-state","collapsed");return}let v=this.el.getAttribute("on-expand");if(v&&y==="expanded"){this.liveSocket.execJS(this.el,v),this.el.setAttribute("data-pane-state","expanded");return}this.el.setAttribute("data-pane-state",y)});m.push(b),G.set(n,{groupId:t,unsubs:m}),this.handleEvent("collapse",({pane_id:y})=>{n===y&&(de(this.el,o.paneDataArray,o.layout,d,"collapsing"),Ke(d,o))}),this.handleEvent("expand",({pane_id:y})=>{n===y&&(de(this.el,o.paneDataArray,o.layout,d,"expanding"),_e(d,o))})},destroyed(){let{groupId:t,unsubs:n}=G.get(this.el.id);for(let r of n)r();let a=S.get(t);a&&Be(this.el.id,a.paneDataArray,a.paneDataArrayChanged),G.delete(this.el.id)}}}function Oe(e,t,n){t.update(a=>{let r=[...a,e];return r.sort((o,i)=>{let s=o.order,l=i.order;return s==null&&l==null?0:s==null?-1:l==null?1:s-l}),r}),n.set(!0)}function Be(e,t,n){let a=t.get(),r=C(a,e);r<0||t.update(o=>(o.splice(r,1),n.set(!0),o))}function $e(e,t,n,a){let r=()=>{let l=C(t.paneDataArray.get(),n.id);return pe({defaultSize:a,dragState:h.get(),layout:t.layout.get(),paneData:t.paneDataArray.get(),paneIndex:l})},o=t.paneDataArray.subscribe(l=>e.style.cssText=r()),i=t.layout.subscribe(l=>{e.style.cssText=r()}),s=h.subscribe(l=>e.style.cssText=r());return[o,i,s]}function Ke(e,t){let n=t.layout.get(),a=t.paneDataArray.get();if(!e.constraints.collapsible)return;let r=a.map(u=>u.constraints),{collapsedSize:o=0,paneSize:i,pivotIndices:s}=T(a,e,n);if(f(i!=null),i===o)return;t.paneSizeBeforeCollapseMap.update(u=>(u.set(e.id,i),u));let p=C(a,e.id)===a.length-1?i-o:o-i,c=L({delta:p,layout:n,paneConstraintsArray:r,pivotIndices:s,trigger:"imperative-api"});I(n,c)||t.layout.set(c)}function _e(e,t){let n=t.layout.get(),a=t.paneDataArray.get();if(!e.constraints.collapsible)return;let r=a.map(b=>b.constraints),{collapsedSize:o=0,paneSize:i,minSize:s=0,pivotIndices:l}=T(a,e,n);if(i!==o)return;let p=t.paneSizeBeforeCollapseMap.get().get(e.id),c=p!=null&&p>=s?p:s,d=C(a,e.id)===a.length-1?i-c:c-i,m=L({delta:d,layout:n,paneConstraintsArray:r,pivotIndices:l,trigger:"imperative-api"});I(n,m)||t.layout.set(m)}function de(e,t,n,a,r){a.state.set(r),ee().then(()=>{if(!(getComputedStyle(e).transitionDuration!=="0s")){let l=w(t.get(),n.get(),a)?"collapsed":"expanded";a.state.set(l);return}let s=l=>{l.propertyName==="flex-grow"&&(a.state.set(w(t.get(),n.get(),a)?"collapsed":"expanded"),e.removeEventListener("transitionend",s))};e.addEventListener("transitionend",s)})}function fe(...e){return(...t)=>{for(let n of e)typeof n=="function"&&n(...t)}}function A(e,t,n,a){let r=Array.isArray(t)?t:[t];return r.forEach(o=>e.addEventListener(o,n,a)),()=>{r.forEach(o=>e.removeEventListener(o,n,a))}}function ge(){return{mounted(){let t=this.el.getAttribute("data-pane-group-id");if(!t)throw Error("data-pane-group-id must exist for resizer components!");let n=this.el.getAttribute("id");if(!n)throw Error("Resizer id must exist for resizer components!");let a=S.get(t);if(!a)throw Error(`Missing group "${t} for resizer "${n}`);let r={disabled:x(!1),isDragging:x(!1),resizeHandlerCallback:null,unsubs:[],isFocused:x(!1)};if(W.set(n,r),r.disabled.set(this.el.getAttribute("data-pane-disabled")==="true"),!r.disabled.get()){let s=a.keyboardResizeBy;r.resizeHandlerCallback=l=>{var u,d,m,b;let p=(d=(u=h.get())==null?void 0:u.initialCursorPosition)!=null?d:null,c=(b=(m=h.get())==null?void 0:m.initialLayout)!=null?b:null;je(t,n,a,c,p,s,l)}}let o=qe(n,this.el,r);r.unsubs.push(o);let i=K({cursor:_(a.direction.get()),"touch-action":"none","user-select":"none","-webkit-user-select":"none","-webkit-touch-callout":"none"});this.el.style.cssText=i,this.el.onblur=()=>r.isFocused.set(!1),this.el.onfocus=()=>r.isFocused.set(!0),this.el.onmousedown=s=>{var p;s.preventDefault();let l=be(a.direction,a.layout,n,s);h.set(l),r.isDragging.set(((p=h.get())==null?void 0:p.dragHandleId)===n)},this.el.onmouseup=()=>{h.set(null),M(),r.isDragging.set(!1)},this.el.ontouchcancel=()=>{h.set(null),M(),r.isDragging.set(!1)},this.el.ontouchend=()=>{h.set(null),M(),r.isDragging.set(!1)},this.el.ontouchstart=s=>{var p;s.preventDefault();let l=be(a.direction,a.layout,n,s);h.set(l),r.isDragging.set(((p=h.get())==null?void 0:p.dragHandleId)===n)},this.el.onkeydown=s=>{Ye(t,n,r.disabled.get(),r.resizeHandlerCallback,s)}},destroyed(){var n,a;let t=this.el.getAttribute("id");for(let r of(a=(n=W.get(t))==null?void 0:n.unsubs)!=null?a:[])r();W.delete(t)}}}function qe(e,t,n){let{disabled:a,resizeHandlerCallback:r,isDragging:o}=n,i=p=>{var c;e!==((c=h.get())==null?void 0:c.dragHandleId)||a.get()||!o.get()||r===null||r(p)},s=p=>{var c;e!==((c=h.get())==null?void 0:c.dragHandleId)||a.get()||!o.get()||r===null||r(p)},l=()=>{var p;e===((p=h.get())==null?void 0:p.dragHandleId)&&(t.blur(),o.set(!1),h.set(null),M())};return fe(A(document.body,"contextmenu",l),A(document.body,"mousemove",i),A(document.body,"mouseleave",s),A(window,"mouseup",l),A(document.body,"touchmove",i,{passive:!1}),A(window,"touchend",l))}function je(e,t,n,a,r,o,i){i.preventDefault();let s=n.direction.get(),l=n.layout.get(),p=n.paneDataArray.get(),c=Ve(e,t),u=Je(i,t,s,r,o);if(u===0)return;let d=s==="horizontal";document.dir==="rtl"&&d&&(u=-u);let m=p.map(g=>g.constraints),b=L({delta:u,layout:a!=null?a:l,paneConstraintsArray:m,pivotIndices:c,trigger:B(i)?"keyboard":"mouse-or-touch"}),y=!I(l,b);(N(i)||O(i))&&n.prevDelta.get()!=u&&(n.prevDelta.set(u),y?F(d?"horizontal":"vertical"):d?F(u<0?"horizontal-min":"horizontal-max"):F(u<0?"vertical-min":"vertical-max")),y&&n.layout.set(b)}function be(e,t,n,a){let r=ze(n);return f(r),{dragHandleId:n,dragHandleRect:r.getBoundingClientRect(),initialCursorPosition:ye(e.get(),a),initialLayout:t.get()}}function Ve(e,t){let n=xe(e,t);return n!=null?[n,n+1]:[-1,-1]}function Je(e,t,n,a,r){if(B(e)){let o=n==="horizontal",i=0;e.shiftKey?i=100:r!=null||(i=5);let s=0;switch(e.key){case"ArrowDown":s=o?0:i;break;case"ArrowLeft":s=o?-i:0;break;case"ArrowRight":s=o?i:0;break;case"ArrowUp":s=o?0:-i;break;case"End":s=100;break;case"Home":s=-100;break}return s}else{if(a==null)return 0;let o=n==="horizontal",i=ze(t);f(i);let s=i.getAttribute("data-pane-group-id");f(s);let l=ye(n,e),p=Xe(s);f(p);let c=p.getBoundingClientRect(),u=o?c.width:c.height;return(l-a)/u*100}}function ye(e,t){var a;let n=e==="horizontal";if(N(t))return n?t.clientX:t.clientY;if(O(t)){let r=t.touches[0];return f(r),n?r.screenX:r.screenY}else throw Error(`Unsupported event type "${(a=t.type)!=null?a:"unknown"}"`)}function he(e){return Array.from(document.querySelectorAll(`[data-pane-resizer-id][data-pane-group-id="${e}"]`))}function xe(e,t){let a=he(e).findIndex(r=>r.getAttribute("data-pane-resizer-id")===t);return a!=null?a:null}function ze(e){let t=document.querySelector(`[data-pane-resizer][data-pane-resizer-id="${e}"]`);return t||null}function Xe(e){let t=document.querySelector(`[data-pane-group][data-pane-group-id="${e}"]`);return t||null}function Ye(e,t,n,a,r){if(n||!a||r.defaultPrevented)return;if(["ArrowDown","ArrowLeft","ArrowRight","ArrowUp","End","Home"].includes(r.key)){r.preventDefault(),a(r);return}if(r.key!=="F6")return;r.preventDefault();let i=he(e),s=xe(e,t);if(s===null)return;let l=r.shiftKey?s>0?s-1:i.length-1:s+1<i.length?s+1:0;i[l].focus()}function Qe(){let e=ce(),t=me(),n=ge();return{groupHook:e,paneHook:t,resizerHook:n}}return Te(Ze);})();