split.min.js
5.32 KB
!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",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e},u=function(u,c){function f(e,t,n){var i=q(b,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=H(b,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function m(e){var t=U[this.a],n=U[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,f(t.element,t.size,this.aGutterSize),f(n.element,n.size,this.bGutterSize)}function z(e){var t;if(this.dragging){t="touches"in e?e.touches[0][w]-this.start:e[w]-this.start;var n=this.b;if(O&&U.length>2){var i=U.filter(function(e,t){return t>=n}),r=U.filter(function(e,t){return t<n});return this.start=e[w],t<0?d.call(this,t,r.reverse(),i,U[n]):d.call(this,-t,i,r,U[n-1])}t<=U[this.a].minSize+C+this.aGutterSize?t=U[this.a].minSize+this.aGutterSize:t>=this.size-(U[this.b].minSize+C+this.bGutterSize)&&(t=this.size-(U[this.b].minSize+this.bGutterSize)),m.call(this,t),c.onDrag&&c.onDrag()}}function d(e,t,n,i){var s=t.reduce(function(e,t,n){return e+t.minSize},0),o=n.reduce(function(e,t,n){return i.element==t.element?e:e+t.element[r]()[b]},s);t.every(function(t,n){var i=t.element,s=i[r]()[b];return t.minSize>=s+e?(i.style[b]=t.minSize+"px",!0):void(i.style[b]=s+e+"px")});var a=i.element[r]()[b]-e;i.element.style[b]=this.size-o<=a?this.size-o+"px":a+"px"}function g(e){var t=U[this.a].element,n=U[this.b].element;return O?(this.size=U.reduce(function(e,t,n){return e+t.element[r]()[b]},0),void(this.start=e[w])):(this.size=t[r]()[b]+n[r]()[b]+this.aGutterSize+this.bGutterSize,void(this.start=t[r]()[E]))}function v(){var t=this,n=U[t.a].element,r=U[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=U[i.a].element,o=U[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=z.bind(i),i.stop=v.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",i.gutter.style.cursor=N,i.parent.style.cursor=N,g.call(i,t)}function p(e){e.forEach(function(t,n){if(n>0){var i=W[n-1],r=U[i.a],s=U[i.b];r.size=e[n-1],s.size=t,f(r.element,r.size,i.aGutterSize),f(s.element,s.size,i.bGutterSize)}})}function y(){W.forEach(function(e){e.parent.removeChild(e.gutter),U[e.a].element.style[b]="",U[e.b].element.style[b]=""})}void 0===c&&(c={});var b,G,w,E,x,D,U,k=l(u[0]).parentNode,L=e.getComputedStyle(k).flexDirection,M=c.sizes||u.map(function(){return 100/u.length}),O=c.affectAll,j=void 0!==c.minSize?c.minSize:100,A=Array.isArray(j)?j:u.map(function(){return j}),B=void 0!==c.gutterSize?c.gutterSize:10,C=void 0!==c.snapOffset?c.snapOffset:30,F=c.direction||"horizontal",N=c.cursor||("horizontal"===F?"ew-resize":"ns-resize"),R=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},T=c.extraGutter||s,q=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:o?i[e]=t+"%":i[e]=a+"("+t+"% - "+n+"px)",i},H=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===F?(b="width",G="clientWidth",w="clientX",E="left",x="paddingLeft",D="paddingRight"):"vertical"===F&&(b="height",G="clientHeight",w="clientY",E="top",x="paddingTop",D="paddingBottom");var W=[];return U=u.map(function(e,t){var i,s={element:l(e),size:M[t],minSize:A[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:F,parent:k},i.aGutterSize=B,i.bGutterSize=B,i.isFirst&&(i.aGutterSize=B/2),i.isLast&&(i.bGutterSize=B/2),"row-reverse"===L||"column-reverse"===L)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=R(t,F),m=T(t);h(c,B),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),T&&m[n]("mousedown",S.bind(i)),k.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?f(s.element,s.size,B/2):f(s.element,s.size,B);var z=s.element[r]()[b];return z>0&&z<s.minSize&&(s.minSize=z),t>0&&W.push(i),s}),o?{setSizes:p,destroy:y}:{setSizes:p,getSizes:function(){return U.map(function(e){return e.size})},collapse:function(e){if(e===W.length){var t=W[e-1];g.call(t),o||m.call(t,t.size-t.bGutterSize)}else{var n=W[e];g.call(n),o||m.call(n,n.aGutterSize)}},destroy:y}};return u});