katoikia-app/web-ui/web-react/node_modules/primereact/splitter/splitter.esm.min.js

2 lines
9.7 KiB
JavaScript

import e,{Component as t}from"react";import{DomHandler as n,ObjectUtils as r,classNames as i}from"primereact/utils";function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function o(e){if(Array.isArray(e))return s(e)}function l(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function u(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function a(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function p(e){return o(e)||l(e)||u(e)||a()}function h(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t,n){return t&&h(e.prototype,t),n&&h(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){return d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},d(e,t)}function v(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&d(e,t)}function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function g(e,t){if(t&&("object"===m(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return y(e)}function z(e){return z=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},z(e)}function S(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function E(e){var t=w();return function(){var n,r=z(e);if(t){var i=z(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return g(this,n)}}function w(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}var b=function(e){v(r,t);var n=E(r);function r(){return f(this,r),n.apply(this,arguments)}return c(r)}();S(b,"defaultProps",{size:null,minSize:null,style:null,className:null});var P=function(s){v(l,t);var o=E(l);function l(){return f(this,l),o.apply(this,arguments)}return c(l,[{key:"bindMouseListeners",value:function(){var e=this;this.mouseMoveListener||(this.mouseMoveListener=function(t){return e.onResize(t)},document.addEventListener("mousemove",this.mouseMoveListener)),this.mouseUpListener||(this.mouseUpListener=function(t){e.onResizeEnd(t),e.unbindMouseListeners()},document.addEventListener("mouseup",this.mouseUpListener))}},{key:"validateResize",value:function(e,t){return!(this.props.children[this.prevPanelIndex].props&&this.props.children[this.prevPanelIndex].props.minSize&&this.props.children[this.prevPanelIndex].props.minSize>e)&&!(this.props.children[this.prevPanelIndex+1].props&&this.props.children[this.prevPanelIndex+1].props.minSize&&this.props.children[this.prevPanelIndex+1].props.minSize>t)}},{key:"unbindMouseListeners",value:function(){this.mouseMoveListener&&(document.removeEventListener("mousemove",this.mouseMoveListener),this.mouseMoveListener=null),this.mouseUpListener&&(document.removeEventListener("mouseup",this.mouseUpListener),this.mouseUpListener=null)}},{key:"clear",value:function(){this.dragging=!1,this.size=null,this.startPos=null,this.prevPanelElement=null,this.nextPanelElement=null,this.prevPanelSize=null,this.nextPanelSize=null,this.gutterElement=null,this.prevPanelIndex=null}},{key:"isStateful",value:function(){return null!=this.props.stateKey}},{key:"getStorage",value:function(){switch(this.props.stateStorage){case"local":return window.localStorage;case"session":return window.sessionStorage;default:throw new Error(this.props.stateStorage+' is not a valid value for the state storage, supported values are "local" and "session".')}}},{key:"saveState",value:function(){this.getStorage().setItem(this.props.stateKey,JSON.stringify(this.panelSizes))}},{key:"restoreState",value:function(){var e=this,t=this.getStorage().getItem(this.props.stateKey);return!!t&&(this.panelSizes=JSON.parse(t),p(this.container.children).filter((function(e){return n.hasClass(e,"p-splitter-panel")})).forEach((function(t,n){t.style.flexBasis="calc("+e.panelSizes[n]+"% - "+(e.props.children.length-1)*e.props.gutterSize+"px)"})),!0)}},{key:"onResizeStart",value:function(e,t){var r="touchstart"===e.type?e.touches[0].pageX:e.pageX,i="touchstart"===e.type?e.touches[0].pageY:e.pageY;this.gutterElement=e.currentTarget,this.size="horizontal"===this.props.layout?n.getWidth(this.container):n.getHeight(this.container),this.dragging=!0,this.startPos="horizontal"===this.props.layout?r:i,this.prevPanelElement=this.gutterElement.previousElementSibling,this.nextPanelElement=this.gutterElement.nextElementSibling,this.prevPanelSize=100*("horizontal"===this.props.layout?n.getOuterWidth(this.prevPanelElement,!0):n.getOuterHeight(this.prevPanelElement,!0))/this.size,this.nextPanelSize=100*("horizontal"===this.props.layout?n.getOuterWidth(this.nextPanelElement,!0):n.getOuterHeight(this.nextPanelElement,!0))/this.size,this.prevPanelIndex=t,n.addClass(this.gutterElement,"p-splitter-gutter-resizing"),n.addClass(this.container,"p-splitter-resizing")}},{key:"onResize",value:function(e){var t,n=this.prevPanelSize+(t="horizontal"===this.props.layout?100*("touchmove"===e.type?e.touches[0].pageX:e.pageX)/this.size-100*this.startPos/this.size:100*("touchmove"===e.type?e.touches[0].pageY:e.pageY)/this.size-100*this.startPos/this.size),r=this.nextPanelSize-t;this.validateResize(n,r)&&(this.prevPanelElement.style.flexBasis="calc("+n+"% - "+(this.props.children.length-1)*this.props.gutterSize+"px)",this.nextPanelElement.style.flexBasis="calc("+r+"% - "+(this.props.children.length-1)*this.props.gutterSize+"px)",this.panelSizes[this.prevPanelIndex]=n,this.panelSizes[this.prevPanelIndex+1]=r)}},{key:"onResizeEnd",value:function(e){this.isStateful()&&this.saveState(),this.props.onResizeEnd&&this.props.onResizeEnd({originalEvent:e,sizes:this.panelSizes}),n.removeClass(this.gutterElement,"p-splitter-gutter-resizing"),n.removeClass(this.container,"p-splitter-resizing"),this.clear()}},{key:"onGutterMouseDown",value:function(e,t){this.onResizeStart(e,t),this.bindMouseListeners()}},{key:"onGutterTouchStart",value:function(e,t){this.onResizeStart(e,t),this.windowTouchMoveListener=this.onGutterTouchMove.bind(this),this.windowTouchEndListener=this.onGutterTouchEnd.bind(this),window.addEventListener("touchmove",this.windowTouchMoveListener,{passive:!1,cancelable:!1}),window.addEventListener("touchend",this.windowTouchEndListener)}},{key:"onGutterTouchMove",value:function(e){this.onResize(e)}},{key:"onGutterTouchEnd",value:function(e){this.onResizeEnd(e),window.removeEventListener("touchmove",this.windowTouchMoveListener),window.removeEventListener("touchend",this.windowTouchEndListener),this.windowTouchMoveListener=null,this.windowTouchEndListener=null}},{key:"componentDidMount",value:function(){var e=this;if(this.panelElement&&this.panelElement.childNodes&&r.isNotEmpty(n.find(this.panelElement,".p-splitter"))&&n.addClass(this.panelElement,"p-splitter-panel-nested"),this.props.children&&this.props.children.length){var t=!1;if(this.isStateful()&&(t=this.restoreState()),!t){var i=p(this.container.children).filter((function(e){return n.hasClass(e,"p-splitter-panel")})),s=[];this.props.children.map((function(t,n){var r=(t.props&&t.props.size?t.props.size:null)||100/e.props.children.length;return s[n]=r,i[n].style.flexBasis="calc("+r+"% - "+(e.props.children.length-1)*e.props.gutterSize+"px)",s})),this.panelSizes=s}}}},{key:"renderPanel",value:function(t,n){var r=this,s=i("p-splitter-panel",t.props.className),o=n!==this.props.children.length-1&&e.createElement("div",{ref:function(e){return r.gutterElement=e},className:"p-splitter-gutter",style:"horizontal"===this.props.layout?{width:this.props.gutterSize+"px"}:{height:this.props.gutterSize+"px"},onMouseDown:function(e){return r.onGutterMouseDown(e,n)},onTouchStart:function(e){return r.onGutterTouchStart(e,n)},onTouchMove:function(e){return r.onGutterTouchMove(e)},onTouchEnd:function(e){return r.onGutterTouchEnd(e)}},e.createElement("div",{className:"p-splitter-gutter-handle"}));return e.createElement(e.Fragment,null,e.createElement("div",{ref:function(e){return r.panelElement=e},key:n,className:s,style:t.props.style},t.props.children),o)}},{key:"renderPanels",value:function(){var t=this;return e.Children.map(this.props.children,(function(e,n){return t.renderPanel(e,n)}))}},{key:"render",value:function(){var t=this,n=i("p-splitter p-component p-splitter-".concat(this.props.layout),this.props.className),r=this.renderPanels();return e.createElement("div",{ref:function(e){return t.container=e},id:this.props.id,className:n,style:this.props.style},r)}}]),l}();S(P,"defaultProps",{id:null,className:null,style:null,layout:"horizontal",gutterSize:4,stateKey:null,stateStorage:"session",onResizeEnd:null});export{P as Splitter,b as SplitterPanel};