1 line
5.7 KiB
JavaScript
1 line
5.7 KiB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",r="removeEventListener",i="getBoundingClientRect",s="_a",o="_b",u="_c",a="horizontal",l=function(){return!1},c=e.attachEvent&&!e[n],f=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",m=function(e){return"string"==typeof e||e instanceof String},h=function(e){if(m(e)){var n=t.querySelector(e);if(!n)throw new Error("Selector "+e+" did not match a DOM element");return n}return e},d=function(e,t,n){var r=e[t];return void 0!==r?r:n},g=function(e,t,n,r){if(t){if("end"===r)return 0;if("center"===r)return e/2}else if(n){if("start"===r)return 0;if("center"===r)return e/2}return e},v=function(e,n){var r=t.createElement("div");return r.className="gutter gutter-"+n,r},p=function(e,t,n){var r={};return m(t)?r[e]=t:r[e]=c?t+"%":f+"("+t+"% - "+n+"px)",r},y=function(e,t){var n;return(n={})[e]=t+"px",n};return function(f,m){void 0===m&&(m={});var z,S,b,E,w,k,x=f;Array.from&&(x=Array.from(x));var M=h(x[0]).parentNode,U=getComputedStyle?getComputedStyle(M):null,O=U?U.flexDirection:null,C=d(m,"sizes")||x.map(function(){return 100/x.length}),D=d(m,"minSize",100),A=Array.isArray(D)?D:x.map(function(){return D}),j=d(m,"expandToMin",!1),F=d(m,"gutterSize",10),B=d(m,"gutterAlign","center"),L=d(m,"snapOffset",30),T=d(m,"dragInterval",1),_=d(m,"direction",a),N=d(m,"cursor",_===a?"col-resize":"row-resize"),R=d(m,"gutter",v),q=d(m,"elementStyle",p),H=d(m,"gutterStyle",y);function I(e,t,n,r){var i=q(z,t,n,r);Object.keys(i).forEach(function(t){e.style[t]=i[t]})}function W(){return k.map(function(e){return e.size})}function X(e){return"touches"in e?e.touches[0][S]:e[S]}function Y(e){var t=k[this.a],n=k[this.b],r=t.size+n.size;t.size=e/this.size*r,n.size=r-e/this.size*r,I(t.element,t.size,this[o],t.i),I(n.element,n.size,this[u],n.i)}function G(){var e=k[this.a].element,t=k[this.b].element,n=e[i](),r=t[i]();this.size=n[z]+r[z]+this[o]+this[u],this.start=n[b],this.end=n[E]}function J(e){var t=function(e){if(!getComputedStyle)return null;var t=getComputedStyle(e);if(!t)return null;var n=e[w];return 0===n?null:n-=_===a?parseFloat(t.paddingLeft)+parseFloat(t.paddingRight):parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)}(M);if(null===t)return e;if(A.reduce(function(e,t){return e+t},0)>t)return e;var n=0,r=[],i=e.map(function(i,s){var o=t*i/100,u=g(F,0===s,s===e.length-1,B),a=A[s]+u;return o<a?(n+=a-o,r.push(0),a):(r.push(o-a),o)});return 0===n?e:i.map(function(e,i){var s=e;if(n>0&&r[i]-n>0){var o=Math.min(n,r[i]-n);n-=o,s=e-o}return s/t*100})}function K(i){if(!("button"in i&&0!==i.button)){var s=this,a=k[s.a].element,c=k[s.b].element;s.dragging||d(m,"onDragStart",l)(W()),i.preventDefault(),s.dragging=!0,s.move=function(e){var t,n=k[this.a],r=k[this.b];this.dragging&&(t=X(e)-this.start+(this[o]-this.dragOffset),T>1&&(t=Math.round(t/T)*T),t<=n.minSize+L+this[o]?t=n.minSize+this[o]:t>=this.size-(r.minSize+L+this[u])&&(t=this.size-(r.minSize+this[u])),Y.call(this,t),d(m,"onDrag",l)())}.bind(s),s.stop=function(){var n=this,i=k[n.a].element,s=k[n.b].element;n.dragging&&d(m,"onDragEnd",l)(W()),n.dragging=!1,e[r]("mouseup",n.stop),e[r]("touchend",n.stop),e[r]("touchcancel",n.stop),e[r]("mousemove",n.move),e[r]("touchmove",n.move),n.stop=null,n.move=null,i[r]("selectstart",l),i[r]("dragstart",l),s[r]("selectstart",l),s[r]("dragstart",l),i.style.userSelect="",i.style.webkitUserSelect="",i.style.MozUserSelect="",i.style.pointerEvents="",s.style.userSelect="",s.style.webkitUserSelect="",s.style.MozUserSelect="",s.style.pointerEvents="",n.gutter.style.cursor="",n.parent.style.cursor="",t.body.style.cursor=""}.bind(s),e[n]("mouseup",s.stop),e[n]("touchend",s.stop),e[n]("touchcancel",s.stop),e[n]("mousemove",s.move),e[n]("touchmove",s.move),a[n]("selectstart",l),a[n]("dragstart",l),c[n]("selectstart",l),c[n]("dragstart",l),a.style.userSelect="none",a.style.webkitUserSelect="none",a.style.MozUserSelect="none",a.style.pointerEvents="none",c.style.userSelect="none",c.style.webkitUserSelect="none",c.style.MozUserSelect="none",c.style.pointerEvents="none",s.gutter.style.cursor=N,s.parent.style.cursor=N,t.body.style.cursor=N,G.call(s),s.dragOffset=X(i)-s.end}}_===a?(z="width",S="clientX",b="left",E="right",w="clientWidth"):"vertical"===_&&(z="height",S="clientY",b="top",E="bottom",w="clientHeight"),C=J(C);var P=[];function Q(e){var t=e.i===P.length,n=t?P[e.i-1]:P[e.i];G.call(n);var r=t?n.size-e.minSize-n[u]:e.minSize+n[o];Y.call(n,r)}function V(e){var t=J(e);t.forEach(function(e,n){if(n>0){var r=P[n-1],i=k[r.a],s=k[r.b];i.size=t[n-1],s.size=e,I(i.element,i.size,r[o]),I(s.element,s.size,r[u])}})}function Z(e,t){P.forEach(function(n){if(!0!==t?n.parent.removeChild(n.gutter):(n.gutter[r]("mousedown",n[s]),n.gutter[r]("touchstart",n[s])),!0!==e){var i=q(z,n.a.size,n[o]);Object.keys(i).forEach(function(e){k[n.a].element.style[e]="",k[n.b].element.style[e]=""})}})}return(k=x.map(function(e,t){var r,i,a,l={element:h(e),size:C[t],minSize:A[t],i:t};if(t>0&&((r={a:t-1,b:t,dragging:!1,direction:_,parent:M})[o]=g(F,t-1==0,!1,B),r[u]=g(F,!1,t===x.length-1,B),"row-reverse"===O||"column-reverse"===O)){var f=r.a;r.a=r.b,r.b=f}if(!c&&t>0){var m=R(t,_,l.element);i=m,a=H(z,F,t),Object.keys(a).forEach(function(e){i.style[e]=a[e]}),r[s]=K.bind(r),m[n]("mousedown",r[s]),m[n]("touchstart",r[s]),M.insertBefore(m,l.element),r.gutter=m}return I(l.element,l.size,g(F,0===t,t===x.length-1,B)),t>0&&P.push(r),l})).forEach(function(e){var t=e.element[i]()[z];t<e.minSize&&(j?Q(e):e.minSize=t)}),c?{setSizes:V,destroy:Z}:{setSizes:V,getSizes:W,collapse:function(e){Q(k[e])},destroy:Z,parent:M,pairs:P}}}); |