import{EventEmitter,Component,ViewEncapsulation,ChangeDetectionStrategy,ChangeDetectorRef,ElementRef,Input,Output,ContentChildren,TemplateRef,ViewChild,NgModule}from"@angular/core";import{CommonModule}from"@angular/common";import{DomHandler}from"primeng/dom";class Splitter{constructor(e,t){this.cd=e,this.el=t,this.stateStorage="session",this.stateKey=null,this.layout="horizontal",this.gutterSize=4,this.panelSizes=[],this.minSizes=[],this.onResizeEnd=new EventEmitter,this.nested=!1,this.dragging=!1,this.mouseMoveListener=null,this.mouseUpListener=null,this.size=null,this.gutterElement=null,this.startPos=null,this.prevPanelElement=null,this.nextPanelElement=null,this.nextPanelSize=null,this.prevPanelSize=null,this._panelSizes=null,this.prevPanelIndex=null}ngOnInit(){this.nested=this.isNested()}ngAfterViewInit(){if(this.panels&&this.panels.length){let e=!1;if(this.isStateful()&&(e=this.restoreState()),!e){let e=[...this.el.nativeElement.children[0].children].filter(e=>DomHandler.hasClass(e,"p-splitter-panel")),t=[];this.panels.map((s,i)=>{let n=(this.panelSizes.length-1>=i?this.panelSizes[i]:null)||100/this.panels.length;t[i]=n,e[i].style.flexBasis="calc("+n+"% - "+(this.panels.length-1)*this.gutterSize+"px)"}),this._panelSizes=t}}}onResizeStart(e,t){this.gutterElement=e.currentTarget,this.size=this.horizontal()?DomHandler.getWidth(this.containerViewChild.nativeElement):DomHandler.getHeight(this.containerViewChild.nativeElement),this.dragging=!0,this.startPos=this.horizontal()?e.pageX:e.pageY,this.prevPanelElement=this.gutterElement.previousElementSibling,this.nextPanelElement=this.gutterElement.nextElementSibling,this.prevPanelSize=100*(this.horizontal()?DomHandler.getOuterWidth(this.prevPanelElement,!0):DomHandler.getOuterHeight(this.prevPanelElement,!0))/this.size,this.nextPanelSize=100*(this.horizontal()?DomHandler.getOuterWidth(this.nextPanelElement,!0):DomHandler.getOuterHeight(this.nextPanelElement,!0))/this.size,this.prevPanelIndex=t,DomHandler.addClass(this.gutterElement,"p-splitter-gutter-resizing"),DomHandler.addClass(this.containerViewChild.nativeElement,"p-splitter-resizing")}onResize(e){let t;t=this.horizontal()?100*e.pageX/this.size-100*this.startPos/this.size:100*e.pageY/this.size-100*this.startPos/this.size;let s=this.prevPanelSize+t,i=this.nextPanelSize-t;this.validateResize(s,i)&&(this.prevPanelElement.style.flexBasis="calc("+s+"% - "+(this.panels.length-1)*this.gutterSize+"px)",this.nextPanelElement.style.flexBasis="calc("+i+"% - "+(this.panels.length-1)*this.gutterSize+"px)",this._panelSizes[this.prevPanelIndex]=s,this._panelSizes[this.prevPanelIndex+1]=i)}resizeEnd(e){this.isStateful()&&this.saveState(),this.onResizeEnd.emit({originalEvent:e,sizes:this._panelSizes}),DomHandler.removeClass(this.gutterElement,"p-splitter-gutter-resizing"),DomHandler.removeClass(this.containerViewChild.nativeElement,"p-splitter-resizing"),this.clear()}onGutterMouseDown(e,t){this.onResizeStart(e,t),this.bindMouseListeners()}onGutterTouchStart(e,t){this.onResizeStart(e,t),e.preventDefault()}onGutterTouchMove(e){this.onResize(e),e.preventDefault()}onGutterTouchEnd(e){this.resizeEnd(e),e.preventDefault()}validateResize(e,t){return!(this.minSizes.length>=1&&this.minSizes[0]&&this.minSizes[0]>e)&&!(this.minSizes.length>1&&this.minSizes[1]&&this.minSizes[1]>t)}bindMouseListeners(){this.mouseMoveListener||(this.mouseMoveListener=(e=>this.onResize(e)),document.addEventListener("mousemove",this.mouseMoveListener)),this.mouseUpListener||(this.mouseUpListener=(e=>{this.resizeEnd(e),this.unbindMouseListeners()}),document.addEventListener("mouseup",this.mouseUpListener))}unbindMouseListeners(){this.mouseMoveListener&&(document.removeEventListener("mousemove",this.mouseMoveListener),this.mouseMoveListener=null),this.mouseUpListener&&(document.removeEventListener("mouseup",this.mouseUpListener),this.mouseUpListener=null)}clear(){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}isNested(){if(this.el.nativeElement){let e=this.el.nativeElement.parentElement;for(;e&&!DomHandler.hasClass(e,"p-splitter");)e=e.parentElement;return null!==e}return!1}isStateful(){return null!=this.stateKey}getStorage(){switch(this.stateStorage){case"local":return window.localStorage;case"session":return window.sessionStorage;default:throw new Error(this.stateStorage+' is not a valid value for the state storage, supported values are "local" and "session".')}}saveState(){this.getStorage().setItem(this.stateKey,JSON.stringify(this._panelSizes))}restoreState(){const e=this.getStorage().getItem(this.stateKey);if(e){return this._panelSizes=JSON.parse(e),[...this.containerViewChild.nativeElement.children].filter(e=>DomHandler.hasClass(e,"p-splitter-panel")).forEach((e,t)=>{e.style.flexBasis="calc("+this._panelSizes[t]+"% - "+(this.panels.length-1)*this.gutterSize+"px)"}),!0}return!1}containerClass(){return{"p-splitter p-component":!0,"p-splitter-horizontal":"horizontal"===this.layout,"p-splitter-vertical":"vertical"===this.layout}}panelContainerClass(){return{"p-splitter-panel":!0,"p-splitter-panel-nested":!0}}gutterStyle(){return this.horizontal()?{width:this.gutterSize+"px"}:{height:this.gutterSize+"px"}}horizontal(){return"horizontal"===this.layout}}Splitter.decorators=[{type:Component,args:[{selector:"p-splitter",template:'\n