diff --git a/index.html b/index.html index ca99ea8a6..0511abf88 100644 --- a/index.html +++ b/index.html @@ -8,11 +8,11 @@ - + - + diff --git a/main.7a188052c7bfbcb1.js b/main.495a19d941ddc0e5.js similarity index 55% rename from main.7a188052c7bfbcb1.js rename to main.495a19d941ddc0e5.js index 5cbdc5197..3f505e564 100644 --- a/main.7a188052c7bfbcb1.js +++ b/main.495a19d941ddc0e5.js @@ -1 +1 @@ -(self.webpackChunkangular_slickgrid=self.webpackChunkangular_slickgrid||[]).push([[792],{274:De=>{De.exports=function(la){var W={};function Ee(ue){if(W[ue])return W[ue].exports;var te=W[ue]={i:ue,l:!1,exports:{}};return la[ue].call(te.exports,te,te.exports,Ee),te.l=!0,te.exports}return Ee.m=la,Ee.c=W,Ee.d=function(ue,te,Ba){Ee.o(ue,te)||Object.defineProperty(ue,te,{enumerable:!0,get:Ba})},Ee.r=function(ue){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(ue,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(ue,"__esModule",{value:!0})},Ee.t=function(ue,te){if(1&te&&(ue=Ee(ue)),8&te||4&te&&"object"==typeof ue&&ue&&ue.__esModule)return ue;var Ba=Object.create(null);if(Ee.r(Ba),Object.defineProperty(Ba,"default",{enumerable:!0,value:ue}),2&te&&"string"!=typeof ue)for(var bt in ue)Ee.d(Ba,bt,function(ki){return ue[ki]}.bind(null,bt));return Ba},Ee.n=function(ue){var te=ue&&ue.__esModule?function(){return ue.default}:function(){return ue};return Ee.d(te,"a",te),te},Ee.o=function(ue,te){return Object.prototype.hasOwnProperty.call(ue,te)},Ee.p="",Ee(Ee.s=1)}([function(la,W,Ee){var ue=Ee(2),te=Ee(3),Ba=Ee(4);la.exports=function(bt){return ue(bt)||te(bt)||Ba()}},function(la,W,Ee){"use strict";Ee.r(W),Ee.d(W,"sparkline",function(){return va});var ue=Ee(0),te=Ee.n(ue);function Ba(Ta,mt,ca,me){return parseFloat((mt-me*mt/Ta+ca).toFixed(2))}function bt(Ta){return Ta.value}function ki(Ta,mt){var ca=document.createElementNS("http://www.w3.org/2000/svg",Ta);for(var me in mt)ca.setAttribute(me,mt[me]);return ca}function va(Ta,mt,ca){var me;if(me=Ta,te()(me.querySelectorAll("*")).forEach(function(Ku){return me.removeChild(Ku)}),!(mt.length<=1)){ca=ca||{},"number"==typeof mt[0]&&(mt=mt.map(function(Ku){return{value:Ku}}));var $n=ca.onmousemove,Ga=ca.onmouseout,qn="interactive"in ca?ca.interactive:!!$n,ni=ca.spotRadius||2,Bn=2*ni,H0=ca.cursorWidth||2,Bt=parseFloat(Ta.attributes["stroke-width"].value),hu=ca.fetch||bt,tu=mt.map(function(Ku){return hu(Ku)}),cl=parseFloat(Ta.attributes.width.value)-2*Bn,mu=parseFloat(Ta.attributes.height.value),hl=mu-2*Bt-Bn,ba=Math.max.apply(Math,te()(tu)),Fr=-1e3,Ar=tu.length-1,Mo=cl/Ar,Yn=[],ao=Ba(ba,hl,Bt+ni,tu[0]),Qn="M".concat(Bn," ").concat(ao);tu.forEach(function(Ku,$i){var qi=$i*Mo+Bn,uo=Ba(ba,hl,Bt+ni,Ku);Yn.push(Object.assign({},mt[$i],{index:$i,x:qi,y:uo})),Qn+=" L ".concat(qi," ").concat(uo)});var Zh=ki("path",{class:"sparkline--line",d:Qn,fill:"none"}),ml=ki("path",{class:"sparkline--fill",d:"".concat(Qn," V ").concat(mu," L ").concat(Bn," ").concat(mu," Z"),stroke:"none"});if(Ta.appendChild(ml),Ta.appendChild(Zh),qn){var to=ki("line",{class:"sparkline--cursor",x1:Fr,x2:Fr,y1:0,y2:mu,"stroke-width":H0}),wr=ki("circle",{class:"sparkline--spot",cx:Fr,cy:Fr,r:ni});Ta.appendChild(to),Ta.appendChild(wr);var $l=ki("rect",{width:Ta.attributes.width.value,height:Ta.attributes.height.value,style:"fill: transparent; stroke: transparent",class:"sparkline--interaction-layer"});Ta.appendChild($l),$l.addEventListener("mouseout",function(Ku){to.setAttribute("x1",Fr),to.setAttribute("x2",Fr),wr.setAttribute("cx",Fr),Ga&&Ga(Ku)}),$l.addEventListener("mousemove",function(Ku){var $i=Ku.offsetX,qi=Yn.find(function(qs){return qs.x>=$i});qi||(qi=Yn[Ar]);var uo,pl=Yn[Yn.indexOf(qi)-1],V0=(uo=pl?pl.x+(qi.x-pl.x)/2<=$i?qi:pl:qi).x,I3=uo.y;wr.setAttribute("cx",V0),wr.setAttribute("cy",I3),to.setAttribute("x1",V0),to.setAttribute("x2",V0),$n&&$n(Ku,uo)})}}}W.default=va},function(la,W){la.exports=function(Ee){if(Array.isArray(Ee)){for(var ue=0,te=new Array(Ee.length);ue{"use strict";var Ee={};W.r(Ee),W.d(Ee,{BackendUtilityService:()=>pj});var ue={};W.r(ue),W.d(ue,{collectionObserver:()=>p2,propertyObserver:()=>Gz});var te={};W.r(te),W.d(te,{CancelledException:()=>g2,addTreeLevelAndAggregatorsByMutation:()=>v2,addTreeLevelByMutation:()=>n7,cancellablePromise:()=>gj,castObservableToPromise:()=>Wz,decimalFormatted:()=>M0,findItemInTreeStructure:()=>Mh,findOrDefault:()=>hc,flattenToParentChildArray:()=>vj,formatNumber:()=>Bu,getCellValueFromQueryFieldGetter:()=>b2,getColumnFieldType:()=>k2,getDescendantProperty:()=>Xu,getTranslationPrefix:()=>Gl,isColumnDateType:()=>Uz,mapOperatorByFieldType:()=>x2,mapOperatorToShorthandDesignation:()=>xv,mapOperatorType:()=>kj,objectWithoutKey:()=>xj,thousandSeparatorFormatted:()=>cc,unflattenParentChildArrayToTree:()=>bj,unsubscribeAll:()=>D2});var Ba={};W.r(Ba),W.d(Ba,{addToArrayWhenNotExists:()=>Tj,addWhiteSpaces:()=>Dv,arrayRemoveItemByIndex:()=>$z,calculateAvailableSpace:()=>f2,classNameToList:()=>Vt,createDomElement:()=>T,deepCopy:()=>Pj,deepMerge:()=>f3,destroyAllElementProps:()=>Jz,emptyElement:()=>Ct,emptyObject:()=>Nj,extend:()=>su,findFirstAttribute:()=>C2,findWidthOrDefault:()=>mc,getFunctionDetails:()=>qz,getHtmlStringOutput:()=>hn,getInnerSize:()=>r7,getOffset:()=>Du,getOffsetRelativeToParent:()=>Dj,getStyleProp:()=>fj,hasData:()=>l7,htmlEncode:()=>Cj,htmlEncodeWithPadding:()=>_j,htmlEntityDecode:()=>yj,insertAfterElement:()=>Fj,isDefined:()=>Su,isDefinedNumber:()=>C3,isEmptyObject:()=>Yz,isNumber:()=>Ca,isObject:()=>Lh,isObjectEmpty:()=>Ij,isPrimitiveOrHTML:()=>y3,isPrimitiveValue:()=>y2,parseBoolean:()=>s7,removeAccentFromText:()=>fv,setDeepValue:()=>xr,stripTags:()=>zu,titleCase:()=>wo,toCamelCase:()=>Qz,toKebabCase:()=>_2,toSentenceCase:()=>Rs,toSnakeCase:()=>Nle,uniqueArray:()=>Rj,uniqueObjectArray:()=>Ile,windowScrollPosition:()=>Zz});var bt={};function ki(t,e){return Object.is(t,e)}W.r(bt),W.d(bt,{sortByFieldType:()=>yv});let va=null,Ta=!1,mt=1;const ca=Symbol("SIGNAL");function me(t){const e=va;return va=t,e}const ni={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Bn(t){if(Ta)throw new Error("");if(null===va)return;va.consumerOnSignalRead(t);const e=va.nextProducerIndex++;if(ao(va),et.nextProducerIndex;)t.producerNode.pop(),t.producerLastReadVersion.pop(),t.producerIndexOfThis.pop()}}function ba(t){ao(t);for(let e=0;e0}function ao(t){t.producerNode??=[],t.producerIndexOfThis??=[],t.producerLastReadVersion??=[]}function Qn(t){t.liveConsumerNode??=[],t.liveConsumerIndexOfThis??=[]}const ml=Symbol("UNSET"),to=Symbol("COMPUTING"),wr=Symbol("ERRORED"),$l={...ni,value:ml,dirty:!0,error:null,equal:ki,producerMustRecompute:t=>t.value===ml||t.value===to,producerRecomputeValue(t){if(t.value===to)throw new Error("Detected cycle in computations.");const e=t.value;t.value=to;const a=mu(t);let u;try{u=t.computation()}catch(i){u=wr,t.error=i}finally{hl(t,a)}e!==ml&&e!==wr&&u!==wr&&t.equal(e,u)?t.value=e:(t.value=u,t.version++)}};let $i=function Ku(){throw new Error};function qi(){$i()}let pl=null;function io(t,e){tu()||qi(),t.equal(t.value,e)||(t.value=e,function Xn(t){t.version++,function H0(){mt++}(),hu(t),pl?.()}(t))}const no={...ni,equal:ki,value:void 0};function ha(t){return"function"==typeof t}function Ys(t){const a=t(u=>{Error.call(u),u.stack=(new Error).stack});return a.prototype=Object.create(Error.prototype),a.prototype.constructor=a,a}const qh=Ys(t=>function(a){t(this),this.message=a?`${a.length} errors occurred during unsubscription:\n${a.map((u,i)=>`${i+1}) ${u.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=a});function ka(t,e){if(t){const a=t.indexOf(e);0<=a&&t.splice(a,1)}}class Ce{constructor(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let e;if(!this.closed){this.closed=!0;const{_parentage:a}=this;if(a)if(this._parentage=null,Array.isArray(a))for(const r of a)r.remove(this);else a.remove(this);const{initialTeardown:u}=this;if(ha(u))try{u()}catch(r){e=r instanceof qh?r.errors:[r]}const{_finalizers:i}=this;if(i){this._finalizers=null;for(const r of i)try{uu(r)}catch(o){e=e??[],o instanceof qh?e=[...e,...o.errors]:e.push(o)}}if(e)throw new qh(e)}}add(e){var a;if(e&&e!==this)if(this.closed)uu(e);else{if(e instanceof Ce){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=null!==(a=this._finalizers)&&void 0!==a?a:[]).push(e)}}_hasParent(e){const{_parentage:a}=this;return a===e||Array.isArray(a)&&a.includes(e)}_addParent(e){const{_parentage:a}=this;this._parentage=Array.isArray(a)?(a.push(e),a):a?[a,e]:e}_removeParent(e){const{_parentage:a}=this;a===e?this._parentage=null:Array.isArray(a)&&ka(a,e)}remove(e){const{_finalizers:a}=this;a&&ka(a,e),e instanceof Ce&&e._removeParent(this)}}Ce.EMPTY=(()=>{const t=new Ce;return t.closed=!0,t})();const et=Ce.EMPTY;function ia(t){return t instanceof Ce||t&&"closed"in t&&ha(t.remove)&&ha(t.add)&&ha(t.unsubscribe)}function uu(t){ha(t)?t():t.unsubscribe()}const ke={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},ro={setTimeout(t,e,...a){const{delegate:u}=ro;return u?.setTimeout?u.setTimeout(t,e,...a):setTimeout(t,e,...a)},clearTimeout(t){const{delegate:e}=ro;return(e?.clearTimeout||clearTimeout)(t)},delegate:void 0};function Qs(t){ro.setTimeout(()=>{const{onUnhandledError:e}=ke;if(!e)throw t;e(t)})}function ri(){}const Wa=sa("C",void 0,void 0);function sa(t,e,a){return{kind:t,value:e,error:a}}let Yi=null;function Sn(t){if(ke.useDeprecatedSynchronousErrorHandling){const e=!Yi;if(e&&(Yi={errorThrown:!1,error:null}),t(),e){const{errorThrown:a,error:u}=Yi;if(Yi=null,a)throw u}}else t()}class Wu extends Ce{constructor(e){super(),this.isStopped=!1,e?(this.destination=e,ia(e)&&e.add(this)):this.destination=Uv}static create(e,a,u){return new Mn(e,a,u)}next(e){this.isStopped?ql(function gl(t){return sa("N",t,void 0)}(e),this):this._next(e)}error(e){this.isStopped?ql(function pn(t){return sa("E",void 0,t)}(e),this):(this.isStopped=!0,this._error(e))}complete(){this.isStopped?ql(Wa,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(e){this.destination.next(e)}_error(e){try{this.destination.error(e)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const j0=Function.prototype.bind;function zn(t,e){return j0.call(t,e)}class qa{constructor(e){this.partialObserver=e}next(e){const{partialObserver:a}=this;if(a.next)try{a.next(e)}catch(u){Lo(u)}}error(e){const{partialObserver:a}=this;if(a.error)try{a.error(e)}catch(u){Lo(u)}else Lo(e)}complete(){const{partialObserver:e}=this;if(e.complete)try{e.complete()}catch(a){Lo(a)}}}class Mn extends Wu{constructor(e,a,u){let i;if(super(),ha(e)||!e)i={next:e??void 0,error:a??void 0,complete:u??void 0};else{let r;this&&ke.useDeprecatedNextContext?(r=Object.create(e),r.unsubscribe=()=>this.unsubscribe(),i={next:e.next&&zn(e.next,r),error:e.error&&zn(e.error,r),complete:e.complete&&zn(e.complete,r)}):i=e}this.destination=new qa(i)}}function Lo(t){ke.useDeprecatedSynchronousErrorHandling?function vl(t){ke.useDeprecatedSynchronousErrorHandling&&Yi&&(Yi.errorThrown=!0,Yi.error=t)}(t):Qs(t)}function ql(t,e){const{onStoppedNotification:a}=ke;a&&ro.setTimeout(()=>a(t,e))}const Uv={closed:!0,next:ri,error:function O0(t){throw t},complete:ri},Ac="function"==typeof Symbol&&Symbol.observable||"@@observable";function zi(t){return t}function Ql(t){return 0===t.length?zi:1===t.length?t[0]:function(a){return t.reduce((u,i)=>i(u),a)}}class rt{constructor(e){e&&(this._subscribe=e)}lift(e){const a=new rt;return a.source=this,a.operator=e,a}subscribe(e,a,u){const i=function H3(t){return t&&t instanceof Wu||function Yh(t){return t&&ha(t.next)&&ha(t.error)&&ha(t.complete)}(t)&&ia(t)}(e)?e:new Mn(e,a,u);return Sn(()=>{const{operator:r,source:o}=this;i.add(r?r.call(i,o):o?this._subscribe(i):this._trySubscribe(i))}),i}_trySubscribe(e){try{return this._subscribe(e)}catch(a){e.error(a)}}forEach(e,a){return new(a=R3(a))((u,i)=>{const r=new Mn({next:o=>{try{e(o)}catch(d){i(d),r.unsubscribe()}},error:i,complete:u});this.subscribe(r)})}_subscribe(e){var a;return null===(a=this.source)||void 0===a?void 0:a.subscribe(e)}[Ac](){return this}pipe(...e){return Ql(e)(this)}toPromise(e){return new(e=R3(e))((a,u)=>{let i;this.subscribe(r=>i=r,r=>u(r),()=>a(i))})}}function R3(t){var e;return null!==(e=t??ke.Promise)&&void 0!==e?e:Promise}rt.create=t=>new rt(t);const oo=Ys(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});class Gt extends rt{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){const a=new Ln(this,this);return a.operator=e,a}_throwIfClosed(){if(this.closed)throw new oo}next(e){Sn(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const a of this.currentObservers)a.next(e)}})}error(e){Sn(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;const{observers:a}=this;for(;a.length;)a.shift().error(e)}})}complete(){Sn(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:e}=this;for(;e.length;)e.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0}_trySubscribe(e){return this._throwIfClosed(),super._trySubscribe(e)}_subscribe(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)}_innerSubscribe(e){const{hasError:a,isStopped:u,observers:i}=this;return a||u?et:(this.currentObservers=null,i.push(e),new Ce(()=>{this.currentObservers=null,ka(i,e)}))}_checkFinalizedStatuses(e){const{hasError:a,thrownError:u,isStopped:i}=this;a?e.error(u):i&&e.complete()}asObservable(){const e=new rt;return e.source=this,e}}Gt.create=(t,e)=>new Ln(t,e);class Ln extends Gt{constructor(e,a){super(),this.destination=e,this.source=a}next(e){var a,u;null===(u=null===(a=this.destination)||void 0===a?void 0:a.next)||void 0===u||u.call(a,e)}error(e){var a,u;null===(u=null===(a=this.destination)||void 0===a?void 0:a.error)||void 0===u||u.call(a,e)}complete(){var e,a;null===(a=null===(e=this.destination)||void 0===e?void 0:e.complete)||void 0===a||a.call(e)}_subscribe(e){var a,u;return null!==(u=null===(a=this.source)||void 0===a?void 0:a.subscribe(e))&&void 0!==u?u:et}}class Ua extends Gt{constructor(e){super(),this._value=e}get value(){return this.getValue()}_subscribe(e){const a=super._subscribe(e);return!a.closed&&e.next(this._value),a}getValue(){const{hasError:e,thrownError:a,_value:u}=this;if(e)throw a;return this._throwIfClosed(),u}next(e){super.next(this._value=e)}}function To(t){return ha(t?.lift)}function Re(t){return e=>{if(To(e))return e.lift(function(a){try{return t(a,this)}catch(u){this.error(u)}});throw new TypeError("Unable to lift unknown Observable type")}}function at(t,e,a,u,i){return new Ft(t,e,a,u,i)}class Ft extends Wu{constructor(e,a,u,i,r,o){super(e),this.onFinalize=r,this.shouldUnsubscribe=o,this._next=a?function(d){try{a(d)}catch(h){e.error(h)}}:super._next,this._error=i?function(d){try{i(d)}catch(h){e.error(h)}finally{this.unsubscribe()}}:super._error,this._complete=u?function(){try{u()}catch(d){e.error(d)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:a}=this;super.unsubscribe(),!a&&(null===(e=this.onFinalize)||void 0===e||e.call(this))}}}function Qe(t,e){return Re((a,u)=>{let i=0;a.subscribe(at(u,r=>{u.next(t.call(e,r,i++))}))})}const xi="https://g.co/ng/security#xss";class J extends Error{constructor(e,a){super(pt(e,a)),this.code=e}}function pt(t,e){return`NG0${Math.abs(t)}${e?": "+e:""}`}const zr=Symbol("InputSignalNode#UNSET"),Uu={...no,transformFn:void 0,applyValueToInputSignal(t,e){io(t,e)}};function ed(t,e){const a=Object.create(Uu);function u(){if(Bn(a),a.value===zr)throw new J(-950,!1);return a.value}return a.value=t,a.transformFn=e?.transform,u[ca]=a,u}function At(t){return{toString:t}.toString()}const Tn="__annotations__",Mr="__parameters__",En="__prop__metadata__";function pu(t,e,a,u,i){return At(()=>{const r=Po(e);function o(...d){if(this instanceof o)return r.call(this,...d),this;const h=new o(...d);return function(E){return i&&i(E,...d),(E.hasOwnProperty(Tn)?E[Tn]:Object.defineProperty(E,Tn,{value:[]})[Tn]).push(h),u&&u(E),E}}return a&&(o.prototype=Object.create(a.prototype)),o.prototype.ngMetadataName=t,o.annotationCls=o,o})}function Po(t){return function(...a){if(t){const u=t(...a);for(const i in u)this[i]=u[i]}}}function oi(t,e,a){return At(()=>{const u=Po(e);function i(...r){if(this instanceof i)return u.apply(this,r),this;const o=new i(...r);return d.annotation=o,d;function d(h,m,E){const v=h.hasOwnProperty(Mr)?h[Mr]:Object.defineProperty(h,Mr,{value:[]})[Mr];for(;v.length<=E;)v.push(null);return(v[E]=v[E]||[]).push(o),h}}return a&&(i.prototype=Object.create(a.prototype)),i.prototype.ngMetadataName=t,i.annotationCls=i,i})}function Zt(t,e,a,u){return At(()=>{const i=Po(e);function r(...o){if(this instanceof r)return i.apply(this,o),this;const d=new r(...o);return function h(m,E){if(void 0===m)throw new Error("Standard Angular field decorators are not supported in JIT mode.");const v=m.constructor,k=v.hasOwnProperty(En)?v[En]:Object.defineProperty(v,En,{value:{}})[En];k[E]=k.hasOwnProperty(E)&&k[E]||[],k[E].unshift(d),u&&u(m,E,...o)}}return a&&(r.prototype=Object.create(a.prototype)),r.prototype.ngMetadataName=t,r.annotationCls=r,r})}const Ja=globalThis;function Et(t){for(let e in t)if(t[e]===Et)return e;throw Error("Could not find renamed property on target object.")}function ea(t,e){for(const a in e)e.hasOwnProperty(a)&&!t.hasOwnProperty(a)&&(t[a]=e[a])}function le(t){if("string"==typeof t)return t;if(Array.isArray(t))return"["+t.map(le).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;const e=t.toString();if(null==e)return""+e;const a=e.indexOf("\n");return-1===a?e:e.substring(0,a)}function ud(t,e){return null==t||""===t?null===e?"":e:null==e||""===e?t:t+" "+e}const wc=Et({__forward_ref__:Et});function Ya(t){return t.__forward_ref__=Ya,t.toString=function(){return le(this())},t}function se(t){return wt(t)?t():t}function wt(t){return"function"==typeof t&&t.hasOwnProperty(wc)&&t.__forward_ref__===Ya}function ar(t,e,a){t!=e&&$e(a,t,e,"==")}function $e(t,e,a,u){throw new Error(`ASSERTION ERROR: ${t}`+(null==u?"":` [Expected=> ${a} ${u} ${e} <=Actual]`))}function he(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function P(t){return{providers:t.providers||[],imports:t.imports||[]}}function id(t){return em(t,nd)||em(t,Ke)}function em(t,e){return t.hasOwnProperty(e)?t[e]:null}function K0(t){return t&&(t.hasOwnProperty(G3)||t.hasOwnProperty(H))?t[G3]:null}const nd=Et({\u0275prov:Et}),G3=Et({\u0275inj:Et}),Ke=Et({ngInjectableDef:Et}),H=Et({ngInjectorDef:Et});class V{constructor(e,a){this._desc=e,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof a?this.__NG_ELEMENT_ID__=a:void 0!==a&&(this.\u0275prov=he({token:this,providedIn:a.providedIn||"root",factory:a.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function rd(t){return t&&!!t.\u0275providers}const am=Et({\u0275cmp:Et}),e5=Et({\u0275dir:Et}),tm=Et({\u0275pipe:Et}),a5=Et({\u0275mod:Et}),Io=Et({\u0275fac:Et}),um=Et({__NG_ELEMENT_ID__:Et}),W0=Et({__NG_ENV_ID__:Et});function ma(t){return"string"==typeof t?t:null==t?"":String(t)}function ot(t){return"function"==typeof t?t.name||t.toString():"object"==typeof t&&null!=t&&"function"==typeof t.type?t.type.name||t.type.toString():ma(t)}function t5(t,e){throw new J(-201,!1)}var Sa,t;let K3;function Di(){return K3}function Eu(t){const e=K3;return K3=t,e}function W3(t,e,a){const u=id(t);return u&&"root"==u.providedIn?void 0===u.value?u.value=u.factory():u.value:a&Sa.Optional?null:void 0!==e?e:void t5()}(t=Sa||(Sa={}))[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional";const e0={},Lr="__NG_DI_FLAG__",bl="ngTempTokenPath",dD=/\n/gm,k9="\u0275",cD="__source";let Mc;function U0(t){const e=Mc;return Mc=t,e}function x9(t,e=Sa.Default){if(void 0===Mc)throw new J(-203,!1);return null===Mc?W3(t,void 0,e):Mc.get(t,e&Sa.Optional?null:void 0,e)}function fe(t,e=Sa.Default){return(Di()||x9)(se(t),e)}function Lc(t){throw new J(202,!1)}function U(t,e=Sa.Default){return fe(t,od(e))}function od(t){return typeof t>"u"||"number"==typeof t?t:(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function tr(t){const e=[];for(let a=0;a ");else if("object"==typeof e){let r=[];for(let o in e)if(e.hasOwnProperty(o)){let d=e[o];r.push(o+":"+("string"==typeof d?JSON.stringify(d):le(d)))}i=`{${r.join(", ")}}`}return`${a}${u?"("+u+")":""}[${i}]: ${t.replace(dD,"\n ")}`}("\n"+t.message,i,a,u),t.ngTokenPath=i,t[bl]=null,t}const a0=Ro(oi("Inject",t=>({token:t})),-1),Ho=Ro(oi("Optional"),8),J3=Ro(oi("Self"),2),t0=Ro(oi("SkipSelf"),4),Z3=Ro(oi("Host"),1);function kl(t,e){return t.hasOwnProperty(Io)?t[Io]:null}function gu(t){return t.flat(Number.POSITIVE_INFINITY)}function u0(t,e){t.forEach(a=>Array.isArray(a)?u0(a,e):e(a))}function rm(t,e,a){e>=t.length?t.push(a):t.splice(e,0,a)}function xl(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function Pn(t,e){const a=[];for(let u=0;ue;){const r=i-2;t[i]=t[r],i--}t[e]=a,t[e+1]=u}}function bn(t,e,a){let u=Nn(t,e);return u>=0?t[1|u]=a:(u=~u,Pc(t,u,e,a)),u}function Tr(t,e){const a=Nn(t,e);if(a>=0)return t[1|a]}function Nn(t,e){return pD(t,e,1)}function pD(t,e,a){let u=0,i=t.length>>a;for(;i!==u;){const r=u+(i-u>>1),o=t[r<e?i=r:u=r+1}return~(i<e){o=r-1;break}}}for(;r-1){let r;for(;++ir?"":i[E+1].toLowerCase(),2&u&&m!==v){if(ur(u))return!1;o=!0}}}}else{if(!o&&!ur(u)&&!ur(h))return!1;if(o&&ur(h))continue;o=!1,u=h|1&u}}return ur(u)||o}function ur(t){return!(1&t)}function r5(t,e,a,u){if(null===e)return-1;let i=0;if(u||!a){let r=!1;for(;i-1)for(a++;a0?'="'+d+'"':"")+"]"}else 8&u?i+="."+o:4&u&&(i+=" "+o);else""!==i&&!ur(o)&&(e+=vD(r,i),i=""),u=o,r=r||!ur(u);a++}return""!==i&&(e+=vD(r,i)),e}function cd(t){return At(()=>{const e=l5(t),a={...e,decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===ld.OnPush,directiveDefs:null,pipeDefs:null,dependencies:e.standalone&&t.dependencies||null,getStandaloneInjector:null,signals:t.signals??!1,data:t.data||{},encapsulation:t.encapsulation||Tt.Emulated,styles:t.styles||kt,_:null,schemas:t.schemas||null,tView:null,id:""};ho(a);const u=t.dependencies;return a.directiveDefs=hd(u,!1),a.pipeDefs=hd(u,!0),a.id=function s5(t){let e=0;const a=[t.selectors,t.ngContentSelectors,t.hostVars,t.hostAttrs,t.consts,t.vars,t.decls,t.encapsulation,t.standalone,t.signals,t.exportAs,JSON.stringify(t.inputs),JSON.stringify(t.outputs),Object.getOwnPropertyNames(t.type.prototype),!!t.contentQueries,!!t.viewQuery].join("|");for(const i of a)e=Math.imul(31,e)+i.charCodeAt(0)|0;return e+=2147483648,"c"+e}(a),a})}function fl(t){return za(t)||Pu(t)}function o5(t){return null!==t}function en(t){return At(()=>({type:t.type,bootstrap:t.bootstrap||kt,declarations:t.declarations||kt,imports:t.imports||kt,exports:t.exports||kt,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function ap(t,e){if(null==t)return so;const a={};for(const u in t)if(t.hasOwnProperty(u)){const i=t[u];let r,o,d=tt.None;Array.isArray(i)?(d=i[0],r=i[1],o=i[2]??r):(r=i,o=i),e?(a[r]=d!==tt.None?[u,d]:u,e[r]=o):a[r]=u}return a}function Ae(t){return At(()=>{const e=l5(t);return ho(e),e})}function xn(t){return{type:t.type,name:t.name,factory:null,pure:!1!==t.pure,standalone:!0===t.standalone,onDestroy:t.type.prototype.ngOnDestroy||null}}function za(t){return t[am]||null}function Pu(t){return t[e5]||null}function fi(t){return t[tm]||null}function n0(t){const e=za(t)||Pu(t)||fi(t);return null!==e&&e.standalone}function si(t,e){const a=t[a5]||null;if(!a&&!0===e)throw new Error(`Type ${le(t)} does not have '\u0275mod' property.`);return a}function l5(t){const e={};return{type:t.type,providersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:e,inputTransforms:null,inputConfig:t.inputs||so,exportAs:t.exportAs||null,standalone:!0===t.standalone,signals:!0===t.signals,selectors:t.selectors||kt,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:ap(t.inputs,e),outputs:ap(t.outputs),debugInfo:null}}function ho(t){t.features?.forEach(e=>e(t))}function hd(t,e){if(!t)return null;const a=e?fi:fl;return()=>("function"==typeof t?t():t).map(u=>a(u)).filter(o5)}function Hc(t){return{\u0275providers:t}}function y9(...t){return{\u0275providers:Kt(!0,t),\u0275fromNgModule:!0}}function Kt(t,...e){const a=[],u=new Set;let i;const r=o=>{a.push(o)};return u0(e,o=>{const d=o;mo(d,r,[],u)&&(i||=[],i.push(d))}),void 0!==i&&In(i,r),a}function In(t,e){for(let a=0;a{e(r,u)})}}function mo(t,e,a,u){if(!(t=se(t)))return!1;let i=null,r=K0(t);const o=!r&&za(t);if(r||o){if(o&&!o.standalone)return!1;i=t}else{const h=t.ngModule;if(r=K0(h),!r)return!1;i=h}const d=u.has(i);if(o){if(d)return!1;if(u.add(i),o.dependencies){const h="function"==typeof o.dependencies?o.dependencies():o.dependencies;for(const m of h)mo(m,e,a,u)}}else{if(!r)return!1;{if(null!=r.imports&&!d){let m;u.add(i);try{u0(r.imports,E=>{mo(E,e,a,u)&&(m||=[],m.push(E))})}finally{}void 0!==m&&In(m,e)}if(!d){const m=kl(i)||(()=>new i);e({provide:i,useFactory:m,deps:kt},i),e({provide:Vo,useValue:i,multi:!0},i),e({provide:i0,useValue:()=>fe(i),multi:!0},i)}const h=r.providers;if(null!=h&&!d){const m=t;J0(h,E=>{e(E,m)})}}}return i!==t&&void 0!==t.providers}function J0(t,e){for(let a of t)rd(a)&&(a=a.\u0275providers),Array.isArray(a)?J0(a,e):e(a)}const Z0=Et({provide:String,useValue:Et});function jo(t){return null!==t&&"object"==typeof t&&Z0 in t}function md(t){return!(!t||!t.useExisting)}function r0(t){return!(!t||!t.useFactory)}function Vc(t){return"function"==typeof t}const d5=new V(""),tp={},qL={};let up;function ip(){return void 0===up&&(up=new kn),up}class Pi{}class $0 extends Pi{get destroyed(){return this._destroyed}constructor(e,a,u,i){super(),this.parent=a,this.source=u,this.scopes=i,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,rp(e,o=>this.processProvider(o)),this.records.set(Y3,Ma(void 0,this)),i.has("environment")&&this.records.set(Pi,Ma(void 0,this));const r=this.records.get(d5);null!=r&&"string"==typeof r.value&&this.scopes.add(r.value),this.injectorDefTypes=new Set(this.get(Vo,kt,Sa.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const e=me(null);try{for(const u of this._ngOnDestroyHooks)u.ngOnDestroy();const a=this._onDestroyHooks;this._onDestroyHooks=[];for(const u of a)u()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),me(e)}}onDestroy(e){return this.assertNotDestroyed(),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){this.assertNotDestroyed();const a=U0(this),u=Eu(void 0);try{return e()}finally{U0(a),Eu(u)}}get(e,a=e0,u=Sa.Default){if(this.assertNotDestroyed(),e.hasOwnProperty(W0))return e[W0](this);u=od(u);const r=U0(this),o=Eu(void 0);try{if(!(u&Sa.SkipSelf)){let h=this.records.get(e);if(void 0===h){const m=function w9(t){return"function"==typeof t||"object"==typeof t&&t instanceof V}(e)&&id(e);h=m&&this.injectableDefInScope(m)?Ma(om(e),tp):null,this.records.set(e,h)}if(null!=h)return this.hydrate(e,h)}const d=u&Sa.Self?ip():this.parent;return a=u&Sa.Optional&&a===e0?null:a,d.get(e,a)}catch(d){if("NullInjectorError"===d.name){if((d[bl]=d[bl]||[]).unshift(le(e)),r)throw d;return Tc(d,e,"R3InjectorError",this.source)}throw d}finally{Eu(o),U0(r)}}resolveInjectorInitializers(){const e=me(null),a=U0(this),u=Eu(void 0);try{const r=this.get(i0,kt,Sa.Self);for(const o of r)o()}finally{U0(a),Eu(u),me(e)}}toString(){const e=[],a=this.records;for(const u of a.keys())e.push(le(u));return`R3Injector[${e.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new J(205,!1)}processProvider(e){let a=Vc(e=se(e))?e:se(e&&e.provide);const u=function da(t){if(jo(t))return Ma(void 0,t.useValue);return Ma(lt(t),tp)}(e);if(!Vc(e)&&!0===e.multi){let i=this.records.get(a);i||(i=Ma(void 0,tp,!0),i.factory=()=>tr(i.multi),this.records.set(a,i)),a=e,i.multi.push(e)}this.records.set(a,u)}hydrate(e,a){const u=me(null);try{return a.value===tp&&(a.value=qL,a.value=a.factory()),"object"==typeof a.value&&a.value&&function np(t){return null!==t&&"object"==typeof t&&"function"==typeof t.ngOnDestroy}(a.value)&&this._ngOnDestroyHooks.add(a.value),a.value}finally{me(u)}}injectableDefInScope(e){if(!e.providedIn)return!1;const a=se(e.providedIn);return"string"==typeof a?"any"===a||this.scopes.has(a):this.injectorDefTypes.has(a)}removeOnDestroy(e){const a=this._onDestroyHooks.indexOf(e);-1!==a&&this._onDestroyHooks.splice(a,1)}}function om(t){const e=id(t),a=null!==e?e.factory:kl(t);if(null!==a)return a;if(t instanceof V)throw new J(204,!1);if(t instanceof Function)return function F9(t){if(t.length>0)throw new J(204,!1);const a=function O3(t){return t&&(t[nd]||t[Ke])||null}(t);return null!==a?()=>a.factory(t):()=>new t}(t);throw new J(204,!1)}function lt(t,e,a){let u;if(Vc(t)){const i=se(t);return kl(i)||om(i)}if(jo(t))u=()=>se(t.useValue);else if(r0(t))u=()=>t.useFactory(...tr(t.deps||[]));else if(md(t))u=()=>fe(se(t.useExisting));else{const i=se(t&&(t.useClass||t.provide));if(!function A9(t){return!!t.deps}(t))return kl(i)||om(i);u=()=>new i(...tr(t.deps))}return u}function Ma(t,e,a=!1){return{factory:t,value:e,multi:a?[]:void 0}}function rp(t,e){for(const a of t)Array.isArray(a)?rp(a,e):a&&rd(a)?rp(a.\u0275providers,e):e(a)}function ir(t,e){t instanceof $0&&t.assertNotDestroyed();const u=U0(t),i=Eu(void 0);try{return e()}finally{U0(u),Eu(i)}}function q0(){return void 0!==Di()||null!=function hD(){return Mc}()}function yl(t){if(!q0())throw new J(-203,!1)}var pd,xD,DD;function Ci(t){const e=Ja.ng;if(e&&e.\u0275compilerFacade)return e.\u0275compilerFacade;throw new Error("JIT compiler unavailable")}!function(t){t[t.Directive=0]="Directive",t[t.Component=1]="Component",t[t.Injectable=2]="Injectable",t[t.Pipe=3]="Pipe",t[t.NgModule=4]="NgModule"}(pd||(pd={})),function(t){t[t.Directive=0]="Directive",t[t.Pipe=1]="Pipe",t[t.NgModule=2]="NgModule"}(xD||(xD={})),function(t){t[t.Emulated=0]="Emulated",t[t.None=2]="None",t[t.ShadowDom=3]="ShadowDom"}(DD||(DD={}));const c5={\u0275\u0275defineInjectable:he,\u0275\u0275defineInjector:P,\u0275\u0275inject:fe,\u0275\u0275invalidFactoryDep:Lc,resolveForwardRef:se},B9=Function;function Ed(t){return"function"==typeof t}const fD=/^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*(arguments|(?:[^()]+\(\[\],)?[^()]+\(arguments\).*)\)/,h5=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/,S9=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/,CD=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{[^}]*super\(\.\.\.arguments\)/;class yD{constructor(e){this._reflect=e||Ja.Reflect}factory(e){return(...a)=>new e(...a)}_zipTypesAndAnnotations(e,a){let u;u=Pn(typeof e>"u"?a.length:e.length);for(let i=0;i"u"?u[i]=[]:e[i]&&e[i]!=Object?u[i]=[e[i]]:u[i]=[],a&&null!=a[i]&&(u[i]=u[i].concat(a[i]));return u}_ownParameters(e,a){if(function z9(t){return fD.test(t)||CD.test(t)||h5.test(t)&&!S9.test(t)}(e.toString()))return null;if(e.parameters&&e.parameters!==a.parameters)return e.parameters;const i=e.ctorParameters;if(i&&i!==a.ctorParameters){const d="function"==typeof i?i():i,h=d.map(E=>E&&E.type),m=d.map(E=>E&&_D(E.decorators));return this._zipTypesAndAnnotations(h,m)}const r=e.hasOwnProperty(Mr)&&e[Mr],o=this._reflect&&this._reflect.getOwnMetadata&&this._reflect.getOwnMetadata("design:paramtypes",e);return o||r?this._zipTypesAndAnnotations(o,r):Pn(e.length)}parameters(e){if(!Ed(e))return[];const a=jc(e);let u=this._ownParameters(e,a);return!u&&a!==Object&&(u=this.parameters(a)),u||[]}_ownAnnotations(e,a){if(e.annotations&&e.annotations!==a.annotations){let u=e.annotations;return"function"==typeof u&&u.annotations&&(u=u.annotations),u}return e.decorators&&e.decorators!==a.decorators?_D(e.decorators):e.hasOwnProperty(Tn)?e[Tn]:null}annotations(e){if(!Ed(e))return[];const a=jc(e),u=this._ownAnnotations(e,a)||[];return(a!==Object?this.annotations(a):[]).concat(u)}_ownPropMetadata(e,a){if(e.propMetadata&&e.propMetadata!==a.propMetadata){let u=e.propMetadata;return"function"==typeof u&&u.propMetadata&&(u=u.propMetadata),u}if(e.propDecorators&&e.propDecorators!==a.propDecorators){const u=e.propDecorators,i={};return Object.keys(u).forEach(r=>{i[r]=_D(u[r])}),i}return e.hasOwnProperty(En)?e[En]:null}propMetadata(e){if(!Ed(e))return{};const a=jc(e),u={};if(a!==Object){const r=this.propMetadata(a);Object.keys(r).forEach(o=>{u[o]=r[o]})}const i=this._ownPropMetadata(e,a);return i&&Object.keys(i).forEach(r=>{const o=[];u.hasOwnProperty(r)&&o.push(...u[r]),o.push(...i[r]),u[r]=o}),u}ownPropMetadata(e){return Ed(e)&&this._ownPropMetadata(e,jc(e))||{}}hasLifecycleHook(e,a){return e instanceof B9&&a in e.prototype}}function _D(t){return t?t.map(e=>new(0,e.type.annotationCls)(...e.args?e.args:[])):[]}function jc(t){const e=t.prototype?Object.getPrototypeOf(t.prototype):null;return(e?e.constructor:null)||Object}const It=0,pe=1,We=2,vu=3,Nr=4,Ni=5,nr=6,Zu=7,Rt=8,Na=9,_l=10,na=11,Oc=12,m5=13,gd=14,iu=15,vd=16,Gc=17,po=18,an=19,p5=20,yu=21,op=22,o0=23,je=25,lp=1,Eo=7,Y0=9,nu=10;var Wc;function yi(t){return Array.isArray(t)&&"object"==typeof t[lp]}function Dn(t){return Array.isArray(t)&&!0===t[lp]}function Uc(t){return!!(4&t.flags)}function Oo(t){return t.componentOffset>-1}function go(t){return!(1&~t.flags)}function $u(t){return!!t.template}function sm(t){return!!(512&t[We])}function Jc(t){return!(256&~t[We])}!function(t){t[t.None=0]="None",t[t.HasTransplantedViews=2]="HasTransplantedViews"}(Wc||(Wc={}));class Dd{constructor(e,a,u){this.previousValue=e,this.currentValue=a,this.firstChange=u}isFirstChange(){return this.firstChange}}function wD(t,e,a,u){null!==e?e.applyValueToInputSignal(e,u):t[a]=u}function tn(){return sp}function sp(t){return t.type.prototype.ngOnChanges&&(t.setInput=SD),BD}function BD(){const t=b5(this),e=t?.current;if(e){const a=t.previous;if(a===so)t.previous=e;else for(let u in e)a[u]=e[u];t.current=null,this.ngOnChanges(e)}}function SD(t,e,a,u,i){const r=this.declaredInputs[u],o=b5(t)||function zD(t,e){return t[v5]=e}(t,{previous:so,current:null}),d=o.current||(o.current={}),h=o.previous,m=h[r];d[r]=new Dd(m&&m.currentValue,a,h===so),wD(t,e,i,a)}tn.ngInherit=!0;const v5="__ngSimpleChanges__";function b5(t){return t[v5]||null}let dp=null;const _i=function(t,e,a){dp?.(t,e,a)};function xt(t){for(;Array.isArray(t);)t=t[It];return t}function MD(t){for(;Array.isArray(t);){if("object"==typeof t[lp])return t;t=t[It]}return null}function cp(t,e){return xt(e[t])}function fn(t,e){return xt(e[t.index])}function Q0(t,e){return t.data[e]}function rr(t,e){return t[e]}function Cn(t,e){const a=e[t];return yi(a)?a:a[It]}function hp(t){return!(128&~t[We])}function Hn(t,e){return null==e?null:t[e]}function X0(t){t[Gc]=0}function x5(t){1024&t[We]||(t[We]|=1024,hp(t)&&mp(t))}function La(t,e){for(;t>0;)e=e[gd],t--;return e}function Ir(t){return!!(9216&t[We]||t[o0]?.dirty)}function pa(t){t[_l].changeDetectionScheduler?.notify(7),64&t[We]&&(t[We]|=1024),Ir(t)&&mp(t)}function mp(t){t[_l].changeDetectionScheduler?.notify(0);let e=Go(t);for(;null!==e&&!(8192&e[We])&&(e[We]|=8192,hp(e));)e=Go(e)}function pp(t,e){if(!(256&~t[We]))throw new J(911,!1);null===t[yu]&&(t[yu]=[]),t[yu].push(e)}function D5(t,e){if(null===t[yu])return;const a=t[yu].indexOf(e);-1!==a&&t[yu].splice(a,1)}function Go(t){const e=t[vu];return Dn(e)?e[vu]:e}const ua={lFrame:GD(null),bindingsEnabled:!0,skipHydrationRootTNode:null};var gm;!function(t){t[t.Off=0]="Off",t[t.Exhaustive=1]="Exhaustive",t[t.OnlyDirtyViews=2]="OnlyDirtyViews"}(gm||(gm={}));let TD=!1;function ND(){return ua.bindingsEnabled}function es(){return null!==ua.skipHydrationRootTNode}function Y(){return ua.lFrame.lView}function Ha(){return ua.lFrame.tView}function di(t){return ua.lFrame.contextLView=t,t[Rt]}function Nu(t){return ua.lFrame.contextLView=null,t}function Pt(){let t=f5();for(;null!==t&&64===t.type;)t=t.parent;return t}function f5(){return ua.lFrame.currentTNode}function $c(){const t=ua.lFrame,e=t.currentTNode;return t.isParent?e:e.parent}function un(t,e){const a=ua.lFrame;a.currentTNode=t,a.isParent=e}function C5(){return ua.lFrame.isParent}function y5(){ua.lFrame.isParent=!1}function _5(){return TD}function bm(t){TD=t}function nn(){const t=ua.lFrame;let e=t.bindingRootIndex;return-1===e&&(e=t.bindingRootIndex=t.tView.bindingStartIndex),e}function Ko(){return ua.lFrame.bindingIndex}function VD(t){return ua.lFrame.bindingIndex=t}function Wo(){return ua.lFrame.bindingIndex++}function s0(t){const e=ua.lFrame,a=e.bindingIndex;return e.bindingIndex=e.bindingIndex+t,a}function F5(t){ua.lFrame.inI18n=t}function V9(t,e){const a=ua.lFrame;a.bindingIndex=a.bindingRootIndex=t,A5(e)}function A5(t){ua.lFrame.currentDirectiveIndex=t}function as(t){const e=ua.lFrame.currentDirectiveIndex;return-1===e?null:t[e]}function w5(){return ua.lFrame.currentQueryIndex}function Ep(t){ua.lFrame.currentQueryIndex=t}function j9(t){const e=t[pe];return 2===e.type?e.declTNode:1===e.type?t[Ni]:null}function OD(t,e,a){if(a&Sa.SkipSelf){let i=e,r=t;for(;(i=i.parent,null===i&&!(a&Sa.Host))&&(i=j9(r),!(null===i||(r=r[gd],10&i.type))););if(null===i)return!1;e=i,t=r}const u=ua.lFrame=gp();return u.currentTNode=e,u.lView=t,!0}function B5(t){const e=gp(),a=t[pe];ua.lFrame=e,e.currentTNode=a.firstChild,e.lView=t,e.tView=a,e.contextLView=t,e.bindingIndex=a.bindingStartIndex,e.inI18n=!1}function gp(){const t=ua.lFrame,e=null===t?null:t.child;return null===e?GD(t):e}function GD(t){const e={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:t,child:null,inI18n:!1};return null!==t&&(t.child=e),e}function vp(){const t=ua.lFrame;return ua.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}const KD=vp;function S5(){const t=vp();t.isParent=!0,t.tView=null,t.selectedIndex=-1,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function rn(){return ua.lFrame.selectedIndex}function ts(t){ua.lFrame.selectedIndex=t}function qt(){const t=ua.lFrame;return Q0(t.tView,t.selectedIndex)}function UD(){return ua.lFrame.currentNamespace}let JD=!0;function km(){return JD}function Bl(t){JD=t}function xm(t,e){for(let a=e.directiveStart,u=e.directiveEnd;a=u)break}else e[h]<0&&(t[Gc]+=65536),(d>14>16&&(3&t[We])===e&&(t[We]+=16384,bo(d,r)):bo(d,r)}const Fi=-1;class we{constructor(e,a,u){this.factory=e,this.resolving=!1,this.canSeeViewProviders=a,this.injectImpl=u}}function Dp(t){return t!==Fi}function Yc(t){return 32767&t}function us(t,e){let a=function Dm(t){return t>>16}(t),u=e;for(;a>0;)u=u[gd],a--;return u}let Uo=!0;function Vn(t){const e=Uo;return Uo=t,e}const yd=255,fp=5;let M5=0;const Jo={};function c0(t,e){const a=ZD(t,e);if(-1!==a)return a;const u=e[pe];u.firstCreatePass&&(t.injectorIndex=e.length,Da(u.data,t),Da(e,null),Da(u.blueprint,null));const i=Iu(t,e),r=t.injectorIndex;if(Dp(i)){const o=Yc(i),d=us(i,e),h=d[pe].data;for(let m=0;m<8;m++)e[r+m]=d[o+m]|h[o+m]}return e[r+8]=i,r}function Da(t,e){t.push(0,0,0,0,0,0,0,0,e)}function ZD(t,e){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null===e[t.injectorIndex+8]?-1:t.injectorIndex}function Iu(t,e){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let a=0,u=null,i=e;for(;null!==i;){if(u=L5(i),null===u)return Fi;if(a++,i=i[gd],-1!==u.injectorIndex)return u.injectorIndex|a<<16}return Fi}function h0(t,e,a){!function Sl(t,e,a){let u;"string"==typeof a?u=a.charCodeAt(0)||0:a.hasOwnProperty(um)&&(u=a[um]),null==u&&(u=a[um]=M5++);const i=u&yd,r=1<>fp)]|=r}(t,e,a)}function $D(t,e,a){if(a&Sa.Optional||void 0!==t)return t;t5()}function qD(t,e,a,u){if(a&Sa.Optional&&void 0===u&&(u=null),!(a&(Sa.Self|Sa.Host))){const i=t[Na],r=Eu(void 0);try{return i?i.get(e,u,a&Sa.Optional):W3(e,u,a&Sa.Optional)}finally{Eu(r)}}return $D(u,0,a)}function YD(t,e,a,u=Sa.Default,i){if(null!==t){if(2048&e[We]&&!(u&Sa.Self)){const o=function uf(t,e,a,u,i){let r=t,o=e;for(;null!==r&&null!==o&&2048&o[We]&&!(512&o[We]);){const d=QD(r,o,a,u|Sa.Self,Jo);if(d!==Jo)return d;let h=r.parent;if(!h){const m=o[p5];if(m){const E=m.get(a,Jo,u);if(E!==Jo)return E}h=L5(o),o=o[gd]}r=h}return i}(t,e,a,u,Jo);if(o!==Jo)return o}const r=QD(t,e,a,u,Jo);if(r!==Jo)return r}return qD(e,a,u,i)}function QD(t,e,a,u,i){const r=function XD(t){if("string"==typeof t)return t.charCodeAt(0)||0;const e=t.hasOwnProperty(um)?t[um]:void 0;return"number"==typeof e?e>=0?e&yd:tf:e}(a);if("function"==typeof r){if(!OD(e,t,u))return u&Sa.Host?$D(i,0,u):qD(e,a,u,i);try{let o;if(o=r(u),null!=o||u&Sa.Optional)return o;t5()}finally{KD()}}else if("number"==typeof r){let o=null,d=ZD(t,e),h=Fi,m=u&Sa.Host?e[iu][Ni]:null;for((-1===d||u&Sa.SkipSelf)&&(h=-1===d?Iu(t,e):e[d+8],h!==Fi&&af(u,!1)?(o=e[pe],d=Yc(h),e=us(h,e)):d=-1);-1!==d;){const E=e[pe];if(ef(r,d,E.data)){const v=U9(d,e,a,o,u,m);if(v!==Jo)return v}h=e[d+8],h!==Fi&&af(u,e[pe].data[d+8]===m)&&ef(r,d,e)?(o=E,d=Yc(h),e=us(h,e)):d=-1}}return i}function U9(t,e,a,u,i,r){const o=e[pe],d=o.data[t+8],E=Cp(d,o,a,null==u?Oo(d)&&Uo:u!=o&&!!(3&d.type),i&Sa.Host&&r===d);return null!==E?_d(e,o,E,d):Jo}function Cp(t,e,a,u,i){const r=t.providerIndexes,o=e.data,d=1048575&r,h=t.directiveStart,m=t.directiveEnd,E=r>>20,k=i?d+E:m;for(let x=u?d:d+E;x=h&&f.type===a)return x}if(i){const x=o[h];if(x&&$u(x)&&x.type===a)return h}return null}function _d(t,e,a,u){let i=t[a];const r=e.data;if(function qc(t){return t instanceof we}(i)){const o=i;o.resolving&&function JL(t,e){throw e&&e.join(" > "),new J(-200,t)}(ot(r[a]));const d=Vn(o.canSeeViewProviders);o.resolving=!0;const m=o.injectImpl?Eu(o.injectImpl):null;OD(t,u,Sa.Default);try{i=t[a]=o.factory(void 0,r,t,u),e.firstCreatePass&&a>=u.directiveStart&&function K9(t,e,a){const{ngOnChanges:u,ngOnInit:i,ngDoCheck:r}=e.type.prototype;if(u){const o=sp(e);(a.preOrderHooks??=[]).push(t,o),(a.preOrderCheckHooks??=[]).push(t,o)}i&&(a.preOrderHooks??=[]).push(0-t,i),r&&((a.preOrderHooks??=[]).push(t,r),(a.preOrderCheckHooks??=[]).push(t,r))}(a,r[a],e)}finally{null!==m&&Eu(m),Vn(d),o.resolving=!1,KD()}}return i}function ef(t,e,a){const u=1<>fp)]&u)}function af(t,e){return!(t&Sa.Self||t&Sa.Host&&e)}class ci{constructor(e,a){this._tNode=e,this._lView=a}get(e,a,u){return YD(this._tNode,this._lView,e,od(u),a)}}function tf(){return new ci(Pt(),Y())}function bu(t){return At(()=>{const e=t.prototype.constructor,a=e[Io]||yp(e),u=Object.prototype;let i=Object.getPrototypeOf(t.prototype).constructor;for(;i&&i!==u;){const r=i[Io]||yp(i);if(r&&r!==a)return r;i=Object.getPrototypeOf(i)}return r=>new r})}function yp(t){return wt(t)?()=>{const e=yp(se(t));return e&&e()}:kl(t)}function L5(t){const e=t[pe],a=e.type;return 2===a?e.declTNode:1===a?t[Ni]:null}function Ii(t){return function W9(t,e){if("class"===e)return t.classes;if("style"===e)return t.styles;const a=t.attrs;if(a){const u=a.length;let i=0;for(;i({attributeName:t,__NG_ELEMENT_ID__:()=>Ii(t)}));let ln=null;function Ad(){return ln=ln||new yD}function Hr(t){return Xc(Ad().parameters(t))}function Xc(t){return t.map(e=>function fm(t){const e={token:null,attribute:null,host:!1,optional:!1,self:!1,skipSelf:!1};if(Array.isArray(t)&&t.length>0)for(let a=0;a(null===a&&(a=Ci().compileInjectable(c5,`ng:///${t.name}/\u0275prov.js`,function wd(t,e){const a=e||{providedIn:null},u={name:t.name,type:t,typeArgumentCount:0,providedIn:a.providedIn};return(ym(a)||zl(a))&&void 0!==a.deps&&(u.deps=Xc(a.deps)),ym(a)?u.useClass=a.useClass:function Fp(t){return Cm in t}(a)?u.useValue=a.useValue:zl(a)?u.useFactory=a.useFactory:function is(t){return void 0!==t.useExisting}(a)&&(u.useExisting=a.useExisting),u}(t,e))),a)}),t.hasOwnProperty(Io)||Object.defineProperty(t,Io,{get:()=>{if(null===u){const i=Ci();u=i.compileFactory(c5,`ng:///${t.name}/\u0275fac.js`,{name:t.name,type:t,typeArgumentCount:0,deps:Hr(t),target:i.FactoryTarget.Injectable})}return u},configurable:!0})}const Cm=Et({provide:String,useValue:Et});function ym(t){return void 0!==t.useClass}function zl(t){return void 0!==t.useFactory}const m0=pu("Injectable",void 0,void 0,void 0,(t,e)=>_p(t,e));function _m(t,e=null,a=null,u){const i=Bd(t,e,a,u);return i.resolveInjectorInitializers(),i}function Bd(t,e=null,a=null,u,i=new Set){const r=[a||kt,y9(t)];return u=u||("object"==typeof t?void 0:le(t)),new $0(r,e||ip(),u||null,i)}class Ut{static#e=this.THROW_IF_NOT_FOUND=e0;static#a=this.NULL=new kn;static create(e,a){if(Array.isArray(e))return _m({name:""},a,e,"");{const u=e.name??"";return _m({name:u},e.parent,e.providers,u)}}static#t=this.\u0275prov=he({token:Ut,providedIn:"any",factory:()=>fe(Y3)});static#u=this.__NG_ELEMENT_ID__=-1}new V("").__NG_ELEMENT_ID__=t=>{const e=Pt();if(null===e)throw new J(204,!1);if(2&e.type)return e.value;if(t&Sa.Optional)return null;throw new J(204,!1)};const xo="ngOriginalError";function zd(t){return t[xo]}class _n{constructor(){this._console=console}handleError(e){const a=this._findOriginalError(e);this._console.error("ERROR",e),a&&this._console.error("ORIGINAL ERROR",a)}_findOriginalError(e){let a=e&&zd(e);for(;a&&zd(a);)a=zd(a);return a||null}}const Md=new V("",{providedIn:"root",factory:()=>U(_n).handleError.bind(void 0)});class hi{static#e=this.__NG_ELEMENT_ID__=T5;static#a=this.__NG_ENV_ID__=e=>e}class st extends hi{constructor(e){super(),this._lView=e}onDestroy(e){return pp(this._lView,e),()=>D5(this._lView,e)}}function T5(){return new st(Y())}class Ri{constructor(){this.destroyed=!1,this.listeners=null,this.errorHandler=U(_n,{optional:!0}),this.destroyRef=U(hi),this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(e){if(this.destroyed)throw new J(953,!1);return(this.listeners??=[]).push(e),{unsubscribe:()=>{const a=this.listeners?.indexOf(e);void 0!==a&&-1!==a&&this.listeners?.splice(a,1)}}}emit(e){if(this.destroyed)throw new J(953,!1);if(null===this.listeners)return;const a=me(null);try{for(const u of this.listeners)try{u(e)}catch(i){this.errorHandler?.handleError(i)}}finally{me(a)}}}function P5(t,e){return ed(t,e)}P5.required=function Z(t){return ed(zr,t)};function J9(){return Vr(Pt(),Y())}function Vr(t,e){return new Ht(fn(t,e))}class Ht{constructor(e){this.nativeElement=e}static#e=this.__NG_ELEMENT_ID__=J9}function Am(t){return t instanceof Ht?t.nativeElement:t}function N5(t){return e=>{setTimeout(t,void 0,e)}}const aa=class Z9 extends Gt{constructor(e=!1){super(),this.destroyRef=void 0,this.__isAsync=e,q0()&&(this.destroyRef=U(hi,{optional:!0})??void 0)}emit(e){const a=me(null);try{super.next(e)}finally{me(a)}}subscribe(e,a,u){let i=e,r=a||(()=>null),o=u;if(e&&"object"==typeof e){const h=e;i=h.next?.bind(h),r=h.error?.bind(h),o=h.complete?.bind(h)}this.__isAsync&&(r=N5(r),i&&(i=N5(i)),o&&(o=N5(o)));const d=super.subscribe({next:i,error:r,complete:o});return e instanceof Ce&&e.add(d),d}};function $9(){return this._results[Symbol.iterator]()}class wp{static#e=Symbol.iterator;get changes(){return this._changes??=new aa}constructor(e=!1){this._emitDistinctChangesOnly=e,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;const a=wp.prototype;a[Symbol.iterator]||(a[Symbol.iterator]=$9)}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,a){return this._results.reduce(e,a)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,a){this.dirty=!1;const u=gu(e);(this._changesDetected=!function $3(t,e,a){if(t.length!==e.length)return!1;for(let u=0;udA}),dA="ng",kf=new V(""),Ll=new V("",{providedIn:"platform",factory:()=>"unknown"}),xf=(new V(""),new V(""),new V("",{providedIn:"root",factory:()=>os().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null})),Df={breakpoints:[16,32,48,64,96,128,256,384,640,750,828,1080,1200,1920,2048,3840],placeholderResolution:30,disableImageSizeWarning:!1,disableImageLazyLoadWarning:!1},cA=new V("",{providedIn:"root",factory:()=>Df});function hA(){const t=new t1;return"browser"===U(Ll)&&(t.store=function u1(t,e){const a=t.getElementById(e+"-state");if(a?.textContent)try{return JSON.parse(a.textContent)}catch(u){console.warn("Exception while restoring TransferState for app "+e,u)}return{}}(os(),U(zm))),t}class t1{constructor(){this.store={},this.onSerializeCallbacks={}}static#e=this.\u0275prov=he({token:t1,providedIn:"root",factory:hA});get(e,a){return void 0!==this.store[e]?this.store[e]:a}set(e,a){this.store[e]=a}remove(e){delete this.store[e]}hasKey(e){return this.store.hasOwnProperty(e)}get isEmpty(){return 0===Object.keys(this.store).length}onSerialize(e,a){this.onSerializeCallbacks[e]=a}toJson(){for(const e in this.onSerializeCallbacks)if(this.onSerializeCallbacks.hasOwnProperty(e))try{this.store[e]=this.onSerializeCallbacks[e]()}catch(a){console.warn("Exception in onSerialize callback: ",a)}return JSON.stringify(this.store).replace(/null;function ss(t,e,a=!1){return ff(t,e,a)}var Tl;!function(t){t.Hydrated="hydrated",t.Skipped="skipped",t.Mismatched="mismatched"}(Tl||(Tl={}));new V("");const Sf=new V("",{providedIn:"root",factory:()=>false});new V(""),new V("");let Om,Vp;function Y5(){if(void 0===Om&&(Om=null,Ja.trustedTypes))try{Om=Ja.trustedTypes.createPolicy("angular",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return Om}function n1(t){return Y5()?.createHTML(t)||t}function X5(){if(void 0===Vp&&(Vp=null,Ja.trustedTypes))try{Vp=Ja.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return Vp}function jp(t){return X5()?.createHTML(t)||t}function eb(t){return X5()?.createScript(t)||t}function Op(t){return X5()?.createScriptURL(t)||t}class r1{constructor(e){this.changingThisBreaksApplicationSecurity=e}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${xi})`}}class ab extends r1{getTypeName(){return"HTML"}}class fA extends r1{getTypeName(){return"Style"}}class CA extends r1{getTypeName(){return"Script"}}class yA extends r1{getTypeName(){return"URL"}}class _A extends r1{getTypeName(){return"ResourceURL"}}function sr(t){return t instanceof r1?t.changingThisBreaksApplicationSecurity:t}function Nl(t,e){const a=function zf(t){return t instanceof r1&&t.getTypeName()||null}(t);if(null!=a&&a!==e){if("ResourceURL"===a&&"URL"===e)return!0;throw new Error(`Required a safe ${e}, got a ${a} (see ${xi})`)}return a===e}function Id(t){const e=new Mf(t);return function Gp(){try{return!!(new window.DOMParser).parseFromString(n1(""),"text/html")}catch{return!1}}()?new Km(e):e}class Km{constructor(e){this.inertDocumentHelper=e}getInertBodyElement(e){e=""+e;try{const a=(new window.DOMParser).parseFromString(n1(e),"text/html").body;return null===a?this.inertDocumentHelper.getInertBodyElement(e):(a.removeChild(a.firstChild),a)}catch{return null}}}class Mf{constructor(e){this.defaultDoc=e,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(e){const a=this.inertDocument.createElement("template");return a.innerHTML=n1(e),a}}const Do=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function p0(t){return(t=String(t)).match(Do)?t:"unsafe:"+t}function Hi(t){const e={};for(const a of t.split(","))e[a]=!0;return e}function s1(...t){const e={};for(const a of t)for(const u in a)a.hasOwnProperty(u)&&(e[u]=!0);return e}const Ze=Hi("area,br,col,hr,img,wbr"),wA=Hi("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Wm=Hi("rp,rt"),Lf=s1(Wm,wA),Kp=s1(wA,Hi("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),BA=s1(Wm,Hi("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),tb=s1(Ze,Kp,BA,Lf),ub=Hi("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),SA=Hi("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),zA=Hi("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext"),Tf=s1(ub,SA,zA),MA=Hi("script,style,template");class LA{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(e){let a=e.firstChild,u=!0,i=[];for(;a;)if(a.nodeType===Node.ELEMENT_NODE?u=this.startElement(a):a.nodeType===Node.TEXT_NODE?this.chars(a.nodeValue):this.sanitizedSomething=!0,u&&a.firstChild)i.push(a),a=Wp(a);else for(;a;){a.nodeType===Node.ELEMENT_NODE&&this.endElement(a);let r=TA(a);if(r){a=r;break}a=i.pop()}return this.buf.join("")}startElement(e){const a=Nf(e).toLowerCase();if(!tb.hasOwnProperty(a))return this.sanitizedSomething=!0,!MA.hasOwnProperty(a);this.buf.push("<"),this.buf.push(a);const u=e.attributes;for(let i=0;i"),!0}endElement(e){const a=Nf(e).toLowerCase();tb.hasOwnProperty(a)&&!Ze.hasOwnProperty(a)&&(this.buf.push(""))}chars(e){this.buf.push(ib(e))}}function TA(t){const e=t.nextSibling;if(e&&t!==e.previousSibling)throw _a(e);return e}function Wp(t){const e=t.firstChild;if(e&&function Pf(t,e){return(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}(t,e))throw _a(e);return e}function Nf(t){const e=t.nodeName;return"string"==typeof e?e:"FORM"}function _a(t){return new Error(`Failed to sanitize html because the element is clobbered: ${t.outerHTML}`)}const If=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,d1=/([^\#-~ |!])/g;function ib(t){return t.replace(/&/g,"&").replace(If,function(e){return"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";"}).replace(d1,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(//g,">")}let Um;function Rf(t,e){let a=null;try{Um=Um||Id(t);let u=e?String(e):"";a=Um.getInertBodyElement(u);let i=5,r=u;do{if(0===i)throw new Error("Failed to sanitize html because the input is unstable");i--,u=r,r=a.innerHTML,a=Um.getInertBodyElement(u)}while(u!==r);return n1((new LA).sanitizeChildren(nb(a)||a))}finally{if(a){const u=nb(a)||a;for(;u.firstChild;)u.removeChild(u.firstChild)}}}function nb(t){return"content"in t&&function Hf(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}var jr;function Vf(t){const e=Jm();return e?e.sanitize(jr.URL,t)||"":Nl(t,"URL")?sr(t):p0(ma(t))}function jf(t){const e=Jm();if(e)return Op(e.sanitize(jr.RESOURCE_URL,t)||"");if(Nl(t,"ResourceURL"))return Op(sr(t));throw new J(904,!1)}function rb(t,e,a){return function Up(t,e){return"src"===e&&("embed"===t||"frame"===t||"iframe"===t||"media"===t||"script"===t)||"href"===e&&("base"===t||"link"===t)?jf:Vf}(e,a)(t)}function Jm(){const t=Y();return t&&t[_l].sanitizer}!function(t){t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL"}(jr||(jr={}));const HA=/^>|^->||--!>|)/g,Gf="\u200b$1\u200b";function Kf(t){return t.replace(HA,e=>e.replace(Zm,Gf))}function c1(t){$e("Must never be called in production mode");const a=t[iu][Rt];return a&&a.constructor?za(a.constructor):null}function Rd(t){$e("Must never be called in production mode");const a=c1(t)?.type?.name;return a?` (used in the '${a}' component template)`:""}function cb(t){return t.ownerDocument.body}function Or(t){return t instanceof Function?t():t}function Gr(t){return"browser"===(t??U(Ut)).get(Ll)}var g0;let hb;function mb(t,e){return hb(t,e)}function m1(t,e,a,u,i){if(null!=u){let r,o=!1;Dn(u)?r=u:yi(u)&&(o=!0,u=u[It]);const d=xt(u);0===t&&null!==a?null==i?t6(e,a,d):Hd(e,a,d,i||null,!0):1===t&&null!==a?Hd(e,a,d,i||null,!0):2===t?Kr(e,d,o):3===t&&e.destroyNode(d),null!=r&&function XA(t,e,a,u,i){const r=a[Eo],o=xt(a);r!==o&&m1(e,t,u,r,i);for(let d=nu;d0&&(t[a-1][Nr]=u[Nr]);const r=xl(t,nu+e);!function UA(t,e){Qf(t,e),e[It]=null,e[Ni]=null}(u[pe],u);const o=r[po];null!==o&&o.detachView(r[pe]),u[vu]=null,u[Nr]=null,u[We]&=-129}return u}function aE(t,e){if(!(256&e[We])){const a=e[na];a.destroyNode&&iE(t,e,a,3,null,null),function Xf(t){let e=t[Oc];if(!e)return Eb(t[pe],t);for(;e;){let a=null;if(yi(e))a=e[Oc];else{const u=e[nu];u&&(a=u)}if(!a){for(;e&&!e[Nr]&&e!==t;)yi(e)&&Eb(e[pe],e),e=e[vu];null===e&&(e=t),yi(e)&&Eb(e[pe],e),a=e&&e[Nr]}e=a}}(e)}}function Eb(t,e){if(256&e[We])return;const a=me(null);try{e[We]&=-129,e[We]|=256,e[o0]&&Fr(e[o0]),function $A(t,e){let a;if(null!=t&&null!=(a=t.destroyHooks))for(let u=0;u=0?u[o]():u[-o].unsubscribe(),r+=2}else{const o=u[a[r+1]];a[r].call(o)}null!==u&&(e[Zu]=null);const i=e[yu];if(null!==i){e[yu]=null;for(let r=0;r-1){const{encapsulation:r}=t.data[u.directiveStart+i];if(r===Tt.None||r===Tt.Emulated)return null}return fn(u,a)}}function Hd(t,e,a,u,i){t.insertBefore(e,a,u,i)}function t6(t,e,a){t.appendChild(e,a)}function vb(t,e,a,u,i){null!==u?Hd(t,e,a,u,i):t6(t,e,a)}function ds(t,e){return t.parentNode(e)}function u6(t,e,a){return i6(t,e,a)}function bb(t,e,a){return 40&t.type?fn(t,a):null}!function(t){t[t.Important=1]="Important",t[t.DashCase=2]="DashCase"}(g0||(g0={}));let tE,i6=bb;function n6(t,e){i6=t,tE=e}function uE(t,e,a,u){const i=gb(t,u,e),r=e[na],d=u6(u.parent||e[Ni],u,e);if(null!=i)if(Array.isArray(a))for(let h=0;hje&&s6(t,e,je,!1),_i(o?2:0,i),a(u,i)}finally{ts(r),_i(o?3:1,i)}}function Cb(t,e,a){if(Uc(e)){const u=me(null);try{const i=e.directiveStart,r=e.directiveEnd;for(let o=i;onull;function E6(t,e,a,u,i){for(let r in e){if(!e.hasOwnProperty(r))continue;const o=e[r];if(void 0===o)continue;u??={};let d,h=tt.None;Array.isArray(o)?(d=o[0],h=o[1]):d=o;let m=r;if(null!==i){if(!i.hasOwnProperty(r))continue;m=i[r]}0===t?g6(u,a,m,d,h):g6(u,a,m,d)}return u}function g6(t,e,a,u,i){let r;t.hasOwnProperty(a)?(r=t[a]).push(e,u):r=t[a]=[e,u],void 0!==i&&r.push(i)}function dr(t,e,a,u,i,r,o,d){const h=fn(e,a);let E,m=e.inputs;!d&&null!=m&&(E=m[u])?(dE(t,a,E,u,i),Oo(e)&&function sw(t,e){const a=Cn(e,t);16&a[We]||(a[We]|=64)}(a,e.index)):3&e.type?(u=function v6(t){return"class"===t?"className":"for"===t?"htmlFor":"formaction"===t?"formAction":"innerHtml"===t?"innerHTML":"readonly"===t?"readOnly":"tabindex"===t?"tabIndex":t}(u),i=null!=o?o(i,e.value||"",u):i,r.setProperty(h,u,i)):e.type}function Ab(t,e,a,u){if(ND()){const i=null===u?null:{"":-1},r=function Ew(t,e){const a=t.directiveRegistry;let u=null,i=null;if(a)for(let r=0;r0;){const a=t[--e];if("number"==typeof a&&a<0)return a}return 0})(o)!=d&&o.push(d),o.push(a,u,r)}}(t,e,u,Vd(t,a,i.hostVars,ra),i)}function Il(t,e,a,u,i,r){const o=fn(t,e);Bb(e[na],o,r,t.value,a,u,i)}function Bb(t,e,a,u,i,r,o){if(null==r)t.removeAttribute(e,i,a);else{const d=null==o?ma(r):o(r,u||"",i);t.setAttribute(e,i,d,a)}}function Dw(t,e,a,u,i,r){const o=r[e];if(null!==o)for(let d=0;d0&&(a[i-1][Nr]=e),u{mp(t.lView)},consumerOnSignalRead(){this.lView[o0]=this}},ww=100;function cE(t,e=!0,a=0){const u=t[_l],i=u.rendererFactory;i.begin?.();try{!function Bw(t,e){const a=_5();try{bm(!0),S6(t,e);let u=0;for(;Ir(t);){if(u===ww)throw new J(103,!1);u++,S6(t,1)}}finally{bm(a)}}(t,a)}catch(o){throw e&&sE(t,o),o}finally{i.end?.(),u.inlineEffectRunner?.flush()}}function Sw(t,e,a,u){const i=e[We];if(!(256&~i))return;e[_l].inlineEffectRunner?.flush(),B5(e);let d=null,h=null;(function zw(t){return 2!==t.type})(t)&&(h=b1(e),d=mu(h));try{X0(e),VD(t.bindingStartIndex),null!==a&&h6(t,e,a,2,u);const m=!(3&~i);if(m){const k=t.preOrderCheckHooks;null!==k&&kp(e,k,null)}else{const k=t.preOrderHooks;null!==k&&xp(e,k,0,null),B(e,0)}if(function k1(t){for(let e=Nd(t);null!==e;e=df(e)){if(!(e[We]&Wc.HasTransplantedViews))continue;const a=e[Y0];for(let u=0;u-1&&($m(e,u),xl(a,u))}this._attachedToViewContainer=!1}aE(this._lView[pe],this._lView)}onDestroy(e){pp(this._lView,e)}markForCheck(){x1(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[We]&=-129}reattach(){pa(this._lView),this._lView[We]|=128}detectChanges(){this._lView[We]|=1024,cE(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new J(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;const e=sm(this._lView),a=this._lView[vd];null!==a&&!e&&eE(a,this._lView),Qf(this._lView[pe],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new J(902,!1);this._appRef=e;const a=sm(this._lView),u=this._lView[vd];null!==u&&!a&&e6(u,this._lView),pa(this._lView)}}class gt{static#e=this.__NG_ELEMENT_ID__=Pw}const Lw=gt,Tw=class extends Lw{constructor(e,a,u){super(),this._declarationLView=e,this._declarationTContainer=a,this.elementRef=u}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,a){return this.createEmbeddedViewImpl(e,a)}createEmbeddedViewImpl(e,a,u){const i=g1(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:a,dehydratedView:u});return new D1(i)}};function Pw(){return hE(Pt(),Y())}function hE(t,e){return 4&t.type?new Tw(e,t,Vr(t,e)):null}function R6(t,e,a){const u=e.insertBeforeIndex,i=Array.isArray(u)?u[0]:u;return null===i?bb(t,0,a):xt(a[i])}function H6(t,e,a,u,i){const r=e.insertBeforeIndex;if(Array.isArray(r)){let o=u,d=null;if(3&e.type||(d=o,o=i),null!==o&&-1===e.componentOffset)for(let h=1;h1)for(let a=t.length-2;a>=0;a--){const u=t[a];j6(u)||Vw(u,e)&&null===Nb(u)&&O6(u,e.index)}}function j6(t){return!(64&t.type)}function Vw(t,e){return j6(e)||t.index>e.index}function Nb(t){const e=t.insertBeforeIndex;return Array.isArray(e)?e[0]:e}function O6(t,e){const a=t.insertBeforeIndex;Array.isArray(a)?a[0]=e:(n6(R6,H6),t.insertBeforeIndex=e)}function u4(t,e){const a=t.data[e];return null===a||"string"==typeof a?null:a.hasOwnProperty("currentCaseLViewIndex")?a:a.value}function Gw(t,e,a){const u=rE(t,a,64,null,null);return V6(e,u),u}function pE(t,e){const a=e[t.currentCaseLViewIndex];return null===a?a:a<0?~a:a}function G6(t){return t>>>17}function Ib(t){return(131070&t)>>>1}function mi(t){return-1===t}new RegExp(`^(\\d+)*(${W5}|${K5})*(.*)`);let hs=()=>{};let $6=()=>{};let q6=()=>null;function ps(t,e){return q6(t,e)}class k0{}const y1=new V("",{providedIn:"root",factory:()=>!1}),Vi=(new V("",{providedIn:"root",factory:()=>!1}),new V(""));class DE{}class s4{}const Y6="ngComponent";class Zb{resolveComponentFactory(e){throw function n8(t){const e=Error(`No component factory found for ${le(t)}.`);return e[Y6]=t,e}(e)}}class d4{static#e=this.NULL=new Zb}class $b{}class jn{constructor(){this.destroyNode=null}static#e=this.__NG_ELEMENT_ID__=()=>function Q6(){const t=Y(),a=Cn(Pt().index,t);return(yi(a)?a:t)[na]}()}class fE{static#e=this.\u0275prov=he({token:fE,providedIn:"root",factory:()=>null})}const qb={};const X6=new Set;function cr(t){X6.has(t)||(X6.add(t),performance?.mark?.("mark_feature_usage",{detail:{feature:t}}))}function eC(t){let e=!0;return setTimeout(()=>{e&&(e=!1,t())}),"function"==typeof Ja.requestAnimationFrame&&Ja.requestAnimationFrame(()=>{e&&(e=!1,t())}),()=>{e=!1}}function Yb(t){let e=!0;return queueMicrotask(()=>{e&&t()}),()=>{e=!1}}function Qb(...t){}class ut{constructor({enableLongStackTrace:e=!1,shouldCoalesceEventChangeDetection:a=!1,shouldCoalesceRunChangeDetection:u=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new aa(!1),this.onMicrotaskEmpty=new aa(!1),this.onStable=new aa(!1),this.onError=new aa(!1),typeof Zone>"u")throw new J(908,!1);Zone.assertZonePatched();const i=this;i._nesting=0,i._outer=i._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(i._inner=i._inner.fork(new Zone.TaskTrackingZoneSpec)),e&&Zone.longStackTraceZoneSpec&&(i._inner=i._inner.fork(Zone.longStackTraceZoneSpec)),i.shouldCoalesceEventChangeDetection=!u&&a,i.shouldCoalesceRunChangeDetection=u,i.callbackScheduled=!1,function l8(t){const e=()=>{!function aC(t){t.isCheckStableRunning||t.callbackScheduled||(t.callbackScheduled=!0,Zone.root.run(()=>{eC(()=>{t.callbackScheduled=!1,Xb(t),t.isCheckStableRunning=!0,CE(t),t.isCheckStableRunning=!1})}),Xb(t))}(t)};t._inner=t._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(a,u,i,r,o,d)=>{if(function s8(t){return yE(t,"__ignore_ng_zone__")}(d))return a.invokeTask(i,r,o,d);try{return tC(t),a.invokeTask(i,r,o,d)}finally{(t.shouldCoalesceEventChangeDetection&&"eventTask"===r.type||t.shouldCoalesceRunChangeDetection)&&e(),uC(t)}},onInvoke:(a,u,i,r,o,d,h)=>{try{return tC(t),a.invoke(i,r,o,d,h)}finally{t.shouldCoalesceRunChangeDetection&&!t.callbackScheduled&&!function wT(t){return yE(t,"__scheduler_tick__")}(d)&&e(),uC(t)}},onHasTask:(a,u,i,r)=>{a.hasTask(i,r),u===i&&("microTask"==r.change?(t._hasPendingMicrotasks=r.microTask,Xb(t),CE(t)):"macroTask"==r.change&&(t.hasPendingMacrotasks=r.macroTask))},onHandleError:(a,u,i,r)=>(a.handleError(i,r),t.runOutsideAngular(()=>t.onError.emit(r)),!1)})}(i)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!ut.isInAngularZone())throw new J(909,!1)}static assertNotInAngularZone(){if(ut.isInAngularZone())throw new J(909,!1)}run(e,a,u){return this._inner.run(e,a,u)}runTask(e,a,u,i){const r=this._inner,o=r.scheduleEventTask("NgZoneEvent: "+i,e,AT,Qb,Qb);try{return r.runTask(o,a,u)}finally{r.cancelTask(o)}}runGuarded(e,a,u){return this._inner.runGuarded(e,a,u)}runOutsideAngular(e){return this._outer.run(e)}}const AT={};function CE(t){if(0==t._nesting&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function Xb(t){t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&!0===t.callbackScheduled?t.hasPendingMicrotasks=!0:t.hasPendingMicrotasks=!1}function tC(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function uC(t){t._nesting--,CE(t)}class c4{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new aa,this.onMicrotaskEmpty=new aa,this.onStable=new aa,this.onError=new aa}run(e,a,u){return e.apply(a,u)}runGuarded(e,a,u){return e.apply(a,u)}runOutsideAngular(e){return e()}runTask(e,a,u,i){return e.apply(a,u)}}function yE(t,e){return!(!Array.isArray(t)||1!==t.length)&&!0===t[0]?.data?.[e]}var On;!function(t){t[t.EarlyRead=0]="EarlyRead",t[t.Write=1]="Write",t[t.MixedReadWrite=2]="MixedReadWrite",t[t.Read=3]="Read"}(On||(On={}));const iC={destroy(){}};function ak(t,e){const a=e?.injector??U(Ut);(e?.runOnServer||Gr(a))&&a.get(Es).internalCallbacks.push(t)}function tk(t,e){!e&&yl();const a=e?.injector??U(Ut);if(!Gr(a))return iC;cr("NgAfterNextRender");const u=a.get(Es),i=u.handler??=new rC,r=e?.phase??On.MixedReadWrite,o=()=>{i.unregister(h),d()},d=a.get(hi).onDestroy(o),h=ir(a,()=>new nC(r,()=>{o(),t()}));return i.register(h),{destroy:o}}class nC{constructor(e,a){this.phase=e,this.callbackFn=a,this.zone=U(ut),this.errorHandler=U(_n,{optional:!0}),U(k0,{optional:!0})?.notify(6)}invoke(){try{this.zone.runOutsideAngular(this.callbackFn)}catch(e){this.errorHandler?.handleError(e)}}}class rC{constructor(){this.executingCallbacks=!1,this.buckets={[On.EarlyRead]:new Set,[On.Write]:new Set,[On.MixedReadWrite]:new Set,[On.Read]:new Set},this.deferredCallbacks=new Set}register(e){(this.executingCallbacks?this.deferredCallbacks:this.buckets[e.phase]).add(e)}unregister(e){this.buckets[e.phase].delete(e),this.deferredCallbacks.delete(e)}execute(){this.executingCallbacks=!0;for(const e of Object.values(this.buckets))for(const a of e)a.invoke();this.executingCallbacks=!1;for(const e of this.deferredCallbacks)this.buckets[e.phase].add(e);this.deferredCallbacks.clear()}destroy(){for(const e of Object.values(this.buckets))e.clear();this.deferredCallbacks.clear()}}class Es{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){const e=[...this.internalCallbacks];this.internalCallbacks.length=0;for(const a of e)a()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}static#e=this.\u0275prov=he({token:Es,providedIn:"root",factory:()=>new Es})}function uk(t){return void 0!==t.ngModule}function gs(t){return!!si(t)}function _E(t){return!!fi(t)}function oC(t){return!!Pu(t)}function _1(t){return!!za(t)}function c8(t,e){if(wt(t)&&!(t=se(t)))throw new Error(`Expected forwardRef function, imported from "${ot(e)}", to return a standalone entity or NgModule but got "${ot(t)||t}".`);if(null==si(t)){const a=za(t)||Pu(t)||fi(t);if(null==a)throw uk(t)?new Error(`A module with providers was imported from "${ot(e)}". Modules with providers are not supported in standalone components imports.`):new Error(`The "${ot(t)}" type, imported from "${ot(e)}", must be a standalone component / directive / pipe or an NgModule. Did you forget to add the required @Component / @Directive / @Pipe or @NgModule annotation?`);if(!a.standalone)throw new Error(`The "${ot(t)}" ${function hr(t){return za(t)?"component":Pu(t)?"directive":fi(t)?"pipe":"type"}(t)}, imported from "${ot(e)}", is not standalone. Did you forget to add the standalone: true flag?`)}}const ik=!0;class lC{constructor(){this.ownerNgModule=new Map,this.ngModulesWithSomeUnresolvedDecls=new Set,this.ngModulesScopeCache=new Map,this.standaloneComponentsScopeCache=new Map}resolveNgModulesDecls(){if(0!==this.ngModulesWithSomeUnresolvedDecls.size){for(const e of this.ngModulesWithSomeUnresolvedDecls){const a=si(e);if(a?.declarations)for(const u of Or(a.declarations))_1(u)&&this.ownerNgModule.set(u,e)}this.ngModulesWithSomeUnresolvedDecls.clear()}}getComponentDependencies(e,a){this.resolveNgModulesDecls();const u=za(e);if(null===u)throw new Error(`Attempting to get component dependencies for a type that is not a component: ${e}`);if(u.standalone){const i=this.getStandaloneComponentScope(e,a);return i.compilation.isPoisoned?{dependencies:[]}:{dependencies:[...i.compilation.directives,...i.compilation.pipes,...i.compilation.ngModules]}}{if(!this.ownerNgModule.has(e))return{dependencies:[]};const i=this.getNgModuleScope(this.ownerNgModule.get(e));return i.compilation.isPoisoned?{dependencies:[]}:{dependencies:[...i.compilation.directives,...i.compilation.pipes]}}}registerNgModule(e,a){if(!gs(e))throw new Error(`Attempting to register a Type which is not NgModule as NgModule: ${e}`);this.ngModulesWithSomeUnresolvedDecls.add(e)}clearScopeCacheFor(e){this.ngModulesScopeCache.delete(e),this.standaloneComponentsScopeCache.delete(e)}getNgModuleScope(e){if(this.ngModulesScopeCache.has(e))return this.ngModulesScopeCache.get(e);const a=this.computeNgModuleScope(e);return this.ngModulesScopeCache.set(e,a),a}computeNgModuleScope(e){const a=si(e,!0),u={exported:{directives:new Set,pipes:new Set},compilation:{directives:new Set,pipes:new Set}};for(const i of Or(a.imports))if(gs(i)){const r=this.getNgModuleScope(i);vs(r.exported.directives,u.compilation.directives),vs(r.exported.pipes,u.compilation.pipes)}else{if(!n0(i)){u.compilation.isPoisoned=!0;break}if(oC(i)||_1(i))u.compilation.directives.add(i);else{if(!_E(i))throw new J(1e3,"The standalone imported type is neither a component nor a directive nor a pipe");u.compilation.pipes.add(i)}}if(!u.compilation.isPoisoned)for(const i of Or(a.declarations)){if(gs(i)||n0(i)){u.compilation.isPoisoned=!0;break}_E(i)?u.compilation.pipes.add(i):u.compilation.directives.add(i)}for(const i of Or(a.exports))if(gs(i)){const r=this.getNgModuleScope(i);vs(r.exported.directives,u.exported.directives),vs(r.exported.pipes,u.exported.pipes),vs(r.exported.directives,u.compilation.directives),vs(r.exported.pipes,u.compilation.pipes)}else _E(i)?u.exported.pipes.add(i):u.exported.directives.add(i);return u}getStandaloneComponentScope(e,a){if(this.standaloneComponentsScopeCache.has(e))return this.standaloneComponentsScopeCache.get(e);const u=this.computeStandaloneComponentScope(e,a);return this.standaloneComponentsScopeCache.set(e,u),u}computeStandaloneComponentScope(e,a){const u={compilation:{directives:new Set([e]),pipes:new Set,ngModules:new Set}};for(const i of gu(a??[])){const r=se(i);try{c8(r,e)}catch{return u.compilation.isPoisoned=!0,u}if(gs(r)){u.compilation.ngModules.add(r);const o=this.getNgModuleScope(r);if(o.exported.isPoisoned)return u.compilation.isPoisoned=!0,u;vs(o.exported.directives,u.compilation.directives),vs(o.exported.pipes,u.compilation.pipes)}else if(_E(r))u.compilation.pipes.add(r);else{if(!oC(r)&&!_1(r))return u.compilation.isPoisoned=!0,u;u.compilation.directives.add(r)}}return u}isOrphanComponent(e){const a=za(e);return!(!a||a.standalone)&&(this.resolveNgModulesDecls(),!this.ownerNgModule.has(e))}}function vs(t,e){for(const a of t)e.add(a)}const h4=new lC;function FE(t,e,a){let u=a?t.styles:null,i=a?t.classes:null,r=0;if(null!==e)for(let o=0;o0&&Db(t,a,r.join(" "))}}(x,$,C,u),void 0!==a&&function E4(t,e,a){const u=t.projection=[];for(let i=0;i0;)this.remove(this.length-1)}get(e){const a=An(this._lContainer);return null!==a&&a[e]||null}get length(){return this._lContainer.length-nu}createEmbeddedView(e,a,u){let i,r;"number"==typeof u?i=u:null!=u&&(i=u.index,r=u.injector);const o=ps(this._lContainer,e.ssrId),d=e.createEmbeddedViewImpl(a||{},r,o);return this.insertImpl(d,i,jd(this._hostTNode,o)),d}createComponent(e,a,u,i,r){const o=e&&!Ed(e);let d;if(o)d=a;else{const f=a||{};d=f.index,u=f.injector,i=f.projectableNodes,r=f.environmentInjector||f.ngModuleRef}const h=o?e:new p4(za(e)),m=u||this.parentInjector;if(!r&&null==h.ngModule){const C=(o?m:this.parentInjector).get(Pi,null);C&&(r=C)}const E=za(h.componentType??{}),v=ps(this._lContainer,E?.id??null),k=v?.firstChild??null,x=h.create(m,i,k,r);return this.insertImpl(x.hostView,d,jd(this._hostTNode,v)),x}insert(e,a){return this.insertImpl(e,a,!0)}insertImpl(e,a,u){const i=e._lView;if(function LD(t){return Dn(t[vu])}(i)){const d=this.indexOf(e);if(-1!==d)this.detach(d);else{const h=i[vu],m=new rk(h,h[Ni],h[vu]);m.detach(m.indexOf(e))}}const r=this._adjustIndex(a),o=this._lContainer;return v1(o,i,r,u),e.attachToViewContainerRef(),rm(AE(o),r,e),e}move(e,a){return this.insert(e,a)}indexOf(e){const a=An(this._lContainer);return null!==a?a.indexOf(e):-1}remove(e){const a=this._adjustIndex(e,-1),u=$m(this._lContainer,a);u&&(xl(AE(this._lContainer),a),aE(u[pe],u))}detach(e){const a=this._adjustIndex(e,-1),u=$m(this._lContainer,a);return u&&null!=xl(AE(this._lContainer),a)?new D1(u):null}_adjustIndex(e,a=0){return e??this.length+a}};function An(t){return t[8]}function AE(t){return t[8]||(t[8]=[])}function ok(t,e){let a;const u=e[t.index];return Dn(u)?a=u:(a=x6(u,e,null,t),e[t.index]=a,lE(e,a)),mC(a,e,t,u),new rk(a,t,e)}let mC=EC,wE=()=>!1;function pC(t,e,a){return wE(t,e,a)}function EC(t,e,a,u){if(t[Eo])return;let i;i=8&a.type?xt(u):function hC(t,e){const a=t[na],u=a.createComment(""),i=fn(e,t);return Hd(a,ds(a,i),u,function YA(t,e){return t.nextSibling(e)}(a,i),!1),u}(e,a),t[Eo]=i}class lk{constructor(e){this.queryList=e,this.matches=null}clone(){return new lk(this.queryList)}setDirty(){this.queryList.setDirty()}}class g4{constructor(e=[]){this.queries=e}createEmbeddedView(e){const a=e.queries;if(null!==a){const u=null!==e.contentQueries?e.contentQueries[0]:a.length,i=[];for(let r=0;re.trim())}(e):e}}class w1{constructor(e=[]){this.queries=e}elementStart(e,a){for(let u=0;u0)u.push(o[d/2]);else{const m=r[d+1],E=e[-h];for(let v=nu;v(Bn(e),e.value);return a[ca]=e,a}(t),u=a[ca];return e?.equal&&(u.equal=e.equal),a.set=i=>io(u,i),a.update=i=>function Br(t,e){tu()||qi(),io(t,e(t.value))}(u,i),a.asReadonly=B1.bind(a),a}function B1(){const t=this[ca];if(void 0===t.readonlyFn){const e=()=>this();e[ca]=t,t.readonlyFn=e}return t.readonlyFn}function x0(t){return hk(t)&&"function"==typeof t.set}function SE(t,e){let a;const u=function Zh(t){const e=Object.create($l);e.computation=t;const a=()=>{if(Bt(e),Bn(e),e.value===wr)throw e.error;return e.value};return a[ca]=e,a}(()=>{a._dirtyCounter();const i=function FC(t,e){const a=t._lView,u=t._queryIndex;if(void 0===a||void 0===u||4&a[We])return e?void 0:kt;const i=dk(a,u),r=ck(a,u);return i.reset(r,Am),e?i.first:i._changesDetected||void 0===t._flatValue?t._flatValue=i.toArray():t._flatValue}(a,t);if(e&&void 0===i)throw new J(-951,!1);return i});return a=u[ca],a._dirtyCounter=S8(0),a._flatValue=void 0,u}function fC(){return SE(!0,!1)}function CC(){return SE(!0,!0)}function _C(t,e){const a=t[ca];a._lView=Y(),a._queryIndex=e,a._queryList=dk(a._lView,e),a._queryList.onDirty(()=>a._dirtyCounter.update(u=>u+1))}function zE(t,e){return fC()}zE.required=function z8(t,e){return CC()};function AC(t,e){return fC()}AC.required=function ME(t,e){return CC()};function mk(t){const e=Object.create(Uu),a=new Ri;function u(){return Bn(e),pk(e.value),e.value}return e.value=t,u[ca]=e,u.asReadonly=B1.bind(u),u.set=i=>{e.equal(e.value,i)||(io(e,i),a.emit(i))},u.update=i=>{pk(e.value),u.set(i(e.value))},u.subscribe=a.subscribe.bind(a),u.destroyRef=a.destroyRef,u}function pk(t){if(t===zr)throw new J(-952,!1)}function Ek(t){return mk(t)}Ek.required=function T8(){return mk(zr)};class LE{}Zt("ContentChildren",(t,e={})=>({selector:t,first:!1,isViewQuery:!1,descendants:!1,emitDistinctChangesOnly:true,...e}),LE);const TE=Zt("ContentChild",(t,e={})=>({selector:t,first:!0,isViewQuery:!1,descendants:!0,...e}),LE),PE=(Zt("ViewChildren",(t,e={})=>({selector:t,first:!1,isViewQuery:!0,descendants:!0,emitDistinctChangesOnly:true,...e}),LE),Zt("ViewChild",(t,e)=>({selector:t,first:!0,isViewQuery:!0,descendants:!0,...e}),LE));function P8(t){const e=[],a=new Map;function u(i){let r=a.get(i);if(!r){const o=t(i);a.set(i,r=o.then(R8))}return r}return Gd.forEach((i,r)=>{const o=[];i.templateUrl&&o.push(u(i.templateUrl).then(m=>{i.template=m}));const d="string"==typeof i.styles?[i.styles]:i.styles||[];if(i.styles=d,i.styleUrl&&i.styleUrls?.length)throw new Error("@Component cannot define both `styleUrl` and `styleUrls`. Use `styleUrl` if the component has one stylesheet, or `styleUrls` if it has multiple");if(i.styleUrls?.length){const m=i.styles.length,E=i.styleUrls;i.styleUrls.forEach((v,k)=>{d.push(""),o.push(u(v).then(x=>{d[m+k]=x,E.splice(E.indexOf(v),1),0==E.length&&(i.styleUrls=void 0)}))})}else i.styleUrl&&o.push(u(i.styleUrl).then(m=>{d.push(m),i.styleUrl=void 0}));const h=Promise.all(o).then(()=>function NE(t){b4.delete(t)}(r));e.push(h)}),function I8(){const t=Gd;return Gd=new Map,t}(),Promise.all(e).then(()=>{})}let Gd=new Map;const b4=new Set;function BC(t){return!!(t.templateUrl&&!t.hasOwnProperty("template")||t.styleUrls&&t.styleUrls.length||t.styleUrl)}function R8(t){return"string"==typeof t?t:t.text()}const vk=new Map;let zC=!0;function IE(t,e){(function k4(t,e,a){if(e&&e!==a&&zC)throw new Error(`Duplicate module registered for ${t} - ${le(e)} vs ${le(e.name)}`)})(e,vk.get(e)||null,t),vk.set(e,t)}function TC(t){return Object.getPrototypeOf(t.prototype).constructor}function zt(t){let e=TC(t.type),a=!0;const u=[t];for(;e;){let i;if($u(t))i=e.\u0275cmp||e.\u0275dir;else{if(e.\u0275cmp)throw new J(903,!1);i=e.\u0275dir}if(i){if(a){u.push(i);const o=t;o.inputs=x4(t.inputs),o.inputTransforms=x4(t.inputTransforms),o.declaredInputs=x4(t.declaredInputs),o.outputs=x4(t.outputs);const d=i.hostBindings;d&&RC(t,d);const h=i.viewQuery,m=i.contentQueries;if(h&&IC(t,h),m&&H8(t,m),PC(t,i),ea(t.outputs,i.outputs),$u(i)&&i.data.animation){const E=t.data;E.animation=(E.animation||[]).concat(i.data.animation)}}const r=i.features;if(r)for(let o=0;o=0;u--){const i=t[u];i.hostVars=e+=i.hostVars,i.hostAttrs=sd(i.hostAttrs,a=sd(a,i.hostAttrs))}}(u)}function PC(t,e){for(const a in e.inputs){if(!e.inputs.hasOwnProperty(a)||t.inputs.hasOwnProperty(a))continue;const u=e.inputs[a];if(void 0!==u&&(t.inputs[a]=u,t.declaredInputs[a]=e.declaredInputs[a],null!==e.inputTransforms)){const i=Array.isArray(u)?u[0]:u;if(!e.inputTransforms.hasOwnProperty(i))continue;t.inputTransforms??={},t.inputTransforms[i]=e.inputTransforms[i]}}}function x4(t){return t===so?{}:t===kt?[]:t}function IC(t,e){const a=t.viewQuery;t.viewQuery=a?(u,i)=>{e(u,i),a(u,i)}:e}function H8(t,e){const a=t.contentQueries;t.contentQueries=a?(u,i,r)=>{e(u,i,r),a(u,i,r)}:e}function RC(t,e){const a=t.hostBindings;t.hostBindings=a?(u,i)=>{e(u,i),a(u,i)}:e}const V8=["providersResolver"],j8=["template","decls","consts","vars","onPush","ngContentSelectors","styles","encapsulation","schemas"];function HC(t,e,a){if(null!==t.hostDirectives)for(const u of t.hostDirectives){const i=Pu(u.directive);jC(i.declaredInputs,u.inputs),HC(i,e,a),a.set(i,u),e.push(i)}}function VC(t){if(void 0===t||0===t.length)return so;const e={};for(let a=0;aa()),this.destroyCbs=null}onDestroy(e){this.destroyCbs.push(e)}}class Ck extends Dk{constructor(e){super(),this.moduleType=e}create(e){return new fk(this.moduleType,e,[])}}class GC extends Kd{constructor(e){super(),this.componentFactoryResolver=new nk(this),this.instance=null;const a=new $0([...e.providers,{provide:Kd,useValue:this},{provide:d4,useValue:this.componentFactoryResolver}],e.parent||ip(),e.debugName,new Set(["environment"]));this.injector=a,e.runEnvironmentInitializers&&a.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}}function HE(t,e,a=null){return new GC({providers:t,parent:e,debugName:a,runEnvironmentInitializers:!0}).injector}class VE{constructor(){this.cachedInjectors=new Map}getOrCreateInjector(e,a,u,i){if(!this.cachedInjectors.has(e)){const r=u.length>0?HE(u,a,i):null;this.cachedInjectors.set(e,r)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}static#e=this.\u0275prov=he({token:VE,providedIn:"environment",factory:()=>new VE})}class Wr{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new Ua(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);const e=this.taskId++;return this.pendingTasks.add(e),e}remove(e){this.pendingTasks.delete(e),0===this.pendingTasks.size&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static#e=this.\u0275fac=function(a){return new(a||Wr)};static#a=this.\u0275prov=he({token:Wr,factory:Wr.\u0275fac,providedIn:"root"})}class GE{constructor(){this.internalPendingTasks=U(Wr)}add(){const e=this.internalPendingTasks.add();return()=>this.internalPendingTasks.remove(e)}static#e=this.\u0275fac=function(a){return new(a||GE)};static#a=this.\u0275prov=he({token:GE,factory:GE.\u0275fac,providedIn:"root"})}function yk(t){return!!KE(t)&&(Array.isArray(t)||!(t instanceof Map)&&Symbol.iterator in t)}function KE(t){return null!==t&&("function"==typeof t||"object"==typeof t)}function Rl(t,e,a){return t[e]=a}function C4(t,e){return t[e]}function qu(t,e,a){const u=t[e];return!Object.is(u,a)&&(t[e]=a,!0)}function bs(t,e,a,u){const i=qu(t,e,a);return qu(t,e+1,u)||i}function WE(t,e,a,u,i){const r=bs(t,e,a,u);return qu(t,e+2,i)||r}function fo(t,e,a,u,i,r){const o=bs(t,e,a,u);return bs(t,e+2,i,r)||o}function S1(t){return!(32&~t.flags)}function z1(t,e,a,u,i,r,o,d,h,m){const E=a+je,v=e.firstCreatePass?function qo(t,e,a,u,i,r,o,d,h){const m=e.consts,E=E1(e,t,4,o||null,d||null);Ab(e,a,E,Hn(m,h)),xm(e,E);const v=E.tView=Fb(2,E,u,i,r,e.directiveRegistry,e.pipeRegistry,null,e.schemas,m,null);return null!==e.queries&&(e.queries.template(e,E),v.queries=e.queries.embeddedTView(E)),E}(E,e,t,u,i,r,o,d,h):e.data[E];un(v,!1);const k=KC(e,t,v,a);km()&&uE(e,t,k,v),ge(k,t);const x=x6(k,t,k,v);return t[E]=x,lE(t,x),pC(x,v,t),go(v)&&yb(e,t,v),null!=h&&_b(t,v,m),v}function pi(t,e,a,u,i,r,o,d){const h=Y(),m=Ha();return z1(h,m,t,e,a,u,i,Hn(m.consts,r),o,d),pi}let KC=WC;function WC(t,e,a,u){return Bl(!0),e[na].createComment("")}var Ru;!function(t){t[t.NOT_STARTED=0]="NOT_STARTED",t[t.IN_PROGRESS=1]="IN_PROGRESS",t[t.COMPLETE=2]="COMPLETE",t[t.FAILED=3]="FAILED"}(Ru||(Ru={}));const JC=0,M1=1;var Hu,L1;!function(t){t[t.Placeholder=0]="Placeholder",t[t.Loading=1]="Loading",t[t.Complete=2]="Complete",t[t.Error=3]="Error"}(Hu||(Hu={})),function(t){t[t.Initial=-1]="Initial"}(L1||(L1={}));const T1=0,Co=1,y4=2,UE=3,_k=4,ZC=5;var Fk;function JE(t,e,a){const u=1===t?ZC:_k;null===e[u]&&(e[u]=[]),e[u].push(a)}function _4(t,e){const a=1===t?ZC:_k,u=e[a];if(null!==u){for(const i of u)i();e[a]=null}}function $C(t){_4(1,t),_4(0,t)}function F4(t){return t+1}function Wd(t,e){t[pe];return t[F4(e.index)]}function Ur(t,e){const a=F4(e.index);return t.data[a]}function Ak(t,e){return e===Hu.Placeholder?t.placeholderBlockConfig?.[JC]??null:e===Hu.Loading?t.loadingBlockConfig?.[JC]??null:null}function qC(t){return t.loadingBlockConfig?.[M1]??null}function YC(t,e){if(!t||0===t.length)return e;const a=new Set(t);for(const u of e)a.add(u);return t.length===a.size?t:Array.from(a)}!function(t){t[t.Manual=0]="Manual",t[t.Playthrough=1]="Playthrough"}(Fk||(Fk={}));const A4={passive:!0,capture:!0},ZE=new WeakMap,wk=new WeakMap,ks=new WeakMap,XC=["click","keydown"],ey=["mouseenter","focusin"];let P1=null,Bk=0;class Sk{constructor(){this.callbacks=new Set,this.listener=()=>{for(const e of this.callbacks)e()}}}function zk(t,e){let a=wk.get(t);if(!a){a=new Sk,wk.set(t,a);for(const u of XC)t.addEventListener(u,a.listener,A4)}return a.callbacks.add(e),()=>{const{callbacks:u,listener:i}=a;if(u.delete(e),0===u.size){wk.delete(t);for(const r of XC)t.removeEventListener(r,i,A4)}}}function Mk(t,e){let a=ZE.get(t);if(!a){a=new Sk,ZE.set(t,a);for(const u of ey)t.addEventListener(u,a.listener,A4)}return a.callbacks.add(e),()=>{const{callbacks:u,listener:i}=a;if(u.delete(e),0===u.size){for(const r of ey)t.removeEventListener(r,i,A4);ZE.delete(t)}}}function Lk(t,e,a){const u=a.get(ut);let i=ks.get(t);return P1=P1||u.runOutsideAngular(()=>new IntersectionObserver(r=>{for(const o of r)o.isIntersecting&&ks.has(o.target)&&u.run(ks.get(o.target).listener)})),i||(i=new Sk,u.runOutsideAngular(()=>P1.observe(t)),ks.set(t,i),Bk++),i.callbacks.add(e),()=>{ks.has(t)&&(i.callbacks.delete(e),0===i.callbacks.size&&(P1?.unobserve(t),ks.delete(t),Bk--),0===Bk&&(P1?.disconnect(),P1=null))}}function N1(t,e,a,u,i,r,o){const d=t[Na];ak(function h(){if(Jc(t))return;const m=Wd(t,e),E=m[Co];if(E!==L1.Initial&&E!==Hu.Placeholder)return;const v=function eB(t,e,a){return null==a?t:a>=0?La(a,t):t[e.index][nu]??null}(t,e,u);if(!v)return void ak(h,{injector:d});if(Jc(v))return;const k=function aB(t,e){return cp(je+e,t)}(v,a),x=i(k,()=>{t!==v&&D5(v,x),r()},d);t!==v&&pp(v,x),JE(o,m,x)},{injector:d})}function ay(t,e){const u=e[Na].get(Tk);return u.add(t),()=>u.remove(t)}class Tk{constructor(){this.executingCallbacks=!1,this.idleId=null,this.current=new Set,this.deferred=new Set,this.ngZone=U(ut),this.requestIdleCallbackFn=(typeof requestIdleCallback<"u"?requestIdleCallback:setTimeout).bind(globalThis),this.cancelIdleCallbackFn=(typeof requestIdleCallback<"u"?cancelIdleCallback:clearTimeout).bind(globalThis)}add(e){(this.executingCallbacks?this.deferred:this.current).add(e),null===this.idleId&&this.scheduleIdleCallback()}remove(e){const{current:a,deferred:u}=this;a.delete(e),u.delete(e),0===a.size&&0===u.size&&this.cancelIdleCallback()}scheduleIdleCallback(){const e=()=>{this.cancelIdleCallback(),this.executingCallbacks=!0;for(const a of this.current)a();if(this.current.clear(),this.executingCallbacks=!1,this.deferred.size>0){for(const a of this.deferred)this.current.add(a);this.deferred.clear(),this.scheduleIdleCallback()}};this.idleId=this.requestIdleCallbackFn(()=>this.ngZone.run(e))}cancelIdleCallback(){null!==this.idleId&&(this.cancelIdleCallbackFn(this.idleId),this.idleId=null)}ngOnDestroy(){this.cancelIdleCallback(),this.current.clear(),this.deferred.clear()}static#e=this.\u0275prov=he({token:Tk,providedIn:"root",factory:()=>new Tk})}function ty(t){return(e,a)=>uB(t,e,a)}function uB(t,e,a){const i=a[Na].get(qE);return i.add(t,e),()=>i.remove(e)}class qE{constructor(){this.executingCallbacks=!1,this.timeoutId=null,this.invokeTimerAt=null,this.current=[],this.deferred=[]}add(e,a){const u=this.executingCallbacks?this.deferred:this.current;this.addToQueue(u,Date.now()+e,a),this.scheduleTimer()}remove(e){const{current:a,deferred:u}=this;-1===this.removeFromQueue(a,e)&&this.removeFromQueue(u,e),0===a.length&&0===u.length&&this.clearTimeout()}addToQueue(e,a,u){let i=e.length;for(let r=0;ra){i=r;break}Pc(e,i,a,u)}removeFromQueue(e,a){let u=-1;for(let i=0;i-1&&lo(e,u,2),u}scheduleTimer(){const e=()=>{this.clearTimeout(),this.executingCallbacks=!0;const u=[...this.current],i=Date.now();for(let o=0;o=0&&lo(this.current,0,r+1),this.executingCallbacks=!1,this.deferred.length>0){for(let o=0;o0){const u=Date.now(),i=this.current[0];if(null===this.timeoutId||this.invokeTimerAt&&this.invokeTimerAt-i>16){this.clearTimeout();const r=Math.max(i-u,16);this.invokeTimerAt=i,this.timeoutId=setTimeout(e,r)}}}clearTimeout(){null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}ngOnDestroy(){this.clearTimeout(),this.current.length=0,this.deferred.length=0}static#e=this.\u0275prov=he({token:qE,providedIn:"root",factory:()=>new qE})}new V("DEFER_BLOCK_DEPENDENCY_INTERCEPTOR");const nB=new V("");function YE(t){return t.get(nB,null,{optional:!0})?.behavior!==Fk.Manual&&Gr(t)}let uy=null;function Nk(t){const e=Y(),a=Pt();if(I1(e,a),Gr(e[Na])){const u=t(()=>R1(e,a),e);JE(0,Wd(e,a),u)}}function sy(t){const e=Y();if(Gr(e[Na])){const a=Pt(),i=Ur(e[pe],a);if(i.loadingState===Ru.NOT_STARTED){JE(1,Wd(e,a),t(()=>B4(i,e,a),e))}}}function xs(t,e,a,u=!1){const i=a[vu],r=i[pe];if(Jc(i))return;const o=Wd(i,e);if(cy(o[Co],t)&&cy(o[T1]??-1,t)){const h=i[Na],m=Ur(r,e),v=u||!Gr(h)||null===qC(m)&&null===Ak(m,Hu.Loading)&&!Ak(m,Hu.Placeholder)?mB:uy;try{v(t,o,a,e,i)}catch(k){sE(i,k)}}}function mB(t,e,a,u,i){const r=function Q8(t,e,a){const i=Ur(e[pe],a);switch(t){case Hu.Complete:return i.primaryTmplIndex;case Hu.Loading:return i.loadingTmplIndex;case Hu.Error:return i.errorTmplIndex;case Hu.Placeholder:return i.placeholderTmplIndex;default:return null}}(t,i,u);if(null!==r){e[Co]=t;const o=i[pe],h=Q0(o,r+je),m=0;let E;if(Mb(a,m),t===Hu.Complete){const x=Ur(o,u),f=x.providers;if(f&&f.length>0){const C=i[Na],A=function cB(t){return t instanceof m4&&"function"==typeof t.injector.__ngOutletInjector}(C),w=A?C:C.get(Pi);E=w.get(VE).getOrCreateInjector(x,w,f,""),A&&(E=function hB(t,e){return t.injector.__ngOutletInjector(e)}(C,E))}}const v=ps(a,h.tView.ssrId),k=g1(i,h,null,{dehydratedView:v,injector:E});v1(a,k,m,jd(h,v)),x1(k,2)}}function pB(t,e,a,u,i){const r=Date.now(),d=Ur(i[pe],u);if(null===e[y4]||e[y4]<=r){e[y4]=null;const h=qC(d),m=null!==e[UE];if(t!==Hu.Loading||null===h||m){t>Hu.Loading&&m&&(e[UE](),e[UE]=null,e[T1]=null),mB(t,e,a,u,i);const E=Ak(d,t);null!==E&&(e[y4]=r+E,dy(E,e,u,a,i))}else{e[T1]=t;const E=dy(h,e,u,a,i);e[UE]=E}}else e[T1]=t}function dy(t,e,a,u,i){return uB(t,()=>{const o=e[T1];e[y4]=null,e[T1]=null,null!==o&&xs(o,a,u)},i)}function cy(t,e){return t{let v=!1;const k=[],x=[];for(const f of E){if("fulfilled"!==f.status){v=!0;break}{const C=f.value,A=za(C)||Pu(C);if(A)k.push(A);else{const w=fi(C);w&&x.push(w)}}}if(t.loadingPromise=null,h.remove(m),v){if(t.loadingState=Ru.FAILED,null===t.errorTmplIndex){Rd(e);const C=new J(750,!1);sE(e,C)}}else{t.loadingState=Ru.COMPLETE;const f=o.tView;if(k.length>0){f.directiveRegistry=YC(f.directiveRegistry,k);const A=Kt(!1,...k.map(w=>w.type));t.providers=A}x.length>0&&(f.pipeRegistry=YC(f.pipeRegistry,x))}}),t.loadingPromise):(t.loadingPromise=Promise.resolve().then(()=>{t.loadingPromise=null,t.loadingState=Ru.COMPLETE,h.remove(m)}),t.loadingPromise)}function I1(t,e){const a=t[e.index];xs(Hu.Placeholder,e,a)}function EB(t,e,a){t.loadingPromise.then(()=>{t.loadingState===Ru.COMPLETE?xs(Hu.Complete,e,a):t.loadingState===Ru.FAILED&&xs(Hu.Error,e,a)})}function R1(t,e){const a=t[pe],u=t[e.index];if(!YE(t[Na]))return;const r=Wd(t,e),o=Ur(a,e);switch($C(r),o.loadingState){case Ru.NOT_STARTED:xs(Hu.Loading,e,u),Ik(o,t,e),o.loadingState===Ru.IN_PROGRESS&&EB(o,e,u);break;case Ru.IN_PROGRESS:xs(Hu.Loading,e,u),EB(o,e,u);break;case Ru.COMPLETE:xs(Hu.Complete,e,u);break;case Ru.FAILED:xs(Hu.Error,e,u)}}function Gn(t,e,a,u){const i=Y();if(qu(i,Wo(),e)){Ha();Il(qt(),i,t,e,a,u)}return Gn}function H1(t,e){let a=!1,u=Ko();for(let r=1;r>17&32767}function O(t){return 2|t}function Q(t){return(131068&t)>>2}function de(t,e){return-131069&t|e<<2}function Be(t){return 1|t}function ji(t,e,a,u,i,r){let o=r?e.classBindings:e.styleBindings,d=_(o),h=Q(o);t[u]=a;let E,m=!1;if(Array.isArray(a)){const v=a;E=v[1],(null===E||Nn(v,E)>0)&&(m=!0)}else E=a;if(i)if(0!==h){const k=_(t[d+1]);t[u+1]=y(k,d),0!==k&&(t[k+1]=de(t[k+1],u)),t[d+1]=function N(t,e){return 131071&t|e<<17}(t[d+1],u)}else t[u+1]=y(d,0),0!==d&&(t[d+1]=de(t[d+1],u)),d=u;else t[u+1]=y(h,0),0===d?d=u:t[h+1]=de(t[h+1],u),h=u;m&&(t[u+1]=O(t[u+1])),Hl(t,E,u,!0),Hl(t,E,u,!1),function Kn(t,e,a,u,i){const r=i?t.residualClasses:t.residualStyles;null!=r&&"string"==typeof e&&Nn(r,e)>=0&&(a[u+1]=Be(a[u+1]))}(e,E,t,u,r),o=y(d,h),r?e.classBindings=o:e.styleBindings=o}function Hl(t,e,a,u){const i=t[a+1],r=null===e;let o=u?_(i):Q(i),d=!1;for(;0!==o&&(!1===d||r);){const h=t[o],m=t[o+1];QE(h,e)&&(d=!0,t[o+1]=u?Be(m):O(m)),o=u?_(m):Q(m)}d&&(t[a+1]=u?O(i):Be(i))}function QE(t,e){return null===t||null==e||(Array.isArray(t)?t[1]:t)===e||!(!Array.isArray(t)||"string"!=typeof e)&&Nn(t,e)>=0}const Ai={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function W1(t){return t.substring(Ai.key,Ai.keyEnd)}function c$(t){return t.substring(Ai.value,Ai.valueEnd)}function jT(t,e){const a=Ai.textEnd;return a===e?-1:(e=Ai.keyEnd=function p$(t,e,a){for(;e32;)e++;return e}(t,Ai.key=e,a),XE(t,e,a))}function OT(t,e){const a=Ai.textEnd;let u=Ai.key=XE(t,e,a);return a===u?-1:(u=Ai.keyEnd=function E$(t,e,a){let u;for(;e=65&&(-33&u)<=90||u>=48&&u<=57);)e++;return e}(t,u,a),u=KT(t,u,a,58),u=Ai.value=XE(t,u,a),u=Ai.valueEnd=function g$(t,e,a){let u=-1,i=-1,r=-1,o=e,d=o;for(;o32&&(d=o),r=i,i=u,u=-33&h}return d}(t,u,a),KT(t,u,a,59))}function GT(t){Ai.key=0,Ai.keyEnd=0,Ai.value=0,Ai.valueEnd=0,Ai.textEnd=t.length}function XE(t,e,a){for(;e=0;a=OT(e,a))ZT(t,W1(e),c$(e))}function fs(t,e){for(let a=function h$(t){return GT(t),jT(t,XE(t,0,Ai.textEnd))}(e);a>=0;a=jT(e,a))bn(t,W1(e),!0)}function D0(t,e,a,u){const i=Y(),r=Ha(),o=s0(2);if(r.firstUpdatePass&&JT(r,t,o,u),e!==ra&&qu(i,o,e)){$T(r,r.data[rn()],i,i[na],t,i[o+1]=function F$(t,e){return null==t||""===t||("string"==typeof e?t+=e:"object"==typeof t&&(t=le(sr(t)))),t}(e,a),u,o)}}function f0(t,e,a,u){const i=Ha(),r=s0(2);i.firstUpdatePass&&JT(i,null,r,u);const o=Y();if(a!==ra&&qu(o,r,a)){const d=i.data[rn()];if(YT(d,u)&&!UT(i,r)){let h=u?d.classesWithoutHost:d.stylesWithoutHost;null!==h&&(a=ud(h,a||"")),gB(i,d,o,a,u)}else!function _$(t,e,a,u,i,r,o,d){i===ra&&(i=kt);let h=0,m=0,E=0=t.expandoStartIndex}function JT(t,e,a,u){const i=t.data;if(null===i[a+1]){const r=i[rn()],o=UT(t,a);YT(r,u)&&null===e&&!o&&(e=!1),e=function k$(t,e,a,u){const i=as(t);let r=u?e.residualClasses:e.residualStyles;if(null===i)0===(u?e.classBindings:e.styleBindings)&&(a=bB(null,t,e,a,u),a=Rk(a,e.attrs,u),r=null);else{const o=e.directiveStylingLast;if(-1===o||t[o]!==i)if(a=bB(i,t,e,a,u),null===r){let h=function x$(t,e,a){const u=a?e.classBindings:e.styleBindings;if(0!==Q(u))return t[_(u)]}(t,e,u);void 0!==h&&Array.isArray(h)&&(h=bB(null,t,e,h[1],u),h=Rk(h,e.attrs,u),function D$(t,e,a,u){const i=a?e.classBindings:e.styleBindings;t[_(i)]=u}(t,e,u,h))}else r=function f$(t,e,a){let u;const i=e.directiveEnd;for(let r=1+e.directiveStylingLast;r0;){const h=t[i],m=Array.isArray(h),E=m?h[1]:h,v=null===E;let k=a[i+1];k===ra&&(k=v?kt:void 0);let x=v?Tr(k,u):E===u?k:void 0;if(m&&!my(x)&&(x=Tr(h,u)),my(x)&&(d=x,o))return d;const f=t[i+1];i=o?_(f):Q(f)}if(null!==e){let h=r?e.residualClasses:e.residualStyles;null!=h&&(d=Tr(h,u))}return d}function my(t){return void 0!==t}function YT(t,e){return!!(t.flags&(e?8:16))}class I${destroy(e){}updateValue(e,a){}swap(e,a){const u=Math.min(e,a),i=Math.max(e,a),r=this.detach(i);if(i-u>1){const o=this.detach(u);this.attach(u,r),this.attach(i,o)}else this.attach(u,r)}move(e,a){this.attach(a,this.detach(e))}}function kB(t,e,a,u,i){return t===a&&Object.is(e,u)?1:Object.is(i(t,e),i(a,u))?-1:0}function xB(t,e,a,u){return!(void 0===e||!e.has(u))&&(t.attach(a,e.get(u)),e.delete(u),!0)}function QT(t,e,a,u,i){if(xB(t,e,u,a(u,i)))t.updateValue(u,i);else{const r=t.create(u,i);t.attach(u,r)}}function XT(t,e,a,u){const i=new Set;for(let r=e;r<=a;r++)i.add(u(r,t.at(r)));return i}class eP{constructor(){this.kvMap=new Map,this._vMap=void 0}has(e){return this.kvMap.has(e)}delete(e){if(!this.has(e))return!1;const a=this.kvMap.get(e);return void 0!==this._vMap&&this._vMap.has(a)?(this.kvMap.set(e,this._vMap.get(a)),this._vMap.delete(a)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,a){if(this.kvMap.has(e)){let u=this.kvMap.get(e);void 0===this._vMap&&(this._vMap=new Map);const i=this._vMap;for(;i.has(u);)u=i.get(u);i.set(u,a)}else this.kvMap.set(e,a)}forEach(e){for(let[a,u]of this.kvMap)if(e(u,a),void 0!==this._vMap){const i=this._vMap;for(;i.has(u);)u=i.get(u),e(u,a)}}}class V${constructor(e,a,u){this.lContainer=e,this.$implicit=a,this.$index=u}get $count(){return this.lContainer.length-nu}}class G${constructor(e,a,u){this.hasEmptyBlock=e,this.trackByFn=a,this.liveCollection=u}}class W$ extends I${constructor(e,a,u){super(),this.lContainer=e,this.hostLView=a,this.templateTNode=u,this.operationsCounter=void 0,this.needsIndexUpdate=!1}get length(){return this.lContainer.length-nu}at(e){return this.getLView(e)[Rt].$implicit}attach(e,a){const u=a[nr];this.needsIndexUpdate||=e!==this.length,v1(this.lContainer,a,e,jd(this.templateTNode,u))}detach(e){return this.needsIndexUpdate||=e!==this.length-1,function J$(t,e){return $m(t,e)}(this.lContainer,e)}create(e,a){const u=ps(this.lContainer,this.templateTNode.tView.ssrId),i=g1(this.hostLView,this.templateTNode,new V$(this.lContainer,a,e),{dehydratedView:u});return this.operationsCounter?.recordCreate(),i}destroy(e){aE(e[pe],e),this.operationsCounter?.recordDestroy()}updateValue(e,a){this.getLView(e)[Rt].$implicit=a}reset(){this.needsIndexUpdate=!1,this.operationsCounter?.reset()}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e(Bl(!0),Xp(u,i,UD()));function Jd(t,e,a){const u=Y(),i=Ha(),r=t+je,o=i.firstCreatePass?function Q$(t,e,a,u,i){const r=e.consts,o=Hn(r,u),d=E1(e,t,8,"ng-container",o);return null!==o&&FE(d,o,!0),Ab(e,a,d,Hn(r,i)),null!==e.queries&&e.queries.elementStart(e,d),d}(r,i,u,e,a):i.data[r];un(o,!0);const d=tP(i,u,o,t);return u[r]=d,km()&&uE(i,u,d,o),ge(d,u),go(o)&&(yb(i,u,o),Cb(i,o,u)),null!=a&&_b(u,o),Jd}function Zd(){let t=Pt();const e=Ha();return C5()?y5():(t=t.parent,un(t,!1)),e.firstCreatePass&&(xm(e,t),Uc(t)&&e.queries.elementEnd(t)),Zd}function Ey(t,e,a){return Jd(t,e,a),Zd(),Ey}let tP=(t,e,a,u)=>(Bl(!0),Qp(e[na],""));function J1(){return Y()}const L4=void 0;var tq=["en",[["a","p"],["AM","PM"],L4],[["AM","PM"],L4,L4],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],L4,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],L4,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",L4,"{1} 'at' {0}",L4],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function aq(t){const a=Math.floor(Math.abs(t)),u=t.toString().replace(/^[^.]*\.?/,"").length;return 1===a&&0===u?1:5}];let eg={};function Jr(t){const e=function uq(t){return t.toLowerCase().replace(/_/g,"-")}(t);let a=rP(e);if(a)return a;const u=e.split("-")[0];if(a=rP(u),a)return a;if("en"===u)return tq;throw new J(701,!1)}function nP(t){return Jr(t)[ou.PluralCase]}function rP(t){return t in eg||(eg[t]=Ja.ng&&Ja.ng.common&&Ja.ng.common.locales&&Ja.ng.common.locales[t]),eg[t]}var ou;!function(t){t[t.LocaleId=0]="LocaleId",t[t.DayPeriodsFormat=1]="DayPeriodsFormat",t[t.DayPeriodsStandalone=2]="DayPeriodsStandalone",t[t.DaysFormat=3]="DaysFormat",t[t.DaysStandalone=4]="DaysStandalone",t[t.MonthsFormat=5]="MonthsFormat",t[t.MonthsStandalone=6]="MonthsStandalone",t[t.Eras=7]="Eras",t[t.FirstDayOfWeek=8]="FirstDayOfWeek",t[t.WeekendRange=9]="WeekendRange",t[t.DateFormat=10]="DateFormat",t[t.TimeFormat=11]="TimeFormat",t[t.DateTimeFormat=12]="DateTimeFormat",t[t.NumberSymbols=13]="NumberSymbols",t[t.NumberFormats=14]="NumberFormats",t[t.CurrencyCode=15]="CurrencyCode",t[t.CurrencySymbol=16]="CurrencySymbol",t[t.CurrencyName=17]="CurrencyName",t[t.Currencies=18]="Currencies",t[t.Directionality=19]="Directionality",t[t.PluralCase=20]="PluralCase",t[t.ExtraData=21]="ExtraData"}(ou||(ou={}));const iq=["zero","one","two","few","many"];const ag="en-US",gy={marker:"element"},vy={marker:"ICU"};var Zr;!function(t){t[t.SHIFT=2]="SHIFT",t[t.APPEND_EAGERLY=1]="APPEND_EAGERLY",t[t.COMMENT=2]="COMMENT"}(Zr||(Zr={}));let oP=ag;function lP(t){"string"==typeof t&&(oP=t.toLowerCase().replace(/_/g,"-"))}let Hk=0,Vk=0;function sP(t,e,a){const u=t[na];switch(a){case Node.COMMENT_NODE:return Qp(u,e);case Node.TEXT_NODE:return pb(u,e);case Node.ELEMENT_NODE:return Xp(u,e,null)}}let jk=(t,e,a,u)=>(Bl(!0),sP(t,a,u));function dP(t,e,a,u){const i=a[na];let o,r=null;for(let d=0;d>>1,x=e[++d],f=e[++d];Bb(i,cp(k,a),null,null,x,f,null)}else switch(h){case vy:const m=e[++d],E=e[++d];if(null===a[E]){ge(a[E]=jk(a,E,m,Node.COMMENT_NODE),a)}break;case gy:const v=e[++d],k=e[++d];if(null===a[k]){ge(a[k]=jk(a,k,v,Node.ELEMENT_NODE),a)}}}}function cP(t,e,a,u,i){for(let r=0;r>>2;switch(3&E){case 1:const k=a[++m],x=a[++m],f=t.data[v];"string"==typeof f?Bb(e[na],e[v],null,f,k,h,x):dr(t,f,e,k,h,e[na],x,!1);break;case 0:const C=e[v];null!==C&&Yp(e[na],C,h);break;case 2:mq(t,u4(t,v),e,h);break;case 3:hP(t,u4(t,v),u,e)}}}}else{const h=a[r+1];if(h>0&&!(3&~h)){const E=u4(t,h>>>2);e[E.currentCaseLViewIndex]<0&&hP(t,E,u,e)}}r+=d}}function hP(t,e,a,u){let i=u[e.currentCaseLViewIndex];if(null!==i){let r=Hk;i<0&&(i=u[e.currentCaseLViewIndex]=~i,r=-1),cP(t,u,e.update[i],a,r)}}function mq(t,e,a,u){const i=function pq(t,e){let a=t.cases.indexOf(e);if(-1===a)switch(t.type){case 1:{const u=function nq(t,e){const a=nP(e)(parseInt(t,10)),u=iq[a];return void 0!==u?u:"other"}(e,function oq(){return oP}());a=t.cases.indexOf(u),-1===a&&"other"!==u&&(a=t.cases.indexOf("other"));break}case 0:a=t.cases.indexOf("other")}return-1===a?null:a}(e,u);if(pE(e,a)!==i&&(mP(t,e,a),a[e.currentCaseLViewIndex]=null===i?null:~i,null!==i)){const o=a[e.anchorIdx];o&&dP(t,e.create[i],a,o),function bE(t,e,a){$6(t,e,a)}(a,e.anchorIdx,i)}}function mP(t,e,a){let u=pE(e,a);if(null!==u){const i=e.remove[u];for(let r=0;r0){const d=cp(o,a);null!==d&&Kr(a[na],d)}else mP(t,u4(t,~o),a)}}}function Eq(){const t=[];let a,u,e=-1;function r(d,h){e=0;const m=pE(d,h);u=null!==m?d.remove[m]:kt}function o(){if(e0)return a[d];{t.push(e,u);const h=~d;return r(a[pe].data[h],a),o()}}return 0===t.length?null:(u=t.pop(),e=t.pop(),o())}return function i(d,h){for(a=h;t.length;)t.pop();return r(d.value,h),o}}const by=/\ufffd(\d+):?\d*\ufffd/gi,gq=/({\s*\ufffd\d+:?\d*\ufffd\s*,\s*\S{6}\s*,[\s\S]*})/gi,vq=/\ufffd(\d+)\ufffd/,EP=/^\s*(\ufffd\d+:?\d*\ufffd)\s*,\s*(select|plural)\s*,/,Ok="\ufffd",bq=/\ufffd\/?\*(\d+:\d+)\ufffd/gi,kq=/\ufffd(\/?[#*]\d+):?\d*\ufffd/gi,xq=/\uE500/g;function fq(t,e,a,u,i,r){const o=$c(),d=[],h=[],m=[[]],E=[[]];i=function Fq(t,e){if(mi(e))return bP(t);{const a=t.indexOf(`:${e}${Ok}`)+2+e.toString().length,u=t.search(new RegExp(`${Ok}\\/\\*\\d+:${e}${Ok}`));return bP(t.substring(a,u))}}(i,r);const v=function Dq(t){return t.replace(xq," ")}(i).split(kq);for(let k=0;ka.length&&a.push(h)}return{type:u,mainBinding:i,cases:e,values:a}}function fB(t){if(!t)return[];let e=0;const a=[],u=[],i=/[{}]/g;let r;for(i.lastIndex=0;r=i.exec(t);){const d=r.index;if("}"==r[0]){if(a.pop(),0==a.length){const h=t.substring(e,d);EP.test(h)?u.push(Aq(h)):u.push(h),e=d+1}}else{if(0==a.length){const h=t.substring(e,d);u.push(h),e=d+1}a.push("{")}}const o=t.substring(e);return u.push(o),u}function wq(t,e,a,u,i,r,o,d,h){const m=[],E=[],v=[];a.cases.push(o),a.create.push(m),a.remove.push(E),a.update.push(v);const x=Id(os()).getInertBodyElement(d),f=nb(x)||x;return f?xP(t,e,a,u,i,m,E,v,f,r,h,0):0}function xP(t,e,a,u,i,r,o,d,h,m,E,v){let k=0,x=h.firstChild;for(;x;){const f=Vd(e,u,1,null);switch(x.nodeType){case Node.ELEMENT_NODE:const C=x,A=C.tagName.toLowerCase();if(tb.hasOwnProperty(A)){CB(r,gy,A,m,f),e.data[f]=A;const M=C.attributes;for(let $=0;$>>Zr.SHIFT;let v=t[E],k=!1;null===v&&(v=t[E]=jk(t,E,d,h?Node.COMMENT_NODE:Node.TEXT_NODE),k=km()),m&&null!==a&&k&&Hd(i,a,v,u,!1)}}(i,h.create,E,v),F5(!0)}function yP(){F5(!1)}let FP=(t,e,a)=>{};function Yu(t,e,a,u){const i=Y(),r=Ha(),o=Pt();return yB(r,i,i[na],o,t,e,u),Yu}function yB(t,e,a,u,i,r,o){const d=go(u),m=t.firstCreatePass&&C6(t),E=e[Rt],v=f6(e);let k=!0;if(3&u.type||o){const C=fn(u,e),A=o?o(C):C,w=v.length,z=o?M=>o(xt(M[u.index])):u.index;FP(C,i,r);let L=null;if(!o&&d&&(L=function Uq(t,e,a,u){const i=t.cleanup;if(null!=i)for(let r=0;rh?d[h]:null}"string"==typeof o&&(r+=2)}return null}(t,e,i,u.index)),null!==L){(L.__ngLastListenerFn__||L).__ngNextListenerFn__=r,L.__ngLastListenerFn__=r,k=!1}else{r=BP(u,e,E,r,!1);const M=a.listen(A,i,r);v.push(r,M),m&&m.push(i,z,w,w+1)}}else r=BP(u,e,E,r,!1);const x=u.outputs;let f;if(k&&null!==x&&(f=x[i])){const C=f.length;if(C)for(let A=0;A-1?Cn(t.index,e):e,5);let h=wP(e,a,u,o),m=r.__ngNextListenerFn__;for(;m;)h=wP(e,a,m,o)&&h,m=m.__ngNextListenerFn__;return i&&!1===h&&o.preventDefault(),h}}function vt(t=1){return function WD(t){return(ua.lFrame.contextLView=La(t,ua.lFrame.contextLView))[Rt]}(t)}function Jq(t,e){let a=null;const u=function Dl(t){const e=t.attrs;if(null!=e){const a=e.indexOf(5);if(!(1&a))return e[a+1]}return null}(t);for(let i=0;i(Bl(!0),pb(e[na],u));function Z1(t){return Dy("",t,""),Z1}function Dy(t,e,a){const u=Y(),i=V1(u,t,e,a);return i!==ra&&v0(u,rn(),i),Dy}function AB(t,e,a,u,i){if(t=se(t),Array.isArray(t))for(let r=0;r>20;if(Vc(t)||!t.multi){const x=new we(m,i,q),f=BB(h,e,i?E:E+k,v);-1===f?(h0(c0(d,o),r,h),wB(r,t,e.length),e.push(h),d.directiveStart++,d.directiveEnd++,i&&(d.providerIndexes+=1048576),a.push(x),o.push(x)):(a[f]=x,o[f]=x)}else{const x=BB(h,e,E+k,v),f=BB(h,e,E,E+k),C=x>=0&&a[x],A=f>=0&&a[f];if(i&&!A||!i&&!C){h0(c0(d,o),r,h);const w=function pY(t,e,a,u,i){const r=new we(t,a,q);return r.multi=[],r.index=e,r.componentProviders=0,iN(r,i,u&&!a),r}(i?mY:hY,a.length,i,u,m);!i&&A&&(a[f].providerFactory=w),wB(r,t,e.length,0),e.push(h),d.directiveStart++,d.directiveEnd++,i&&(d.providerIndexes+=1048576),a.push(w),o.push(w)}else{wB(r,t,x>-1?x:f,iN(a[i?f:x],m,!i&&u))}!i&&u&&A&&a[f].componentProviders++}}}function wB(t,e,a,u){const i=Vc(e),r=function _9(t){return!!t.useClass}(e);if(i||r){const h=(r?se(e.useClass):e).prototype.ngOnDestroy;if(h){const m=t.destroyHooks||(t.destroyHooks=[]);if(!i&&e.multi){const E=m.indexOf(a);-1===E?m.push(a,[u,h]):m[E+1].push(u,h)}else m.push(a,h)}}}function iN(t,e,a){return a&&t.componentProviders++,t.multi.push(e)-1}function BB(t,e,a,u){for(let i=a;i{a.providersResolver=(u,i)=>function cY(t,e,a){const u=Ha();if(u.firstCreatePass){const i=$u(t);AB(a,u.data,u.blueprint,i,!0),AB(e,u.data,u.blueprint,i,!1)}}(u,i?i(t):t,e)}}class fy{constructor(e){this._injector=e,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){const a=Kt(0,e.type),u=a.length>0?HE([a],this._injector,`Standalone[${e.type.name}]`):null;this.cachedInjectors.set(e,u)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}static#e=this.\u0275prov=he({token:fy,providedIn:"environment",factory:()=>new fy(fe(Pi))})}function nN(t){cr("NgStandalone"),t.getStandaloneInjector=e=>e.get(fy).getOrCreateStandaloneInjector(t)}function Cy(t){if("function"==typeof t)return t;const e=gu(t);return e.some(wt)?()=>e.map(se).map(rN):e.map(rN)}function rN(t){return uk(t)?t.ngModule:t}function P4(t,e,a,u){return dN(Y(),nn(),t,e,a,u)}function oN(t,e,a,u,i){return cN(Y(),nn(),t,e,a,u,i)}function lN(t,e,a,u,i,r){return hN(Y(),nn(),t,e,a,u,i,r)}function sN(t,e,a,u,i,r,o){return mN(Y(),nn(),t,e,a,u,i,r,o)}function Kk(t,e){const a=t[e];return a===ra?void 0:a}function dN(t,e,a,u,i,r){const o=e+a;return qu(t,o,i)?Rl(t,o+1,r?u.call(r,i):u(i)):Kk(t,o+1)}function cN(t,e,a,u,i,r,o){const d=e+a;return bs(t,d,i,r)?Rl(t,d+2,o?u.call(o,i,r):u(i,r)):Kk(t,d+2)}function hN(t,e,a,u,i,r,o,d){const h=e+a;return WE(t,h,i,r,o)?Rl(t,h+3,d?u.call(d,i,r,o):u(i,r,o)):Kk(t,h+3)}function mN(t,e,a,u,i,r,o,d,h){const m=e+a;return fo(t,m,i,r,o,d)?Rl(t,m+4,h?u.call(h,i,r,o,d):u(i,r,o,d)):Kk(t,m+4)}function pN(t,e,a,u,i,r){let o=e+a,d=!1;for(let h=0;h{const u=(Array.isArray(t)?t:t()).map(i=>"function"==typeof i?{directive:se(i),inputs:so,outputs:so}:{directive:se(i.directive),inputs:VC(i.inputs),outputs:VC(i.outputs)});null===a.hostDirectives?(a.findHostDirectiveDefs=HC,a.hostDirectives=u):a.hostDirectives.unshift(...u)};return e.ngInherit=!0,e},\u0275\u0275NgOnChangesFeature:tn,\u0275\u0275ProvidersFeature:Fu,\u0275\u0275CopyDefinitionFeature:function O8(t){let a,e=TC(t.type);a=$u(t)?e.\u0275cmp:e.\u0275dir;const u=t;for(const i of V8)u[i]=a[i];if($u(a))for(const i of j8)u[i]=a[i]},\u0275\u0275InheritDefinitionFeature:zt,\u0275\u0275InputTransformsFeature:RE,\u0275\u0275StandaloneFeature:nN,\u0275\u0275nextContext:vt,\u0275\u0275namespaceHTML:function z5(){!function bp(){ua.lFrame.currentNamespace=null}()},\u0275\u0275namespaceMathML:function G9(){ua.lFrame.currentNamespace="math"},\u0275\u0275namespaceSVG:function O9(){ua.lFrame.currentNamespace="svg"},\u0275\u0275enableBindings:function R9(){ua.bindingsEnabled=!0},\u0275\u0275disableBindings:function wl(){ua.bindingsEnabled=!1},\u0275\u0275elementStart:ru,\u0275\u0275elementEnd:_u,\u0275\u0275element:U1,\u0275\u0275elementContainerStart:Jd,\u0275\u0275elementContainerEnd:Zd,\u0275\u0275elementContainer:Ey,\u0275\u0275pureFunction0:function vY(t,e,a){const u=nn()+t,i=Y();return i[u]===ra?Rl(i,u,a?e.call(a):e()):C4(i,u)},\u0275\u0275pureFunction1:P4,\u0275\u0275pureFunction2:oN,\u0275\u0275pureFunction3:lN,\u0275\u0275pureFunction4:sN,\u0275\u0275pureFunction5:function bY(t,e,a,u,i,r,o,d){const h=nn()+t,m=Y(),E=fo(m,h,a,u,i,r);return qu(m,h+4,o)||E?Rl(m,h+5,d?e.call(d,a,u,i,r,o):e(a,u,i,r,o)):C4(m,h+5)},\u0275\u0275pureFunction6:function kY(t,e,a,u,i,r,o,d,h){const m=nn()+t,E=Y(),v=fo(E,m,a,u,i,r);return bs(E,m+4,o,d)||v?Rl(E,m+6,h?e.call(h,a,u,i,r,o,d):e(a,u,i,r,o,d)):C4(E,m+6)},\u0275\u0275pureFunction7:function xY(t,e,a,u,i,r,o,d,h,m){const E=nn()+t,v=Y();let k=fo(v,E,a,u,i,r);return WE(v,E+4,o,d,h)||k?Rl(v,E+7,m?e.call(m,a,u,i,r,o,d,h):e(a,u,i,r,o,d,h)):C4(v,E+7)},\u0275\u0275pureFunction8:function DY(t,e,a,u,i,r,o,d,h,m,E){const v=nn()+t,k=Y(),x=fo(k,v,a,u,i,r);return fo(k,v+4,o,d,h,m)||x?Rl(k,v+8,E?e.call(E,a,u,i,r,o,d,h,m):e(a,u,i,r,o,d,h,m)):C4(k,v+8)},\u0275\u0275pureFunctionV:function fY(t,e,a,u){return pN(Y(),nn(),t,e,a,u)},\u0275\u0275getCurrentView:J1,\u0275\u0275restoreView:di,\u0275\u0275listener:Yu,\u0275\u0275projection:xy,\u0275\u0275syntheticHostProperty:function iP(t,e,a){const u=Y();if(qu(u,Wo(),e)){const r=Ha(),o=qt();dr(r,o,u,t,e,y6(as(r.data),o,u),a,!0)}return iP},\u0275\u0275syntheticHostListener:function AP(t,e){const a=Pt(),u=Y(),i=Ha();return yB(i,u,y6(as(i.data),a,u),a,t,e),AP},\u0275\u0275pipeBind1:function _Y(t,e,a){const u=t+je,i=Y(),r=rr(i,u);return Wk(i,u)?dN(i,nn(),e,r.transform,a,r):r.transform(a)},\u0275\u0275pipeBind2:function FY(t,e,a,u){const i=t+je,r=Y(),o=rr(r,i);return Wk(r,i)?cN(r,nn(),e,o.transform,a,u,o):o.transform(a,u)},\u0275\u0275pipeBind3:function AY(t,e,a,u,i){const r=t+je,o=Y(),d=rr(o,r);return Wk(o,r)?hN(o,nn(),e,d.transform,a,u,i,d):d.transform(a,u,i)},\u0275\u0275pipeBind4:function wY(t,e,a,u,i,r){const o=t+je,d=Y(),h=rr(d,o);return Wk(d,o)?mN(d,nn(),e,h.transform,a,u,i,r,h):h.transform(a,u,i,r)},\u0275\u0275pipeBindV:function BY(t,e,a){const u=t+je,i=Y(),r=rr(i,u);return Wk(i,u)?pN(i,nn(),e,r.transform,a,r):r.transform.apply(r,a)},\u0275\u0275projectionDef:ky,\u0275\u0275hostProperty:function uP(t,e,a){const u=Y();if(qu(u,Wo(),e)){dr(Ha(),qt(),u,t,e,u[na],a,!0)}return uP},\u0275\u0275property:Dt,\u0275\u0275propertyInterpolate:_B,\u0275\u0275propertyInterpolate1:FB,\u0275\u0275propertyInterpolate2:function SP(t,e,a,u,i,r,o){const d=Y(),h=S4(d,e,a,u,i,r);if(h!==ra){dr(Ha(),qt(),d,t,h,d[na],o,!1)}return SP},\u0275\u0275propertyInterpolate3:function zP(t,e,a,u,i,r,o,d,h){const m=Y(),E=j1(m,e,a,u,i,r,o,d);if(E!==ra){dr(Ha(),qt(),m,t,E,m[na],h,!1)}return zP},\u0275\u0275propertyInterpolate4:function MP(t,e,a,u,i,r,o,d,h,m,E){const v=Y(),k=O1(v,e,a,u,i,r,o,d,h,m);if(k!==ra){dr(Ha(),qt(),v,t,k,v[na],E,!1)}return MP},\u0275\u0275propertyInterpolate5:function LP(t,e,a,u,i,r,o,d,h,m,E,v,k){const x=Y(),f=z4(x,e,a,u,i,r,o,d,h,m,E,v);if(f!==ra){dr(Ha(),qt(),x,t,f,x[na],k,!1)}return LP},\u0275\u0275propertyInterpolate6:function TP(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f){const C=Y(),A=G1(C,e,a,u,i,r,o,d,h,m,E,v,k,x);if(A!==ra){dr(Ha(),qt(),C,t,A,C[na],f,!1)}return TP},\u0275\u0275propertyInterpolate7:function PP(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A){const w=Y(),z=K1(w,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C);if(z!==ra){dr(Ha(),qt(),w,t,z,w[na],A,!1)}return PP},\u0275\u0275propertyInterpolate8:function NP(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A,w,z){const L=Y(),M=M4(L,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A,w);if(M!==ra){dr(Ha(),qt(),L,t,M,L[na],z,!1)}return NP},\u0275\u0275propertyInterpolateV:function IP(t,e,a){const u=Y(),i=H1(u,e);if(i!==ra){dr(Ha(),qt(),u,t,i,u[na],a,!1)}return IP},\u0275\u0275pipe:function CY(t,e){const a=Ha();let u;const i=t+je;a.firstCreatePass?(u=function yY(t,e){if(e)for(let a=e.length-1;a>=0;a--){const u=e[a];if(t===u.name)return u}}(e,a.pipeRegistry),a.data[i]=u,u.onDestroy&&(a.destroyHooks??=[]).push(i,u.onDestroy)):u=a.data[i];const r=u.factory||(u.factory=kl(u.type)),d=Eu(q);try{const h=Vn(!1),m=r();return Vn(h),function Qq(t,e,a,u){a>=t.data.length&&(t.data[a]=null,t.blueprint[a]=null),e[a]=u}(a,Y(),i,m),m}finally{Eu(d)}},\u0275\u0275queryRefresh:Oi,\u0275\u0275queryAdvance:function Yq(t=1){Ep(w5()+t)},\u0275\u0275viewQuery:T4,\u0275\u0275viewQuerySignal:function qq(t,e,a,u){_C(t,kC(e,a,u))},\u0275\u0275loadQuery:Gi,\u0275\u0275contentQuery:yo,\u0275\u0275contentQuerySignal:function $q(t,e,a,u,i){_C(e,xC(t,a,u,i))},\u0275\u0275reference:Cs,\u0275\u0275classMap:function b$(t){f0(y$,fs,t,!0)},\u0275\u0275classMapInterpolate1:function A$(t,e,a){f0(bn,fs,V1(Y(),t,e,a),!0)},\u0275\u0275classMapInterpolate2:function w$(t,e,a,u,i){f0(bn,fs,S4(Y(),t,e,a,u,i),!0)},\u0275\u0275classMapInterpolate3:function B$(t,e,a,u,i,r,o){f0(bn,fs,j1(Y(),t,e,a,u,i,r,o),!0)},\u0275\u0275classMapInterpolate4:function S$(t,e,a,u,i,r,o,d,h){f0(bn,fs,O1(Y(),t,e,a,u,i,r,o,d,h),!0)},\u0275\u0275classMapInterpolate5:function z$(t,e,a,u,i,r,o,d,h,m,E){f0(bn,fs,z4(Y(),t,e,a,u,i,r,o,d,h,m,E),!0)},\u0275\u0275classMapInterpolate6:function M$(t,e,a,u,i,r,o,d,h,m,E,v,k){f0(bn,fs,G1(Y(),t,e,a,u,i,r,o,d,h,m,E,v,k),!0)},\u0275\u0275classMapInterpolate7:function L$(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f){f0(bn,fs,K1(Y(),t,e,a,u,i,r,o,d,h,m,E,v,k,x,f),!0)},\u0275\u0275classMapInterpolate8:function T$(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A){f0(bn,fs,M4(Y(),t,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A),!0)},\u0275\u0275classMapInterpolateV:function P$(t){f0(bn,fs,H1(Y(),t),!0)},\u0275\u0275styleMap:Ds,\u0275\u0275styleMapInterpolate1:function Xq(t,e,a){Ds(V1(Y(),t,e,a))},\u0275\u0275styleMapInterpolate2:function eY(t,e,a,u,i){Ds(S4(Y(),t,e,a,u,i))},\u0275\u0275styleMapInterpolate3:function aY(t,e,a,u,i,r,o){Ds(j1(Y(),t,e,a,u,i,r,o))},\u0275\u0275styleMapInterpolate4:function tY(t,e,a,u,i,r,o,d,h){Ds(O1(Y(),t,e,a,u,i,r,o,d,h))},\u0275\u0275styleMapInterpolate5:function uY(t,e,a,u,i,r,o,d,h,m,E){Ds(z4(Y(),t,e,a,u,i,r,o,d,h,m,E))},\u0275\u0275styleMapInterpolate6:function iY(t,e,a,u,i,r,o,d,h,m,E,v,k){Ds(G1(Y(),t,e,a,u,i,r,o,d,h,m,E,v,k))},\u0275\u0275styleMapInterpolate7:function nY(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f){Ds(K1(Y(),t,e,a,u,i,r,o,d,h,m,E,v,k,x,f))},\u0275\u0275styleMapInterpolate8:function rY(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A){Ds(M4(Y(),t,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A))},\u0275\u0275styleMapInterpolateV:function oY(t){Ds(H1(Y(),t))},\u0275\u0275styleProp:vB,\u0275\u0275stylePropInterpolate1:function RP(t,e,a,u,i){return D0(t,V1(Y(),e,a,u),i,!1),RP},\u0275\u0275stylePropInterpolate2:function HP(t,e,a,u,i,r,o){return D0(t,S4(Y(),e,a,u,i,r),o,!1),HP},\u0275\u0275stylePropInterpolate3:function VP(t,e,a,u,i,r,o,d,h){return D0(t,j1(Y(),e,a,u,i,r,o,d),h,!1),VP},\u0275\u0275stylePropInterpolate4:function jP(t,e,a,u,i,r,o,d,h,m,E){return D0(t,O1(Y(),e,a,u,i,r,o,d,h,m),E,!1),jP},\u0275\u0275stylePropInterpolate5:function OP(t,e,a,u,i,r,o,d,h,m,E,v,k){return D0(t,z4(Y(),e,a,u,i,r,o,d,h,m,E,v),k,!1),OP},\u0275\u0275stylePropInterpolate6:function GP(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f){return D0(t,G1(Y(),e,a,u,i,r,o,d,h,m,E,v,k,x),f,!1),GP},\u0275\u0275stylePropInterpolate7:function KP(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A){return D0(t,K1(Y(),e,a,u,i,r,o,d,h,m,E,v,k,x,f,C),A,!1),KP},\u0275\u0275stylePropInterpolate8:function WP(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A,w,z){return D0(t,M4(Y(),e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A,w),z,!1),WP},\u0275\u0275stylePropInterpolateV:function UP(t,e,a){return D0(t,H1(Y(),e),a,!1),UP},\u0275\u0275classProp:pr,\u0275\u0275advance:Ka,\u0275\u0275template:pi,\u0275\u0275conditional:function H$(t,e){cr("NgControlFlow");const a=Y(),u=Wo(),i=a[u]!==ra?a[u]:-1,r=-1!==i?py(a,je+i):void 0;if(qu(a,u,t)){const d=me(null);try{if(void 0!==r&&Mb(r,0),-1!==t){const h=je+t,m=py(a,h),E=DB(a[pe],h),v=ps(m,E.tView.ssrId);v1(m,g1(a,E,e,{dehydratedView:v}),0,jd(E,v))}}finally{me(d)}}else if(void 0!==r){const d=_6(r,0);void 0!==d&&(d[Rt]=e)}},\u0275\u0275defer:function iy(t,e,a,u,i,r,o,d,h){const m=Y(),E=Ha(),v=t+je,k=z1(m,E,t,null,0,0);if(E.firstCreatePass){cr("NgDefer");const A={primaryTmplIndex:e,loadingTmplIndex:u??null,placeholderTmplIndex:i??null,errorTmplIndex:r??null,placeholderBlockConfig:null,loadingBlockConfig:null,dependencyResolverFn:a??null,loadingState:Ru.NOT_STARTED,loadingPromise:null,providers:null};h?.(E,A,d,o),function Y8(t,e,a){const u=F4(e);t.data[u]=a}(E,v,A)}pC(m[v],k,m);const f=[null,L1.Initial,null,null,null,null];!function q8(t,e,a){t[pe],t[F4(e)]=a}(m,v,f);const C=()=>$C(f);JE(0,f,()=>D5(m,C)),pp(m,C)},\u0275\u0275deferWhen:function ny(t){const e=Y();if(qu(e,Wo(),t)){const u=me(null);try{const i=!!t,r=qt(),d=Wd(e,r)[Co];!1===i&&d===L1.Initial?I1(e,r):!0===i&&(d===L1.Initial||d===Hu.Placeholder)&&R1(e,r)}finally{me(u)}}},\u0275\u0275deferOnIdle:function rB(){Nk(ay)},\u0275\u0275deferOnImmediate:function lB(){const t=Y(),e=Pt(),a=t[pe],u=t[Na],i=Ur(a,e);(!YE(u)||null===i.loadingTmplIndex)&&I1(t,e),R1(t,e)},\u0275\u0275deferOnTimer:function w4(t){Nk(ty(t))},\u0275\u0275deferOnHover:function sB(t,e){const a=Y(),u=Pt();I1(a,u),N1(a,u,t,e,Mk,()=>R1(a,u),0)},\u0275\u0275deferOnInteraction:function VT(t,e){const a=Y(),u=Pt();I1(a,u),N1(a,u,t,e,zk,()=>R1(a,u),0)},\u0275\u0275deferOnViewport:function dB(t,e){const a=Y(),u=Pt();I1(a,u),N1(a,u,t,e,Lk,()=>R1(a,u),0)},\u0275\u0275deferPrefetchWhen:function RT(t){const e=Y();if(qu(e,Wo(),t)){const u=me(null);try{const i=!!t,r=e[pe],o=qt(),d=Ur(r,o);!0===i&&d.loadingState===Ru.NOT_STARTED&&B4(d,e,o)}finally{me(u)}}},\u0275\u0275deferPrefetchOnIdle:function oB(){sy(ay)},\u0275\u0275deferPrefetchOnImmediate:function HT(){const t=Y(),e=Pt(),u=Ur(t[pe],e);u.loadingState===Ru.NOT_STARTED&&Ik(u,t,e)},\u0275\u0275deferPrefetchOnTimer:function Pk(t){sy(ty(t))},\u0275\u0275deferPrefetchOnHover:function ry(t,e){const a=Y(),u=Pt(),r=Ur(a[pe],u);r.loadingState===Ru.NOT_STARTED&&N1(a,u,t,e,Mk,()=>B4(r,a,u),1)},\u0275\u0275deferPrefetchOnInteraction:function oy(t,e){const a=Y(),u=Pt(),r=Ur(a[pe],u);r.loadingState===Ru.NOT_STARTED&&N1(a,u,t,e,zk,()=>B4(r,a,u),1)},\u0275\u0275deferPrefetchOnViewport:function ly(t,e){const a=Y(),u=Pt(),r=Ur(a[pe],u);r.loadingState===Ru.NOT_STARTED&&N1(a,u,t,e,Lk,()=>B4(r,a,u),1)},\u0275\u0275deferEnableTimerScheduling:function IT(t,e,a,u){const i=t.consts;null!=a&&(e.placeholderBlockConfig=Hn(i,a)),null!=u&&(e.loadingBlockConfig=Hn(i,u)),null===uy&&(uy=pB)},\u0275\u0275repeater:function U$(t){const e=me(null),a=rn();try{const u=Y(),i=u[pe],r=u[a],o=a+1,d=py(u,o);if(void 0===r.liveCollection){const m=DB(i,o);r.liveCollection=new W$(d,u,m)}else r.liveCollection.reset();const h=r.liveCollection;if(function R$(t,e,a){let u,i,r=0,o=t.length-1;if(Array.isArray(e)){let h=e.length-1;for(;r<=o&&r<=h;){const m=t.at(r),E=e[r],v=kB(r,m,r,E,a);if(0!==v){v<0&&t.updateValue(r,E),r++;continue}const k=t.at(o),x=e[h],f=kB(o,k,h,x,a);if(0!==f){f<0&&t.updateValue(o,x),o--,h--;continue}const C=a(r,m),A=a(o,k),w=a(r,E);if(Object.is(w,A)){const z=a(h,x);Object.is(z,C)?(t.swap(r,o),t.updateValue(o,x),h--,o--):t.move(o,r),t.updateValue(r,E),r++}else if(u??=new eP,i??=XT(t,r,o,a),xB(t,u,r,w))t.updateValue(r,E),r++,o++;else if(i.has(w))u.set(C,t.detach(r)),o--;else{const z=t.create(r,e[r]);t.attach(r,z),r++,o++}}for(;r<=h;)QT(t,u,a,r,e[r]),r++}else if(null!=e){const h=e[Symbol.iterator]();let m=h.next();for(;!m.done&&r<=o;){const E=t.at(r),v=m.value,k=kB(r,E,r,v,a);if(0!==k)k<0&&t.updateValue(r,v),r++,m=h.next();else{u??=new eP,i??=XT(t,r,o,a);const x=a(r,v);if(xB(t,u,r,x))t.updateValue(r,v),r++,o++,m=h.next();else if(i.has(x)){const f=a(r,E);u.set(f,t.detach(r)),o--}else t.attach(r,t.create(r,v)),r++,o++,m=h.next()}}for(;!m.done;)QT(t,u,a,t.length,m.value),m=h.next()}for(;r<=o;)t.destroy(t.detach(o--));u?.forEach(h=>{t.destroy(h)})}(h,t,r.trackByFn),h.updateIndexes(),r.hasEmptyBlock){const m=Wo(),E=0===h.length;if(qu(u,m,E)){const v=a+2,k=py(u,v);if(E){const x=DB(i,v),f=ps(k,x.tView.ssrId);v1(k,g1(u,x,void 0,{dehydratedView:f}),0,jd(x,f))}else Mb(k,0)}}}finally{me(e)}},\u0275\u0275repeaterCreate:function K$(t,e,a,u,i,r,o,d,h,m,E,v,k){cr("NgControlFlow");const x=Y(),f=Ha(),C=void 0!==h,A=Y(),w=d?o.bind(A[iu][Rt]):o,z=new G$(C,w);A[je+t]=z,z1(x,f,t+1,e,a,u,i,Hn(f.consts,r)),C&&z1(x,f,t+2,h,m,E,v,Hn(f.consts,k))},\u0275\u0275repeaterTrackByIndex:function j$(t){return t},\u0275\u0275repeaterTrackByIdentity:function O$(t,e){return e},\u0275\u0275componentInstance:function N$(){return Y()[iu][Rt]},\u0275\u0275text:C0,\u0275\u0275textInterpolate:Z1,\u0275\u0275textInterpolate1:Dy,\u0275\u0275textInterpolate2:function ZP(t,e,a,u,i){const r=Y(),o=S4(r,t,e,a,u,i);return o!==ra&&v0(r,rn(),o),ZP},\u0275\u0275textInterpolate3:function $P(t,e,a,u,i,r,o){const d=Y(),h=j1(d,t,e,a,u,i,r,o);return h!==ra&&v0(d,rn(),h),$P},\u0275\u0275textInterpolate4:function qP(t,e,a,u,i,r,o,d,h){const m=Y(),E=O1(m,t,e,a,u,i,r,o,d,h);return E!==ra&&v0(m,rn(),E),qP},\u0275\u0275textInterpolate5:function YP(t,e,a,u,i,r,o,d,h,m,E){const v=Y(),k=z4(v,t,e,a,u,i,r,o,d,h,m,E);return k!==ra&&v0(v,rn(),k),YP},\u0275\u0275textInterpolate6:function QP(t,e,a,u,i,r,o,d,h,m,E,v,k){const x=Y(),f=G1(x,t,e,a,u,i,r,o,d,h,m,E,v,k);return f!==ra&&v0(x,rn(),f),QP},\u0275\u0275textInterpolate7:function XP(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f){const C=Y(),A=K1(C,t,e,a,u,i,r,o,d,h,m,E,v,k,x,f);return A!==ra&&v0(C,rn(),A),XP},\u0275\u0275textInterpolate8:function eN(t,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A){const w=Y(),z=M4(w,t,e,a,u,i,r,o,d,h,m,E,v,k,x,f,C,A);return z!==ra&&v0(w,rn(),z),eN},\u0275\u0275textInterpolateV:function aN(t){const e=Y(),a=H1(e,t);return a!==ra&&v0(e,rn(),a),aN},\u0275\u0275i18n:function jq(t,e,a){CP(t,e,a),yP()},\u0275\u0275i18nAttributes:function Oq(t,e){const a=Ha(),u=Hn(a.consts,e);!function yq(t,e,a){const i=Pt().index,r=[];if(t.firstCreatePass&&null===t.data[e]){for(let o=0;o0){const u=t.data[a];cP(t,e,Array.isArray(u)?u:u.update,Ko()-Vk-1,Hk)}Hk=0,Vk=0}(Ha(),Y(),t+je)},\u0275\u0275i18nPostprocess:function Kq(t,e={}){return function Vq(t,e={}){let a=t;if(Lq.test(t)){const u={},i=[fP];a=a.replace(Tq,(r,o,d)=>{const h=o||d,m=u[h]||[];if(m.length||(h.split("|").forEach(C=>{const A=C.match(Hq),w=A?parseInt(A[1],10):fP,z=Rq.test(C);m.push([w,z,C])}),u[h]=m),!m.length)throw new Error(`i18n postprocess: unmatched placeholder - ${h}`);const E=i[i.length-1];let v=0;for(let C=0;Ce.hasOwnProperty(r)?`${i}${e[r]}${h}`:u),a=a.replace(Nq,(u,i)=>e.hasOwnProperty(i)?e[i]:u),a=a.replace(Iq,(u,i)=>{if(e.hasOwnProperty(i)){const r=e[i];if(!r.length)throw new Error(`i18n postprocess: unmatched ICU - ${u} with key: ${i}`);return r.shift()}return u})),a}(t,e)},\u0275\u0275resolveWindow:function Uf(t){return t.ownerDocument.defaultView},\u0275\u0275resolveDocument:function Jf(t){return t.ownerDocument},\u0275\u0275resolveBody:cb,\u0275\u0275setComponentScope:function EY(t,e,a){const u=t.\u0275cmp;u.directiveDefs=hd(e,!1),u.pipeDefs=hd(a,!0)},\u0275\u0275setNgModuleScope:function gY(t,e){return At(()=>{const a=si(t,!0);a.declarations=Cy(e.declarations||kt),a.imports=Cy(e.imports||kt),a.exports=Cy(e.exports||kt),e.bootstrap&&(a.bootstrap=Cy(e.bootstrap)),h4.registerNgModule(t,e)})},\u0275\u0275registerNgModuleType:IE,\u0275\u0275getComponentDepsFactory:function SY(t,e){return()=>{try{return h4.getComponentDependencies(t,e).dependencies}catch(a){throw console.error(`Computing dependencies in local compilation mode for the component "${t.name}" failed with the exception:`,a),a}}},\u0275setClassDebugInfo:function zY(t,e){const a=za(t);null!==a&&(a.debugInfo=e)},\u0275\u0275sanitizeHtml:function PA(t){const e=Jm();return e?jp(e.sanitize(jr.HTML,t)||""):Nl(t,"HTML")?jp(sr(t)):Rf(os(),ma(t))},\u0275\u0275sanitizeStyle:function NA(t){const e=Jm();return e?e.sanitize(jr.STYLE,t)||"":Nl(t,"Style")?sr(t):ma(t)},\u0275\u0275sanitizeResourceUrl:jf,\u0275\u0275sanitizeScript:function IA(t){const e=Jm();if(e)return eb(e.sanitize(jr.SCRIPT,t)||"");if(Nl(t,"Script"))return eb(sr(t));throw new J(905,!1)},\u0275\u0275sanitizeUrl:Vf,\u0275\u0275sanitizeUrlOrResourceUrl:rb,\u0275\u0275trustConstantHtml:function RA(t){return n1(t[0])},\u0275\u0275trustConstantResourceUrl:function E0(t){return function Q5(t){return Y5()?.createScriptURL(t)||t}(t[0])},\u0275\u0275validateIframeAttribute:function LC(t,e,a){const u=Y(),i=qt(),r=fn(i,u);if(2===i.type&&"iframe"===e.toLowerCase()){const o=r;o.src="",o.srcdoc=n1(""),Kr(u[na],o);throw new J(-910,!1)}return t},forwardRef:Ya,resolveForwardRef:se,\u0275\u0275twoWayProperty:function tN(t,e,a){x0(e)&&(e=e());const u=Y();if(qu(u,Wo(),e)){dr(Ha(),qt(),u,t,e,u[na],a,!1)}return tN},\u0275\u0275twoWayBindingSet:function dY(t,e){const a=x0(t);return a&&t.set(e),a},\u0275\u0275twoWayListener:function uN(t,e){const a=Y(),u=Ha(),i=Pt();return yB(u,a,a[na],i,t,e),uN}};let tg=null;const Uk=[];let zB=!1;function EN(t){return Array.isArray(t)?t.every(EN):!!se(t)}function NY(t,e={}){(function IY(t,e,a=!1){const u=gu(e.declarations||kt);let i=null;Object.defineProperty(t,a5,{configurable:!0,get:()=>(null===i&&(i=Ci().compileNgModule($r,`ng:///${t.name}/\u0275mod.js`,{type:t,bootstrap:gu(e.bootstrap||kt).map(se),declarations:u.map(se),imports:gu(e.imports||kt).map(se).map(kN),exports:gu(e.exports||kt).map(se).map(kN),schemas:e.schemas?gu(e.schemas):null,id:e.id||null}),i.schemas||(i.schemas=[])),i)});let r=null;Object.defineProperty(t,Io,{get:()=>{if(null===r){const d=Ci();r=d.compileFactory($r,`ng:///${t.name}/\u0275fac.js`,{name:t.name,type:t,deps:Hr(t),target:d.FactoryTarget.NgModule,typeArgumentCount:0})}return r},configurable:!1});let o=null;Object.defineProperty(t,G3,{get:()=>{if(null===o){const d={name:t.name,type:t,providers:e.providers||kt,imports:[(e.imports||kt).map(se),(e.exports||kt).map(se)]};o=Ci().compileInjector($r,`ng:///${t.name}/\u0275inj.js`,d)}return o},configurable:!1})})(t,e),void 0!==e.id&&IE(t,e.id),function TY(t,e){Uk.push({moduleType:t,ngModule:e})}(t,e)}function VY(t,e){const a=gu(e.declarations||kt),u=ug(t);a.forEach(i=>{if((i=se(i)).hasOwnProperty(am)){bN(za(i),u)}else!i.hasOwnProperty(e5)&&!i.hasOwnProperty(tm)&&(i.ngSelectorScope=t)})}function bN(t,e){t.directiveDefs=()=>Array.from(e.compilation.directives).map(a=>a.hasOwnProperty(am)?za(a):Pu(a)).filter(a=>!!a),t.pipeDefs=()=>Array.from(e.compilation.pipes).map(a=>fi(a)),t.schemas=e.schemas,t.tView=null}function ug(t){if(gs(t)){if(ik){const e=h4.getNgModuleScope(t);return{schemas:si(t,!0).schemas||null,...e}}return function jY(t){const e=si(t,!0);if(null!==e.transitiveCompileScopes)return e.transitiveCompileScopes;const a={schemas:e.schemas||null,compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set,pipes:new Set}};return Or(e.imports).forEach(u=>{const i=ug(u);i.exported.directives.forEach(r=>a.compilation.directives.add(r)),i.exported.pipes.forEach(r=>a.compilation.pipes.add(r))}),Or(e.declarations).forEach(u=>{fi(u)?a.compilation.pipes.add(u):a.compilation.directives.add(u)}),Or(e.exports).forEach(u=>{const i=u;if(gs(i)){const r=ug(i);r.exported.directives.forEach(o=>{a.compilation.directives.add(o),a.exported.directives.add(o)}),r.exported.pipes.forEach(o=>{a.compilation.pipes.add(o),a.exported.pipes.add(o)})}else fi(i)?a.exported.pipes.add(i):a.exported.directives.add(i)}),e.transitiveCompileScopes=a,a}(t)}if(n0(t)){if(null!==(za(t)||Pu(t)))return{schemas:null,compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set([t]),pipes:new Set}};if(null!==fi(t))return{schemas:null,compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set,pipes:new Set([t])}}}throw new Error(`${t.name} does not have a module def (\u0275mod property)`)}function kN(t){return uk(t)?t.ngModule:t}let TB=0;function OY(t,e){let a=null;(function N8(t,e){BC(e)&&(Gd.set(t,e),b4.add(t))})(t,e),fN(t,e),Object.defineProperty(t,am,{get:()=>{if(null===a){const u=Ci();if(BC(e)){const m=[`Component '${t.name}' is not resolved:`];throw e.templateUrl&&m.push(` - templateUrl: ${e.templateUrl}`),e.styleUrls&&e.styleUrls.length&&m.push(` - styleUrls: ${JSON.stringify(e.styleUrls)}`),e.styleUrl&&m.push(` - styleUrl: ${e.styleUrl}`),m.push("Did you run and wait for 'resolveComponentResources()'?"),new Error(m.join("\n"))}const i=function LY(){return tg}();let r=e.preserveWhitespaces;void 0===r&&(r=null!==i&&void 0!==i.preserveWhitespaces&&i.preserveWhitespaces);let o=e.encapsulation;void 0===o&&(o=null!==i&&void 0!==i.defaultEncapsulation?i.defaultEncapsulation:Tt.Emulated);const d=e.templateUrl||`ng:///${t.name}/template.html`,h={...CN(t,e),typeSourceSpan:u.createParseSourceSpan("Component",t.name,d),template:e.template||"",preserveWhitespaces:r,styles:"string"==typeof e.styles?[e.styles]:e.styles||kt,animations:e.animations,declarations:[],changeDetection:e.changeDetection,encapsulation:o,interpolation:e.interpolation,viewProviders:e.viewProviders||null};TB++;try{if(h.usesInheritance&&yN(t),a=u.compileComponent($r,d,h),e.standalone){const m=gu(e.imports||kt),{directiveDefs:E,pipeDefs:v}=function GY(t,e){let a=null,u=null;return{directiveDefs:()=>{if(ik)return _1(t)?[...h4.getStandaloneComponentScope(t,e).compilation.directives].map(d=>za(d)||Pu(d)).filter(d=>null!==d):[];if(null===a){a=[za(t)];const o=new Set([t]);for(const d of e){const h=se(d);if(!o.has(h))if(o.add(h),si(h)){const m=ug(h);for(const E of m.exported.directives){const v=za(E)||Pu(E);v&&!o.has(E)&&(o.add(E),a.push(v))}}else{const m=za(h)||Pu(h);m&&a.push(m)}}}return a},pipeDefs:()=>{if(ik)return _1(t)?[...h4.getStandaloneComponentScope(t,e).compilation.pipes].map(d=>fi(d)).filter(d=>null!==d):[];if(null===u){u=[];const o=new Set;for(const d of e){const h=se(d);if(!o.has(h))if(o.add(h),si(h)){const m=ug(h);for(const E of m.exported.pipes){const v=fi(E);v&&!o.has(E)&&(o.add(E),u.push(v))}}else{const m=fi(h);m&&u.push(m)}}}return u}}}(t,m);a.directiveDefs=E,a.pipeDefs=v,a.dependencies=()=>m.map(se)}}finally{TB--}if(0===TB&&function PY(){if(!zB){zB=!0;try{for(let t=Uk.length-1;t>=0;t--){const{moduleType:e,ngModule:a}=Uk[t];a.declarations&&a.declarations.every(EN)&&(Uk.splice(t,1),VY(e,a))}}finally{zB=!1}}}(),function KY(t){return void 0!==t.ngSelectorScope}(t)){const m=ug(t.ngSelectorScope);bN(a,m)}if(e.schemas){if(!e.standalone)throw new Error(`The 'schemas' was specified for the ${ot(t)} but is only valid on a component that is standalone.`);a.schemas=e.schemas}else e.standalone&&(a.schemas=[])}return a},configurable:!1})}function xN(t,e){let a=null;fN(t,e||{}),Object.defineProperty(t,e5,{get:()=>{if(null===a){const u=DN(t,e||{});a=Ci().compileDirective($r,u.sourceMapUrl,u.metadata)}return a},configurable:!1})}function DN(t,e){const a=t&&t.name,u=`ng:///${a}/\u0275dir.js`,i=Ci(),r=CN(t,e);return r.typeSourceSpan=i.createParseSourceSpan("Directive",a,u),r.usesInheritance&&yN(t),{metadata:r,sourceMapUrl:u}}function fN(t,e){let a=null;Object.defineProperty(t,Io,{get:()=>{if(null===a){const u=DN(t,e),i=Ci();a=i.compileFactory($r,`ng:///${t.name}/\u0275fac.js`,{name:u.metadata.name,type:u.metadata.type,typeArgumentCount:0,deps:Hr(t),target:i.FactoryTarget.Directive})}return a},configurable:!1})}function WY(t){return Object.getPrototypeOf(t.prototype)===Object.prototype}function CN(t,e){const a=Ad(),u=a.ownPropMetadata(t);return{name:t.name,type:t,selector:void 0!==e.selector?e.selector:null,host:e.host||so,propMetadata:u,inputs:e.inputs||kt,outputs:e.outputs||kt,queries:_N(t,u,FN),lifecycle:{usesOnChanges:a.hasLifecycleHook(t,"ngOnChanges")},typeSourceSpan:null,usesInheritance:!WY(t),exportAs:ZY(e.exportAs),providers:e.providers||null,viewQueries:_N(t,u,AN),isStandalone:!!e.standalone,isSignal:!!e.signals,hostDirectives:e.hostDirectives?.map(i=>"function"==typeof i?{directive:i}:i)||null}}function yN(t){const e=Object.prototype;let a=Object.getPrototypeOf(t.prototype).constructor;for(;a&&a!==e;)!Pu(a)&&!za(a)&&qY(a)&&xN(a,null),a=Object.getPrototypeOf(a)}function UY(t){return"string"==typeof t?BN(t):se(t)}function JY(t,e){return{propertyName:t,predicate:UY(e.selector),descendants:e.descendants,first:e.first,read:e.read?e.read:null,static:!!e.static,emitDistinctChangesOnly:!!e.emitDistinctChangesOnly,isSignal:!!e.isSignal}}function _N(t,e,a){const u=[];for(const i in e)if(e.hasOwnProperty(i)){const r=e[i];r.forEach(o=>{if(a(o)){if(!o.selector)throw new Error(`Can't construct a query for the property "${i}" of "${ot(t)}" since the query selector wasn't defined.`);if(r.some(wN))throw new Error("Cannot combine @Input decorators with query decorators");u.push(JY(i,o))}})}return u}function ZY(t){return void 0===t?null:BN(t)}function FN(t){const e=t.ngMetadataName;return"ContentChild"===e||"ContentChildren"===e}function AN(t){const e=t.ngMetadataName;return"ViewChild"===e||"ViewChildren"===e}function wN(t){return"Input"===t.ngMetadataName}function BN(t){return t.split(",").map(e=>e.trim())}const $Y=["ngOnChanges","ngOnInit","ngOnDestroy","ngDoCheck","ngAfterViewInit","ngAfterViewChecked","ngAfterContentInit","ngAfterContentChecked"];function qY(t){const e=Ad();if($Y.some(u=>e.hasLifecycleHook(t,u)))return!0;const a=e.propMetadata(t);for(const u in a){const i=a[u];for(let r=0;rt,void 0,void 0,(t,e)=>xN(t,e)),xa=pu("Component",(t={})=>({changeDetection:ld.Default,...t}),QY,void 0,(t,e)=>OY(t,e)),Yo=(pu("Pipe",t=>({pure:!0,...t}),void 0,void 0,(t,e)=>function YY(t,e){let a=null,u=null;Object.defineProperty(t,Io,{get:()=>{if(null===u){const i=SN(t,e),r=Ci(i.type);u=r.compileFactory($r,`ng:///${i.name}/\u0275fac.js`,{name:i.name,type:i.type,typeArgumentCount:0,deps:Hr(t),target:r.FactoryTarget.Pipe})}return u},configurable:!1}),Object.defineProperty(t,tm,{get:()=>{if(null===a){const i=SN(t,e);a=Ci(i.type).compilePipe($r,`ng:///${i.name}/\u0275pipe.js`,i)}return a},configurable:!1})}(t,e)),Zt("Input",t=>t?"string"==typeof t?{alias:t}:t:{})),_y=Zt("Output",t=>({alias:t})),PB=(Zt("HostBinding",t=>({hostPropertyName:t})),Zt("HostListener",(t,e)=>({eventName:t,args:e})),pu("NgModule",t=>t,void 0,void 0,(t,e)=>NY(t,e)));class ig{constructor(e){this.full=e;const a=e.split(".");this.major=a[0],this.minor=a[1],this.patch=a.slice(2).join(".")}}new ig("18.0.0");class q1{log(e){console.log(e)}warn(e){console.warn(e)}static#e=this.\u0275fac=function(a){return new(a||q1)};static#a=this.\u0275prov=he({token:q1,factory:q1.\u0275fac,providedIn:"platform"})}new class XY{constructor(){this.resolverToTokenToDependencies=new WeakMap,this.resolverToProviders=new WeakMap,this.standaloneInjectorToComponent=new WeakMap}reset(){this.resolverToTokenToDependencies=new WeakMap,this.resolverToProviders=new WeakMap,this.standaloneInjectorToComponent=new WeakMap}};const PN=new V(""),Ay=new V("");class N4{constructor(e,a,u){this._ngZone=e,this.registry=a,this._isZoneStable=!0,this._callbacks=[],this.taskTrackingZone=null,IB||(function yQ(t){IB=t}(u),u.addToWindow(a)),this._watchAngularEvents(),e.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{ut.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}isStable(){return this._isZoneStable&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let e=this._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb()}});else{let e=this.getPendingTasks();this._callbacks=this._callbacks.filter(a=>!a.updateCb||!a.updateCb(e)||(clearTimeout(a.timeoutId),!1))}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,a,u){let i=-1;a&&a>0&&(i=setTimeout(()=>{this._callbacks=this._callbacks.filter(r=>r.timeoutId!==i),e()},a)),this._callbacks.push({doneCb:e,timeoutId:i,updateCb:u})}whenStable(e,a,u){if(u&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(e,a,u),this._runCallbacksIfReady()}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,a,u){return[]}static#e=this.\u0275fac=function(a){return new(a||N4)(fe(ut),fe(I4),fe(Ay))};static#a=this.\u0275prov=he({token:N4,factory:N4.\u0275fac})}class I4{constructor(){this._applications=new Map}registerApplication(e,a){this._applications.set(e,a)}unregisterApplication(e){this._applications.delete(e)}unregisterAllApplications(){this._applications.clear()}getTestability(e){return this._applications.get(e)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(e,a=!0){return IB?.findTestabilityInTree(this,e,a)??null}static#e=this.\u0275fac=function(a){return new(a||I4)};static#a=this.\u0275prov=he({token:I4,factory:I4.\u0275fac,providedIn:"platform"})}let IB;function Zk(t){return!!t&&"function"==typeof t.then}function NN(t){return!!t&&"function"==typeof t.subscribe}const wy=new V("");class R4{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((e,a)=>{this.resolve=e,this.reject=a}),this.appInits=U(wy,{optional:!0})??[]}runInitializers(){if(this.initialized)return;const e=[];for(const u of this.appInits){const i=u();if(Zk(i))e.push(i);else if(NN(i)){const r=new Promise((o,d)=>{i.subscribe({complete:o,error:d})});e.push(r)}}const a=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{a()}).catch(u=>{this.reject(u)}),0===e.length&&a(),this.initialized=!0}static#e=this.\u0275fac=function(a){return new(a||R4)};static#a=this.\u0275prov=he({token:R4,factory:R4.\u0275fac,providedIn:"root"})}const By=new V("");function IN(){!function uo(t){$i=t}(()=>{throw new J(600,!1)})}function RN(t,e,a){try{const u=a();return Zk(u)?u.catch(i=>{throw e.runOutsideAngular(()=>t.handleError(i)),i}):u}catch(u){throw e.runOutsideAngular(()=>t.handleError(u)),u}}function HN(t,e){return Array.isArray(e)?e.reduce(HN,t):{...t,...e}}class wn{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=U(Md),this.afterRenderEffectManager=U(Es),this.zonelessEnabled=U(y1),this.externalTestViews=new Set,this.beforeRender=new Gt,this.afterTick=new Gt,this.componentTypes=[],this.components=[],this.isStable=U(Wr).hasPendingTasks.pipe(Qe(e=>!e)),this._injector=U(Pi)}get allViews(){return[...this.externalTestViews.keys(),...this._views]}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(e,a){const u=e instanceof s4;if(!this._injector.get(R4).done){!u&&n0(e);throw new J(405,!1)}let r;r=u?e:this._injector.get(d4).resolveComponentFactory(e),this.componentTypes.push(r.componentType);const o=function _Q(t){return t.isBoundToModule}(r)?void 0:this._injector.get(Kd),d=a||r.selector,h=r.create(Ut.NULL,[],d,o),m=h.location.nativeElement,E=h.injector.get(PN,null);return E?.registerApplication(m),h.onDestroy(()=>{this.detachView(h.hostView),Sy(this.components,h),E?.unregisterApplication(m)}),this._loadComponent(h),h}tick(){this._tick(!0)}_tick(e){if(this._runningTick)throw new J(101,!1);const a=me(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(e)}catch(u){this.internalErrorHandler(u)}finally{this._runningTick=!1,me(a),this.afterTick.next()}}detectChangesInAttachedViews(e){let a=null;this._injector.destroyed||(a=this._injector.get($b,null,{optional:!0}));let u=0;const i=this.afterRenderEffectManager;for(;u<10;){const r=0===u;if(e||!r){this.beforeRender.next(r);for(let{_lView:o,notifyErrorHandler:d}of this._views)AQ(o,d,r,this.zonelessEnabled)}else a?.begin?.(),a?.end?.();if(u++,i.executeInternalCallbacks(),!this.allViews.some(({_lView:o})=>Ir(o))&&(i.execute(),!this.allViews.some(({_lView:o})=>Ir(o))))break}}attachView(e){const a=e;this._views.push(a),a.attachToAppRef(this)}detachView(e){const a=e;Sy(this._views,a),a.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView),this.tick(),this.components.push(e);const a=this._injector.get(By,[]);[...this._bootstrapListeners,...a].forEach(u=>u(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>Sy(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new J(406,!1);const e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}static#e=this.\u0275fac=function(a){return new(a||wn)};static#a=this.\u0275prov=he({token:wn,factory:wn.\u0275fac,providedIn:"root"})}function Sy(t,e){const a=t.indexOf(e);a>-1&&t.splice(a,1)}function AQ(t,e,a,u){(a||Ir(t))&&cE(t,e,a&&!u?0:1)}class wQ{constructor(e,a){this.ngModuleFactory=e,this.componentFactories=a}}class $d{compileModuleSync(e){return new Ck(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){const a=this.compileModuleSync(e),i=Or(si(e).declarations).reduce((r,o)=>{const d=za(o);return d&&r.push(new p4(d)),r},[]);return new wQ(a,i)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}static#e=this.\u0275fac=function(a){return new(a||$d)};static#a=this.\u0275prov=he({token:$d,factory:$d.\u0275fac,providedIn:"root"})}const My=new V("");function SQ(t,e,a){const u=new Ck(a);if(typeof ngJitMode<"u"&&!ngJitMode)return Promise.resolve(u);const i=t.get(My,[]).concat(e);if(function MY(t){null!==tg&&(t.defaultEncapsulation!==tg.defaultEncapsulation||t.preserveWhitespaces!==tg.preserveWhitespaces)||(tg=t)}({defaultEncapsulation:jN(i.map(m=>m.defaultEncapsulation)),preserveWhitespaces:jN(i.map(m=>m.preserveWhitespaces))}),function SC(){return 0===Gd.size}())return Promise.resolve(u);const r=i.flatMap(m=>m.providers??[]);if(0===r.length)return Promise.resolve(u);const o=Ci(),h=Ut.create({providers:r}).get(o.ResourceLoader);return P8(m=>Promise.resolve(h.get(m))).then(()=>u)}function jN(t){for(let e=t.length-1;e>=0;e--)if(void 0!==t[e])return t[e]}const zQ=!0;class Y1{constructor(){this.appRef=U(wn),this.taskService=U(Wr),this.ngZone=U(ut),this.zonelessEnabled=U(y1),this.disableScheduling=U(Vi,{optional:!0})??!1,this.zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run,this.schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}],this.subscriptions=new Ce,this.cancelScheduledCallback=null,this.shouldRefreshViews=!1,this.useMicrotaskScheduler=!1,this.runningTick=!1,this.pendingRenderTaskId=null,this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{this.runningTick||this.cleanup()})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()})),this.disableScheduling||=!this.zonelessEnabled&&(this.ngZone instanceof c4||!this.zoneIsDefined)}notify(e){if(!this.zonelessEnabled&&5===e)return;switch(e){case 3:case 2:case 0:case 4:case 5:case 1:this.shouldRefreshViews=!0}if(!this.shouldScheduleTick())return;const a=this.useMicrotaskScheduler?Yb:eC;this.pendingRenderTaskId=this.taskService.add(),this.zoneIsDefined?Zone.root.run(()=>{this.cancelScheduledCallback=a(()=>{this.tick(this.shouldRefreshViews)})}):this.cancelScheduledCallback=a(()=>{this.tick(this.shouldRefreshViews)})}shouldScheduleTick(){return!(this.disableScheduling||null!==this.pendingRenderTaskId||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&ut.isInAngularZone())}tick(e){if(this.runningTick||this.appRef.destroyed)return;const a=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick(e)},void 0,this.schedulerTickApplyArgs)}catch(u){throw this.taskService.remove(a),u}finally{this.cleanup()}this.useMicrotaskScheduler=!0,Yb(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(a)})}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.shouldRefreshViews=!1,this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,null!==this.pendingRenderTaskId){const e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static#e=this.\u0275fac=function(a){return new(a||Y1)};static#a=this.\u0275prov=he({token:Y1,factory:Y1.\u0275fac,providedIn:"root"})}class $k{constructor(){this.zone=U(ut),this.changeDetectionScheduler=U(k0,{optional:!0}),this.applicationRef=U(wn)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler?.runningTick||this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static#e=this.\u0275fac=function(a){return new(a||$k)};static#a=this.\u0275prov=he({token:$k,factory:$k.\u0275fac,providedIn:"root"})}new V("",{factory:()=>!1});function HB({ngZoneFactory:t,ignoreChangesOutsideZone:e}){return t??=()=>new ut(VB()),[{provide:ut,useFactory:t},{provide:i0,multi:!0,useFactory:()=>{const a=U($k,{optional:!0});return()=>a.initialize()}},{provide:i0,multi:!0,useFactory:()=>{const a=U(qk);return()=>{a.initialize()}}},{provide:Md,useFactory:MQ},!0===e?{provide:Vi,useValue:!0}:[],zQ||!1===e?{provide:k0,useExisting:Y1}:[]]}function MQ(){const t=U(ut),e=U(_n);return a=>t.runOutsideAngular(()=>e.handleError(a))}function VB(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:t?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:t?.runCoalescing??!1}}class qk{constructor(){this.subscription=new Ce,this.initialized=!1,this.zone=U(ut),this.pendingTasks=U(Wr)}initialize(){if(this.initialized)return;this.initialized=!0;let e=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(e=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{ut.assertNotInAngularZone(),queueMicrotask(()=>{null!==e&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(e),e=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{ut.assertInAngularZone(),e??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static#e=this.\u0275fac=function(a){return new(a||qk)};static#a=this.\u0275prov=he({token:qk,factory:qk.\u0275fac,providedIn:"root"})}const qd=new V("",{providedIn:"root",factory:()=>U(qd,Sa.Optional|Sa.SkipSelf)||function LQ(){return typeof $localize<"u"&&$localize.locale||ag}()}),TQ=new V("",{providedIn:"root",factory:()=>"USD"});new V(""),new V("");var KN;!function(t){t[t.Error=0]="Error",t[t.Warning=1]="Warning",t[t.Ignore=2]="Ignore"}(KN||(KN={}));const jB=new V("");class ng{constructor(e){this._injector=e,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(e,a){const u=function ek(t="zone.js",e){return"noop"===t?new c4:"zone.js"===t?new ut(e):t}(a?.ngZone,VB({eventCoalescing:a?.ngZoneEventCoalescing,runCoalescing:a?.ngZoneRunCoalescing}));return u.run(()=>{const i=a?.ignoreChangesOutsideZone,r=function K8(t,e,a){return new fk(t,e,a)}(e.moduleType,this.injector,HB({ngZoneFactory:()=>u,ignoreChangesOutsideZone:i})),o=r.injector.get(_n,null);return u.runOutsideAngular(()=>{const d=u.onError.subscribe({next:h=>{o.handleError(h)}});r.onDestroy(()=>{Sy(this._modules,r),d.unsubscribe()})}),RN(o,u,()=>{const d=r.injector.get(R4);return d.runInitializers(),d.donePromise.then(()=>(lP(r.injector.get(qd,ag)||ag),this._moduleDoBootstrap(r),r))})})}bootstrapModule(e,a=[]){const u=HN({},a);return SQ(this.injector,u,e).then(i=>this.bootstrapModuleFactory(i,u))}_moduleDoBootstrap(e){const a=e.injector.get(wn);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(u=>a.bootstrap(u));else{if(!e.instance.ngDoBootstrap)throw new J(-403,!1);e.instance.ngDoBootstrap(a)}this._modules.push(e)}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new J(404,!1);this._modules.slice().forEach(a=>a.destroy()),this._destroyListeners.forEach(a=>a());const e=this._injector.get(jB,null);e&&(e.forEach(a=>a()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static#e=this.\u0275fac=function(a){return new(a||ng)(fe(Ut))};static#a=this.\u0275prov=he({token:ng,factory:ng.\u0275fac,providedIn:"platform"})}let Q1=null;const WN=new V("");function Ly(t,e,a=[]){const u=`Platform: ${e}`,i=new V(u);return(r=[])=>{let o=OB();if(!o||o.injector.get(WN,!1)){const d=[...a,...r,{provide:i,useValue:!0}];t?t(d):function PQ(t){if(Q1&&!Q1.get(WN,!1))throw new J(400,!1);IN(),Q1=t;const e=t.get(ng);return JN(t),e}(UN(d,u))}return function NQ(t){const e=OB();if(!e)throw new J(401,!1);return e}()}}function UN(t=[],e){return Ut.create({name:e,providers:[{provide:d5,useValue:"platform"},{provide:jB,useValue:new Set([()=>Q1=null])},...t]})}function OB(){return Q1?.get(ng)??null}function JN(t){t.get(kf,null)?.forEach(a=>a())}class dn{static#e=this.__NG_ELEMENT_ID__=RQ}function RQ(t){return function HQ(t,e,a){if(Oo(t)&&!a){const u=Cn(t.index,e);return new D1(u,u)}if(47&t.type){const u=e[iu];return new D1(u,e)}return null}(Pt(),Y(),!(16&~t))}class QN{constructor(){}supports(e){return yk(e)}create(e){return new KQ(e)}}const GQ=(t,e)=>e;class KQ{constructor(e){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=e||GQ}forEachItem(e){let a;for(a=this._itHead;null!==a;a=a._next)e(a)}forEachOperation(e){let a=this._itHead,u=this._removalsHead,i=0,r=null;for(;a||u;){const o=!u||a&&a.currentIndex{o=this._trackByFn(i,d),null!==a&&Object.is(a.trackById,o)?(u&&(a=this._verifyReinsertion(a,d,o,i)),Object.is(a.item,d)||this._addIdentityChange(a,d)):(a=this._mismatch(a,d,o,i),u=!0),a=a._next,i++}),this.length=i;return this._truncate(a),this.collection=e,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let e;for(e=this._previousItHead=this._itHead;null!==e;e=e._next)e._nextPrevious=e._next;for(e=this._additionsHead;null!==e;e=e._nextAdded)e.previousIndex=e.currentIndex;for(this._additionsHead=this._additionsTail=null,e=this._movesHead;null!==e;e=e._nextMoved)e.previousIndex=e.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(e,a,u,i){let r;return null===e?r=this._itTail:(r=e._prev,this._remove(e)),null!==(e=null===this._unlinkedRecords?null:this._unlinkedRecords.get(u,null))?(Object.is(e.item,a)||this._addIdentityChange(e,a),this._reinsertAfter(e,r,i)):null!==(e=null===this._linkedRecords?null:this._linkedRecords.get(u,i))?(Object.is(e.item,a)||this._addIdentityChange(e,a),this._moveAfter(e,r,i)):e=this._addAfter(new WQ(a,u),r,i),e}_verifyReinsertion(e,a,u,i){let r=null===this._unlinkedRecords?null:this._unlinkedRecords.get(u,null);return null!==r?e=this._reinsertAfter(r,e._prev,i):e.currentIndex!=i&&(e.currentIndex=i,this._addToMoves(e,i)),e}_truncate(e){for(;null!==e;){const a=e._next;this._addToRemovals(this._unlink(e)),e=a}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(e,a,u){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(e);const i=e._prevRemoved,r=e._nextRemoved;return null===i?this._removalsHead=r:i._nextRemoved=r,null===r?this._removalsTail=i:r._prevRemoved=i,this._insertAfter(e,a,u),this._addToMoves(e,u),e}_moveAfter(e,a,u){return this._unlink(e),this._insertAfter(e,a,u),this._addToMoves(e,u),e}_addAfter(e,a,u){return this._insertAfter(e,a,u),null===this._additionsTail?this._additionsTail=this._additionsHead=e:this._additionsTail=this._additionsTail._nextAdded=e,e}_insertAfter(e,a,u){const i=null===a?this._itHead:a._next;return e._next=i,e._prev=a,null===i?this._itTail=e:i._prev=e,null===a?this._itHead=e:a._next=e,null===this._linkedRecords&&(this._linkedRecords=new XN),this._linkedRecords.put(e),e.currentIndex=u,e}_remove(e){return this._addToRemovals(this._unlink(e))}_unlink(e){null!==this._linkedRecords&&this._linkedRecords.remove(e);const a=e._prev,u=e._next;return null===a?this._itHead=u:a._next=u,null===u?this._itTail=a:u._prev=a,e}_addToMoves(e,a){return e.previousIndex===a||(null===this._movesTail?this._movesTail=this._movesHead=e:this._movesTail=this._movesTail._nextMoved=e),e}_addToRemovals(e){return null===this._unlinkedRecords&&(this._unlinkedRecords=new XN),this._unlinkedRecords.put(e),e.currentIndex=null,e._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=e,e._prevRemoved=null):(e._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=e),e}_addIdentityChange(e,a){return e.item=a,null===this._identityChangesTail?this._identityChangesTail=this._identityChangesHead=e:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=e,e}}class WQ{constructor(e,a){this.item=e,this.trackById=a,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class UQ{constructor(){this._head=null,this._tail=null}add(e){null===this._head?(this._head=this._tail=e,e._nextDup=null,e._prevDup=null):(this._tail._nextDup=e,e._prevDup=this._tail,e._nextDup=null,this._tail=e)}get(e,a){let u;for(u=this._head;null!==u;u=u._nextDup)if((null===a||a<=u.currentIndex)&&Object.is(u.trackById,e))return u;return null}remove(e){const a=e._prevDup,u=e._nextDup;return null===a?this._head=u:a._nextDup=u,null===u?this._tail=a:u._prevDup=a,null===this._head}}class XN{constructor(){this.map=new Map}put(e){const a=e.trackById;let u=this.map.get(a);u||(u=new UQ,this.map.set(a,u)),u.add(e)}get(e,a){const u=e,i=this.map.get(u);return i?i.get(e,a):null}remove(e){const a=e.trackById;return this.map.get(a).remove(e)&&this.map.delete(a),e}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function eI(t,e,a){const u=t.previousIndex;if(null===u)return u;let i=0;return a&&u{if(a&&a.key===i)this._maybeAddToChanges(a,u),this._appendAfter=a,a=a._next;else{const r=this._getOrCreateRecordForKey(i,u);a=this._insertBeforeOrAppend(a,r)}}),a){a._prev&&(a._prev._next=null),this._removalsHead=a;for(let u=a;null!==u;u=u._nextRemoved)u===this._mapHead&&(this._mapHead=null),this._records.delete(u.key),u._nextRemoved=u._next,u.previousValue=u.currentValue,u.currentValue=null,u._prev=null,u._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(e,a){if(e){const u=e._prev;return a._next=e,a._prev=u,e._prev=a,u&&(u._next=a),e===this._mapHead&&(this._mapHead=a),this._appendAfter=e,e}return this._appendAfter?(this._appendAfter._next=a,a._prev=this._appendAfter):this._mapHead=a,this._appendAfter=a,null}_getOrCreateRecordForKey(e,a){if(this._records.has(e)){const i=this._records.get(e);this._maybeAddToChanges(i,a);const r=i._prev,o=i._next;return r&&(r._next=o),o&&(o._prev=r),i._next=null,i._prev=null,i}const u=new ZQ(e);return this._records.set(e,u),u.currentValue=a,this._addToAdditions(u),u}_reset(){if(this.isDirty){let e;for(this._previousMapHead=this._mapHead,e=this._previousMapHead;null!==e;e=e._next)e._nextPrevious=e._next;for(e=this._changesHead;null!==e;e=e._nextChanged)e.previousValue=e.currentValue;for(e=this._additionsHead;null!=e;e=e._nextAdded)e.previousValue=e.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(e,a){Object.is(a,e.currentValue)||(e.previousValue=e.currentValue,e.currentValue=a,this._addToChanges(e))}_addToAdditions(e){null===this._additionsHead?this._additionsHead=this._additionsTail=e:(this._additionsTail._nextAdded=e,this._additionsTail=e)}_addToChanges(e){null===this._changesHead?this._changesHead=this._changesTail=e:(this._changesTail._nextChanged=e,this._changesTail=e)}_forEach(e,a){e instanceof Map?e.forEach(a):Object.keys(e).forEach(u=>a(e[u],u))}}class ZQ{constructor(e){this.key=e,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function tI(){return new Yd([new QN])}class Yd{static#e=this.\u0275prov=he({token:Yd,providedIn:"root",factory:tI});constructor(e){this.factories=e}static create(e,a){if(null!=a){const u=a.factories.slice();e=e.concat(u)}return new Yd(e)}static extend(e){return{provide:Yd,useFactory:a=>Yd.create(e,a||tI()),deps:[[Yd,new t0,new Ho]]}}find(e){const a=this.factories.find(u=>u.supports(e));if(null!=a)return a;throw new J(901,!1)}}function uI(){return new ys([new aI])}class ys{static#e=this.\u0275prov=he({token:ys,providedIn:"root",factory:uI});constructor(e){this.factories=e}static create(e,a){if(a){const u=a.factories.slice();e=e.concat(u)}return new ys(e)}static extend(e){return{provide:ys,useFactory:a=>ys.create(e,a||uI()),deps:[[ys,new t0,new Ho]]}}find(e){const a=this.factories.find(u=>u.supports(e));if(a)return a;throw new J(901,!1)}}const $Q=[new aI],qQ=[new QN],iI=(new Yd(qQ),new ys($Q),Ly(null,"core",[]));class Yk{constructor(e){}static#e=this.\u0275fac=function(a){return new(a||Yk)(fe(wn))};static#a=this.\u0275mod=en({type:Yk});static#t=this.\u0275inj=P({})}class Hy{constructor(){this.window=null,this.observer=null,this.options=U(cA),this.ngZone=U(ut)}start(){if(typeof PerformanceObserver>"u"||this.options?.disableImageSizeWarning&&this.options?.disableImageLazyLoadWarning)return;this.observer=this.initPerformanceObserver();const e=os(),a=e.defaultView;if(typeof a<"u"){this.window=a;const u=()=>{setTimeout(this.scanImages.bind(this),200)};this.ngZone.runOutsideAngular(()=>{"complete"===e.readyState?u():this.window?.addEventListener("load",u,{once:!0})})}}ngOnDestroy(){this.observer?.disconnect()}initPerformanceObserver(){if(typeof PerformanceObserver>"u")return null;const e=new PerformanceObserver(a=>{const u=a.getEntries();if(0===u.length)return;const r=u[u.length-1].element?.src??"";r.startsWith("data:")||r.startsWith("blob:")||(this.lcpImageUrl=r)});return e.observe({type:"largest-contentful-paint",buffered:!0}),e}scanImages(){const e=os().querySelectorAll("img");let a,u=!1;e.forEach(i=>{if(!this.options?.disableImageSizeWarning)for(const r of e)!r.getAttribute("ng-img")&&this.isOversized(r)&&dX(r.src);!this.options?.disableImageLazyLoadWarning&&this.lcpImageUrl&&i.src===this.lcpImageUrl&&(a=!0,("lazy"!==i.loading||i.getAttribute("ng-img"))&&(u=!0))}),a&&!u&&this.lcpImageUrl&&!this.options?.disableImageLazyLoadWarning&&function sX(t){console.warn(pt(-913,`An image with src ${t} is the Largest Contentful Paint (LCP) element but was given a "loading" value of "lazy", which can negatively impact application loading performance. This warning can be addressed by changing the loading value of the LCP image to "eager", or by using the NgOptimizedImage directive's prioritization utilities. For more information about addressing or disabling this warning, see https://angular.io/errors/NG0913`))}(this.lcpImageUrl)}isOversized(e){if(!this.window)return!1;const a=this.window.getComputedStyle(e);let u=parseFloat(a.getPropertyValue("width")),i=parseFloat(a.getPropertyValue("height"));const r=a.getPropertyValue("box-sizing");if("cover"===a.getPropertyValue("object-fit"))return!1;if("border-box"===r){const x=a.getPropertyValue("padding-top"),f=a.getPropertyValue("padding-right"),C=a.getPropertyValue("padding-bottom"),A=a.getPropertyValue("padding-left");u-=parseFloat(f)+parseFloat(A),i-=parseFloat(x)+parseFloat(C)}const d=e.naturalWidth,h=e.naturalHeight,m=this.window.devicePixelRatio*u,E=this.window.devicePixelRatio*i;return d-m>=1200||h-E>=1200}static#e=this.\u0275fac=function(a){return new(a||Hy)};static#a=this.\u0275prov=he({token:Hy,factory:Hy.\u0275fac,providedIn:"root"})}function dX(t){console.warn(pt(-913,`An image with src ${t} has intrinsic file dimensions much larger than its rendered size. This can negatively impact application loading performance. For more information about addressing or disabling this warning, see https://angular.io/errors/NG0913`))}function _s(t){return"boolean"==typeof t?t:null!=t&&"false"!==t}function FI(t,e=NaN){return isNaN(parseFloat(t))||isNaN(Number(t))?e:Number(t)}function AI(t){const e=me(null);try{return t()}finally{me(e)}}new V("",{providedIn:"root",factory:()=>U(qB)});class qB{static#e=this.\u0275prov=he({token:qB,providedIn:"root",factory:()=>new MX})}class MX{constructor(){this.queuedEffectCount=0,this.queues=new Map,this.pendingTasks=U(Wr),this.taskId=null}scheduleEffect(e){if(this.enqueue(e),null===this.taskId){const a=this.taskId=this.pendingTasks.add();queueMicrotask(()=>{this.flush(),this.pendingTasks.remove(a),this.taskId=null})}}enqueue(e){const a=e.creationZone;this.queues.has(a)||this.queues.set(a,new Set);const u=this.queues.get(a);u.has(e)||(this.queuedEffectCount++,u.add(e))}flush(){for(;this.queuedEffectCount>0;)for(const[e,a]of this.queues)null===e?this.flushQueue(a):e.run(()=>this.flushQueue(a))}flushQueue(e){for(const a of e)e.delete(a),this.queuedEffectCount--,a.run()}}var Oy=W(837);let wI=null;function Qd(){return wI}class IX{}class YB{static#e=this.\u0275fac=function(a){return new(a||YB)};static#a=this.\u0275prov=he({token:YB,factory:()=>window.navigation,providedIn:"platform"})}const Ei=new V("");class lg{historyGo(e){throw new Error("")}static#e=this.\u0275fac=function(a){return new(a||lg)};static#a=this.\u0275prov=he({token:lg,factory:()=>U(ex),providedIn:"platform"})}const BI=new V("");class ex extends lg{constructor(){super(),this._doc=U(Ei),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Qd().getBaseHref(this._doc)}onPopState(e){const a=Qd().getGlobalEventTarget(this._doc,"window");return a.addEventListener("popstate",e,!1),()=>a.removeEventListener("popstate",e)}onHashChange(e){const a=Qd().getGlobalEventTarget(this._doc,"window");return a.addEventListener("hashchange",e,!1),()=>a.removeEventListener("hashchange",e)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(e){this._location.pathname=e}pushState(e,a,u){this._history.pushState(e,a,u)}replaceState(e,a,u){this._history.replaceState(e,a,u)}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}static#e=this.\u0275fac=function(a){return new(a||ex)};static#a=this.\u0275prov=he({token:ex,factory:()=>new ex,providedIn:"platform"})}function QB(t,e){if(0==t.length)return e;if(0==e.length)return t;let a=0;return t.endsWith("/")&&a++,e.startsWith("/")&&a++,2==a?t+e.substring(1):1==a?t+e:t+"/"+e}function SI(t){const e=t.match(/#|\?|$/),a=e&&e.index||t.length,u=a-("/"===t[a-1]?1:0);return t.slice(0,u)+t.slice(a)}function Xd(t){return t&&"?"!==t[0]?"?"+t:t}class Fs{historyGo(e){throw new Error("")}static#e=this.\u0275fac=function(a){return new(a||Fs)};static#a=this.\u0275prov=he({token:Fs,factory:()=>U(sg),providedIn:"root"})}const zI=new V("");class sg extends Fs{constructor(e,a){super(),this._platformLocation=e,this._removeListenerFns=[],this._baseHref=a??this._platformLocation.getBaseHrefFromDOM()??U(Ei).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return QB(this._baseHref,e)}path(e=!1){const a=this._platformLocation.pathname+Xd(this._platformLocation.search),u=this._platformLocation.hash;return u&&e?`${a}${u}`:a}pushState(e,a,u,i){const r=this.prepareExternalUrl(u+Xd(i));this._platformLocation.pushState(e,a,r)}replaceState(e,a,u,i){const r=this.prepareExternalUrl(u+Xd(i));this._platformLocation.replaceState(e,a,r)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static#e=this.\u0275fac=function(a){return new(a||sg)(fe(lg),fe(zI,8))};static#a=this.\u0275prov=he({token:sg,factory:sg.\u0275fac,providedIn:"root"})}class ax extends Fs{constructor(e,a){super(),this._platformLocation=e,this._baseHref="",this._removeListenerFns=[],null!=a&&(this._baseHref=a)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}path(e=!1){const a=this._platformLocation.hash??"#";return a.length>0?a.substring(1):a}prepareExternalUrl(e){const a=QB(this._baseHref,e);return a.length>0?"#"+a:a}pushState(e,a,u,i){let r=this.prepareExternalUrl(u+Xd(i));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.pushState(e,a,r)}replaceState(e,a,u,i){let r=this.prepareExternalUrl(u+Xd(i));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.replaceState(e,a,r)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static#e=this.\u0275fac=function(a){return new(a||ax)(fe(lg),fe(zI,8))};static#a=this.\u0275prov=he({token:ax,factory:ax.\u0275fac})}class ec{constructor(e){this._subject=new aa,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=e;const a=this._locationStrategy.getBaseHref();this._basePath=function VX(t){if(new RegExp("^(https?:)?//").test(t)){const[,a]=t.split(/\/\/[^\/]+/);return a}return t}(SI(MI(a))),this._locationStrategy.onPopState(u=>{this._subject.emit({url:this.path(!0),pop:!0,state:u.state,type:u.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,a=""){return this.path()==this.normalize(e+Xd(a))}normalize(e){return ec.stripTrailingSlash(function HX(t,e){if(!t||!e.startsWith(t))return e;const a=e.substring(t.length);return""===a||["/",";","?","#"].includes(a[0])?a:e}(this._basePath,MI(e)))}prepareExternalUrl(e){return e&&"/"!==e[0]&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,a="",u=null){this._locationStrategy.pushState(u,"",e,a),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Xd(a)),u)}replaceState(e,a="",u=null){this._locationStrategy.replaceState(u,"",e,a),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Xd(a)),u)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){this._locationStrategy.historyGo?.(e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription??=this.subscribe(a=>{this._notifyUrlChangeListeners(a.url,a.state)}),()=>{const a=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(a,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",a){this._urlChangeListeners.forEach(u=>u(e,a))}subscribe(e,a,u){return this._subject.subscribe({next:e,error:a,complete:u})}static#e=this.normalizeQueryParams=Xd;static#a=this.joinWithSlash=QB;static#t=this.stripTrailingSlash=SI;static#u=this.\u0275fac=function(a){return new(a||ec)(fe(Fs))};static#i=this.\u0275prov=he({token:ec,factory:()=>function RX(){return new ec(fe(Fs))}(),providedIn:"root"})}function MI(t){return t.replace(/\/index.html$/,"")}const LI={ADP:[void 0,void 0,0],AFN:[void 0,"\u060b",0],ALL:[void 0,void 0,0],AMD:[void 0,"\u058f",2],AOA:[void 0,"Kz"],ARS:[void 0,"$"],AUD:["A$","$"],AZN:[void 0,"\u20bc"],BAM:[void 0,"KM"],BBD:[void 0,"$"],BDT:[void 0,"\u09f3"],BHD:[void 0,void 0,3],BIF:[void 0,void 0,0],BMD:[void 0,"$"],BND:[void 0,"$"],BOB:[void 0,"Bs"],BRL:["R$"],BSD:[void 0,"$"],BWP:[void 0,"P"],BYN:[void 0,void 0,2],BYR:[void 0,void 0,0],BZD:[void 0,"$"],CAD:["CA$","$",2],CHF:[void 0,void 0,2],CLF:[void 0,void 0,4],CLP:[void 0,"$",0],CNY:["CN\xa5","\xa5"],COP:[void 0,"$",2],CRC:[void 0,"\u20a1",2],CUC:[void 0,"$"],CUP:[void 0,"$"],CZK:[void 0,"K\u010d",2],DJF:[void 0,void 0,0],DKK:[void 0,"kr",2],DOP:[void 0,"$"],EGP:[void 0,"E\xa3"],ESP:[void 0,"\u20a7",0],EUR:["\u20ac"],FJD:[void 0,"$"],FKP:[void 0,"\xa3"],GBP:["\xa3"],GEL:[void 0,"\u20be"],GHS:[void 0,"GH\u20b5"],GIP:[void 0,"\xa3"],GNF:[void 0,"FG",0],GTQ:[void 0,"Q"],GYD:[void 0,"$",2],HKD:["HK$","$"],HNL:[void 0,"L"],HRK:[void 0,"kn"],HUF:[void 0,"Ft",2],IDR:[void 0,"Rp",2],ILS:["\u20aa"],INR:["\u20b9"],IQD:[void 0,void 0,0],IRR:[void 0,void 0,0],ISK:[void 0,"kr",0],ITL:[void 0,void 0,0],JMD:[void 0,"$"],JOD:[void 0,void 0,3],JPY:["\xa5",void 0,0],KHR:[void 0,"\u17db"],KMF:[void 0,"CF",0],KPW:[void 0,"\u20a9",0],KRW:["\u20a9",void 0,0],KWD:[void 0,void 0,3],KYD:[void 0,"$"],KZT:[void 0,"\u20b8"],LAK:[void 0,"\u20ad",0],LBP:[void 0,"L\xa3",0],LKR:[void 0,"Rs"],LRD:[void 0,"$"],LTL:[void 0,"Lt"],LUF:[void 0,void 0,0],LVL:[void 0,"Ls"],LYD:[void 0,void 0,3],MGA:[void 0,"Ar",0],MGF:[void 0,void 0,0],MMK:[void 0,"K",0],MNT:[void 0,"\u20ae",2],MRO:[void 0,void 0,0],MUR:[void 0,"Rs",2],MXN:["MX$","$"],MYR:[void 0,"RM"],NAD:[void 0,"$"],NGN:[void 0,"\u20a6"],NIO:[void 0,"C$"],NOK:[void 0,"kr",2],NPR:[void 0,"Rs"],NZD:["NZ$","$"],OMR:[void 0,void 0,3],PHP:["\u20b1"],PKR:[void 0,"Rs",2],PLN:[void 0,"z\u0142"],PYG:[void 0,"\u20b2",0],RON:[void 0,"lei"],RSD:[void 0,void 0,0],RUB:[void 0,"\u20bd"],RWF:[void 0,"RF",0],SBD:[void 0,"$"],SEK:[void 0,"kr",2],SGD:[void 0,"$"],SHP:[void 0,"\xa3"],SLE:[void 0,void 0,2],SLL:[void 0,void 0,0],SOS:[void 0,void 0,0],SRD:[void 0,"$"],SSP:[void 0,"\xa3"],STD:[void 0,void 0,0],STN:[void 0,"Db"],SYP:[void 0,"\xa3",0],THB:[void 0,"\u0e3f"],TMM:[void 0,void 0,0],TND:[void 0,void 0,3],TOP:[void 0,"T$"],TRL:[void 0,void 0,0],TRY:[void 0,"\u20ba"],TTD:[void 0,"$"],TWD:["NT$","$",2],TZS:[void 0,void 0,2],UAH:[void 0,"\u20b4"],UGX:[void 0,void 0,0],USD:["$"],UYI:[void 0,void 0,0],UYU:[void 0,"$"],UYW:[void 0,void 0,4],UZS:[void 0,void 0,2],VEF:[void 0,"Bs",2],VND:["\u20ab",void 0,0],VUV:[void 0,void 0,0],XAF:["FCFA",void 0,0],XCD:["EC$","$"],XOF:["F\u202fCFA",void 0,0],XPF:["CFPF",void 0,0],XXX:["\xa4"],YER:[void 0,void 0,0],ZAR:[void 0,"R"],ZMK:[void 0,void 0,0],ZMW:[void 0,"ZK"],ZWD:[void 0,void 0,0]};var tx,V4,Er,Qt,_o;!function(t){t[t.Decimal=0]="Decimal",t[t.Percent=1]="Percent",t[t.Currency=2]="Currency",t[t.Scientific=3]="Scientific"}(tx||(tx={})),function(t){t[t.Zero=0]="Zero",t[t.One=1]="One",t[t.Two=2]="Two",t[t.Few=3]="Few",t[t.Many=4]="Many",t[t.Other=5]="Other"}(V4||(V4={})),function(t){t[t.Format=0]="Format",t[t.Standalone=1]="Standalone"}(Er||(Er={})),function(t){t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short"}(Qt||(Qt={})),function(t){t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full"}(_o||(_o={}));const Ki={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};var TI;function Gy(t,e){return jl(Jr(t)[ou.DateFormat],e)}function Ky(t,e){return jl(Jr(t)[ou.TimeFormat],e)}function Wy(t,e){return jl(Jr(t)[ou.DateTimeFormat],e)}function Vl(t,e){const a=Jr(t),u=a[ou.NumberSymbols][e];if(typeof u>"u"){if(e===Ki.CurrencyDecimal)return a[ou.NumberSymbols][Ki.Decimal];if(e===Ki.CurrencyGroup)return a[ou.NumberSymbols][Ki.Group]}return u}function XB(t,e){return Jr(t)[ou.NumberFormats][e]}!function(t){t[t.Sunday=0]="Sunday",t[t.Monday=1]="Monday",t[t.Tuesday=2]="Tuesday",t[t.Wednesday=3]="Wednesday",t[t.Thursday=4]="Thursday",t[t.Friday=5]="Friday",t[t.Saturday=6]="Saturday"}(TI||(TI={}));const JX=nP;function PI(t){if(!t[ou.ExtraData])throw new Error(`Missing extra locale data for the locale "${t[ou.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function jl(t,e){for(let a=e;a>-1;a--)if(typeof t[a]<"u")return t[a];throw new Error("Locale data API: locale data undefined")}function eS(t){const[e,a]=t.split(":");return{hours:+e,minutes:+a}}function qX(t,e,a="en"){const u=function UX(t){return Jr(t)[ou.Currencies]}(a)[t]||LI[t]||[],i=u[1];return"narrow"===e&&"string"==typeof i?i:u[0]||t}const YX=2;const XX=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,Uy={},eee=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/;var As,Mt,Lt;function aee(t,e,a,u){let i=function dee(t){if(RI(t))return t;if("number"==typeof t&&!isNaN(t))return new Date(t);if("string"==typeof t){if(t=t.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(t)){const[i,r=1,o=1]=t.split("-").map(d=>+d);return Jy(i,r-1,o)}const a=parseFloat(t);if(!isNaN(t-a))return new Date(a);let u;if(u=t.match(XX))return function cee(t){const e=new Date(0);let a=0,u=0;const i=t[8]?e.setUTCFullYear:e.setFullYear,r=t[8]?e.setUTCHours:e.setHours;t[9]&&(a=Number(t[9]+t[10]),u=Number(t[9]+t[11])),i.call(e,Number(t[1]),Number(t[2])-1,Number(t[3]));const o=Number(t[4]||0)-a,d=Number(t[5]||0)-u,h=Number(t[6]||0),m=Math.floor(1e3*parseFloat("0."+(t[7]||0)));return r.call(e,o,d,h,m),e}(u)}const e=new Date(t);if(!RI(e))throw new Error(`Unable to convert "${t}" into a date`);return e}(t);e=ac(a,e)||e;let d,o=[];for(;e;){if(d=eee.exec(e),!d){o.push(e);break}{o=o.concat(d.slice(1));const E=o.pop();if(!E)break;e=E}}let h=i.getTimezoneOffset();u&&(h=II(u,h),i=function see(t,e,a){const u=a?-1:1,i=t.getTimezoneOffset(),r=II(e,i);return function lee(t,e){return t=new Date(t.getTime()),t.setMinutes(t.getMinutes()+e),t}(t,u*(r-i))}(i,u,!0));let m="";return o.forEach(E=>{const v=function oee(t){if(tS[t])return tS[t];let e;switch(t){case"G":case"GG":case"GGG":e=ku(Lt.Eras,Qt.Abbreviated);break;case"GGGG":e=ku(Lt.Eras,Qt.Wide);break;case"GGGGG":e=ku(Lt.Eras,Qt.Narrow);break;case"y":e=Wi(Mt.FullYear,1,0,!1,!0);break;case"yy":e=Wi(Mt.FullYear,2,0,!0,!0);break;case"yyy":e=Wi(Mt.FullYear,3,0,!1,!0);break;case"yyyy":e=Wi(Mt.FullYear,4,0,!1,!0);break;case"Y":e=Yy(1);break;case"YY":e=Yy(2,!0);break;case"YYY":e=Yy(3);break;case"YYYY":e=Yy(4);break;case"M":case"L":e=Wi(Mt.Month,1,1);break;case"MM":case"LL":e=Wi(Mt.Month,2,1);break;case"MMM":e=ku(Lt.Months,Qt.Abbreviated);break;case"MMMM":e=ku(Lt.Months,Qt.Wide);break;case"MMMMM":e=ku(Lt.Months,Qt.Narrow);break;case"LLL":e=ku(Lt.Months,Qt.Abbreviated,Er.Standalone);break;case"LLLL":e=ku(Lt.Months,Qt.Wide,Er.Standalone);break;case"LLLLL":e=ku(Lt.Months,Qt.Narrow,Er.Standalone);break;case"w":e=aS(1);break;case"ww":e=aS(2);break;case"W":e=aS(1,!0);break;case"d":e=Wi(Mt.Date,1);break;case"dd":e=Wi(Mt.Date,2);break;case"c":case"cc":e=Wi(Mt.Day,1);break;case"ccc":e=ku(Lt.Days,Qt.Abbreviated,Er.Standalone);break;case"cccc":e=ku(Lt.Days,Qt.Wide,Er.Standalone);break;case"ccccc":e=ku(Lt.Days,Qt.Narrow,Er.Standalone);break;case"cccccc":e=ku(Lt.Days,Qt.Short,Er.Standalone);break;case"E":case"EE":case"EEE":e=ku(Lt.Days,Qt.Abbreviated);break;case"EEEE":e=ku(Lt.Days,Qt.Wide);break;case"EEEEE":e=ku(Lt.Days,Qt.Narrow);break;case"EEEEEE":e=ku(Lt.Days,Qt.Short);break;case"a":case"aa":case"aaa":e=ku(Lt.DayPeriods,Qt.Abbreviated);break;case"aaaa":e=ku(Lt.DayPeriods,Qt.Wide);break;case"aaaaa":e=ku(Lt.DayPeriods,Qt.Narrow);break;case"b":case"bb":case"bbb":e=ku(Lt.DayPeriods,Qt.Abbreviated,Er.Standalone,!0);break;case"bbbb":e=ku(Lt.DayPeriods,Qt.Wide,Er.Standalone,!0);break;case"bbbbb":e=ku(Lt.DayPeriods,Qt.Narrow,Er.Standalone,!0);break;case"B":case"BB":case"BBB":e=ku(Lt.DayPeriods,Qt.Abbreviated,Er.Format,!0);break;case"BBBB":e=ku(Lt.DayPeriods,Qt.Wide,Er.Format,!0);break;case"BBBBB":e=ku(Lt.DayPeriods,Qt.Narrow,Er.Format,!0);break;case"h":e=Wi(Mt.Hours,1,-12);break;case"hh":e=Wi(Mt.Hours,2,-12);break;case"H":e=Wi(Mt.Hours,1);break;case"HH":e=Wi(Mt.Hours,2);break;case"m":e=Wi(Mt.Minutes,1);break;case"mm":e=Wi(Mt.Minutes,2);break;case"s":e=Wi(Mt.Seconds,1);break;case"ss":e=Wi(Mt.Seconds,2);break;case"S":e=Wi(Mt.FractionalSeconds,1);break;case"SS":e=Wi(Mt.FractionalSeconds,2);break;case"SSS":e=Wi(Mt.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=$y(As.Short);break;case"ZZZZZ":e=$y(As.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=$y(As.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=$y(As.Long);break;default:return null}return tS[t]=e,e}(E);m+=v?v(i,a,h):"''"===E?"'":E.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),m}function Jy(t,e,a){const u=new Date(0);return u.setFullYear(t,e,a),u.setHours(0,0,0),u}function ac(t,e){const a=function jX(t){return Jr(t)[ou.LocaleId]}(t);if(Uy[a]??={},Uy[a][e])return Uy[a][e];let u="";switch(e){case"shortDate":u=Gy(t,_o.Short);break;case"mediumDate":u=Gy(t,_o.Medium);break;case"longDate":u=Gy(t,_o.Long);break;case"fullDate":u=Gy(t,_o.Full);break;case"shortTime":u=Ky(t,_o.Short);break;case"mediumTime":u=Ky(t,_o.Medium);break;case"longTime":u=Ky(t,_o.Long);break;case"fullTime":u=Ky(t,_o.Full);break;case"short":const i=ac(t,"shortTime"),r=ac(t,"shortDate");u=Zy(Wy(t,_o.Short),[i,r]);break;case"medium":const o=ac(t,"mediumTime"),d=ac(t,"mediumDate");u=Zy(Wy(t,_o.Medium),[o,d]);break;case"long":const h=ac(t,"longTime"),m=ac(t,"longDate");u=Zy(Wy(t,_o.Long),[h,m]);break;case"full":const E=ac(t,"fullTime"),v=ac(t,"fullDate");u=Zy(Wy(t,_o.Full),[E,v])}return u&&(Uy[a][e]=u),u}function Zy(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,function(a,u){return null!=e&&u in e?e[u]:a})),t}function y0(t,e,a="-",u,i){let r="";(t<0||i&&t<=0)&&(i?t=1-t:(t=-t,r=a));let o=String(t);for(;o.length0||d>-a)&&(d+=a),t===Mt.Hours)0===d&&-12===a&&(d=12);else if(t===Mt.FractionalSeconds)return function tee(t,e){return y0(t,3).substring(0,e)}(d,e);const h=Vl(o,Ki.MinusSign);return y0(d,e,h,u,i)}}function ku(t,e,a=Er.Format,u=!1){return function(i,r){return function iee(t,e,a,u,i,r){switch(a){case Lt.Months:return function KX(t,e,a){const u=Jr(t),r=jl([u[ou.MonthsFormat],u[ou.MonthsStandalone]],e);return jl(r,a)}(e,i,u)[t.getMonth()];case Lt.Days:return function GX(t,e,a){const u=Jr(t),r=jl([u[ou.DaysFormat],u[ou.DaysStandalone]],e);return jl(r,a)}(e,i,u)[t.getDay()];case Lt.DayPeriods:const o=t.getHours(),d=t.getMinutes();if(r){const m=function ZX(t){const e=Jr(t);return PI(e),(e[ou.ExtraData][2]||[]).map(u=>"string"==typeof u?eS(u):[eS(u[0]),eS(u[1])])}(e),E=function $X(t,e,a){const u=Jr(t);PI(u);const r=jl([u[ou.ExtraData][0],u[ou.ExtraData][1]],e)||[];return jl(r,a)||[]}(e,i,u),v=m.findIndex(k=>{if(Array.isArray(k)){const[x,f]=k,C=o>=x.hours&&d>=x.minutes,A=o0?Math.floor(i/60):Math.ceil(i/60);switch(t){case As.Short:return(i>=0?"+":"")+y0(o,2,r)+y0(Math.abs(i%60),2,r);case As.ShortGMT:return"GMT"+(i>=0?"+":"")+y0(o,1,r);case As.Long:return"GMT"+(i>=0?"+":"")+y0(o,2,r)+":"+y0(Math.abs(i%60),2,r);case As.Extended:return 0===u?"Z":(i>=0?"+":"")+y0(o,2,r)+":"+y0(Math.abs(i%60),2,r);default:throw new Error(`Unknown zone width "${t}"`)}}}!function(t){t[t.Short=0]="Short",t[t.ShortGMT=1]="ShortGMT",t[t.Long=2]="Long",t[t.Extended=3]="Extended"}(As||(As={})),function(t){t[t.FullYear=0]="FullYear",t[t.Month=1]="Month",t[t.Date=2]="Date",t[t.Hours=3]="Hours",t[t.Minutes=4]="Minutes",t[t.Seconds=5]="Seconds",t[t.FractionalSeconds=6]="FractionalSeconds",t[t.Day=7]="Day"}(Mt||(Mt={})),function(t){t[t.DayPeriods=0]="DayPeriods",t[t.Days=1]="Days",t[t.Months=2]="Months",t[t.Eras=3]="Eras"}(Lt||(Lt={}));const nee=0,qy=4;function NI(t){const e=t.getDay(),a=0===e?-3:qy-e;return Jy(t.getFullYear(),t.getMonth(),t.getDate()+a)}function aS(t,e=!1){return function(a,u){let i;if(e){const r=new Date(a.getFullYear(),a.getMonth(),1).getDay()-1,o=a.getDate();i=1+Math.floor((o+r)/7)}else{const r=NI(a),o=function ree(t){const e=Jy(t,nee,1).getDay();return Jy(t,0,1+(e<=qy?qy:qy+7)-e)}(r.getFullYear()),d=r.getTime()-o.getTime();i=1+Math.round(d/6048e5)}return y0(i,t,Vl(u,Ki.MinusSign))}}function Yy(t,e=!1){return function(a,u){return y0(NI(a).getFullYear(),t,Vl(u,Ki.MinusSign),e)}}const tS={};function II(t,e){t=t.replace(/:/g,"");const a=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(a)?e:a}function RI(t){return t instanceof Date&&!isNaN(t.valueOf())}const hee=/^(\d+)?\.((\d+)(-(\d+))?)?$/,HI=22,Qy=".",ux="0",mee=";",pee=",",uS="#";function iS(t,e,a,u,i,r,o=!1){let d="",h=!1;if(isFinite(t)){let m=function xee(t){let u,i,r,o,d,e=Math.abs(t)+"",a=0;for((i=e.indexOf(Qy))>-1&&(e=e.replace(Qy,"")),(r=e.search(/e/i))>0?(i<0&&(i=r),i+=+e.slice(r+1),e=e.substring(0,r)):i<0&&(i=e.length),r=0;e.charAt(r)===ux;r++);if(r===(d=e.length))u=[0],i=1;else{for(d--;e.charAt(d)===ux;)d--;for(i-=r,u=[],o=0;r<=d;r++,o++)u[o]=Number(e.charAt(r))}return i>HI&&(u=u.splice(0,HI-1),a=i-1,i=1),{digits:u,exponent:a,integerLen:i}}(t);o&&(m=function kee(t){if(0===t.digits[0])return t;const e=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===e?t.digits.push(0,0):1===e&&t.digits.push(0),t.integerLen+=2),t}(m));let E=e.minInt,v=e.minFrac,k=e.maxFrac;if(r){const z=r.match(hee);if(null===z)throw new Error(`${r} is not a valid digit info`);const L=z[1],M=z[3],j=z[5];null!=L&&(E=rS(L)),null!=M&&(v=rS(M)),null!=j?k=rS(j):null!=M&&v>k&&(k=v)}!function Dee(t,e,a){if(e>a)throw new Error(`The minimum number of digits after fraction (${e}) is higher than the maximum (${a}).`);let u=t.digits,i=u.length-t.integerLen;const r=Math.min(Math.max(e,i),a);let o=r+t.integerLen,d=u[o];if(o>0){u.splice(Math.max(t.integerLen,o));for(let v=o;v=5)if(o-1<0){for(let v=0;v>o;v--)u.unshift(0),t.integerLen++;u.unshift(1),t.integerLen++}else u[o-1]++;for(;i=m?f.pop():h=!1),k>=10?1:0},0);E&&(u.unshift(E),t.integerLen++)}(m,v,k);let x=m.digits,f=m.integerLen;const C=m.exponent;let A=[];for(h=x.every(z=>!z);f0?A=x.splice(f,x.length):(A=x,x=[0]);const w=[];for(x.length>=e.lgSize&&w.unshift(x.splice(-e.lgSize,x.length).join(""));x.length>e.gSize;)w.unshift(x.splice(-e.gSize,x.length).join(""));x.length&&w.unshift(x.join("")),d=w.join(Vl(a,u)),A.length&&(d+=Vl(a,i)+A.join("")),C&&(d+=Vl(a,Ki.Exponential)+"+"+C)}else d=Vl(a,Ki.Infinity);return d=t<0&&!h?e.negPre+d+e.negSuf:e.posPre+d+e.posSuf,d}function gee(t,e,a,u,i){const o=nS(XB(e,tx.Currency),Vl(e,Ki.MinusSign));return o.minFrac=function QX(t){let e;const a=LI[t];return a&&(e=a[2]),"number"==typeof e?e:YX}(u),o.maxFrac=o.minFrac,iS(t,o,e,Ki.CurrencyGroup,Ki.CurrencyDecimal,i).replace("\xa4",a).replace("\xa4","").trim()}function nS(t,e="-"){const a={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},u=t.split(mee),i=u[0],r=u[1],o=-1!==i.indexOf(Qy)?i.split(Qy):[i.substring(0,i.lastIndexOf(ux)+1),i.substring(i.lastIndexOf(ux)+1)],d=o[0],h=o[1]||"";a.posPre=d.substring(0,d.indexOf(uS));for(let E=0;E-1||(i=a.getPluralCategory(t,u),e.indexOf(i)>-1))return i;if(e.indexOf("other")>-1)return"other";throw new Error(`No plural message found for value "${t}"`)}class ix extends dg{constructor(e){super(),this.locale=e}getPluralCategory(e,a){switch(JX(a||this.locale)(e)){case V4.Zero:return"zero";case V4.One:return"one";case V4.Two:return"two";case V4.Few:return"few";case V4.Many:return"many";default:return"other"}}static#e=this.\u0275fac=function(a){return new(a||ix)(fe(qd))};static#a=this.\u0275prov=he({token:ix,factory:ix.\u0275fac})}function OI(t,e){e=encodeURIComponent(e);for(const a of t.split(";")){const u=a.indexOf("="),[i,r]=-1==u?[a,""]:[a.slice(0,u),a.slice(u+1)];if(i.trim()===e)return decodeURIComponent(r)}return null}const oS=/\s+/,GI=[];class X1{constructor(e,a){this._ngEl=e,this._renderer=a,this.initialClasses=GI,this.stateMap=new Map}set klass(e){this.initialClasses=null!=e?e.trim().split(oS):GI}set ngClass(e){this.rawClass="string"==typeof e?e.trim().split(oS):e}ngDoCheck(){for(const a of this.initialClasses)this._updateState(a,!0);const e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(const a of e)this._updateState(a,!0);else if(null!=e)for(const a of Object.keys(e))this._updateState(a,!!e[a]);this._applyStateDiff()}_updateState(e,a){const u=this.stateMap.get(e);void 0!==u?(u.enabled!==a&&(u.changed=!0,u.enabled=a),u.touched=!0):this.stateMap.set(e,{enabled:a,changed:!0,touched:!0})}_applyStateDiff(){for(const e of this.stateMap){const a=e[0],u=e[1];u.changed?(this._toggleClass(a,u.enabled),u.changed=!1):u.touched||(u.enabled&&this._toggleClass(a,!1),this.stateMap.delete(a)),u.touched=!1}}_toggleClass(e,a){(e=e.trim()).length>0&&e.split(oS).forEach(u=>{a?this._renderer.addClass(this._ngEl.nativeElement,u):this._renderer.removeClass(this._ngEl.nativeElement,u)})}static#e=this.\u0275fac=function(a){return new(a||X1)(q(Ht),q(jn))};static#a=this.\u0275dir=Ae({type:X1,selectors:[["","ngClass",""]],inputs:{klass:[0,"class","klass"],ngClass:"ngClass"},standalone:!0})}class cg{constructor(e){this._viewContainerRef=e,this.ngComponentOutlet=null,this._inputsUsed=new Map}_needToReCreateNgModuleInstance(e){return void 0!==e.ngComponentOutletNgModule||void 0!==e.ngComponentOutletNgModuleFactory}_needToReCreateComponentInstance(e){return void 0!==e.ngComponentOutlet||void 0!==e.ngComponentOutletContent||void 0!==e.ngComponentOutletInjector||this._needToReCreateNgModuleInstance(e)}ngOnChanges(e){if(this._needToReCreateComponentInstance(e)&&(this._viewContainerRef.clear(),this._inputsUsed.clear(),this._componentRef=void 0,this.ngComponentOutlet)){const a=this.ngComponentOutletInjector||this._viewContainerRef.parentInjector;this._needToReCreateNgModuleInstance(e)&&(this._moduleRef?.destroy(),this.ngComponentOutletNgModule?this._moduleRef=function OC(t,e){return new fk(t,e??null,[])}(this.ngComponentOutletNgModule,KI(a)):this.ngComponentOutletNgModuleFactory?this._moduleRef=this.ngComponentOutletNgModuleFactory.create(KI(a)):this._moduleRef=void 0),this._componentRef=this._viewContainerRef.createComponent(this.ngComponentOutlet,{injector:a,ngModuleRef:this._moduleRef,projectableNodes:this.ngComponentOutletContent})}}ngDoCheck(){if(this._componentRef){if(this.ngComponentOutletInputs)for(const e of Object.keys(this.ngComponentOutletInputs))this._inputsUsed.set(e,!0);this._applyInputStateDiff(this._componentRef)}}ngOnDestroy(){this._moduleRef?.destroy()}_applyInputStateDiff(e){for(const[a,u]of this._inputsUsed)u?(e.setInput(a,this.ngComponentOutletInputs[a]),this._inputsUsed.set(a,!1)):(e.setInput(a,void 0),this._inputsUsed.delete(a))}static#e=this.\u0275fac=function(a){return new(a||cg)(q(mr))};static#a=this.\u0275dir=Ae({type:cg,selectors:[["","ngComponentOutlet",""]],inputs:{ngComponentOutlet:"ngComponentOutlet",ngComponentOutletInputs:"ngComponentOutletInputs",ngComponentOutletInjector:"ngComponentOutletInjector",ngComponentOutletContent:"ngComponentOutletContent",ngComponentOutletNgModule:"ngComponentOutletNgModule",ngComponentOutletNgModuleFactory:"ngComponentOutletNgModuleFactory"},standalone:!0,features:[tn]})}function KI(t){return t.get(Kd).injector}class fee{constructor(e,a,u,i){this.$implicit=e,this.ngForOf=a,this.index=u,this.count=i}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}class eh{set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}constructor(e,a,u){this._viewContainer=e,this._template=a,this._differs=u,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const e=this._ngForOf;!this._differ&&e&&(this._differ=this._differs.find(e).create(this.ngForTrackBy))}if(this._differ){const e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){const a=this._viewContainer;e.forEachOperation((u,i,r)=>{if(null==u.previousIndex)a.createEmbeddedView(this._template,new fee(u.item,this._ngForOf,-1,-1),null===r?void 0:r);else if(null==r)a.remove(null===i?void 0:i);else if(null!==i){const o=a.get(i);a.move(o,r),WI(o,u)}});for(let u=0,i=a.length;u{WI(a.get(u.currentIndex),u)})}static ngTemplateContextGuard(e,a){return!0}static#e=this.\u0275fac=function(a){return new(a||eh)(q(mr),q(gt),q(Yd))};static#a=this.\u0275dir=Ae({type:eh,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0})}function WI(t,e){t.context.$implicit=e.item}class tc{constructor(e,a){this._viewContainer=e,this._context=new Cee,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=a}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){UI("ngIfThen",e),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){UI("ngIfElse",e),this._elseTemplateRef=e,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(e,a){return!0}static#e=this.\u0275fac=function(a){return new(a||tc)(q(mr),q(gt))};static#a=this.\u0275dir=Ae({type:tc,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0})}class Cee{constructor(){this.$implicit=null,this.ngIf=null}}function UI(t,e){if(e&&!e.createEmbeddedView)throw new Error(`${t} must be a TemplateRef, but received '${le(e)}'.`)}class lS{constructor(e,a){this._viewContainerRef=e,this._templateRef=a,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(e){e&&!this._created?this.create():!e&&this._created&&this.destroy()}}class ah{constructor(){this._defaultViews=[],this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(e){this._ngSwitch=e,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(e){this._defaultViews.push(e)}_matchCase(e){const a=e===this._ngSwitch;return this._lastCasesMatched||=a,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),a}_updateDefaultCases(e){if(this._defaultViews.length>0&&e!==this._defaultUsed){this._defaultUsed=e;for(const a of this._defaultViews)a.enforceState(e)}}static#e=this.\u0275fac=function(a){return new(a||ah)};static#a=this.\u0275dir=Ae({type:ah,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"},standalone:!0})}class hg{constructor(e,a,u){this.ngSwitch=u,u._addCase(),this._view=new lS(e,a)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}static#e=this.\u0275fac=function(a){return new(a||hg)(q(mr),q(gt),q(ah,9))};static#a=this.\u0275dir=Ae({type:hg,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"},standalone:!0})}class mg{constructor(e,a,u){u._addDefault(new lS(e,a))}static#e=this.\u0275fac=function(a){return new(a||mg)(q(mr),q(gt),q(ah,9))};static#a=this.\u0275dir=Ae({type:mg,selectors:[["","ngSwitchDefault",""]],standalone:!0})}class j4{constructor(e){this._localization=e,this._caseViews={}}set ngPlural(e){this._updateView(e)}addCase(e,a){this._caseViews[e]=a}_updateView(e){this._clearViews();const u=jI(e,Object.keys(this._caseViews),this._localization);this._activateView(this._caseViews[u])}_clearViews(){this._activeView&&this._activeView.destroy()}_activateView(e){e&&(this._activeView=e,this._activeView.create())}static#e=this.\u0275fac=function(a){return new(a||j4)(q(dg))};static#a=this.\u0275dir=Ae({type:j4,selectors:[["","ngPlural",""]],inputs:{ngPlural:"ngPlural"},standalone:!0})}class pg{constructor(e,a,u,i){this.value=e;const r=!isNaN(Number(e));i.addCase(r?`=${e}`:e,new lS(u,a))}static#e=this.\u0275fac=function(a){return new(a||pg)(Ii("ngPluralCase"),q(gt),q(mr),q(j4,1))};static#a=this.\u0275dir=Ae({type:pg,selectors:[["","ngPluralCase",""]],standalone:!0})}class Eg{constructor(e,a,u){this._ngEl=e,this._differs=a,this._renderer=u,this._ngStyle=null,this._differ=null}set ngStyle(e){this._ngStyle=e,!this._differ&&e&&(this._differ=this._differs.find(e).create())}ngDoCheck(){if(this._differ){const e=this._differ.diff(this._ngStyle);e&&this._applyChanges(e)}}_setStyle(e,a){const[u,i]=e.split("."),r=-1===u.indexOf("-")?void 0:g0.DashCase;null!=a?this._renderer.setStyle(this._ngEl.nativeElement,u,i?`${a}${i}`:a,r):this._renderer.removeStyle(this._ngEl.nativeElement,u,r)}_applyChanges(e){e.forEachRemovedItem(a=>this._setStyle(a.key,null)),e.forEachAddedItem(a=>this._setStyle(a.key,a.currentValue)),e.forEachChangedItem(a=>this._setStyle(a.key,a.currentValue))}static#e=this.\u0275fac=function(a){return new(a||Eg)(q(Ht),q(ys),q(jn))};static#a=this.\u0275dir=Ae({type:Eg,selectors:[["","ngStyle",""]],inputs:{ngStyle:"ngStyle"},standalone:!0})}class th{constructor(e){this._viewContainerRef=e,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(e){if(this._shouldRecreateView(e)){const a=this._viewContainerRef;if(this._viewRef&&a.remove(a.indexOf(this._viewRef)),!this.ngTemplateOutlet)return void(this._viewRef=null);const u=this._createContextForwardProxy();this._viewRef=a.createEmbeddedView(this.ngTemplateOutlet,u,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,a,u)=>!!this.ngTemplateOutletContext&&Reflect.set(this.ngTemplateOutletContext,a,u),get:(e,a,u)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,a,u)}})}static#e=this.\u0275fac=function(a){return new(a||th)(q(mr))};static#a=this.\u0275dir=Ae({type:th,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[tn]})}function _0(t,e){return new J(2100,!1)}const Aee=new class Fee{createSubscription(e,a){return e.then(a,u=>{throw u})}dispose(e){}},wee=new class _ee{createSubscription(e,a){return AI(()=>e.subscribe({next:a,error:u=>{throw u}}))}dispose(e){AI(()=>e.unsubscribe())}};class O4{constructor(e){this._latestValue=null,this.markForCheckOnValueUpdate=!0,this._subscription=null,this._obj=null,this._strategy=null,this._ref=e}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(e){if(!this._obj){if(e)try{this.markForCheckOnValueUpdate=!1,this._subscribe(e)}finally{this.markForCheckOnValueUpdate=!0}return this._latestValue}return e!==this._obj?(this._dispose(),this.transform(e)):this._latestValue}_subscribe(e){this._obj=e,this._strategy=this._selectStrategy(e),this._subscription=this._strategy.createSubscription(e,a=>this._updateLatestValue(e,a))}_selectStrategy(e){if(Zk(e))return Aee;if(NN(e))return wee;throw _0()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(e,a){e===this._obj&&(this._latestValue=a,this.markForCheckOnValueUpdate&&this._ref?.markForCheck())}static#e=this.\u0275fac=function(a){return new(a||O4)(q(dn,16))};static#a=this.\u0275pipe=xn({name:"async",type:O4,pure:!1,standalone:!0})}class G4{transform(e){if(null==e)return null;if("string"!=typeof e)throw _0();return e.toLowerCase()}static#e=this.\u0275fac=function(a){return new(a||G4)};static#a=this.\u0275pipe=xn({name:"lowercase",type:G4,pure:!0,standalone:!0})}const Bee=/(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])\S*/g;class K4{transform(e){if(null==e)return null;if("string"!=typeof e)throw _0();return e.replace(Bee,a=>a[0].toUpperCase()+a.slice(1).toLowerCase())}static#e=this.\u0275fac=function(a){return new(a||K4)};static#a=this.\u0275pipe=xn({name:"titlecase",type:K4,pure:!0,standalone:!0})}class W4{transform(e){if(null==e)return null;if("string"!=typeof e)throw _0();return e.toUpperCase()}static#e=this.\u0275fac=function(a){return new(a||W4)};static#a=this.\u0275pipe=xn({name:"uppercase",type:W4,pure:!0,standalone:!0})}const zee=new V(""),Mee=new V("");class U4{constructor(e,a,u){this.locale=e,this.defaultTimezone=a,this.defaultOptions=u}transform(e,a,u,i){if(null==e||""===e||e!=e)return null;try{const r=a??this.defaultOptions?.dateFormat??"mediumDate",o=u??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return aee(e,r,i||this.locale,o)}catch(r){throw _0(0,r.message)}}static#e=this.\u0275fac=function(a){return new(a||U4)(q(qd,16),q(zee,24),q(Mee,24))};static#a=this.\u0275pipe=xn({name:"date",type:U4,pure:!0,standalone:!0})}const Lee=/#/g;class J4{constructor(e){this._localization=e}transform(e,a,u){if(null==e)return"";if("object"!=typeof a||null===a)throw _0();return a[jI(e,Object.keys(a),this._localization,u)].replace(Lee,e.toString())}static#e=this.\u0275fac=function(a){return new(a||J4)(q(dg,16))};static#a=this.\u0275pipe=xn({name:"i18nPlural",type:J4,pure:!0,standalone:!0})}class Z4{transform(e,a){if(null==e)return"";if("object"!=typeof a||"string"!=typeof e)throw _0();return a.hasOwnProperty(e)?a[e]:a.hasOwnProperty("other")?a.other:""}static#e=this.\u0275fac=function(a){return new(a||Z4)};static#a=this.\u0275pipe=xn({name:"i18nSelect",type:Z4,pure:!0,standalone:!0})}class gg{transform(e){return JSON.stringify(e,null,2)}static#e=this.\u0275fac=function(a){return new(a||gg)};static#a=this.\u0275pipe=xn({name:"json",type:gg,pure:!1,standalone:!0})}class vg{constructor(e){this.differs=e,this.keyValues=[],this.compareFn=JI}transform(e,a=JI){if(!e||!(e instanceof Map)&&"object"!=typeof e)return null;this.differ??=this.differs.find(e).create();const u=this.differ.diff(e),i=a!==this.compareFn;return u&&(this.keyValues=[],u.forEachItem(r=>{this.keyValues.push(function Tee(t,e){return{key:t,value:e}}(r.key,r.currentValue))})),(u||i)&&(this.keyValues.sort(a),this.compareFn=a),this.keyValues}static#e=this.\u0275fac=function(a){return new(a||vg)(q(ys,16))};static#a=this.\u0275pipe=xn({name:"keyvalue",type:vg,pure:!1,standalone:!0})}function JI(t,e){const a=t.key,u=e.key;if(a===u)return 0;if(void 0===a)return 1;if(void 0===u)return-1;if(null===a)return 1;if(null===u)return-1;if("string"==typeof a&&"string"==typeof u)return afunction Nee(t){return t===cS}(U(Ll))?new Iee(U(Ei),window):new Hee})}class Iee{constructor(e,a){this.document=e,this.window=a,this.offset=()=>[0,0]}setOffset(e){Array.isArray(e)?this.offset=()=>e:this.offset=e}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(e){this.window.scrollTo(e[0],e[1])}scrollToAnchor(e){const a=function Ree(t,e){const a=t.getElementById(e)||t.getElementsByName(e)[0];if(a)return a;if("function"==typeof t.createTreeWalker&&t.body&&"function"==typeof t.body.attachShadow){const u=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT);let i=u.currentNode;for(;i;){const r=i.shadowRoot;if(r){const o=r.getElementById(e)||r.querySelector(`[name="${e}"]`);if(o)return o}i=u.nextNode()}}return null}(this.document,e);a&&(this.scrollToElement(a),a.focus())}setHistoryScrollRestoration(e){this.window.history.scrollRestoration=e}scrollToElement(e){const a=e.getBoundingClientRect(),u=a.left+this.window.pageXOffset,i=a.top+this.window.pageYOffset,r=this.offset();this.window.scrollTo(u-r[0],i-r[1])}}class Hee{setOffset(e){}getScrollPosition(){return[0,0]}scrollToPosition(e){}scrollToAnchor(e){}setHistoryScrollRestoration(e){}}class ZI{}const Xy="20";function bg(t,e){return e_(t)?new URL(t):new URL(t,e.location.href)}function e_(t){return/^https?:\/\//.test(t)}function $I(t){return e_(t)?new URL(t).hostname:t}function qI(t){if("string"!=typeof t||""===t.trim())return!1;try{new URL(t);return!0}catch{return!1}}function jee(t){return t.startsWith("/")?t.slice(1):t}const kg=t=>t.src,pS=new V("",{providedIn:"root",factory:()=>kg});function a_(t,e){return function(u){return qI(u)||function Oee(t,e){throw new J(2959,!1)}(),u=function Vee(t){return t.endsWith("/")?t.slice(0,-1):t}(u),[{provide:pS,useValue:o=>(e_(o.src)&&function Gee(t,e){throw new J(2959,!1)}(0,o.src),t(u,{...o,src:jee(o.src)}))}]}}a_(function Kee(t,e){let a="format=auto";return e.width&&(a+=`,width=${e.width}`),e.isPlaceholder&&(a+=`,quality=${Xy}`),`${t}/cdn-cgi/image/${a}/${e.src}`});a_(function Zee(t,e){let u="f_auto,"+(e.isPlaceholder?"q_auto:low":"q_auto");return e.width&&(u+=`,w_${e.width}`),`${t}/image/upload/${u}/${e.src}`});a_(function Qee(t,e){const{src:a,width:u}=e,i=[];u&&i.push(`w-${u}`),e.isPlaceholder&&i.push(`q-${Xy}`);const r=i.length?[t,`tr:${i.join(",")}`,a]:[t,a];return new URL(r.join("/")).href});a_(function tae(t,e){const a=new URL(`${t}/${e.src}`);return a.searchParams.set("auto","format"),e.width&&a.searchParams.set("w",e.width.toString()),e.isPlaceholder&&a.searchParams.set("q",Xy),a.href});function lu(t,e=!0){return`The NgOptimizedImage directive ${e?`(activated on an element with the \`ngSrc="${t}"\`) `:""}has detected that`}function QI(t){throw new J(2958,`Unexpected invocation of the ${t} in the prod mode. Please make sure that the prod mode is enabled for production builds.`)}class t_{constructor(){this.images=new Map,this.window=null,this.observer=null,QI("LCP checker");const e=U(Ei).defaultView;typeof e<"u"&&typeof PerformanceObserver<"u"&&(this.window=e,this.observer=this.initPerformanceObserver())}initPerformanceObserver(){const e=new PerformanceObserver(a=>{const u=a.getEntries();if(0===u.length)return;const r=u[u.length-1].element?.src??"";if(r.startsWith("data:")||r.startsWith("blob:"))return;const o=this.images.get(r);o&&(!o.priority&&!o.alreadyWarnedPriority&&(o.alreadyWarnedPriority=!0,function oae(t){const e=lu(t);console.error(pt(2955,`${e} this image is the Largest Contentful Paint (LCP) element but was not marked "priority". This image should be marked "priority" in order to prioritize its loading. To fix this, add the "priority" attribute.`))}(r)),o.modified&&!o.alreadyWarnedModified&&(o.alreadyWarnedModified=!0,function lae(t){const e=lu(t);console.warn(pt(2964,`${e} this image is the Largest Contentful Paint (LCP) element and has had its "ngSrc" attribute modified. This can cause slower loading performance. It is recommended not to modify the "ngSrc" property on any image which could be the LCP element.`))}(r)))});return e.observe({type:"largest-contentful-paint",buffered:!0}),e}registerImage(e,a,u){if(!this.observer)return;const i={priority:u,modified:!1,alreadyWarnedModified:!1,alreadyWarnedPriority:!1};this.images.set(bg(e,this.window).href,i)}unregisterImage(e){this.observer&&this.images.delete(bg(e,this.window).href)}updateImage(e,a){const u=bg(e,this.window).href,i=this.images.get(u);i&&(i.modified=!0,this.images.set(bg(a,this.window).href,i),this.images.delete(u))}ngOnDestroy(){this.observer&&(this.observer.disconnect(),this.images.clear())}static#e=this.\u0275fac=function(a){return new(a||t_)};static#a=this.\u0275prov=he({token:t_,factory:t_.\u0275fac,providedIn:"root"})}const sae=new Set(["localhost","127.0.0.1","0.0.0.0"]),dae=new V("");class u_{constructor(){this.document=U(Ei),this.preconnectLinks=null,this.alreadySeen=new Set,this.window=null,this.blocklist=new Set(sae),QI("preconnect link checker");const e=this.document.defaultView;typeof e<"u"&&(this.window=e);const a=U(dae,{optional:!0});a&&this.populateBlocklist(a)}populateBlocklist(e){Array.isArray(e)?XI(e,a=>{this.blocklist.add($I(a))}):this.blocklist.add($I(e))}assertPreconnect(e,a){if(!this.window)return;const u=bg(e,this.window);this.blocklist.has(u.hostname)||this.alreadySeen.has(u.origin)||(this.alreadySeen.add(u.origin),this.preconnectLinks??=this.queryPreconnectLinks(),this.preconnectLinks.has(u.origin)||console.warn(pt(2956,`${lu(a)} there is no preconnect tag present for this image. Preconnecting to the origin(s) that serve priority images ensures that these images are delivered as soon as possible. To fix this, please add the following element into the of the document:\n `)))}queryPreconnectLinks(){const e=new Set,u=Array.from(this.document.querySelectorAll("link[rel=preconnect]"));for(let i of u){const r=bg(i.href,this.window);e.add(r.origin)}return e}ngOnDestroy(){this.preconnectLinks?.clear(),this.alreadySeen.clear()}static#e=this.\u0275fac=function(a){return new(a||u_)};static#a=this.\u0275prov=he({token:u_,factory:u_.\u0275fac,providedIn:"root"})}function XI(t,e){for(let a of t)Array.isArray(a)?XI(a,e):e(a)}const cae=new V("NG_OPTIMIZED_PRELOADED_IMAGES",{providedIn:"root",factory:()=>new Set});class nx{constructor(){this.preloadedImages=U(cae),this.document=U(Ei)}createPreloadLinkTag(e,a,u,i){if(this.preloadedImages.has(a))return;this.preloadedImages.add(a);const r=e.createElement("link");e.setAttribute(r,"as","image"),e.setAttribute(r,"href",a),e.setAttribute(r,"rel","preload"),e.setAttribute(r,"fetchpriority","high"),i&&e.setAttribute(r,"imageSizes",i),u&&e.setAttribute(r,"imageSrcset",u),e.appendChild(this.document.head,r)}static#e=this.\u0275fac=function(a){return new(a||nx)};static#a=this.\u0275prov=he({token:nx,factory:nx.\u0275fac,providedIn:"root"})}const aR=/^((\s*\d+w\s*(,|$)){1,})$/,mae=[1,2];class gS{constructor(){this.imageLoader=U(pS),this.config=function bae(t){let e={};return t.breakpoints&&(e.breakpoints=t.breakpoints.sort((a,u)=>a-u)),Object.assign({},Df,t,e)}(U(cA)),this.renderer=U(jn),this.imgElement=U(Ht).nativeElement,this.injector=U(Ut),this.isServer=hS(U(Ll)),this.preloadLinkCreator=U(nx),this.lcpObserver=null,this._renderedSrc=null,this.priority=!1,this.disableOptimizedSrcset=!1,this.fill=!1}ngOnInit(){cr("NgOptimizedImage"),this.placeholder&&this.removePlaceholderOnLoad(this.imgElement),this.setHostAttributes()}setHostAttributes(){this.fill?this.sizes||="100vw":(this.setHostAttribute("width",this.width.toString()),this.setHostAttribute("height",this.height.toString())),this.setHostAttribute("loading",this.getLoadingBehavior()),this.setHostAttribute("fetchpriority",this.getFetchPriority()),this.setHostAttribute("ng-img","true");const e=this.updateSrcAndSrcset();this.sizes&&this.setHostAttribute("sizes",this.sizes),this.isServer&&this.priority&&this.preloadLinkCreator.createPreloadLinkTag(this.renderer,this.getRewrittenSrc(),e,this.sizes)}ngOnChanges(e){if(e.ngSrc&&!e.ngSrc.isFirstChange()){const a=this._renderedSrc;this.updateSrcAndSrcset(!0);const u=this._renderedSrc;null!==this.lcpObserver&&a&&u&&a!==u&&this.injector.get(ut).runOutsideAngular(()=>{this.lcpObserver?.updateImage(a,u)})}}callImageLoader(e){let a=e;return this.loaderParams&&(a.loaderParams=this.loaderParams),this.imageLoader(a)}getLoadingBehavior(){return this.priority||void 0===this.loading?this.priority?"eager":"lazy":this.loading}getFetchPriority(){return this.priority?"high":"auto"}getRewrittenSrc(){if(!this._renderedSrc){const e={src:this.ngSrc};this._renderedSrc=this.callImageLoader(e)}return this._renderedSrc}getRewrittenSrcset(){const e=aR.test(this.ngSrcset);return this.ngSrcset.split(",").filter(u=>""!==u).map(u=>{u=u.trim();const i=e?parseFloat(u):parseFloat(u)*this.width;return`${this.callImageLoader({src:this.ngSrc,width:i})} ${u}`}).join(", ")}getAutomaticSrcset(){return this.sizes?this.getResponsiveSrcset():this.getFixedSrcset()}getResponsiveSrcset(){const{breakpoints:e}=this.config;let a=e;return"100vw"===this.sizes?.trim()&&(a=e.filter(i=>i>=640)),a.map(i=>`${this.callImageLoader({src:this.ngSrc,width:i})} ${i}w`).join(", ")}updateSrcAndSrcset(e=!1){e&&(this._renderedSrc=null);const a=this.getRewrittenSrc();let u;return this.setHostAttribute("src",a),this.ngSrcset?u=this.getRewrittenSrcset():this.shouldGenerateAutomaticSrcset()&&(u=this.getAutomaticSrcset()),u&&this.setHostAttribute("srcset",u),u}getFixedSrcset(){return mae.map(a=>`${this.callImageLoader({src:this.ngSrc,width:this.width*a})} ${a}x`).join(", ")}shouldGenerateAutomaticSrcset(){let e=!1;return this.sizes||(e=this.width>1920||this.height>1080),!this.disableOptimizedSrcset&&!this.srcset&&this.imageLoader!==kg&&!e}generatePlaceholder(e){const{placeholderResolution:a}=this.config;return!0===e?`url(${this.callImageLoader({src:this.ngSrc,width:a,isPlaceholder:!0})})`:"string"==typeof e&&e.startsWith("data:")?`url(${e})`:null}shouldBlurPlaceholder(e){return!e||!e.hasOwnProperty("blur")||!!e.blur}removePlaceholderOnLoad(e){const a=()=>{const r=this.injector.get(dn);u(),i(),this.placeholder=!1,r.markForCheck()},u=this.renderer.listen(e,"load",a),i=this.renderer.listen(e,"error",a)}ngOnDestroy(){}setHostAttribute(e,a){this.renderer.setAttribute(this.imgElement,e,a)}static#e=this.\u0275fac=function(a){return new(a||gS)};static#a=this.\u0275dir=Ae({type:gS,selectors:[["img","ngSrc",""]],hostVars:18,hostBindings:function(a,u){2&a&&vB("position",u.fill?"absolute":null)("width",u.fill?"100%":null)("height",u.fill?"100%":null)("inset",u.fill?"0":null)("background-size",u.placeholder?"cover":null)("background-position",u.placeholder?"50% 50%":null)("background-repeat",u.placeholder?"no-repeat":null)("background-image",u.placeholder?u.generatePlaceholder(u.placeholder):null)("filter",u.placeholder&&u.shouldBlurPlaceholder(u.placeholderConfig)?"blur(15px)":null)},inputs:{ngSrc:[2,"ngSrc","ngSrc",_ae],ngSrcset:"ngSrcset",sizes:"sizes",width:[2,"width","width",FI],height:[2,"height","height",FI],loading:"loading",priority:[2,"priority","priority",_s],loaderParams:"loaderParams",disableOptimizedSrcset:[2,"disableOptimizedSrcset","disableOptimizedSrcset",_s],fill:[2,"fill","fill",_s],placeholder:[2,"placeholder","placeholder",Fae],placeholderConfig:"placeholderConfig",src:"src",srcset:"srcset"},standalone:!0,features:[RE,tn]})}function _ae(t){return"string"==typeof t?t:sr(t)}function Fae(t){return"string"==typeof t&&t.startsWith("data:")?t:_s(t)}class Aae extends IX{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class vS extends Aae{static makeCurrent(){!function NX(t){wI??=t}(new vS)}onAndCancel(e,a,u){return e.addEventListener(a,u),()=>{e.removeEventListener(a,u)}}dispatchEvent(e,a){e.dispatchEvent(a)}remove(e){e.parentNode&&e.parentNode.removeChild(e)}createElement(e,a){return(a=a||this.getDefaultDocument()).createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,a){return"window"===a?window:"document"===a?e:"body"===a?e.body:null}getBaseHref(e){const a=function wae(){return ox=ox||document.querySelector("base"),ox?ox.getAttribute("href"):null}();return null==a?null:function Bae(t){return new URL(t,document.baseURI).pathname}(a)}resetBaseElement(){ox=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return OI(document.cookie,e)}}let ox=null;class lx{build(){return new XMLHttpRequest}static#e=this.\u0275fac=function(a){return new(a||lx)};static#a=this.\u0275prov=he({token:lx,factory:lx.\u0275fac})}const n_=new V("");class xg{constructor(e,a){this._zone=a,this._eventNameToPlugin=new Map,e.forEach(u=>{u.manager=this}),this._plugins=e.slice().reverse()}addEventListener(e,a,u){return this._findPluginFor(a).addEventListener(e,a,u)}getZone(){return this._zone}_findPluginFor(e){let a=this._eventNameToPlugin.get(e);if(a)return a;if(a=this._plugins.find(i=>i.supports(e)),!a)throw new J(5101,!1);return this._eventNameToPlugin.set(e,a),a}static#e=this.\u0275fac=function(a){return new(a||xg)(fe(n_),fe(ut))};static#a=this.\u0275prov=he({token:xg,factory:xg.\u0275fac})}class bS{constructor(e){this._doc=e}}const kS="ng-app-id";class Dg{constructor(e,a,u,i={}){this.doc=e,this.appId=a,this.nonce=u,this.platformId=i,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=hS(i),this.resetHostNodes()}addStyles(e){for(const a of e)1===this.changeUsageCount(a,1)&&this.onStyleAdded(a)}removeStyles(e){for(const a of e)this.changeUsageCount(a,-1)<=0&&this.onStyleRemoved(a)}ngOnDestroy(){const e=this.styleNodesInDOM;e&&(e.forEach(a=>a.remove()),e.clear());for(const a of this.getAllStyles())this.onStyleRemoved(a);this.resetHostNodes()}addHost(e){this.hostNodes.add(e);for(const a of this.getAllStyles())this.addStyleToHost(e,a)}removeHost(e){this.hostNodes.delete(e)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(e){for(const a of this.hostNodes)this.addStyleToHost(a,e)}onStyleRemoved(e){const a=this.styleRef;a.get(e)?.elements?.forEach(u=>u.remove()),a.delete(e)}collectServerRenderedStyles(){const e=this.doc.head?.querySelectorAll(`style[${kS}="${this.appId}"]`);if(e?.length){const a=new Map;return e.forEach(u=>{null!=u.textContent&&a.set(u.textContent,u)}),a}return null}changeUsageCount(e,a){const u=this.styleRef;if(u.has(e)){const i=u.get(e);return i.usage+=a,i.usage}return u.set(e,{usage:a,elements:[]}),a}getStyleElement(e,a){const u=this.styleNodesInDOM,i=u?.get(a);if(i?.parentNode===e)return u.delete(a),i.removeAttribute(kS),i;{const r=this.doc.createElement("style");return this.nonce&&r.setAttribute("nonce",this.nonce),r.textContent=a,this.platformIsServer&&r.setAttribute(kS,this.appId),e.appendChild(r),r}}addStyleToHost(e,a){const u=this.getStyleElement(e,a),i=this.styleRef,r=i.get(a)?.elements;r?r.push(u):i.set(a,{elements:[u],usage:1})}resetHostNodes(){const e=this.hostNodes;e.clear(),e.add(this.doc.head)}static#e=this.\u0275fac=function(a){return new(a||Dg)(fe(Ei),fe(zm),fe(xf,8),fe(Ll))};static#a=this.\u0275prov=he({token:Dg,factory:Dg.\u0275fac})}const xS={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/Math/MathML"},DS=/%COMP%/g,zae="_nghost-%COMP%",Mae="_ngcontent-%COMP%",Tae=new V("",{providedIn:"root",factory:()=>true});function oR(t,e){return e.map(a=>a.replace(DS,t))}class fg{constructor(e,a,u,i,r,o,d,h=null){this.eventManager=e,this.sharedStylesHost=a,this.appId=u,this.removeStylesOnCompDestroy=i,this.doc=r,this.platformId=o,this.ngZone=d,this.nonce=h,this.rendererByCompId=new Map,this.platformIsServer=hS(o),this.defaultRenderer=new fS(e,r,d,this.platformIsServer)}createRenderer(e,a){if(!e||!a)return this.defaultRenderer;this.platformIsServer&&a.encapsulation===Tt.ShadowDom&&(a={...a,encapsulation:Tt.Emulated});const u=this.getOrCreateRenderer(e,a);return u instanceof sR?u.applyToHost(e):u instanceof CS&&u.applyStyles(),u}getOrCreateRenderer(e,a){const u=this.rendererByCompId;let i=u.get(a.id);if(!i){const r=this.doc,o=this.ngZone,d=this.eventManager,h=this.sharedStylesHost,m=this.removeStylesOnCompDestroy,E=this.platformIsServer;switch(a.encapsulation){case Tt.Emulated:i=new sR(d,h,a,this.appId,m,r,o,E);break;case Tt.ShadowDom:return new Rae(d,h,e,a,r,o,this.nonce,E);default:i=new CS(d,h,a,m,r,o,E)}u.set(a.id,i)}return i}ngOnDestroy(){this.rendererByCompId.clear()}static#e=this.\u0275fac=function(a){return new(a||fg)(fe(xg),fe(Dg),fe(zm),fe(Tae),fe(Ei),fe(Ll),fe(ut),fe(xf))};static#a=this.\u0275prov=he({token:fg,factory:fg.\u0275fac})}class fS{constructor(e,a,u,i){this.eventManager=e,this.doc=a,this.ngZone=u,this.platformIsServer=i,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(e,a){return a?this.doc.createElementNS(xS[a]||a,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,a){(lR(e)?e.content:e).appendChild(a)}insertBefore(e,a,u){e&&(lR(e)?e.content:e).insertBefore(a,u)}removeChild(e,a){e&&e.removeChild(a)}selectRootElement(e,a){let u="string"==typeof e?this.doc.querySelector(e):e;if(!u)throw new J(-5104,!1);return a||(u.textContent=""),u}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,a,u,i){if(i){a=i+":"+a;const r=xS[i];r?e.setAttributeNS(r,a,u):e.setAttribute(a,u)}else e.setAttribute(a,u)}removeAttribute(e,a,u){if(u){const i=xS[u];i?e.removeAttributeNS(i,a):e.removeAttribute(`${u}:${a}`)}else e.removeAttribute(a)}addClass(e,a){e.classList.add(a)}removeClass(e,a){e.classList.remove(a)}setStyle(e,a,u,i){i&(g0.DashCase|g0.Important)?e.style.setProperty(a,u,i&g0.Important?"important":""):e.style[a]=u}removeStyle(e,a,u){u&g0.DashCase?e.style.removeProperty(a):e.style[a]=""}setProperty(e,a,u){null!=e&&(e[a]=u)}setValue(e,a){e.nodeValue=a}listen(e,a,u){if("string"==typeof e&&!(e=Qd().getGlobalEventTarget(this.doc,e)))throw new Error(`Unsupported event target ${e} for event ${a}`);return this.eventManager.addEventListener(e,a,this.decoratePreventDefault(u))}decoratePreventDefault(e){return a=>{if("__ngUnwrap__"===a)return e;!1===(this.platformIsServer?this.ngZone.runGuarded(()=>e(a)):e(a))&&a.preventDefault()}}}function lR(t){return"TEMPLATE"===t.tagName&&void 0!==t.content}class Rae extends fS{constructor(e,a,u,i,r,o,d,h){super(e,r,o,h),this.sharedStylesHost=a,this.hostEl=u,this.shadowRoot=u.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const m=oR(i.id,i.styles);for(const E of m){const v=document.createElement("style");d&&v.setAttribute("nonce",d),v.textContent=E,this.shadowRoot.appendChild(v)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,a){return super.appendChild(this.nodeOrShadowRoot(e),a)}insertBefore(e,a,u){return super.insertBefore(this.nodeOrShadowRoot(e),a,u)}removeChild(e,a){return super.removeChild(this.nodeOrShadowRoot(e),a)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class CS extends fS{constructor(e,a,u,i,r,o,d,h){super(e,r,o,d),this.sharedStylesHost=a,this.removeStylesOnCompDestroy=i,this.styles=h?oR(h,u.styles):u.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}}class sR extends CS{constructor(e,a,u,i,r,o,d,h){const m=i+"-"+u.id;super(e,a,u,r,o,d,h,m),this.contentAttr=function Pae(t){return Mae.replace(DS,t)}(m),this.hostAttr=function Nae(t){return zae.replace(DS,t)}(m)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,"")}createElement(e,a){const u=super.createElement(e,a);return super.setAttribute(u,this.contentAttr,""),u}}class sx extends bS{constructor(e){super(e)}supports(e){return!0}addEventListener(e,a,u){return e.addEventListener(a,u,!1),()=>this.removeEventListener(e,a,u)}removeEventListener(e,a,u){return e.removeEventListener(a,u)}static#e=this.\u0275fac=function(a){return new(a||sx)(fe(Ei))};static#a=this.\u0275prov=he({token:sx,factory:sx.\u0275fac})}const dR=["alt","control","meta","shift"],Hae={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},Vae={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};class Bs extends bS{constructor(e){super(e)}supports(e){return null!=Bs.parseEventName(e)}addEventListener(e,a,u){const i=Bs.parseEventName(a),r=Bs.eventCallback(i.fullKey,u,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Qd().onAndCancel(e,i.domEventName,r))}static parseEventName(e){const a=e.toLowerCase().split("."),u=a.shift();if(0===a.length||"keydown"!==u&&"keyup"!==u)return null;const i=Bs._normalizeKey(a.pop());let r="",o=a.indexOf("code");if(o>-1&&(a.splice(o,1),r="code."),dR.forEach(h=>{const m=a.indexOf(h);m>-1&&(a.splice(m,1),r+=h+".")}),r+=i,0!=a.length||0===i.length)return null;const d={};return d.domEventName=u,d.fullKey=r,d}static matchEventFullKeyCode(e,a){let u=Hae[e.key]||e.key,i="";return a.indexOf("code.")>-1&&(u=e.code,i="code."),!(null==u||!u)&&(u=u.toLowerCase()," "===u?u="space":"."===u&&(u="dot"),dR.forEach(r=>{if(r!==u){(0,Vae[r])(e)&&(i+=r+".")}}),i+=u,i===a)}static eventCallback(e,a,u){return i=>{Bs.matchEventFullKeyCode(i,e)&&u.runGuarded(()=>a(i))}}static _normalizeKey(e){return"esc"===e?"escape":e}static#e=this.\u0275fac=function(a){return new(a||Bs)(fe(Ei))};static#a=this.\u0275prov=he({token:Bs,factory:Bs.\u0275fac})}const yS=[{provide:Ll,useValue:cS},{provide:kf,useValue:function jae(){vS.makeCurrent()},multi:!0},{provide:Ei,useFactory:function Gae(){return function sA(t){G5=t}(document),document},deps:[]}],Kae=(Ly(iI,"browser",yS),new V("")),hR=[{provide:Ay,useClass:class Sae{addToWindow(e){Ja.getAngularTestability=(u,i=!0)=>{const r=e.findTestabilityInTree(u,i);if(null==r)throw new J(5103,!1);return r},Ja.getAllAngularTestabilities=()=>e.getAllTestabilities(),Ja.getAllAngularRootElements=()=>e.getAllRootElements();Ja.frameworkStabilizers||(Ja.frameworkStabilizers=[]),Ja.frameworkStabilizers.push(u=>{const i=Ja.getAllAngularTestabilities();let r=i.length;const o=function(){r--,0==r&&u()};i.forEach(d=>{d.whenStable(o)})})}findTestabilityInTree(e,a,u){if(null==a)return null;return e.getTestability(a)??(u?Qd().isShadowRoot(a)?this.findTestabilityInTree(e,a.host,!0):this.findTestabilityInTree(e,a.parentElement,!0):null)}},deps:[]},{provide:PN,useClass:N4,deps:[ut,I4,Ay]},{provide:N4,useClass:N4,deps:[ut,I4,Ay]}],mR=[{provide:d5,useValue:"root"},{provide:_n,useFactory:function Oae(){return new _n},deps:[]},{provide:n_,useClass:sx,multi:!0,deps:[Ei,ut,Ll]},{provide:n_,useClass:Bs,multi:!0,deps:[Ei]},fg,Dg,xg,{provide:$b,useExisting:fg},{provide:ZI,useClass:lx,deps:[]},[]];class dx{constructor(e){}static withServerTransition(e){return{ngModule:dx,providers:[{provide:zm,useValue:e.appId}]}}static#e=this.\u0275fac=function(a){return new(a||dx)(fe(Kae,12))};static#a=this.\u0275mod=en({type:dx,exports:[ws,Yk]});static#t=this.\u0275inj=P({providers:[...mR,...hR],imports:[ws,Yk]})}class r_{constructor(e){this._doc=e,this._dom=Qd()}addTag(e,a=!1){return e?this._getOrCreateElement(e,a):null}addTags(e,a=!1){return e?e.reduce((u,i)=>(i&&u.push(this._getOrCreateElement(i,a)),u),[]):[]}getTag(e){return e&&this._doc.querySelector(`meta[${e}]`)||null}getTags(e){if(!e)return[];const a=this._doc.querySelectorAll(`meta[${e}]`);return a?[].slice.call(a):[]}updateTag(e,a){if(!e)return null;a=a||this._parseSelector(e);const u=this.getTag(a);return u?this._setMetaElementAttributes(e,u):this._getOrCreateElement(e,!0)}removeTag(e){this.removeTagElement(this.getTag(e))}removeTagElement(e){e&&this._dom.remove(e)}_getOrCreateElement(e,a=!1){if(!a){const r=this._parseSelector(e),o=this.getTags(r).filter(d=>this._containsAttributes(e,d))[0];if(void 0!==o)return o}const u=this._dom.createElement("meta");return this._setMetaElementAttributes(e,u),this._doc.getElementsByTagName("head")[0].appendChild(u),u}_setMetaElementAttributes(e,a){return Object.keys(e).forEach(u=>a.setAttribute(this._getMetaKeyMap(u),e[u])),a}_parseSelector(e){const a=e.name?"name":"property";return`${a}="${e[a]}"`}_containsAttributes(e,a){return Object.keys(e).every(u=>a.getAttribute(this._getMetaKeyMap(u))===e[u])}_getMetaKeyMap(e){return Wae[e]||e}static#e=this.\u0275fac=function(a){return new(a||r_)(fe(Ei))};static#a=this.\u0275prov=he({token:r_,factory:r_.\u0275fac,providedIn:"root"})}const Wae={httpEquiv:"http-equiv"};class cx{constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}static#e=this.\u0275fac=function(a){return new(a||cx)(fe(Ei))};static#a=this.\u0275prov=he({token:cx,factory:cx.\u0275fac,providedIn:"root"})}const $ae={pan:!0,panstart:!0,panmove:!0,panend:!0,pancancel:!0,panleft:!0,panright:!0,panup:!0,pandown:!0,pinch:!0,pinchstart:!0,pinchmove:!0,pinchend:!0,pinchcancel:!0,pinchin:!0,pinchout:!0,press:!0,pressup:!0,rotate:!0,rotatestart:!0,rotatemove:!0,rotateend:!0,rotatecancel:!0,swipe:!0,swipeleft:!0,swiperight:!0,swipeup:!0,swipedown:!0,tap:!0,doubletap:!0},_S=new V("HammerGestureConfig"),gR=new V("HammerLoader");class hx{constructor(){this.events=[],this.overrides={}}buildHammer(e){const a=new Hammer(e,this.options);a.get("pinch").set({enable:!0}),a.get("rotate").set({enable:!0});for(const u in this.overrides)a.get(u).set(this.overrides[u]);return a}static#e=this.\u0275fac=function(a){return new(a||hx)};static#a=this.\u0275prov=he({token:hx,factory:hx.\u0275fac})}class mx extends bS{constructor(e,a,u,i){super(e),this._config=a,this.console=u,this.loader=i,this._loaderPromise=null}supports(e){return!(!$ae.hasOwnProperty(e.toLowerCase())&&!this.isCustomEvent(e)||!window.Hammer&&!this.loader)}addEventListener(e,a,u){const i=this.manager.getZone();if(a=a.toLowerCase(),!window.Hammer&&this.loader){this._loaderPromise=this._loaderPromise||i.runOutsideAngular(()=>this.loader());let r=!1,o=()=>{r=!0};return i.runOutsideAngular(()=>this._loaderPromise.then(()=>{window.Hammer?r||(o=this.addEventListener(e,a,u)):o=()=>{}}).catch(()=>{o=()=>{}})),()=>{o()}}return i.runOutsideAngular(()=>{const r=this._config.buildHammer(e),o=function(d){i.runGuarded(function(){u(d)})};return r.on(a,o),()=>{r.off(a,o),"function"==typeof r.destroy&&r.destroy()}})}isCustomEvent(e){return this._config.events.indexOf(e)>-1}static#e=this.\u0275fac=function(a){return new(a||mx)(fe(Ei),fe(_S),fe(q1),fe(gR,8))};static#a=this.\u0275prov=he({token:mx,factory:mx.\u0275fac})}class FS{static#e=this.\u0275fac=function(a){return new(a||FS)};static#a=this.\u0275mod=en({type:FS});static#t=this.\u0275inj=P({providers:[{provide:n_,useClass:mx,multi:!0,deps:[Ei,_S,q1,[new Ho,gR]]},{provide:_S,useClass:hx,deps:[]}]})}class px{static#e=this.\u0275fac=function(a){return new(a||px)};static#a=this.\u0275prov=he({token:px,factory:function(a){let u=null;return u=a?new(a||px):fe(Ex),u},providedIn:"root"})}class Ex extends px{constructor(e){super(),this._doc=e}sanitize(e,a){if(null==a)return null;switch(e){case jr.NONE:return a;case jr.HTML:return Nl(a,"HTML")?sr(a):Rf(this._doc,String(a)).toString();case jr.STYLE:return Nl(a,"Style")?sr(a):a;case jr.SCRIPT:if(Nl(a,"Script"))return sr(a);throw new J(5200,!1);case jr.URL:return Nl(a,"URL")?sr(a):p0(String(a));case jr.RESOURCE_URL:if(Nl(a,"ResourceURL"))return sr(a);throw new J(5201,!1);default:throw new J(5202,!1)}}bypassSecurityTrustHtml(e){return function o1(t){return new ab(t)}(e)}bypassSecurityTrustStyle(e){return function Gm(t){return new fA(t)}(e)}bypassSecurityTrustScript(e){return function FA(t){return new CA(t)}(e)}bypassSecurityTrustUrl(e){return function AA(t){return new yA(t)}(e)}bypassSecurityTrustResourceUrl(e){return function l1(t){return new _A(t)}(e)}static#e=this.\u0275fac=function(a){return new(a||Ex)(fe(Ei))};static#a=this.\u0275prov=he({token:Ex,factory:Ex.\u0275fac,providedIn:"root"})}var uh;!function(t){t[t.NoHttpTransferCache=0]="NoHttpTransferCache",t[t.HttpTransferCacheOptions=1]="HttpTransferCacheOptions",t[t.I18nSupport=2]="I18nSupport",t[t.EventReplay=3]="EventReplay"}(uh||(uh={}));new ig("18.0.0");const qae=[{provide:$d,useFactory:()=>new $d}];function vR(t){for(let e=t.length-1;e>=0;e--)if(void 0!==t[e])return t[e]}function Xae(t){const e=[];return t.forEach(a=>a&&e.push(...a)),e}const ete=Ly(iI,"coreDynamic",[{provide:My,useValue:{},multi:!0},{provide:class BQ{},useClass:class Yae{constructor(e){const a={defaultEncapsulation:Tt.Emulated};this._defaultOptions=[a,...e]}createCompiler(e=[]){const a=function Qae(t){return{defaultEncapsulation:vR(t.map(e=>e.defaultEncapsulation)),providers:Xae(t.map(e=>e.providers)),preserveWhitespaces:vR(t.map(e=>e.preserveWhitespaces))}}(this._defaultOptions.concat(e));return Ut.create({providers:[qae,{provide:Oy.udt,useFactory:()=>new Oy.udt({defaultEncapsulation:a.defaultEncapsulation,preserveWhitespaces:a.preserveWhitespaces}),deps:[]},a.providers]}).get($d)}},deps:[My]}]);class Cg extends Oy.WHm{get(e){let a,u;const i=new Promise((o,d)=>{a=o,u=d}),r=new XMLHttpRequest;return r.open("GET",e,!0),r.responseType="text",r.onload=function(){const o=r.response;let d=r.status;0===d&&(d=o?200:0),200<=d&&d<=300?a(o):u(`Failed to load ${e}`)},r.onerror=function(){u(`Failed to load ${e}`)},r.send(),i}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(Cg)))(u||Cg)}})();static#a=this.\u0275prov=he({token:Cg,factory:Cg.\u0275fac})}const ate=[yS,{provide:My,useValue:{providers:[{provide:Oy.WHm,useClass:Cg,deps:[]}]},multi:!0},{provide:Ll,useValue:cS}],tte=(new ig("18.0.0"),Ly(ete,"browserDynamic",ate));function Ye(t,e,a,u){var o,i=arguments.length,r=i<3?e:null===u?u=Object.getOwnPropertyDescriptor(e,a):u;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,a,u);else for(var d=t.length-1;d>=0;d--)(o=t[d])&&(r=(i<3?o(r):i>3?o(e,a,r):o(e,a))||r);return i>3&&r&&Object.defineProperty(e,a,r),r}function Nt(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}Object.create;Object.create;"function"==typeof SuppressedError&&SuppressedError;function kR(t,e,a,u){return new(a||(a=Promise))(function(r,o){function d(E){try{m(u.next(E))}catch(v){o(v)}}function h(E){try{m(u.throw(E))}catch(v){o(v)}}function m(E){E.done?r(E.value):function i(r){return r instanceof a?r:new a(function(o){o(r)})}(E.value).then(d,h)}m((u=u.apply(t,e||[])).next())})}Object.create;function TS(t){var e="function"==typeof Symbol&&Symbol.iterator,a=e&&t[e],u=0;if(a)return a.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&u>=t.length&&(t=void 0),{value:t&&t[u++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function ih(t){return this instanceof ih?(this.v=t,this):new ih(t)}function DR(t,e,a){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,u=a.apply(t,e||[]),r=[];return i={},o("next"),o("throw"),o("return"),i[Symbol.asyncIterator]=function(){return this},i;function o(k){u[k]&&(i[k]=function(x){return new Promise(function(f,C){r.push([k,x,f,C])>1||d(k,x)})})}function d(k,x){try{!function h(k){k.value instanceof ih?Promise.resolve(k.value.v).then(m,E):v(r[0][2],k)}(u[k](x))}catch(f){v(r[0][3],f)}}function m(k){d("next",k)}function E(k){d("throw",k)}function v(k,x){k(x),r.shift(),r.length&&d(r[0][0],r[0][1])}}function fR(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var a,e=t[Symbol.asyncIterator];return e?e.call(t):(t=TS(t),a={},u("next"),u("throw"),u("return"),a[Symbol.asyncIterator]=function(){return this},a);function u(r){a[r]=t[r]&&function(o){return new Promise(function(d,h){(function i(r,o,d,h){Promise.resolve(h).then(function(m){r({value:m,done:d})},o)})(d,h,(o=t[r](o)).done,o.value)})}}}Object.create;const PS=t=>t&&"number"==typeof t.length&&"function"!=typeof t;function CR(t){return ha(t?.then)}function yR(t){return ha(t[Ac])}function _R(t){return Symbol.asyncIterator&&ha(t?.[Symbol.asyncIterator])}function FR(t){return new TypeError(`You provided ${null!==t&&"object"==typeof t?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const AR=function Gte(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function wR(t){return ha(t?.[AR])}function BR(t){return DR(this,arguments,function*(){const a=t.getReader();try{for(;;){const{value:u,done:i}=yield ih(a.read());if(i)return yield ih(void 0);yield yield ih(u)}}finally{a.releaseLock()}})}function SR(t){return ha(t?.getReader)}function qr(t){if(t instanceof rt)return t;if(null!=t){if(yR(t))return function Kte(t){return new rt(e=>{const a=t[Ac]();if(ha(a.subscribe))return a.subscribe(e);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(t);if(PS(t))return function Wte(t){return new rt(e=>{for(let a=0;a{t.then(a=>{e.closed||(e.next(a),e.complete())},a=>e.error(a)).then(null,Qs)})}(t);if(_R(t))return zR(t);if(wR(t))return function Jte(t){return new rt(e=>{for(const a of t)if(e.next(a),e.closed)return;e.complete()})}(t);if(SR(t))return function Zte(t){return zR(BR(t))}(t)}throw FR(t)}function zR(t){return new rt(e=>{(function $te(t,e){var a,u,i,r;return kR(this,void 0,void 0,function*(){try{for(a=fR(t);!(u=yield a.next()).done;){const o=u.value;if(e.next(o),e.closed)return}}catch(o){i={error:o}}finally{try{u&&!u.done&&(r=a.return)&&(yield r.call(a))}finally{if(i)throw i.error}}e.complete()})})(t,e).catch(a=>e.error(a))})}function uc(t,e,a,u=0,i=!1){const r=e.schedule(function(){a(),i?t.add(this.schedule(null,u)):this.unsubscribe()},u);if(t.add(r),!i)return r}function MR(t,e=0){return Re((a,u)=>{a.subscribe(at(u,i=>uc(u,t,()=>u.next(i),e),()=>uc(u,t,()=>u.complete(),e),i=>uc(u,t,()=>u.error(i),e)))})}function LR(t,e=0){return Re((a,u)=>{u.add(t.schedule(()=>a.subscribe(u),e))})}function TR(t,e){if(!t)throw new Error("Iterable cannot be null");return new rt(a=>{uc(a,e,()=>{const u=t[Symbol.asyncIterator]();uc(a,e,()=>{u.next().then(i=>{i.done?a.complete():a.next(i.value)})},0,!0)})})}function aue(t,e){if(null!=t){if(yR(t))return function qte(t,e){return qr(t).pipe(LR(e),MR(e))}(t,e);if(PS(t))return function Qte(t,e){return new rt(a=>{let u=0;return e.schedule(function(){u===t.length?a.complete():(a.next(t[u++]),a.closed||this.schedule())})})}(t,e);if(CR(t))return function Yte(t,e){return qr(t).pipe(LR(e),MR(e))}(t,e);if(_R(t))return TR(t,e);if(wR(t))return function Xte(t,e){return new rt(a=>{let u;return uc(a,e,()=>{u=t[AR](),uc(a,e,()=>{let i,r;try{({value:i,done:r}=u.next())}catch(o){return void a.error(o)}r?a.complete():a.next(i)},0,!0)}),()=>ha(u?.return)&&u.return()})}(t,e);if(SR(t))return function eue(t,e){return TR(BR(t),e)}(t,e)}throw FR(t)}function Ui(t,e){return e?aue(t,e):qr(t)}const{isArray:tue}=Array,{getPrototypeOf:uue,prototype:iue,keys:nue}=Object;function PR(t){if(1===t.length){const e=t[0];if(tue(e))return{args:e,keys:null};if(function rue(t){return t&&"object"==typeof t&&uue(t)===iue}(e)){const a=nue(e);return{args:a.map(u=>e[u]),keys:a}}}return{args:t,keys:null}}function NR(t){return t&&ha(t.schedule)}function NS(t){return t[t.length-1]}function IR(t){return ha(NS(t))?t.pop():void 0}function vx(t){return NR(NS(t))?t.pop():void 0}const{isArray:lue}=Array;function IS(t){return Qe(e=>function sue(t,e){return lue(e)?t(...e):t(e)}(t,e))}function RR(t,e){return t.reduce((a,u,i)=>(a[u]=e[i],a),{})}function HR(...t){const e=IR(t),{args:a,keys:u}=PR(t),i=new rt(r=>{const{length:o}=a;if(!o)return void r.complete();const d=new Array(o);let h=o,m=o;for(let E=0;E{v||(v=!0,m--),d[E]=k},()=>h--,void 0,()=>{(!h||!v)&&(m||r.next(u?RR(u,d):d),r.complete())}))}});return e?i.pipe(IS(e)):i}class bx{constructor(e,a){this._renderer=e,this._elementRef=a,this.onChange=u=>{},this.onTouched=()=>{}}setProperty(e,a){this._renderer.setProperty(this._elementRef.nativeElement,e,a)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static#e=this.\u0275fac=function(a){return new(a||bx)(q(jn),q(Ht))};static#a=this.\u0275dir=Ae({type:bx})}class F0 extends bx{static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(F0)))(u||F0)}})();static#a=this.\u0275dir=Ae({type:F0,features:[zt]})}const A0=new V(""),due={provide:A0,useExisting:Ya(()=>nh),multi:!0};class nh extends F0{writeValue(e){this.setProperty("checked",e)}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(nh)))(u||nh)}})();static#a=this.\u0275dir=Ae({type:nh,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(a,u){1&a&&Yu("change",function(r){return u.onChange(r.target.checked)})("blur",function(){return u.onTouched()})},features:[Fu([due]),zt]})}const cue={provide:A0,useExisting:Ya(()=>rh),multi:!0};const mue=new V("");class rh extends bx{constructor(e,a,u){super(e,a),this._compositionMode=u,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function hue(){const t=Qd()?Qd().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(e){const a=e??"";this.setProperty("value",a)}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static#e=this.\u0275fac=function(a){return new(a||rh)(q(jn),q(Ht),q(mue,8))};static#a=this.\u0275dir=Ae({type:rh,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(a,u){1&a&&Yu("input",function(r){return u._handleInput(r.target.value)})("blur",function(){return u.onTouched()})("compositionstart",function(){return u._compositionStart()})("compositionend",function(r){return u._compositionEnd(r.target.value)})},features:[Fu([cue]),zt]})}function oh(t){return null==t||("string"==typeof t||Array.isArray(t))&&0===t.length}function VR(t){return null!=t&&"number"==typeof t.length}const gr=new V(""),lh=new V(""),pue=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;function jR(t){return e=>{if(oh(e.value)||oh(t))return null;const a=parseFloat(e.value);return!isNaN(a)&&a{if(oh(e.value)||oh(t))return null;const a=parseFloat(e.value);return!isNaN(a)&&a>t?{max:{max:t,actual:e.value}}:null}}function GR(t){return oh(t.value)?{required:!0}:null}function KR(t){return!0===t.value?null:{required:!0}}function WR(t){return oh(t.value)||pue.test(t.value)?null:{email:!0}}function UR(t){return e=>oh(e.value)||!VR(e.value)?null:e.value.lengthVR(e.value)&&e.value.length>t?{maxlength:{requiredLength:t,actualLength:e.value.length}}:null}function ZR(t){if(!t)return l_;let e,a;return"string"==typeof t?(a="","^"!==t.charAt(0)&&(a+="^"),a+=t,"$"!==t.charAt(t.length-1)&&(a+="$"),e=new RegExp(a)):(a=t.toString(),e=t),u=>{if(oh(u.value))return null;const i=u.value;return e.test(i)?null:{pattern:{requiredPattern:a,actualValue:i}}}}function l_(t){return null}function $R(t){return null!=t}function qR(t){return Zk(t)?Ui(t):t}function YR(t){let e={};return t.forEach(a=>{e=null!=a?{...e,...a}:e}),0===Object.keys(e).length?null:e}function QR(t,e){return e.map(a=>a(t))}function XR(t){return t.map(e=>function Eue(t){return!t.validate}(e)?e:a=>e.validate(a))}function eH(t){if(!t)return null;const e=t.filter($R);return 0==e.length?null:function(a){return YR(QR(a,e))}}function RS(t){return null!=t?eH(XR(t)):null}function aH(t){if(!t)return null;const e=t.filter($R);return 0==e.length?null:function(a){return HR(QR(a,e).map(qR)).pipe(Qe(YR))}}function HS(t){return null!=t?aH(XR(t)):null}function tH(t,e){return null===t?[e]:Array.isArray(t)?[...t,e]:[t,e]}function uH(t){return t._rawValidators}function iH(t){return t._rawAsyncValidators}function VS(t){return t?Array.isArray(t)?t:[t]:[]}function s_(t,e){return Array.isArray(t)?t.includes(e):t===e}function nH(t,e){const a=VS(e);return VS(t).forEach(i=>{s_(a,i)||a.push(i)}),a}function rH(t,e){return VS(e).filter(a=>!s_(t,a))}class oH{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=RS(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=HS(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control&&this.control.reset(e)}hasError(e,a){return!!this.control&&this.control.hasError(e,a)}getError(e,a){return this.control?this.control.getError(e,a):null}}class Yr extends oH{get formDirective(){return null}get path(){return null}}class sh extends oH{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class lH{constructor(e){this._cd=e}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}}class yg extends lH{constructor(e){super(e)}static#e=this.\u0275fac=function(a){return new(a||yg)(q(sh,2))};static#a=this.\u0275dir=Ae({type:yg,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(a,u){2&a&&pr("ng-untouched",u.isUntouched)("ng-touched",u.isTouched)("ng-pristine",u.isPristine)("ng-dirty",u.isDirty)("ng-valid",u.isValid)("ng-invalid",u.isInvalid)("ng-pending",u.isPending)},features:[zt]})}class _g extends lH{constructor(e){super(e)}static#e=this.\u0275fac=function(a){return new(a||_g)(q(Yr,10))};static#a=this.\u0275dir=Ae({type:_g,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(a,u){2&a&&pr("ng-untouched",u.isUntouched)("ng-touched",u.isTouched)("ng-pristine",u.isPristine)("ng-dirty",u.isDirty)("ng-valid",u.isValid)("ng-invalid",u.isInvalid)("ng-pending",u.isPending)("ng-submitted",u.isSubmitted)},features:[zt]})}const kx="VALID",c_="INVALID",Fg="PENDING",xx="DISABLED";class Ag{}class dH extends Ag{constructor(e,a){super(),this.value=e,this.source=a}}class GS extends Ag{constructor(e,a){super(),this.pristine=e,this.source=a}}class KS extends Ag{constructor(e,a){super(),this.touched=e,this.source=a}}class h_ extends Ag{constructor(e,a){super(),this.status=e,this.source=a}}class xue extends Ag{constructor(e){super(),this.source=e}}class Due extends Ag{constructor(e){super(),this.source=e}}function WS(t){return(m_(t)?t.validators:t)||null}function US(t,e){return(m_(e)?e.asyncValidators:t)||null}function m_(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}function cH(t,e,a){const u=t.controls;if(!(e?Object.keys(u):u).length)throw new J(1e3,"");if(!u[a])throw new J(1001,"")}function hH(t,e,a){t._forEachChild((u,i)=>{if(void 0===a[i])throw new J(1002,"")})}class p_{constructor(e,a){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=null,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._events=new Gt,this.events=this._events.asObservable(),this._onDisabledChange=[],this._assignValidators(e),this._assignAsyncValidators(a)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get valid(){return this.status===kx}get invalid(){return this.status===c_}get pending(){return this.status==Fg}get disabled(){return this.status===xx}get enabled(){return this.status!==xx}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(nH(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(nH(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(rH(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(rH(e,this._rawAsyncValidators))}hasValidator(e){return s_(this._rawValidators,e)}hasAsyncValidator(e){return s_(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){const a=!1===this.touched;this.touched=!0;const u=e.sourceControl??this;this._parent&&!e.onlySelf&&this._parent.markAsTouched({...e,sourceControl:u}),a&&!1!==e.emitEvent&&this._events.next(new KS(!0,u))}markAllAsTouched(e={}){this.markAsTouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(a=>a.markAllAsTouched(e))}markAsUntouched(e={}){const a=!0===this.touched;this.touched=!1,this._pendingTouched=!1;const u=e.sourceControl??this;this._forEachChild(i=>{i.markAsUntouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:u})}),this._parent&&!e.onlySelf&&this._parent._updateTouched(e,u),a&&!1!==e.emitEvent&&this._events.next(new KS(!1,u))}markAsDirty(e={}){const a=!0===this.pristine;this.pristine=!1;const u=e.sourceControl??this;this._parent&&!e.onlySelf&&this._parent.markAsDirty({...e,sourceControl:u}),a&&!1!==e.emitEvent&&this._events.next(new GS(!1,u))}markAsPristine(e={}){const a=!1===this.pristine;this.pristine=!0,this._pendingDirty=!1;const u=e.sourceControl??this;this._forEachChild(i=>{i.markAsPristine({onlySelf:!0,emitEvent:e.emitEvent})}),this._parent&&!e.onlySelf&&this._parent._updatePristine(e,u),a&&!1!==e.emitEvent&&this._events.next(new GS(!0,u))}markAsPending(e={}){this.status=Fg;const a=e.sourceControl??this;!1!==e.emitEvent&&(this._events.next(new h_(this.status,a)),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.markAsPending({...e,sourceControl:a})}disable(e={}){const a=this._parentMarkedDirty(e.onlySelf);this.status=xx,this.errors=null,this._forEachChild(i=>{i.disable({...e,onlySelf:!0})}),this._updateValue();const u=e.sourceControl??this;!1!==e.emitEvent&&(this._events.next(new dH(this.value,u)),this._events.next(new h_(this.status,u)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...e,skipPristineCheck:a},this),this._onDisabledChange.forEach(i=>i(!0))}enable(e={}){const a=this._parentMarkedDirty(e.onlySelf);this.status=kx,this._forEachChild(u=>{u.enable({...e,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors({...e,skipPristineCheck:a},this),this._onDisabledChange.forEach(u=>u(!1))}_updateAncestors(e,a){this._parent&&!e.onlySelf&&(this._parent.updateValueAndValidity(e),e.skipPristineCheck||this._parent._updatePristine({},a),this._parent._updateTouched({},a))}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){const u=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===kx||this.status===Fg)&&this._runAsyncValidator(u,e.emitEvent)}const a=e.sourceControl??this;!1!==e.emitEvent&&(this._events.next(new dH(this.value,a)),this._events.next(new h_(this.status,a)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.updateValueAndValidity({...e,sourceControl:a})}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(a=>a._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?xx:kx}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e,a){if(this.asyncValidator){this.status=Fg,this._hasOwnPendingAsyncValidator={emitEvent:!1!==a};const u=qR(this.asyncValidator(this));this._asyncValidationSubscription=u.subscribe(i=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(i,{emitEvent:a,shouldHaveEmitted:e})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();const e=this._hasOwnPendingAsyncValidator?.emitEvent??!1;return this._hasOwnPendingAsyncValidator=null,e}return!1}setErrors(e,a={}){this.errors=e,this._updateControlsErrors(!1!==a.emitEvent,this,a.shouldHaveEmitted)}get(e){let a=e;return null==a||(Array.isArray(a)||(a=a.split(".")),0===a.length)?null:a.reduce((u,i)=>u&&u._find(i),this)}getError(e,a){const u=a?this.get(a):this;return u&&u.errors?u.errors[e]:null}hasError(e,a){return!!this.getError(e,a)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e,a,u){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),(e||u)&&this._events.next(new h_(this.status,a)),this._parent&&this._parent._updateControlsErrors(e,a,u)}_initObservables(){this.valueChanges=new aa,this.statusChanges=new aa}_calculateStatus(){return this._allControlsDisabled()?xx:this.errors?c_:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(Fg)?Fg:this._anyControlsHaveStatus(c_)?c_:kx}_anyControlsHaveStatus(e){return this._anyControls(a=>a.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e,a){const u=!this._anyControlsDirty(),i=this.pristine!==u;this.pristine=u,this._parent&&!e.onlySelf&&this._parent._updatePristine(e,a),i&&this._events.next(new GS(this.pristine,a))}_updateTouched(e={},a){this.touched=this._anyControlsTouched(),this._events.next(new KS(this.touched,a)),this._parent&&!e.onlySelf&&this._parent._updateTouched(e,a)}_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){m_(e)&&null!=e.updateOn&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){const a=this._parent&&this._parent.dirty;return!e&&!!a&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=function fue(t){return Array.isArray(t)?RS(t):t||null}(this._rawValidators)}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=function Cue(t){return Array.isArray(t)?HS(t):t||null}(this._rawAsyncValidators)}}class Dx extends p_{constructor(e,a,u){super(WS(a),US(u,a)),this.controls=e,this._initObservables(),this._setUpdateStrategy(a),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(e,a){return this.controls[e]?this.controls[e]:(this.controls[e]=a,a.setParent(this),a._registerOnCollectionChange(this._onCollectionChange),a)}addControl(e,a,u={}){this.registerControl(e,a),this.updateValueAndValidity({emitEvent:u.emitEvent}),this._onCollectionChange()}removeControl(e,a={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],this.updateValueAndValidity({emitEvent:a.emitEvent}),this._onCollectionChange()}setControl(e,a,u={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],a&&this.registerControl(e,a),this.updateValueAndValidity({emitEvent:u.emitEvent}),this._onCollectionChange()}contains(e){return this.controls.hasOwnProperty(e)&&this.controls[e].enabled}setValue(e,a={}){hH(this,0,e),Object.keys(e).forEach(u=>{cH(this,!0,u),this.controls[u].setValue(e[u],{onlySelf:!0,emitEvent:a.emitEvent})}),this.updateValueAndValidity(a)}patchValue(e,a={}){null!=e&&(Object.keys(e).forEach(u=>{const i=this.controls[u];i&&i.patchValue(e[u],{onlySelf:!0,emitEvent:a.emitEvent})}),this.updateValueAndValidity(a))}reset(e={},a={}){this._forEachChild((u,i)=>{u.reset(e?e[i]:null,{onlySelf:!0,emitEvent:a.emitEvent})}),this._updatePristine(a,this),this._updateTouched(a,this),this.updateValueAndValidity(a)}getRawValue(){return this._reduceChildren({},(e,a,u)=>(e[u]=a.getRawValue(),e))}_syncPendingControls(){let e=this._reduceChildren(!1,(a,u)=>!!u._syncPendingControls()||a);return e&&this.updateValueAndValidity({onlySelf:!0}),e}_forEachChild(e){Object.keys(this.controls).forEach(a=>{const u=this.controls[a];u&&e(u,a)})}_setUpControls(){this._forEachChild(e=>{e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(e){for(const[a,u]of Object.entries(this.controls))if(this.contains(a)&&e(u))return!0;return!1}_reduceValue(){return this._reduceChildren({},(a,u,i)=>((u.enabled||this.disabled)&&(a[i]=u.value),a))}_reduceChildren(e,a){let u=e;return this._forEachChild((i,r)=>{u=a(u,i,r)}),u}_allControlsDisabled(){for(const e of Object.keys(this.controls))if(this.controls[e].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(e){return this.controls.hasOwnProperty(e)?this.controls[e]:null}}class mH extends Dx{}const X4=new V("CallSetDisabledState",{providedIn:"root",factory:()=>fx}),fx="always";function E_(t,e){return[...e.path,t]}function Cx(t,e,a=fx){JS(t,e),e.valueAccessor.writeValue(t.value),(t.disabled||"always"===a)&&e.valueAccessor.setDisabledState?.(t.disabled),function _ue(t,e){e.valueAccessor.registerOnChange(a=>{t._pendingValue=a,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&pH(t,e)})}(t,e),function Aue(t,e){const a=(u,i)=>{e.valueAccessor.writeValue(u),i&&e.viewToModelUpdate(u)};t.registerOnChange(a),e._registerOnDestroy(()=>{t._unregisterOnChange(a)})}(t,e),function Fue(t,e){e.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&pH(t,e),"submit"!==t.updateOn&&t.markAsTouched()})}(t,e),function yue(t,e){if(e.valueAccessor.setDisabledState){const a=u=>{e.valueAccessor.setDisabledState(u)};t.registerOnDisabledChange(a),e._registerOnDestroy(()=>{t._unregisterOnDisabledChange(a)})}}(t,e)}function g_(t,e,a=!0){const u=()=>{};e.valueAccessor&&(e.valueAccessor.registerOnChange(u),e.valueAccessor.registerOnTouched(u)),b_(t,e),t&&(e._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function v_(t,e){t.forEach(a=>{a.registerOnValidatorChange&&a.registerOnValidatorChange(e)})}function JS(t,e){const a=uH(t);null!==e.validator?t.setValidators(tH(a,e.validator)):"function"==typeof a&&t.setValidators([a]);const u=iH(t);null!==e.asyncValidator?t.setAsyncValidators(tH(u,e.asyncValidator)):"function"==typeof u&&t.setAsyncValidators([u]);const i=()=>t.updateValueAndValidity();v_(e._rawValidators,i),v_(e._rawAsyncValidators,i)}function b_(t,e){let a=!1;if(null!==t){if(null!==e.validator){const i=uH(t);if(Array.isArray(i)&&i.length>0){const r=i.filter(o=>o!==e.validator);r.length!==i.length&&(a=!0,t.setValidators(r))}}if(null!==e.asyncValidator){const i=iH(t);if(Array.isArray(i)&&i.length>0){const r=i.filter(o=>o!==e.asyncValidator);r.length!==i.length&&(a=!0,t.setAsyncValidators(r))}}}const u=()=>{};return v_(e._rawValidators,u),v_(e._rawAsyncValidators,u),a}function pH(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function EH(t,e){JS(t,e)}function $S(t,e){if(!t.hasOwnProperty("model"))return!1;const a=t.model;return!!a.isFirstChange()||!Object.is(e,a.currentValue)}function gH(t,e){t._syncPendingControls(),e.forEach(a=>{const u=a.control;"submit"===u.updateOn&&u._pendingChange&&(a.viewToModelUpdate(u._pendingValue),u._pendingChange=!1)})}function qS(t,e){if(!e)return null;let a,u,i;return Array.isArray(e),e.forEach(r=>{r.constructor===rh?a=r:function Sue(t){return Object.getPrototypeOf(t.constructor)===F0}(r)?u=r:i=r}),i||u||a||null}const Mue={provide:Yr,useExisting:Ya(()=>dh)},yx=Promise.resolve();class dh extends Yr{constructor(e,a,u){super(),this.callSetDisabledState=u,this.submitted=!1,this._directives=new Set,this.ngSubmit=new aa,this.form=new Dx({},RS(e),HS(a))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){yx.then(()=>{const a=this._findContainer(e.path);e.control=a.registerControl(e.name,e.control),Cx(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){yx.then(()=>{const a=this._findContainer(e.path);a&&a.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){yx.then(()=>{const a=this._findContainer(e.path),u=new Dx({});EH(u,e),a.registerControl(e.name,u),u.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){yx.then(()=>{const a=this._findContainer(e.path);a&&a.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,a){yx.then(()=>{this.form.get(e.path).setValue(a)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submitted=!0,gH(this.form,this._directives),this.ngSubmit.emit(e),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}static#e=this.\u0275fac=function(a){return new(a||dh)(q(gr,10),q(lh,10),q(X4,8))};static#a=this.\u0275dir=Ae({type:dh,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(a,u){1&a&&Yu("submit",function(r){return u.onSubmit(r)})("reset",function(){return u.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[Fu([Mue]),zt]})}function vH(t,e){const a=t.indexOf(e);a>-1&&t.splice(a,1)}function bH(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}const _x=class extends p_{constructor(e=null,a,u){super(WS(a),US(u,a)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(e),this._setUpdateStrategy(a),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),m_(a)&&(a.nonNullable||a.initialValueIsDefault)&&(bH(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,a={}){this.value=this._pendingValue=e,this._onChange.length&&!1!==a.emitModelToViewChange&&this._onChange.forEach(u=>u(this.value,!1!==a.emitViewToModelChange)),this.updateValueAndValidity(a)}patchValue(e,a={}){this.setValue(e,a)}reset(e=this.defaultValue,a={}){this._applyFormState(e),this.markAsPristine(a),this.markAsUntouched(a),this.setValue(this.value,a),this._pendingChange=!1}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){vH(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){vH(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange))&&(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0)}_applyFormState(e){bH(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}};class wg extends Yr{ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return E_(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(wg)))(u||wg)}})();static#a=this.\u0275dir=Ae({type:wg,features:[zt]})}const Tue={provide:Yr,useExisting:Ya(()=>ch)};class ch extends wg{constructor(e,a,u){super(),this.name="",this._parent=e,this._setValidators(a),this._setAsyncValidators(u)}_checkParentType(){!(this._parent instanceof ch)&&this._parent}static#e=this.\u0275fac=function(a){return new(a||ch)(q(Yr,5),q(gr,10),q(lh,10))};static#a=this.\u0275dir=Ae({type:ch,selectors:[["","ngModelGroup",""]],inputs:{name:[0,"ngModelGroup","name"]},exportAs:["ngModelGroup"],features:[Fu([Tue]),zt]})}const Pue={provide:sh,useExisting:Ya(()=>e3)},kH=Promise.resolve();class e3 extends sh{constructor(e,a,u,i,r,o){super(),this._changeDetectorRef=r,this.callSetDisabledState=o,this.control=new _x,this._registered=!1,this.name="",this.update=new aa,this._parent=e,this._setValidators(a),this._setAsyncValidators(u),this.valueAccessor=qS(0,i)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){const a=e.name.previousValue;this.formDirective.removeControl({name:a,path:this._getPath(a)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),$S(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){Cx(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(e){kH.then(()=>{this.control.setValue(e,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(e){const a=e.isDisabled.currentValue,u=0!==a&&_s(a);kH.then(()=>{u&&!this.control.disabled?this.control.disable():!u&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(e){return this._parent?E_(e,this._parent):[e]}static#e=this.\u0275fac=function(a){return new(a||e3)(q(Yr,9),q(gr,10),q(lh,10),q(A0,10),q(dn,8),q(X4,8))};static#a=this.\u0275dir=Ae({type:e3,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[Fu([Pue]),zt,tn]})}class Bg{static#e=this.\u0275fac=function(a){return new(a||Bg)};static#a=this.\u0275dir=Ae({type:Bg,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]})}const Nue={provide:A0,useExisting:Ya(()=>hh),multi:!0};class hh extends F0{writeValue(e){const a=e??"";this.setProperty("value",a)}registerOnChange(e){this.onChange=a=>{e(""==a?null:parseFloat(a))}}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(hh)))(u||hh)}})();static#a=this.\u0275dir=Ae({type:hh,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(a,u){1&a&&Yu("input",function(r){return u.onChange(r.target.value)})("blur",function(){return u.onTouched()})},features:[Fu([Nue]),zt]})}const Iue={provide:A0,useExisting:Ya(()=>a3),multi:!0};class Fx{constructor(){this._accessors=[]}add(e,a){this._accessors.push([e,a])}remove(e){for(let a=this._accessors.length-1;a>=0;--a)if(this._accessors[a][1]===e)return void this._accessors.splice(a,1)}select(e){this._accessors.forEach(a=>{this._isSameGroup(a,e)&&a[1]!==e&&a[1].fireUncheck(e.value)})}_isSameGroup(e,a){return!!e[0].control&&(e[0]._parent===a._control._parent&&e[1].name===a.name)}static#e=this.\u0275fac=function(a){return new(a||Fx)};static#a=this.\u0275prov=he({token:Fx,factory:Fx.\u0275fac,providedIn:"root"})}class a3 extends F0{constructor(e,a,u,i){super(e,a),this._registry=u,this._injector=i,this.setDisabledStateFired=!1,this.onChange=()=>{},this.callSetDisabledState=U(X4,{optional:!0})??fx}ngOnInit(){this._control=this._injector.get(sh),this._checkName(),this._registry.add(this._control,this)}ngOnDestroy(){this._registry.remove(this)}writeValue(e){this._state=e===this.value,this.setProperty("checked",this._state)}registerOnChange(e){this._fn=e,this.onChange=()=>{e(this.value),this._registry.select(this)}}setDisabledState(e){(this.setDisabledStateFired||e||"whenDisabledForLegacyCode"===this.callSetDisabledState)&&this.setProperty("disabled",e),this.setDisabledStateFired=!0}fireUncheck(e){this.writeValue(e)}_checkName(){this.name&&this.formControlName&&(this.name,this.formControlName),!this.name&&this.formControlName&&(this.name=this.formControlName)}static#e=this.\u0275fac=function(a){return new(a||a3)(q(jn),q(Ht),q(Fx),q(Ut))};static#a=this.\u0275dir=Ae({type:a3,selectors:[["input","type","radio","formControlName",""],["input","type","radio","formControl",""],["input","type","radio","ngModel",""]],hostBindings:function(a,u){1&a&&Yu("change",function(){return u.onChange()})("blur",function(){return u.onTouched()})},inputs:{name:"name",formControlName:"formControlName",value:"value"},features:[Fu([Iue]),zt]})}const Rue={provide:A0,useExisting:Ya(()=>mh),multi:!0};class mh extends F0{writeValue(e){this.setProperty("value",parseFloat(e))}registerOnChange(e){this.onChange=a=>{e(""==a?null:parseFloat(a))}}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(mh)))(u||mh)}})();static#a=this.\u0275dir=Ae({type:mh,selectors:[["input","type","range","formControlName",""],["input","type","range","formControl",""],["input","type","range","ngModel",""]],hostBindings:function(a,u){1&a&&Yu("change",function(r){return u.onChange(r.target.value)})("input",function(r){return u.onChange(r.target.value)})("blur",function(){return u.onTouched()})},features:[Fu([Rue]),zt]})}const YS=new V(""),Hue={provide:sh,useExisting:Ya(()=>t3)};class t3 extends sh{set isDisabled(e){}static#e=this._ngModelWarningSentOnce=!1;constructor(e,a,u,i,r){super(),this._ngModelWarningConfig=i,this.callSetDisabledState=r,this.update=new aa,this._ngModelWarningSent=!1,this._setValidators(e),this._setAsyncValidators(a),this.valueAccessor=qS(0,u)}ngOnChanges(e){if(this._isControlChanged(e)){const a=e.form.previousValue;a&&g_(a,this,!1),Cx(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}$S(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&g_(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_isControlChanged(e){return e.hasOwnProperty("form")}static#a=this.\u0275fac=function(a){return new(a||t3)(q(gr,10),q(lh,10),q(A0,10),q(YS,8),q(X4,8))};static#t=this.\u0275dir=Ae({type:t3,selectors:[["","formControl",""]],inputs:{form:[0,"formControl","form"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[Fu([Hue]),zt,tn]})}const Vue={provide:Yr,useExisting:Ya(()=>ph)};class ph extends Yr{constructor(e,a,u){super(),this.callSetDisabledState=u,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new aa,this._setValidators(e),this._setAsyncValidators(a)}ngOnChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(b_(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(e){const a=this.form.get(e.path);return Cx(a,e,this.callSetDisabledState),a.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),a}getControl(e){return this.form.get(e.path)}removeControl(e){g_(e.control||null,e,!1),function zue(t,e){const a=t.indexOf(e);a>-1&&t.splice(a,1)}(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}getFormArray(e){return this.form.get(e.path)}updateModel(e,a){this.form.get(e.path).setValue(a)}onSubmit(e){return this.submitted=!0,gH(this.form,this.directives),this.ngSubmit.emit(e),this.form._events.next(new xue(this.control)),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submitted=!1,this.form._events.next(new Due(this.form))}_updateDomValue(){this.directives.forEach(e=>{const a=e.control,u=this.form.get(e.path);a!==u&&(g_(a||null,e),(t=>t instanceof _x)(u)&&(Cx(u,e,this.callSetDisabledState),e.control=u))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){const a=this.form.get(e.path);EH(a,e),a.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){const a=this.form.get(e.path);a&&function wue(t,e){return b_(t,e)}(a,e)&&a.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){JS(this.form,this),this._oldForm&&b_(this._oldForm,this)}_checkFormPresent(){this.form}static#e=this.\u0275fac=function(a){return new(a||ph)(q(gr,10),q(lh,10),q(X4,8))};static#a=this.\u0275dir=Ae({type:ph,selectors:[["","formGroup",""]],hostBindings:function(a,u){1&a&&Yu("submit",function(r){return u.onSubmit(r)})("reset",function(){return u.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[Fu([Vue]),zt,tn]})}const jue={provide:Yr,useExisting:Ya(()=>Eh)};class Eh extends wg{constructor(e,a,u){super(),this.name=null,this._parent=e,this._setValidators(a),this._setAsyncValidators(u)}_checkParentType(){xH(this._parent)}static#e=this.\u0275fac=function(a){return new(a||Eh)(q(Yr,13),q(gr,10),q(lh,10))};static#a=this.\u0275dir=Ae({type:Eh,selectors:[["","formGroupName",""]],inputs:{name:[0,"formGroupName","name"]},features:[Fu([jue]),zt]})}const Oue={provide:Yr,useExisting:Ya(()=>gh)};class gh extends Yr{constructor(e,a,u){super(),this.name=null,this._parent=e,this._setValidators(a),this._setAsyncValidators(u)}ngOnInit(){this._checkParentType(),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return E_(null==this.name?this.name:this.name.toString(),this._parent)}_checkParentType(){xH(this._parent)}static#e=this.\u0275fac=function(a){return new(a||gh)(q(Yr,13),q(gr,10),q(lh,10))};static#a=this.\u0275dir=Ae({type:gh,selectors:[["","formArrayName",""]],inputs:{name:[0,"formArrayName","name"]},features:[Fu([Oue]),zt]})}function xH(t){return!(t instanceof Eh||t instanceof ph||t instanceof gh)}const Gue={provide:sh,useExisting:Ya(()=>u3)};class u3 extends sh{set isDisabled(e){}static#e=this._ngModelWarningSentOnce=!1;constructor(e,a,u,i,r){super(),this._ngModelWarningConfig=r,this._added=!1,this.name=null,this.update=new aa,this._ngModelWarningSent=!1,this._parent=e,this._setValidators(a),this._setAsyncValidators(u),this.valueAccessor=qS(0,i)}ngOnChanges(e){this._added||this._setUpControl(),$S(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}get path(){return E_(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}_setUpControl(){this._checkParentType(),this.control=this.formDirective.addControl(this),this._added=!0}static#a=this.\u0275fac=function(a){return new(a||u3)(q(Yr,13),q(gr,10),q(lh,10),q(A0,10),q(YS,8))};static#t=this.\u0275dir=Ae({type:u3,selectors:[["","formControlName",""]],inputs:{name:[0,"formControlName","name"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},features:[Fu([Gue]),zt,tn]})}const Kue={provide:A0,useExisting:Ya(()=>ic),multi:!0};function DH(t,e){return null==t?`${e}`:(e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}class ic extends F0{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(e){this._compareWith=e}writeValue(e){this.value=e;const u=DH(this._getOptionId(e),e);this.setProperty("value",u)}registerOnChange(e){this.onChange=a=>{this.value=this._getOptionValue(a),e(this.value)}}_registerOption(){return(this._idCounter++).toString()}_getOptionId(e){for(const a of this._optionMap.keys())if(this._compareWith(this._optionMap.get(a),e))return a;return null}_getOptionValue(e){const a=function Wue(t){return t.split(":")[0]}(e);return this._optionMap.has(a)?this._optionMap.get(a):e}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(ic)))(u||ic)}})();static#a=this.\u0275dir=Ae({type:ic,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(a,u){1&a&&Yu("change",function(r){return u.onChange(r.target.value)})("blur",function(){return u.onTouched()})},inputs:{compareWith:"compareWith"},features:[Fu([Kue]),zt]})}class Sg{constructor(e,a,u){this._element=e,this._renderer=a,this._select=u,this._select&&(this.id=this._select._registerOption())}set ngValue(e){null!=this._select&&(this._select._optionMap.set(this.id,e),this._setElementValue(DH(this.id,e)),this._select.writeValue(this._select.value))}set value(e){this._setElementValue(e),this._select&&this._select.writeValue(this._select.value)}_setElementValue(e){this._renderer.setProperty(this._element.nativeElement,"value",e)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}static#e=this.\u0275fac=function(a){return new(a||Sg)(q(Ht),q(jn),q(ic,9))};static#a=this.\u0275dir=Ae({type:Sg,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}})}const Uue={provide:A0,useExisting:Ya(()=>nc),multi:!0};function fH(t,e){return null==t?`${e}`:("string"==typeof e&&(e=`'${e}'`),e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}class nc extends F0{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(e){this._compareWith=e}writeValue(e){let a;if(this.value=e,Array.isArray(e)){const u=e.map(i=>this._getOptionId(i));a=(i,r)=>{i._setSelected(u.indexOf(r.toString())>-1)}}else a=(u,i)=>{u._setSelected(!1)};this._optionMap.forEach(a)}registerOnChange(e){this.onChange=a=>{const u=[],i=a.selectedOptions;if(void 0!==i){const r=i;for(let o=0;o{let e;return function(u){return(e||(e=bu(nc)))(u||nc)}})();static#a=this.\u0275dir=Ae({type:nc,selectors:[["select","multiple","","formControlName",""],["select","multiple","","formControl",""],["select","multiple","","ngModel",""]],hostBindings:function(a,u){1&a&&Yu("change",function(r){return u.onChange(r.target)})("blur",function(){return u.onTouched()})},inputs:{compareWith:"compareWith"},features:[Fu([Uue]),zt]})}class zg{constructor(e,a,u){this._element=e,this._renderer=a,this._select=u,this._select&&(this.id=this._select._registerOption(this))}set ngValue(e){null!=this._select&&(this._value=e,this._setElementValue(fH(this.id,e)),this._select.writeValue(this._select.value))}set value(e){this._select?(this._value=e,this._setElementValue(fH(this.id,e)),this._select.writeValue(this._select.value)):this._setElementValue(e)}_setElementValue(e){this._renderer.setProperty(this._element.nativeElement,"value",e)}_setSelected(e){this._renderer.setProperty(this._element.nativeElement,"selected",e)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}static#e=this.\u0275fac=function(a){return new(a||zg)(q(Ht),q(jn),q(nc,9))};static#a=this.\u0275dir=Ae({type:zg,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}})}function CH(t){return"number"==typeof t?t:parseInt(t,10)}function yH(t){return"number"==typeof t?t:parseFloat(t)}class Ss{constructor(){this._validator=l_}ngOnChanges(e){if(this.inputName in e){const a=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(a),this._validator=this._enabled?this.createValidator(a):l_,this._onChange&&this._onChange()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return null!=e}static#e=this.\u0275fac=function(a){return new(a||Ss)};static#a=this.\u0275dir=Ae({type:Ss,features:[tn]})}const Zue={provide:gr,useExisting:Ya(()=>vh),multi:!0};class vh extends Ss{constructor(){super(...arguments),this.inputName="max",this.normalizeInput=e=>yH(e),this.createValidator=e=>OR(e)}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(vh)))(u||vh)}})();static#a=this.\u0275dir=Ae({type:vh,selectors:[["input","type","number","max","","formControlName",""],["input","type","number","max","","formControl",""],["input","type","number","max","","ngModel",""]],hostVars:1,hostBindings:function(a,u){2&a&&Gn("max",u._enabled?u.max:null)},inputs:{max:"max"},features:[Fu([Zue]),zt]})}const $ue={provide:gr,useExisting:Ya(()=>bh),multi:!0};class bh extends Ss{constructor(){super(...arguments),this.inputName="min",this.normalizeInput=e=>yH(e),this.createValidator=e=>jR(e)}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(bh)))(u||bh)}})();static#a=this.\u0275dir=Ae({type:bh,selectors:[["input","type","number","min","","formControlName",""],["input","type","number","min","","formControl",""],["input","type","number","min","","ngModel",""]],hostVars:1,hostBindings:function(a,u){2&a&&Gn("min",u._enabled?u.min:null)},inputs:{min:"min"},features:[Fu([$ue]),zt]})}const que={provide:gr,useExisting:Ya(()=>rc),multi:!0},Yue={provide:gr,useExisting:Ya(()=>kh),multi:!0};class rc extends Ss{constructor(){super(...arguments),this.inputName="required",this.normalizeInput=_s,this.createValidator=e=>GR}enabled(e){return e}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(rc)))(u||rc)}})();static#a=this.\u0275dir=Ae({type:rc,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(a,u){2&a&&Gn("required",u._enabled?"":null)},inputs:{required:"required"},features:[Fu([que]),zt]})}class kh extends rc{constructor(){super(...arguments),this.createValidator=e=>KR}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(kh)))(u||kh)}})();static#a=this.\u0275dir=Ae({type:kh,selectors:[["input","type","checkbox","required","","formControlName",""],["input","type","checkbox","required","","formControl",""],["input","type","checkbox","required","","ngModel",""]],hostVars:1,hostBindings:function(a,u){2&a&&Gn("required",u._enabled?"":null)},features:[Fu([Yue]),zt]})}const Que={provide:gr,useExisting:Ya(()=>xh),multi:!0};class xh extends Ss{constructor(){super(...arguments),this.inputName="email",this.normalizeInput=_s,this.createValidator=e=>WR}enabled(e){return e}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(xh)))(u||xh)}})();static#a=this.\u0275dir=Ae({type:xh,selectors:[["","email","","formControlName",""],["","email","","formControl",""],["","email","","ngModel",""]],inputs:{email:"email"},features:[Fu([Que]),zt]})}const Xue={provide:gr,useExisting:Ya(()=>Dh),multi:!0};class Dh extends Ss{constructor(){super(...arguments),this.inputName="minlength",this.normalizeInput=e=>CH(e),this.createValidator=e=>UR(e)}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(Dh)))(u||Dh)}})();static#a=this.\u0275dir=Ae({type:Dh,selectors:[["","minlength","","formControlName",""],["","minlength","","formControl",""],["","minlength","","ngModel",""]],hostVars:1,hostBindings:function(a,u){2&a&&Gn("minlength",u._enabled?u.minlength:null)},inputs:{minlength:"minlength"},features:[Fu([Xue]),zt]})}const eie={provide:gr,useExisting:Ya(()=>fh),multi:!0};class fh extends Ss{constructor(){super(...arguments),this.inputName="maxlength",this.normalizeInput=e=>CH(e),this.createValidator=e=>JR(e)}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(fh)))(u||fh)}})();static#a=this.\u0275dir=Ae({type:fh,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(a,u){2&a&&Gn("maxlength",u._enabled?u.maxlength:null)},inputs:{maxlength:"maxlength"},features:[Fu([eie]),zt]})}const aie={provide:gr,useExisting:Ya(()=>Ch),multi:!0};class Ch extends Ss{constructor(){super(...arguments),this.inputName="pattern",this.normalizeInput=e=>e,this.createValidator=e=>ZR(e)}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(Ch)))(u||Ch)}})();static#a=this.\u0275dir=Ae({type:Ch,selectors:[["","pattern","","formControlName",""],["","pattern","","formControl",""],["","pattern","","ngModel",""]],hostVars:1,hostBindings:function(a,u){2&a&&Gn("pattern",u._enabled?u.pattern:null)},inputs:{pattern:"pattern"},features:[Fu([aie]),zt]})}class i3{static#e=this.\u0275fac=function(a){return new(a||i3)};static#a=this.\u0275mod=en({type:i3,declarations:[Bg,Sg,zg,rh,hh,mh,nh,ic,nc,a3,yg,_g,rc,Dh,fh,Ch,kh,xh,bh,vh],exports:[Bg,Sg,zg,rh,hh,mh,nh,ic,nc,a3,yg,_g,rc,Dh,fh,Ch,kh,xh,bh,vh]});static#t=this.\u0275inj=P({})}class _H extends p_{constructor(e,a,u){super(WS(a),US(u,a)),this.controls=e,this._initObservables(),this._setUpdateStrategy(a),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}at(e){return this.controls[this._adjustIndex(e)]}push(e,a={}){this.controls.push(e),this._registerControl(e),this.updateValueAndValidity({emitEvent:a.emitEvent}),this._onCollectionChange()}insert(e,a,u={}){this.controls.splice(e,0,a),this._registerControl(a),this.updateValueAndValidity({emitEvent:u.emitEvent})}removeAt(e,a={}){let u=this._adjustIndex(e);u<0&&(u=0),this.controls[u]&&this.controls[u]._registerOnCollectionChange(()=>{}),this.controls.splice(u,1),this.updateValueAndValidity({emitEvent:a.emitEvent})}setControl(e,a,u={}){let i=this._adjustIndex(e);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),a&&(this.controls.splice(i,0,a),this._registerControl(a)),this.updateValueAndValidity({emitEvent:u.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(e,a={}){hH(this,0,e),e.forEach((u,i)=>{cH(this,!1,i),this.at(i).setValue(u,{onlySelf:!0,emitEvent:a.emitEvent})}),this.updateValueAndValidity(a)}patchValue(e,a={}){null!=e&&(e.forEach((u,i)=>{this.at(i)&&this.at(i).patchValue(u,{onlySelf:!0,emitEvent:a.emitEvent})}),this.updateValueAndValidity(a))}reset(e=[],a={}){this._forEachChild((u,i)=>{u.reset(e[i],{onlySelf:!0,emitEvent:a.emitEvent})}),this._updatePristine(a,this),this._updateTouched(a,this),this.updateValueAndValidity(a)}getRawValue(){return this.controls.map(e=>e.getRawValue())}clear(e={}){this.controls.length<1||(this._forEachChild(a=>a._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:e.emitEvent}))}_adjustIndex(e){return e<0?e+this.length:e}_syncPendingControls(){let e=this.controls.reduce((a,u)=>!!u._syncPendingControls()||a,!1);return e&&this.updateValueAndValidity({onlySelf:!0}),e}_forEachChild(e){this.controls.forEach((a,u)=>{e(a,u)})}_updateValue(){this.value=this.controls.filter(e=>e.enabled||this.disabled).map(e=>e.value)}_anyControls(e){return this.controls.some(a=>a.enabled&&e(a))}_setUpControls(){this._forEachChild(e=>this._registerControl(e))}_allControlsDisabled(){for(const e of this.controls)if(e.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(e){e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)}_find(e){return this.at(e)??null}}function FH(t){return!!t&&(void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn)}class n3{constructor(){this.useNonNullable=!1}get nonNullable(){const e=new n3;return e.useNonNullable=!0,e}group(e,a=null){const u=this._reduceControls(e);let i={};return FH(a)?i=a:null!==a&&(i.validators=a.validator,i.asyncValidators=a.asyncValidator),new Dx(u,i)}record(e,a=null){const u=this._reduceControls(e);return new mH(u,a)}control(e,a,u){let i={};return this.useNonNullable?(FH(a)?i=a:(i.validators=a,i.asyncValidators=u),new _x(e,{...i,nonNullable:!0})):new _x(e,a,u)}array(e,a,u){const i=e.map(r=>this._createControl(r));return new _H(i,a,u)}_reduceControls(e){const a={};return Object.keys(e).forEach(u=>{a[u]=this._createControl(e[u])}),a}_createControl(e){if(e instanceof _x)return e;if(e instanceof p_)return e;if(Array.isArray(e)){const a=e[0],u=e.length>1?e[1]:null,i=e.length>2?e[2]:null;return this.control(a,u,i)}return this.control(e)}static#e=this.\u0275fac=function(a){return new(a||n3)};static#a=this.\u0275prov=he({token:n3,factory:n3.\u0275fac,providedIn:"root"})}class QS{static#e=this.\u0275fac=function(a){return new(a||QS)};static#a=this.\u0275prov=he({token:QS,factory:()=>U(n3).nonNullable,providedIn:"root"})}class Ax extends n3{group(e,a=null){return super.group(e,a)}control(e,a,u){return super.control(e,a,u)}array(e,a,u){return super.array(e,a,u)}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(Ax)))(u||Ax)}})();static#a=this.\u0275prov=he({token:Ax,factory:Ax.\u0275fac,providedIn:"root"})}new ig("18.0.0");class wx{static withConfig(e){return{ngModule:wx,providers:[{provide:X4,useValue:e.callSetDisabledState??fx}]}}static#e=this.\u0275fac=function(a){return new(a||wx)};static#a=this.\u0275mod=en({type:wx,declarations:[e3,ch,dh],exports:[i3,e3,ch,dh]});static#t=this.\u0275inj=P({imports:[i3]})}class k_{static withConfig(e){return{ngModule:k_,providers:[{provide:YS,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:X4,useValue:e.callSetDisabledState??fx}]}}static#e=this.\u0275fac=function(a){return new(a||k_)};static#a=this.\u0275mod=en({type:k_,declarations:[t3,ph,u3,Eh,gh],exports:[i3,t3,ph,u3,Eh,gh]});static#t=this.\u0275inj=P({imports:[i3]})}function AH(t,e,a,u,i,r,o){try{var d=t[r](o),h=d.value}catch(m){return void a(m)}d.done?e(h):Promise.resolve(h).then(u,i)}function Au(t){return function(){var e=this,a=arguments;return new Promise(function(u,i){var r=t.apply(e,a);function o(h){AH(r,u,i,o,d,"next",h)}function d(h){AH(r,u,i,o,d,"throw",h)}o(void 0)})}}function Ue(...t){return Ui(t,vx(t))}function Wn(t,e,a=1/0){return ha(e)?Wn((u,i)=>Qe((r,o)=>e(u,r,i,o))(qr(t(u,i))),a):("number"==typeof e&&(a=e),Re((u,i)=>function tie(t,e,a,u,i,r,o,d){const h=[];let m=0,E=0,v=!1;const k=()=>{v&&!h.length&&!m&&e.complete()},x=C=>m{r&&e.next(C),m++;let A=!1;qr(a(C,E++)).subscribe(at(e,w=>{i?.(w),r?x(w):e.next(w)},()=>{A=!0},void 0,()=>{if(A)try{for(m--;h.length&&mf(w)):f(w)}k()}catch(w){e.error(w)}}))};return t.subscribe(at(e,x,()=>{v=!0,k()})),()=>{d?.()}}(u,i,t,a)))}function r3(t,e){return ha(e)?Wn(t,e,1):Wn(t,1)}function w0(t,e){return Re((a,u)=>{let i=0;a.subscribe(at(u,r=>t.call(e,r,i++)&&u.next(r)))})}function Bx(t){return Re((e,a)=>{try{e.subscribe(a)}finally{a.add(t)}})}function Fo(t,e){return Re((a,u)=>{let i=null,r=0,o=!1;const d=()=>o&&!i&&u.complete();a.subscribe(at(u,h=>{i?.unsubscribe();let m=0;const E=r++;qr(t(h,E)).subscribe(i=at(u,v=>u.next(e?e(h,v,E,m++):v),()=>{i=null,d()}))},()=>{o=!0,d()}))})}class x_{}class D_{}class Qo{constructor(e){this.normalizedNames=new Map,this.lazyUpdate=null,e?"string"==typeof e?this.lazyInit=()=>{this.headers=new Map,e.split("\n").forEach(a=>{const u=a.indexOf(":");if(u>0){const i=a.slice(0,u),r=i.toLowerCase(),o=a.slice(u+1).trim();this.maybeSetNormalizedName(i,r),this.headers.has(r)?this.headers.get(r).push(o):this.headers.set(r,[o])}})}:typeof Headers<"u"&&e instanceof Headers?(this.headers=new Map,e.forEach((a,u)=>{this.setHeaderEntries(u,a)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(e).forEach(([a,u])=>{this.setHeaderEntries(a,u)})}:this.headers=new Map}has(e){return this.init(),this.headers.has(e.toLowerCase())}get(e){this.init();const a=this.headers.get(e.toLowerCase());return a&&a.length>0?a[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(e){return this.init(),this.headers.get(e.toLowerCase())||null}append(e,a){return this.clone({name:e,value:a,op:"a"})}set(e,a){return this.clone({name:e,value:a,op:"s"})}delete(e,a){return this.clone({name:e,value:a,op:"d"})}maybeSetNormalizedName(e,a){this.normalizedNames.has(a)||this.normalizedNames.set(a,e)}init(){this.lazyInit&&(this.lazyInit instanceof Qo?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(e=>this.applyUpdate(e)),this.lazyUpdate=null))}copyFrom(e){e.init(),Array.from(e.headers.keys()).forEach(a=>{this.headers.set(a,e.headers.get(a)),this.normalizedNames.set(a,e.normalizedNames.get(a))})}clone(e){const a=new Qo;return a.lazyInit=this.lazyInit&&this.lazyInit instanceof Qo?this.lazyInit:this,a.lazyUpdate=(this.lazyUpdate||[]).concat([e]),a}applyUpdate(e){const a=e.name.toLowerCase();switch(e.op){case"a":case"s":let u=e.value;if("string"==typeof u&&(u=[u]),0===u.length)return;this.maybeSetNormalizedName(e.name,a);const i=("a"===e.op?this.headers.get(a):void 0)||[];i.push(...u),this.headers.set(a,i);break;case"d":const r=e.value;if(r){let o=this.headers.get(a);if(!o)return;o=o.filter(d=>-1===r.indexOf(d)),0===o.length?(this.headers.delete(a),this.normalizedNames.delete(a)):this.headers.set(a,o)}else this.headers.delete(a),this.normalizedNames.delete(a)}}setHeaderEntries(e,a){const u=(Array.isArray(a)?a:[a]).map(r=>r.toString()),i=e.toLowerCase();this.headers.set(i,u),this.maybeSetNormalizedName(e,i)}forEach(e){this.init(),Array.from(this.normalizedNames.keys()).forEach(a=>e(this.normalizedNames.get(a),this.headers.get(a)))}}class uie{encodeKey(e){return wH(e)}encodeValue(e){return wH(e)}decodeKey(e){return decodeURIComponent(e)}decodeValue(e){return decodeURIComponent(e)}}const nie=/%(\d[a-f0-9])/gi,rie={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function wH(t){return encodeURIComponent(t).replace(nie,(e,a)=>rie[a]??e)}function f_(t){return`${t}`}class yh{constructor(e={}){if(this.updates=null,this.cloneFrom=null,this.encoder=e.encoder||new uie,e.fromString){if(e.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function iie(t,e){const a=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(i=>{const r=i.indexOf("="),[o,d]=-1==r?[e.decodeKey(i),""]:[e.decodeKey(i.slice(0,r)),e.decodeValue(i.slice(r+1))],h=a.get(o)||[];h.push(d),a.set(o,h)}),a}(e.fromString,this.encoder)}else e.fromObject?(this.map=new Map,Object.keys(e.fromObject).forEach(a=>{const u=e.fromObject[a],i=Array.isArray(u)?u.map(f_):[f_(u)];this.map.set(a,i)})):this.map=null}has(e){return this.init(),this.map.has(e)}get(e){this.init();const a=this.map.get(e);return a?a[0]:null}getAll(e){return this.init(),this.map.get(e)||null}keys(){return this.init(),Array.from(this.map.keys())}append(e,a){return this.clone({param:e,value:a,op:"a"})}appendAll(e){const a=[];return Object.keys(e).forEach(u=>{const i=e[u];Array.isArray(i)?i.forEach(r=>{a.push({param:u,value:r,op:"a"})}):a.push({param:u,value:i,op:"a"})}),this.clone(a)}set(e,a){return this.clone({param:e,value:a,op:"s"})}delete(e,a){return this.clone({param:e,value:a,op:"d"})}toString(){return this.init(),this.keys().map(e=>{const a=this.encoder.encodeKey(e);return this.map.get(e).map(u=>a+"="+this.encoder.encodeValue(u)).join("&")}).filter(e=>""!==e).join("&")}clone(e){const a=new yh({encoder:this.encoder});return a.cloneFrom=this.cloneFrom||this,a.updates=(this.updates||[]).concat(e),a}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(e=>this.map.set(e,this.cloneFrom.map.get(e))),this.updates.forEach(e=>{switch(e.op){case"a":case"s":const a=("a"===e.op?this.map.get(e.param):void 0)||[];a.push(f_(e.value)),this.map.set(e.param,a);break;case"d":if(void 0===e.value){this.map.delete(e.param);break}{let u=this.map.get(e.param)||[];const i=u.indexOf(f_(e.value));-1!==i&&u.splice(i,1),u.length>0?this.map.set(e.param,u):this.map.delete(e.param)}}}),this.cloneFrom=this.updates=null)}}class oie{constructor(){this.map=new Map}set(e,a){return this.map.set(e,a),this}get(e){return this.map.has(e)||this.map.set(e,e.defaultValue()),this.map.get(e)}delete(e){return this.map.delete(e),this}has(e){return this.map.has(e)}keys(){return this.map.keys()}}function BH(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function SH(t){return typeof Blob<"u"&&t instanceof Blob}function zH(t){return typeof FormData<"u"&&t instanceof FormData}class Sx{constructor(e,a,u,i){let r;if(this.url=a,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=e.toUpperCase(),function lie(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||i?(this.body=void 0!==u?u:null,r=i):r=u,r&&(this.reportProgress=!!r.reportProgress,this.withCredentials=!!r.withCredentials,r.responseType&&(this.responseType=r.responseType),r.headers&&(this.headers=r.headers),r.context&&(this.context=r.context),r.params&&(this.params=r.params),this.transferCache=r.transferCache),this.headers??=new Qo,this.context??=new oie,this.params){const o=this.params.toString();if(0===o.length)this.urlWithParams=a;else{const d=a.indexOf("?"),h=-1===d?"?":dk.set(x,e.setHeaders[x]),m)),e.setParams&&(E=Object.keys(e.setParams).reduce((k,x)=>k.set(x,e.setParams[x]),E)),new Sx(a,u,o,{params:E,headers:m,context:v,reportProgress:h,responseType:i,withCredentials:d,transferCache:r})}}var zs;!function(t){t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User"}(zs||(zs={}));class XS{constructor(e,a=200,u="OK"){this.headers=e.headers||new Qo,this.status=void 0!==e.status?e.status:a,this.statusText=e.statusText||u,this.url=e.url||null,this.ok=this.status>=200&&this.status<300}}class C_ extends XS{constructor(e={}){super(e),this.type=zs.ResponseHeader}clone(e={}){return new C_({headers:e.headers||this.headers,status:void 0!==e.status?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}}class _h extends XS{constructor(e={}){super(e),this.type=zs.Response,this.body=void 0!==e.body?e.body:null}clone(e={}){return new _h({body:void 0!==e.body?e.body:this.body,headers:e.headers||this.headers,status:void 0!==e.status?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}}class Fh extends XS{constructor(e){super(e,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${e.url||"(unknown url)"}`:this.message=`Http failure response for ${e.url||"(unknown url)"}: ${e.status} ${e.statusText}`,this.error=e.error||null}}var MH;function az(t,e){return{body:e,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,transferCache:t.transferCache}}!function(t){t[t.Continue=100]="Continue",t[t.SwitchingProtocols=101]="SwitchingProtocols",t[t.Processing=102]="Processing",t[t.EarlyHints=103]="EarlyHints",t[t.Ok=200]="Ok",t[t.Created=201]="Created",t[t.Accepted=202]="Accepted",t[t.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",t[t.NoContent=204]="NoContent",t[t.ResetContent=205]="ResetContent",t[t.PartialContent=206]="PartialContent",t[t.MultiStatus=207]="MultiStatus",t[t.AlreadyReported=208]="AlreadyReported",t[t.ImUsed=226]="ImUsed",t[t.MultipleChoices=300]="MultipleChoices",t[t.MovedPermanently=301]="MovedPermanently",t[t.Found=302]="Found",t[t.SeeOther=303]="SeeOther",t[t.NotModified=304]="NotModified",t[t.UseProxy=305]="UseProxy",t[t.Unused=306]="Unused",t[t.TemporaryRedirect=307]="TemporaryRedirect",t[t.PermanentRedirect=308]="PermanentRedirect",t[t.BadRequest=400]="BadRequest",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Gone=410]="Gone",t[t.LengthRequired=411]="LengthRequired",t[t.PreconditionFailed=412]="PreconditionFailed",t[t.PayloadTooLarge=413]="PayloadTooLarge",t[t.UriTooLong=414]="UriTooLong",t[t.UnsupportedMediaType=415]="UnsupportedMediaType",t[t.RangeNotSatisfiable=416]="RangeNotSatisfiable",t[t.ExpectationFailed=417]="ExpectationFailed",t[t.ImATeapot=418]="ImATeapot",t[t.MisdirectedRequest=421]="MisdirectedRequest",t[t.UnprocessableEntity=422]="UnprocessableEntity",t[t.Locked=423]="Locked",t[t.FailedDependency=424]="FailedDependency",t[t.TooEarly=425]="TooEarly",t[t.UpgradeRequired=426]="UpgradeRequired",t[t.PreconditionRequired=428]="PreconditionRequired",t[t.TooManyRequests=429]="TooManyRequests",t[t.RequestHeaderFieldsTooLarge=431]="RequestHeaderFieldsTooLarge",t[t.UnavailableForLegalReasons=451]="UnavailableForLegalReasons",t[t.InternalServerError=500]="InternalServerError",t[t.NotImplemented=501]="NotImplemented",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout",t[t.HttpVersionNotSupported=505]="HttpVersionNotSupported",t[t.VariantAlsoNegotiates=506]="VariantAlsoNegotiates",t[t.InsufficientStorage=507]="InsufficientStorage",t[t.LoopDetected=508]="LoopDetected",t[t.NotExtended=510]="NotExtended",t[t.NetworkAuthenticationRequired=511]="NetworkAuthenticationRequired"}(MH||(MH={}));class xu{constructor(e){this.handler=e}request(e,a,u={}){let i;if(e instanceof Sx)i=e;else{let d,h;d=u.headers instanceof Qo?u.headers:new Qo(u.headers),u.params&&(h=u.params instanceof yh?u.params:new yh({fromObject:u.params})),i=new Sx(e,a,void 0!==u.body?u.body:null,{headers:d,context:u.context,params:h,reportProgress:u.reportProgress,responseType:u.responseType||"json",withCredentials:u.withCredentials,transferCache:u.transferCache})}const r=Ue(i).pipe(r3(d=>this.handler.handle(d)));if(e instanceof Sx||"events"===u.observe)return r;const o=r.pipe(w0(d=>d instanceof _h));switch(u.observe||"body"){case"body":switch(i.responseType){case"arraybuffer":return o.pipe(Qe(d=>{if(null!==d.body&&!(d.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return d.body}));case"blob":return o.pipe(Qe(d=>{if(null!==d.body&&!(d.body instanceof Blob))throw new Error("Response is not a Blob.");return d.body}));case"text":return o.pipe(Qe(d=>{if(null!==d.body&&"string"!=typeof d.body)throw new Error("Response is not a string.");return d.body}));default:return o.pipe(Qe(d=>d.body))}case"response":return o;default:throw new Error(`Unreachable: unhandled observe type ${u.observe}}`)}}delete(e,a={}){return this.request("DELETE",e,a)}get(e,a={}){return this.request("GET",e,a)}head(e,a={}){return this.request("HEAD",e,a)}jsonp(e,a){return this.request("JSONP",e,{params:(new yh).append(a,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,a={}){return this.request("OPTIONS",e,a)}patch(e,a,u={}){return this.request("PATCH",e,az(u,a))}post(e,a,u={}){return this.request("POST",e,az(u,a))}put(e,a,u={}){return this.request("PUT",e,az(u,a))}static#e=this.\u0275fac=function(a){return new(a||xu)(fe(x_))};static#a=this.\u0275prov=he({token:xu,factory:xu.\u0275fac})}const cie=/^\)\]\}',?\n/;function LH(t){if(t.url)return t.url;const e="X-Request-URL".toLocaleLowerCase();return t.headers.get(e)}class o3{constructor(){this.fetchImpl=U(mie,{optional:!0})?.fetch??fetch.bind(globalThis),this.ngZone=U(ut)}handle(e){return new rt(a=>{const u=new AbortController;return this.doRequest(e,u.signal,a).then(tz,i=>a.error(new Fh({error:i}))),()=>u.abort()})}doRequest(e,a,u){var i=this;return Au(function*(){const r=i.createRequestInit(e);let o;try{const x=i.fetchImpl(e.urlWithParams,{signal:a,...r});(function pie(t){t.then(tz,tz)})(x),u.next({type:zs.Sent}),o=yield x}catch(x){return void u.error(new Fh({error:x,status:x.status??0,statusText:x.statusText,url:e.urlWithParams,headers:x.headers}))}const d=new Qo(o.headers),h=o.statusText,m=LH(o)??e.urlWithParams;let E=o.status,v=null;if(e.reportProgress&&u.next(new C_({headers:d,status:E,statusText:h,url:m})),o.body){const x=o.headers.get("content-length"),f=[],C=o.body.getReader();let w,z,A=0;const L=typeof Zone<"u"&&Zone.current;yield i.ngZone.runOutsideAngular(Au(function*(){for(;;){const{done:j,value:$}=yield C.read();if(j)break;if(f.push($),A+=$.length,e.reportProgress){z="text"===e.responseType?(z??"")+(w??=new TextDecoder).decode($,{stream:!0}):void 0;const oe=()=>u.next({type:zs.DownloadProgress,total:x?+x:void 0,loaded:A,partialText:z});L?L.run(oe):oe()}}}));const M=i.concatChunks(f,A);try{const j=o.headers.get("Content-Type")??"";v=i.parseBody(e,M,j)}catch(j){return void u.error(new Fh({error:j,headers:new Qo(o.headers),status:o.status,statusText:o.statusText,url:LH(o)??e.urlWithParams}))}}0===E&&(E=v?200:0),E>=200&&E<300?(u.next(new _h({body:v,headers:d,status:E,statusText:h,url:m})),u.complete()):u.error(new Fh({error:v,headers:d,status:E,statusText:h,url:m}))})()}parseBody(e,a,u){switch(e.responseType){case"json":const i=(new TextDecoder).decode(a).replace(cie,"");return""===i?null:JSON.parse(i);case"text":return(new TextDecoder).decode(a);case"blob":return new Blob([a],{type:u});case"arraybuffer":return a.buffer}}createRequestInit(e){const a={},u=e.withCredentials?"include":void 0;if(e.headers.forEach((i,r)=>a[i]=r.join(",")),a.Accept??="application/json, text/plain, */*",!a["Content-Type"]){const i=e.detectContentTypeHeader();null!==i&&(a["Content-Type"]=i)}return{body:e.serializeBody(),method:e.method,headers:a,credentials:u}}concatChunks(e,a){const u=new Uint8Array(a);let i=0;for(const r of e)u.set(r,i),i+=r.length;return u}static#e=this.\u0275fac=function(a){return new(a||o3)};static#a=this.\u0275prov=he({token:o3,factory:o3.\u0275fac})}class mie{}function tz(){}function TH(t,e){return e(t)}function Eie(t,e){return(a,u)=>e.intercept(a,{handle:i=>t(i,u)})}const PH=new V(""),zx=new V(""),NH=new V(""),IH=new V("",{providedIn:"root",factory:()=>!0});function vie(){let t=null;return(e,a)=>{null===t&&(t=(U(PH,{optional:!0})??[]).reduceRight(Eie,TH));const u=U(Wr);if(U(IH)){const r=u.add();return t(e,a).pipe(Bx(()=>u.remove(r)))}return t(e,a)}}class Mg extends x_{constructor(e,a){super(),this.backend=e,this.injector=a,this.chain=null,this.pendingTasks=U(Wr),this.contributeToStability=U(IH)}handle(e){if(null===this.chain){const a=Array.from(new Set([...this.injector.get(zx),...this.injector.get(NH,[])]));this.chain=a.reduceRight((u,i)=>function gie(t,e,a){return(u,i)=>ir(a,()=>e(u,r=>t(r,i)))}(u,i,this.injector),TH)}if(this.contributeToStability){const a=this.pendingTasks.add();return this.chain(e,u=>this.backend.handle(u)).pipe(Bx(()=>this.pendingTasks.remove(a)))}return this.chain(e,a=>this.backend.handle(a))}static#e=this.\u0275fac=function(a){return new(a||Mg)(fe(D_),fe(Pi))};static#a=this.\u0275prov=he({token:Mg,factory:Mg.\u0275fac})}let RH,kie=0;class HH{}function yie(){return"object"==typeof window?window:{}}class Lg{constructor(e,a){this.callbackMap=e,this.document=a,this.resolvedPromise=Promise.resolve()}nextCallback(){return"ng_jsonp_callback_"+kie++}handle(e){if("JSONP"!==e.method)throw new Error("JSONP requests must use JSONP request method.");if("json"!==e.responseType)throw new Error("JSONP requests must use Json response type.");if(e.headers.keys().length>0)throw new Error("JSONP requests do not support headers.");return new rt(a=>{const u=this.nextCallback(),i=e.urlWithParams.replace(/=JSONP_CALLBACK(&|$)/,`=${u}$1`),r=this.document.createElement("script");r.src=i;let o=null,d=!1;this.callbackMap[u]=v=>{delete this.callbackMap[u],o=v,d=!0};const h=()=>{r.parentNode&&r.parentNode.removeChild(r),delete this.callbackMap[u]};return r.addEventListener("load",v=>{this.resolvedPromise.then(()=>{h(),d?(a.next(new _h({body:o,status:200,statusText:"OK",url:i})),a.complete()):a.error(new Fh({url:i,status:0,statusText:"JSONP Error",error:new Error("JSONP injected script did not invoke callback.")}))})}),r.addEventListener("error",v=>{h(),a.error(new Fh({error:v,status:0,statusText:"JSONP Error",url:i}))}),this.document.body.appendChild(r),a.next({type:zs.Sent}),()=>{d||this.removeListeners(r),h()}})}removeListeners(e){RH??=this.document.implementation.createHTMLDocument(),RH.adoptNode(e)}static#e=this.\u0275fac=function(a){return new(a||Lg)(fe(HH),fe(Ei))};static#a=this.\u0275prov=he({token:Lg,factory:Lg.\u0275fac})}function VH(t,e){return"JSONP"===t.method?U(Lg).handle(t):e(t)}class y_{constructor(e){this.injector=e}intercept(e,a){return ir(this.injector,()=>VH(e,u=>a.handle(u)))}static#e=this.\u0275fac=function(a){return new(a||y_)(fe(Pi))};static#a=this.\u0275prov=he({token:y_,factory:y_.\u0275fac})}const _ie=/^\)\]\}',?\n/;class Tg{constructor(e){this.xhrFactory=e}handle(e){if("JSONP"===e.method)throw new J(-2800,!1);const a=this.xhrFactory;return(a.\u0275loadImpl?Ui(a.\u0275loadImpl()):Ue(null)).pipe(Fo(()=>new rt(i=>{const r=a.build();if(r.open(e.method,e.urlWithParams),e.withCredentials&&(r.withCredentials=!0),e.headers.forEach((f,C)=>r.setRequestHeader(f,C.join(","))),e.headers.has("Accept")||r.setRequestHeader("Accept","application/json, text/plain, */*"),!e.headers.has("Content-Type")){const f=e.detectContentTypeHeader();null!==f&&r.setRequestHeader("Content-Type",f)}if(e.responseType){const f=e.responseType.toLowerCase();r.responseType="json"!==f?f:"text"}const o=e.serializeBody();let d=null;const h=()=>{if(null!==d)return d;const f=r.statusText||"OK",C=new Qo(r.getAllResponseHeaders()),A=function Fie(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(r)||e.url;return d=new C_({headers:C,status:r.status,statusText:f,url:A}),d},m=()=>{let{headers:f,status:C,statusText:A,url:w}=h(),z=null;204!==C&&(z=typeof r.response>"u"?r.responseText:r.response),0===C&&(C=z?200:0);let L=C>=200&&C<300;if("json"===e.responseType&&"string"==typeof z){const M=z;z=z.replace(_ie,"");try{z=""!==z?JSON.parse(z):null}catch(j){z=M,L&&(L=!1,z={error:j,text:z})}}L?(i.next(new _h({body:z,headers:f,status:C,statusText:A,url:w||void 0})),i.complete()):i.error(new Fh({error:z,headers:f,status:C,statusText:A,url:w||void 0}))},E=f=>{const{url:C}=h(),A=new Fh({error:f,status:r.status||0,statusText:r.statusText||"Unknown Error",url:C||void 0});i.error(A)};let v=!1;const k=f=>{v||(i.next(h()),v=!0);let C={type:zs.DownloadProgress,loaded:f.loaded};f.lengthComputable&&(C.total=f.total),"text"===e.responseType&&r.responseText&&(C.partialText=r.responseText),i.next(C)},x=f=>{let C={type:zs.UploadProgress,loaded:f.loaded};f.lengthComputable&&(C.total=f.total),i.next(C)};return r.addEventListener("load",m),r.addEventListener("error",E),r.addEventListener("timeout",E),r.addEventListener("abort",E),e.reportProgress&&(r.addEventListener("progress",k),null!==o&&r.upload&&r.upload.addEventListener("progress",x)),r.send(o),i.next({type:zs.Sent}),()=>{r.removeEventListener("error",E),r.removeEventListener("abort",E),r.removeEventListener("load",m),r.removeEventListener("timeout",E),e.reportProgress&&(r.removeEventListener("progress",k),null!==o&&r.upload&&r.upload.removeEventListener("progress",x)),r.readyState!==r.DONE&&r.abort()}})))}static#e=this.\u0275fac=function(a){return new(a||Tg)(fe(ZI))};static#a=this.\u0275prov=he({token:Tg,factory:Tg.\u0275fac})}const __=new V(""),jH="XSRF-TOKEN",OH=new V("",{providedIn:"root",factory:()=>jH}),GH="X-XSRF-TOKEN",KH=new V("",{providedIn:"root",factory:()=>GH});class uz{}class Pg{constructor(e,a,u){this.doc=e,this.platform=a,this.cookieName=u,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=OI(e,this.cookieName),this.lastCookieString=e),this.lastToken}static#e=this.\u0275fac=function(a){return new(a||Pg)(fe(Ei),fe(Ll),fe(OH))};static#a=this.\u0275prov=he({token:Pg,factory:Pg.\u0275fac})}function WH(t,e){const a=t.url.toLowerCase();if(!U(__)||"GET"===t.method||"HEAD"===t.method||a.startsWith("http://")||a.startsWith("https://"))return e(t);const u=U(uz).getToken(),i=U(KH);return null!=u&&!t.headers.has(i)&&(t=t.clone({headers:t.headers.set(i,u)})),e(t)}class Ng{constructor(e){this.injector=e}intercept(e,a){return ir(this.injector,()=>WH(e,u=>a.handle(u)))}static#e=this.\u0275fac=function(a){return new(a||Ng)(fe(Pi))};static#a=this.\u0275prov=he({token:Ng,factory:Ng.\u0275fac})}var oc;function l3(t,e){return{\u0275kind:t,\u0275providers:e}}function UH(...t){const e=[xu,Tg,Mg,{provide:x_,useExisting:Mg},{provide:D_,useFactory:()=>U(o3,{optional:!0})??U(Tg)},{provide:zx,useValue:WH,multi:!0},{provide:__,useValue:!0},{provide:uz,useClass:Pg}];for(const a of t)e.push(...a.\u0275providers);return Hc(e)}!function(t){t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch"}(oc||(oc={}));const JH=new V("");function ZH(){return l3(oc.LegacyInterceptors,[{provide:JH,useFactory:vie},{provide:zx,useExisting:JH,multi:!0}])}function $H({cookieName:t,headerName:e}){const a=[];return void 0!==t&&a.push({provide:OH,useValue:t}),void 0!==e&&a.push({provide:KH,useValue:e}),l3(oc.CustomXsrfConfiguration,a)}function wie(){return l3(oc.JsonpSupport,[Lg,{provide:HH,useFactory:yie},{provide:zx,useValue:VH,multi:!0}])}class Mx{static disable(){return{ngModule:Mx,providers:[l3(oc.NoXsrfProtection,[{provide:__,useValue:!1}]).\u0275providers]}}static withOptions(e={}){return{ngModule:Mx,providers:$H(e).\u0275providers}}static#e=this.\u0275fac=function(a){return new(a||Mx)};static#a=this.\u0275mod=en({type:Mx});static#t=this.\u0275inj=P({providers:[Ng,{provide:PH,useExisting:Ng,multi:!0},{provide:uz,useClass:Pg},$H({cookieName:jH,headerName:GH}).\u0275providers,{provide:__,useValue:!0}]})}class iz{static#e=this.\u0275fac=function(a){return new(a||iz)};static#a=this.\u0275mod=en({type:iz});static#t=this.\u0275inj=P({providers:[UH(ZH())]})}class nz{static#e=this.\u0275fac=function(a){return new(a||nz)};static#a=this.\u0275mod=en({type:nz});static#t=this.\u0275inj=P({providers:[wie().\u0275providers]})}new V(""),new V("");function Ah(t){return Re((e,a)=>{qr(t).subscribe(at(a,()=>a.complete(),ri)),!a.closed&&e.subscribe(a)})}class Iie extends Ce{constructor(e,a){super()}schedule(e,a=0){return this}}const A_={setInterval(t,e,...a){const{delegate:u}=A_;return u?.setInterval?u.setInterval(t,e,...a):setInterval(t,e,...a)},clearInterval(t){const{delegate:e}=A_;return(e?.clearInterval||clearInterval)(t)},delegate:void 0};class rz extends Iie{constructor(e,a){super(e,a),this.scheduler=e,this.work=a,this.pending=!1}schedule(e,a=0){var u;if(this.closed)return this;this.state=e;const i=this.id,r=this.scheduler;return null!=i&&(this.id=this.recycleAsyncId(r,i,a)),this.pending=!0,this.delay=a,this.id=null!==(u=this.id)&&void 0!==u?u:this.requestAsyncId(r,this.id,a),this}requestAsyncId(e,a,u=0){return A_.setInterval(e.flush.bind(e,this),u)}recycleAsyncId(e,a,u=0){if(null!=u&&this.delay===u&&!1===this.pending)return a;null!=a&&A_.clearInterval(a)}execute(e,a){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const u=this._execute(e,a);if(u)return u;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(e,a){let i,u=!1;try{this.work(e)}catch(r){u=!0,i=r||new Error("Scheduled action threw falsy error")}if(u)return this.unsubscribe(),i}unsubscribe(){if(!this.closed){const{id:e,scheduler:a}=this,{actions:u}=a;this.work=this.state=this.scheduler=null,this.pending=!1,ka(u,this),null!=e&&(this.id=this.recycleAsyncId(a,e,null)),this.delay=null,super.unsubscribe()}}}const oz={now:()=>(oz.delegate||Date).now(),delegate:void 0};class Lx{constructor(e,a=Lx.now){this.schedulerActionCtor=e,this.now=a}schedule(e,a=0,u){return new this.schedulerActionCtor(this,e).schedule(u,a)}}Lx.now=oz.now;class lz extends Lx{constructor(e,a=Lx.now){super(e,a),this.actions=[],this._active=!1}flush(e){const{actions:a}=this;if(this._active)return void a.push(e);let u;this._active=!0;do{if(u=e.execute(e.state,e.delay))break}while(e=a.shift());if(this._active=!1,u){for(;e=a.shift();)e.unsubscribe();throw u}}}const sz=new lz(rz),Rie=sz;function jie(t=0,e,a=Rie){let u=-1;return null!=e&&(NR(e)?a=e:u=e),new rt(i=>{let r=function Vie(t){return t instanceof Date&&!isNaN(t)}(t)?+t-a.now():t;r<0&&(r=0);let o=0;return a.schedule(function(){i.closed||(i.next(o++),0<=u?this.schedule(void 0,u):i.complete())},r)})}function Oie(t,e=sz){return function Hie(t){return Re((e,a)=>{let u=!1,i=null,r=null,o=!1;const d=()=>{if(r?.unsubscribe(),r=null,u){u=!1;const m=i;i=null,a.next(m)}o&&a.complete()},h=()=>{r=null,o&&a.complete()};e.subscribe(at(a,m=>{u=!0,i=m,r||qr(t(m)).subscribe(r=at(a,d,h))},()=>{o=!0,(!u||!r||r.closed)&&a.complete()}))})}(()=>jie(t,e))}function Ig(t=1/0){return Wn(zi,t)}function Tx(...t){return function Gie(){return Ig(1)}()(Ui(t,vx(t)))}function uV(...t){const e=vx(t);return Re((a,u)=>{(e?Tx(t,a,e):Tx(t,a)).subscribe(u)})}function vr(t,e,a){const u=ha(t)||e||a?{next:t,error:e,complete:a}:t;return u?Re((i,r)=>{var o;null===(o=u.subscribe)||void 0===o||o.call(u);let d=!0;i.subscribe(at(r,h=>{var m;null===(m=u.next)||void 0===m||m.call(u,h),r.next(h)},()=>{var h;d=!1,null===(h=u.complete)||void 0===h||h.call(u),r.complete()},h=>{var m;d=!1,null===(m=u.error)||void 0===m||m.call(u,h),r.error(h)},()=>{var h,m;d&&(null===(h=u.unsubscribe)||void 0===h||h.call(u)),null===(m=u.finalize)||void 0===m||m.call(u)}))}):zi}function iV(t,e=sz){return Re((a,u)=>{let i=null,r=null,o=null;const d=()=>{if(i){i.unsubscribe(),i=null;const m=r;r=null,u.next(m)}};function h(){const m=o+t,E=e.now();if(E{r=m,o=e.now(),i||(i=e.schedule(h,t),u.add(i))},()=>{d(),u.complete()},void 0,()=>{r=i=null}))})}const Px={schedule(t){let e=requestAnimationFrame,a=cancelAnimationFrame;const{delegate:u}=Px;u&&(e=u.requestAnimationFrame,a=u.cancelAnimationFrame);const i=e(r=>{a=void 0,t(r)});return new Ce(()=>a?.(i))},requestAnimationFrame(...t){const{delegate:e}=Px;return(e?.requestAnimationFrame||requestAnimationFrame)(...t)},cancelAnimationFrame(...t){const{delegate:e}=Px;return(e?.cancelAnimationFrame||cancelAnimationFrame)(...t)},delegate:void 0};const Uie=new class Wie extends lz{flush(e){this._active=!0;const a=this._scheduled;this._scheduled=void 0;const{actions:u}=this;let i;e=e||u.shift();do{if(i=e.execute(e.state,e.delay))break}while((e=u[0])&&e.id===a&&u.shift());if(this._active=!1,i){for(;(e=u[0])&&e.id===a&&u.shift();)e.unsubscribe();throw i}}}(class Kie extends rz{constructor(e,a){super(e,a),this.scheduler=e,this.work=a}requestAsyncId(e,a,u=0){return null!==u&&u>0?super.requestAsyncId(e,a,u):(e.actions.push(this),e._scheduled||(e._scheduled=Px.requestAnimationFrame(()=>e.flush(void 0))))}recycleAsyncId(e,a,u=0){var i;if(null!=u?u>0:this.delay>0)return super.recycleAsyncId(e,a,u);const{actions:r}=e;null!=a&&(null===(i=r[r.length-1])||void 0===i?void 0:i.id)!==a&&(Px.cancelAnimationFrame(a),e._scheduled=void 0)}});let dz,Jie=1;const w_={};function nV(t){return t in w_&&(delete w_[t],!0)}const Zie={setImmediate(t){const e=Jie++;return w_[e]=!0,dz||(dz=Promise.resolve()),dz.then(()=>nV(e)&&t()),e},clearImmediate(t){nV(t)}},{setImmediate:$ie,clearImmediate:qie}=Zie,B_={setImmediate(...t){const{delegate:e}=B_;return(e?.setImmediate||$ie)(...t)},clearImmediate(t){const{delegate:e}=B_;return(e?.clearImmediate||qie)(t)},delegate:void 0};const Xie=new class Qie extends lz{flush(e){this._active=!0;const a=this._scheduled;this._scheduled=void 0;const{actions:u}=this;let i;e=e||u.shift();do{if(i=e.execute(e.state,e.delay))break}while((e=u[0])&&e.id===a&&u.shift());if(this._active=!1,i){for(;(e=u[0])&&e.id===a&&u.shift();)e.unsubscribe();throw i}}}(class Yie extends rz{constructor(e,a){super(e,a),this.scheduler=e,this.work=a}requestAsyncId(e,a,u=0){return null!==u&&u>0?super.requestAsyncId(e,a,u):(e.actions.push(this),e._scheduled||(e._scheduled=B_.setImmediate(e.flush.bind(e,void 0))))}recycleAsyncId(e,a,u=0){var i;if(null!=u?u>0:this.delay>0)return super.recycleAsyncId(e,a,u);const{actions:r}=e;null!=a&&(null===(i=r[r.length-1])||void 0===i?void 0:i.id)!==a&&(B_.clearImmediate(a),e._scheduled===a&&(e._scheduled=void 0))}}),ene=["addListener","removeListener"],ane=["addEventListener","removeEventListener"],tne=["on","off"];function Rg(t,e,a,u){if(ha(a)&&(u=a,a=void 0),u)return Rg(t,e,a).pipe(IS(u));const[i,r]=function nne(t){return ha(t.addEventListener)&&ha(t.removeEventListener)}(t)?ane.map(o=>d=>t[o](e,d,a)):function une(t){return ha(t.addListener)&&ha(t.removeListener)}(t)?ene.map(rV(t,e)):function ine(t){return ha(t.on)&&ha(t.off)}(t)?tne.map(rV(t,e)):[];if(!i&&PS(t))return Wn(o=>Rg(o,e,a))(qr(t));if(!i)throw new TypeError("Invalid event target");return new rt(o=>{const d=(...h)=>o.next(1r(d)})}function rV(t,e){return a=>u=>t[a](e,u)}const Ol=new rt(t=>t.complete());function cz(...t){const e=vx(t),a=function oue(t,e){return"number"==typeof NS(t)?t.pop():e}(t,1/0),u=t;return u.length?1===u.length?qr(u[0]):Ig(a)(Ui(u,e)):Ol}const one=["content"],lne=["scroll"],sne=["padding"],oV=["*"],Nx=t=>({searchTerm:t});function dne(t,e){if(1&t&&(ru(0,"div",6),Ey(1,7),_u()),2&t){const a=vt();Ka(),Dt("ngTemplateOutlet",a.headerTemplate)("ngTemplateOutletContext",P4(2,Nx,a.filterValue))}}function cne(t,e){if(1&t&&(ru(0,"div",8),Ey(1,7),_u()),2&t){const a=vt();Ka(),Dt("ngTemplateOutlet",a.footerTemplate)("ngTemplateOutletContext",P4(2,Nx,a.filterValue))}}const hne=["searchInput"],mne=["clearButton"],pne=(t,e,a)=>({item:t,clear:e,label:a}),Ene=(t,e)=>({items:t,clear:e}),gne=(t,e,a,u)=>({item:t,item$:e,index:a,searchTerm:u});function vne(t,e){if(1&t){const a=J1();ru(0,"span",22),Yu("click",function(){di(a);const i=vt().$implicit;return Nu(vt(2).unselect(i))}),C0(1,"\xd7"),_u(),U1(2,"span",23)}if(2&t){const a=vt().$implicit,u=vt(2);Ka(2),Dt("ngItemLabel",a.label)("escape",u.escapeHTML)}}function bne(t,e){}function kne(t,e){if(1&t&&(ru(0,"div",20),pi(1,vne,3,2,"ng-template",null,1,$1)(3,bne,0,0,"ng-template",21),_u()),2&t){const a=e.$implicit,u=Cs(2),i=vt(2);pr("ng-value-disabled",a.disabled),Ka(3),Dt("ngTemplateOutlet",i.labelTemplate||u)("ngTemplateOutletContext",lN(4,pne,a.value,i.clearItem,a.label))}}function xne(t,e){if(1&t&&(Jd(0),pi(1,kne,4,8,"div",19),Zd()),2&t){const a=vt();Ka(),Dt("ngForOf",a.selectedItems)("ngForTrackBy",a.trackByOption)}}function Dne(t,e){}function fne(t,e){if(1&t&&pi(0,Dne,0,0,"ng-template",21),2&t){const a=vt();Dt("ngTemplateOutlet",a.multiLabelTemplate)("ngTemplateOutletContext",oN(2,Ene,a.selectedValues,a.clearItem))}}function Cne(t,e){1&t&&U1(0,"div",25)}function yne(t,e){}function _ne(t,e){if(1&t&&(Jd(0),pi(1,Cne,1,0,"ng-template",null,2,$1)(3,yne,0,0,"ng-template",24),Zd()),2&t){const a=Cs(2),u=vt();Ka(3),Dt("ngTemplateOutlet",u.loadingSpinnerTemplate||a)}}function Fne(t,e){if(1&t&&(ru(0,"span",26,3)(2,"span",27),C0(3,"\xd7"),_u()()),2&t){_B("title",vt().clearAllText)}}function Ane(t,e){if(1&t&&U1(0,"span",32),2&t){const a=vt().$implicit,u=vt(2);Dt("ngItemLabel",a.label)("escape",u.escapeHTML)}}function wne(t,e){}function Bne(t,e){if(1&t){const a=J1();ru(0,"div",31),Yu("click",function(){const i=di(a).$implicit;return Nu(vt(2).toggleItem(i))})("mouseover",function(){const i=di(a).$implicit;return Nu(vt(2).onItemHover(i))}),pi(1,Ane,1,2,"ng-template",null,4,$1)(3,wne,0,0,"ng-template",21),_u()}if(2&t){const a=e.$implicit,u=Cs(2),i=vt(2);pr("ng-option-disabled",a.disabled)("ng-option-selected",a.selected)("ng-optgroup",a.children)("ng-option",!a.children)("ng-option-child",!!a.parent)("ng-option-marked",a===i.itemsList.markedItem),Gn("role",a.children?"group":"option")("aria-selected",a.selected)("id",null==a?null:a.htmlId),Ka(3),Dt("ngTemplateOutlet",a.children?i.optgroupTemplate||u:i.optionTemplate||u)("ngTemplateOutletContext",sN(17,gne,a.value,a,a.index,i.searchTerm))}}function Sne(t,e){if(1&t&&(ru(0,"span")(1,"span",34),C0(2),_u(),C0(3),_u()),2&t){const a=vt(3);Ka(2),Z1(a.addTagText),Ka(),Dy('"',a.searchTerm,'"')}}function zne(t,e){}function Mne(t,e){if(1&t){const a=J1();ru(0,"div",33),Yu("mouseover",function(){di(a);return Nu(vt(2).itemsList.unmarkItem())})("click",function(){di(a);return Nu(vt(2).selectTag())}),pi(1,Sne,4,2,"ng-template",null,5,$1)(3,zne,0,0,"ng-template",21),_u()}if(2&t){const a=Cs(2),u=vt(2);pr("ng-option-marked",!u.itemsList.markedItem),Ka(3),Dt("ngTemplateOutlet",u.tagTemplate||a)("ngTemplateOutletContext",P4(4,Nx,u.searchTerm))}}function Lne(t,e){if(1&t&&(ru(0,"div",35),C0(1),_u()),2&t){const a=vt(3);Ka(),Z1(a.notFoundText)}}function Tne(t,e){}function Pne(t,e){if(1&t&&(Jd(0),pi(1,Lne,2,1,"ng-template",null,6,$1)(3,Tne,0,0,"ng-template",21),Zd()),2&t){const a=Cs(2),u=vt(2);Ka(3),Dt("ngTemplateOutlet",u.notFoundTemplate||a)("ngTemplateOutletContext",P4(2,Nx,u.searchTerm))}}function Nne(t,e){if(1&t&&(ru(0,"div",35),C0(1),_u()),2&t){const a=vt(3);Ka(),Z1(a.typeToSearchText)}}function Ine(t,e){}function Rne(t,e){if(1&t&&(Jd(0),pi(1,Nne,2,1,"ng-template",null,7,$1)(3,Ine,0,0,"ng-template",24),Zd()),2&t){const a=Cs(2),u=vt(2);Ka(3),Dt("ngTemplateOutlet",u.typeToSearchTemplate||a)}}function Hne(t,e){if(1&t&&(ru(0,"div",35),C0(1),_u()),2&t){const a=vt(3);Ka(),Z1(a.loadingText)}}function Vne(t,e){}function jne(t,e){if(1&t&&(Jd(0),pi(1,Hne,2,1,"ng-template",null,8,$1)(3,Vne,0,0,"ng-template",21),Zd()),2&t){const a=Cs(2),u=vt(2);Ka(3),Dt("ngTemplateOutlet",u.loadingTextTemplate||a)("ngTemplateOutletContext",P4(2,Nx,u.searchTerm))}}function One(t,e){if(1&t){const a=J1();ru(0,"ng-dropdown-panel",28),Yu("update",function(i){di(a);return Nu(vt().viewPortItems=i)})("scroll",function(i){di(a);return Nu(vt().scroll.emit(i))})("scrollToEnd",function(i){di(a);return Nu(vt().scrollToEnd.emit(i))})("outsideClick",function(){di(a);return Nu(vt().close())}),Jd(1),pi(2,Bne,4,22,"div",29)(3,Mne,4,6,"div",30),Zd(),pi(4,Pne,4,4,"ng-container",12)(5,Rne,4,1,"ng-container",12)(6,jne,4,4,"ng-container",12),_u()}if(2&t){const a=vt();pr("ng-select-multiple",a.multiple),Dt("virtualScroll",a.virtualScroll)("bufferAmount",a.bufferAmount)("appendTo",a.appendTo)("position",a.dropdownPosition)("headerTemplate",a.headerTemplate)("footerTemplate",a.footerTemplate)("filterValue",a.searchTerm)("items",a.itemsList.filteredItems)("markedItem",a.itemsList.markedItem)("ngClass",a.appendTo?a.classes:null)("id",a.dropdownId),Ka(2),Dt("ngForOf",a.viewPortItems)("ngForTrackBy",a.trackByOption),Ka(),Dt("ngIf",a.showAddTag),Ka(),Dt("ngIf",a.showNoItemsFound()),Ka(),Dt("ngIf",a.showTypeToSearch()),Ka(),Dt("ngIf",a.loading&&0===a.itemsList.filteredItems.length)}}const lV=/[&<>"']/g,Gne=RegExp(lV.source),Kne={"&":"&","<":"<",">":">",'"':""","'":"'"};function Qu(t){return null!=t}function Ix(t){return"object"==typeof t&&Qu(t)}function S_(t){return t instanceof Function}class Rx{constructor(e){this.element=e,this.escape=!0}ngOnChanges(e){this.element.nativeElement.innerHTML=this.escape?function Wne(t){return t&&Gne.test(t)?t.replace(lV,e=>Kne[e]):t}(this.ngItemLabel):this.ngItemLabel}static#e=this.\u0275fac=function(a){return new(a||Rx)(q(Ht))};static#a=this.\u0275dir=Ae({type:Rx,selectors:[["","ngItemLabel",""]],inputs:{ngItemLabel:"ngItemLabel",escape:"escape"},features:[tn]})}class Hg{constructor(e){this.template=e}static#e=this.\u0275fac=function(a){return new(a||Hg)(q(gt))};static#a=this.\u0275dir=Ae({type:Hg,selectors:[["","ng-option-tmp",""]]})}class Vg{constructor(e){this.template=e}static#e=this.\u0275fac=function(a){return new(a||Vg)(q(gt))};static#a=this.\u0275dir=Ae({type:Vg,selectors:[["","ng-optgroup-tmp",""]]})}class jg{constructor(e){this.template=e}static#e=this.\u0275fac=function(a){return new(a||jg)(q(gt))};static#a=this.\u0275dir=Ae({type:jg,selectors:[["","ng-label-tmp",""]]})}class Og{constructor(e){this.template=e}static#e=this.\u0275fac=function(a){return new(a||Og)(q(gt))};static#a=this.\u0275dir=Ae({type:Og,selectors:[["","ng-multi-label-tmp",""]]})}class Gg{constructor(e){this.template=e}static#e=this.\u0275fac=function(a){return new(a||Gg)(q(gt))};static#a=this.\u0275dir=Ae({type:Gg,selectors:[["","ng-header-tmp",""]]})}class Kg{constructor(e){this.template=e}static#e=this.\u0275fac=function(a){return new(a||Kg)(q(gt))};static#a=this.\u0275dir=Ae({type:Kg,selectors:[["","ng-footer-tmp",""]]})}class Wg{constructor(e){this.template=e}static#e=this.\u0275fac=function(a){return new(a||Wg)(q(gt))};static#a=this.\u0275dir=Ae({type:Wg,selectors:[["","ng-notfound-tmp",""]]})}class Ug{constructor(e){this.template=e}static#e=this.\u0275fac=function(a){return new(a||Ug)(q(gt))};static#a=this.\u0275dir=Ae({type:Ug,selectors:[["","ng-typetosearch-tmp",""]]})}class Jg{constructor(e){this.template=e}static#e=this.\u0275fac=function(a){return new(a||Jg)(q(gt))};static#a=this.\u0275dir=Ae({type:Jg,selectors:[["","ng-loadingtext-tmp",""]]})}class Zg{constructor(e){this.template=e}static#e=this.\u0275fac=function(a){return new(a||Zg)(q(gt))};static#a=this.\u0275dir=Ae({type:Zg,selectors:[["","ng-tag-tmp",""]]})}class $g{constructor(e){this.template=e}static#e=this.\u0275fac=function(a){return new(a||$g)(q(gt))};static#a=this.\u0275dir=Ae({type:$g,selectors:[["","ng-loadingspinner-tmp",""]]})}function sV(){return"axxxxxxxxxxx".replace(/[x]/g,()=>(16*Math.random()|0).toString(16))}const Jne={"\u24b6":"A",\uff21:"A",\u00c0:"A",\u00c1:"A",\u00c2:"A",\u1ea6:"A",\u1ea4:"A",\u1eaa:"A",\u1ea8:"A",\u00c3:"A",\u0100:"A",\u0102:"A",\u1eb0:"A",\u1eae:"A",\u1eb4:"A",\u1eb2:"A",\u0226:"A",\u01e0:"A",\u00c4:"A",\u01de:"A",\u1ea2:"A",\u00c5:"A",\u01fa:"A",\u01cd:"A",\u0200:"A",\u0202:"A",\u1ea0:"A",\u1eac:"A",\u1eb6:"A",\u1e00:"A",\u0104:"A",\u023a:"A",\u2c6f:"A",\ua732:"AA",\u00c6:"AE",\u01fc:"AE",\u01e2:"AE",\ua734:"AO",\ua736:"AU",\ua738:"AV",\ua73a:"AV",\ua73c:"AY","\u24b7":"B",\uff22:"B",\u1e02:"B",\u1e04:"B",\u1e06:"B",\u0243:"B",\u0182:"B",\u0181:"B","\u24b8":"C",\uff23:"C",\u0106:"C",\u0108:"C",\u010a:"C",\u010c:"C",\u00c7:"C",\u1e08:"C",\u0187:"C",\u023b:"C",\ua73e:"C","\u24b9":"D",\uff24:"D",\u1e0a:"D",\u010e:"D",\u1e0c:"D",\u1e10:"D",\u1e12:"D",\u1e0e:"D",\u0110:"D",\u018b:"D",\u018a:"D",\u0189:"D",\ua779:"D",\u01f1:"DZ",\u01c4:"DZ",\u01f2:"Dz",\u01c5:"Dz","\u24ba":"E",\uff25:"E",\u00c8:"E",\u00c9:"E",\u00ca:"E",\u1ec0:"E",\u1ebe:"E",\u1ec4:"E",\u1ec2:"E",\u1ebc:"E",\u0112:"E",\u1e14:"E",\u1e16:"E",\u0114:"E",\u0116:"E",\u00cb:"E",\u1eba:"E",\u011a:"E",\u0204:"E",\u0206:"E",\u1eb8:"E",\u1ec6:"E",\u0228:"E",\u1e1c:"E",\u0118:"E",\u1e18:"E",\u1e1a:"E",\u0190:"E",\u018e:"E","\u24bb":"F",\uff26:"F",\u1e1e:"F",\u0191:"F",\ua77b:"F","\u24bc":"G",\uff27:"G",\u01f4:"G",\u011c:"G",\u1e20:"G",\u011e:"G",\u0120:"G",\u01e6:"G",\u0122:"G",\u01e4:"G",\u0193:"G",\ua7a0:"G",\ua77d:"G",\ua77e:"G","\u24bd":"H",\uff28:"H",\u0124:"H",\u1e22:"H",\u1e26:"H",\u021e:"H",\u1e24:"H",\u1e28:"H",\u1e2a:"H",\u0126:"H",\u2c67:"H",\u2c75:"H",\ua78d:"H","\u24be":"I",\uff29:"I",\u00cc:"I",\u00cd:"I",\u00ce:"I",\u0128:"I",\u012a:"I",\u012c:"I",\u0130:"I",\u00cf:"I",\u1e2e:"I",\u1ec8:"I",\u01cf:"I",\u0208:"I",\u020a:"I",\u1eca:"I",\u012e:"I",\u1e2c:"I",\u0197:"I","\u24bf":"J",\uff2a:"J",\u0134:"J",\u0248:"J","\u24c0":"K",\uff2b:"K",\u1e30:"K",\u01e8:"K",\u1e32:"K",\u0136:"K",\u1e34:"K",\u0198:"K",\u2c69:"K",\ua740:"K",\ua742:"K",\ua744:"K",\ua7a2:"K","\u24c1":"L",\uff2c:"L",\u013f:"L",\u0139:"L",\u013d:"L",\u1e36:"L",\u1e38:"L",\u013b:"L",\u1e3c:"L",\u1e3a:"L",\u0141:"L",\u023d:"L",\u2c62:"L",\u2c60:"L",\ua748:"L",\ua746:"L",\ua780:"L",\u01c7:"LJ",\u01c8:"Lj","\u24c2":"M",\uff2d:"M",\u1e3e:"M",\u1e40:"M",\u1e42:"M",\u2c6e:"M",\u019c:"M","\u24c3":"N",\uff2e:"N",\u01f8:"N",\u0143:"N",\u00d1:"N",\u1e44:"N",\u0147:"N",\u1e46:"N",\u0145:"N",\u1e4a:"N",\u1e48:"N",\u0220:"N",\u019d:"N",\ua790:"N",\ua7a4:"N",\u01ca:"NJ",\u01cb:"Nj","\u24c4":"O",\uff2f:"O",\u00d2:"O",\u00d3:"O",\u00d4:"O",\u1ed2:"O",\u1ed0:"O",\u1ed6:"O",\u1ed4:"O",\u00d5:"O",\u1e4c:"O",\u022c:"O",\u1e4e:"O",\u014c:"O",\u1e50:"O",\u1e52:"O",\u014e:"O",\u022e:"O",\u0230:"O",\u00d6:"O",\u022a:"O",\u1ece:"O",\u0150:"O",\u01d1:"O",\u020c:"O",\u020e:"O",\u01a0:"O",\u1edc:"O",\u1eda:"O",\u1ee0:"O",\u1ede:"O",\u1ee2:"O",\u1ecc:"O",\u1ed8:"O",\u01ea:"O",\u01ec:"O",\u00d8:"O",\u01fe:"O",\u0186:"O",\u019f:"O",\ua74a:"O",\ua74c:"O",\u01a2:"OI",\ua74e:"OO",\u0222:"OU","\u24c5":"P",\uff30:"P",\u1e54:"P",\u1e56:"P",\u01a4:"P",\u2c63:"P",\ua750:"P",\ua752:"P",\ua754:"P","\u24c6":"Q",\uff31:"Q",\ua756:"Q",\ua758:"Q",\u024a:"Q","\u24c7":"R",\uff32:"R",\u0154:"R",\u1e58:"R",\u0158:"R",\u0210:"R",\u0212:"R",\u1e5a:"R",\u1e5c:"R",\u0156:"R",\u1e5e:"R",\u024c:"R",\u2c64:"R",\ua75a:"R",\ua7a6:"R",\ua782:"R","\u24c8":"S",\uff33:"S",\u1e9e:"S",\u015a:"S",\u1e64:"S",\u015c:"S",\u1e60:"S",\u0160:"S",\u1e66:"S",\u1e62:"S",\u1e68:"S",\u0218:"S",\u015e:"S",\u2c7e:"S",\ua7a8:"S",\ua784:"S","\u24c9":"T",\uff34:"T",\u1e6a:"T",\u0164:"T",\u1e6c:"T",\u021a:"T",\u0162:"T",\u1e70:"T",\u1e6e:"T",\u0166:"T",\u01ac:"T",\u01ae:"T",\u023e:"T",\ua786:"T",\ua728:"TZ","\u24ca":"U",\uff35:"U",\u00d9:"U",\u00da:"U",\u00db:"U",\u0168:"U",\u1e78:"U",\u016a:"U",\u1e7a:"U",\u016c:"U",\u00dc:"U",\u01db:"U",\u01d7:"U",\u01d5:"U",\u01d9:"U",\u1ee6:"U",\u016e:"U",\u0170:"U",\u01d3:"U",\u0214:"U",\u0216:"U",\u01af:"U",\u1eea:"U",\u1ee8:"U",\u1eee:"U",\u1eec:"U",\u1ef0:"U",\u1ee4:"U",\u1e72:"U",\u0172:"U",\u1e76:"U",\u1e74:"U",\u0244:"U","\u24cb":"V",\uff36:"V",\u1e7c:"V",\u1e7e:"V",\u01b2:"V",\ua75e:"V",\u0245:"V",\ua760:"VY","\u24cc":"W",\uff37:"W",\u1e80:"W",\u1e82:"W",\u0174:"W",\u1e86:"W",\u1e84:"W",\u1e88:"W",\u2c72:"W","\u24cd":"X",\uff38:"X",\u1e8a:"X",\u1e8c:"X","\u24ce":"Y",\uff39:"Y",\u1ef2:"Y",\u00dd:"Y",\u0176:"Y",\u1ef8:"Y",\u0232:"Y",\u1e8e:"Y",\u0178:"Y",\u1ef6:"Y",\u1ef4:"Y",\u01b3:"Y",\u024e:"Y",\u1efe:"Y","\u24cf":"Z",\uff3a:"Z",\u0179:"Z",\u1e90:"Z",\u017b:"Z",\u017d:"Z",\u1e92:"Z",\u1e94:"Z",\u01b5:"Z",\u0224:"Z",\u2c7f:"Z",\u2c6b:"Z",\ua762:"Z","\u24d0":"a",\uff41:"a",\u1e9a:"a",\u00e0:"a",\u00e1:"a",\u00e2:"a",\u1ea7:"a",\u1ea5:"a",\u1eab:"a",\u1ea9:"a",\u00e3:"a",\u0101:"a",\u0103:"a",\u1eb1:"a",\u1eaf:"a",\u1eb5:"a",\u1eb3:"a",\u0227:"a",\u01e1:"a",\u00e4:"a",\u01df:"a",\u1ea3:"a",\u00e5:"a",\u01fb:"a",\u01ce:"a",\u0201:"a",\u0203:"a",\u1ea1:"a",\u1ead:"a",\u1eb7:"a",\u1e01:"a",\u0105:"a",\u2c65:"a",\u0250:"a",\ua733:"aa",\u00e6:"ae",\u01fd:"ae",\u01e3:"ae",\ua735:"ao",\ua737:"au",\ua739:"av",\ua73b:"av",\ua73d:"ay","\u24d1":"b",\uff42:"b",\u1e03:"b",\u1e05:"b",\u1e07:"b",\u0180:"b",\u0183:"b",\u0253:"b","\u24d2":"c",\uff43:"c",\u0107:"c",\u0109:"c",\u010b:"c",\u010d:"c",\u00e7:"c",\u1e09:"c",\u0188:"c",\u023c:"c",\ua73f:"c",\u2184:"c","\u24d3":"d",\uff44:"d",\u1e0b:"d",\u010f:"d",\u1e0d:"d",\u1e11:"d",\u1e13:"d",\u1e0f:"d",\u0111:"d",\u018c:"d",\u0256:"d",\u0257:"d",\ua77a:"d",\u01f3:"dz",\u01c6:"dz","\u24d4":"e",\uff45:"e",\u00e8:"e",\u00e9:"e",\u00ea:"e",\u1ec1:"e",\u1ebf:"e",\u1ec5:"e",\u1ec3:"e",\u1ebd:"e",\u0113:"e",\u1e15:"e",\u1e17:"e",\u0115:"e",\u0117:"e",\u00eb:"e",\u1ebb:"e",\u011b:"e",\u0205:"e",\u0207:"e",\u1eb9:"e",\u1ec7:"e",\u0229:"e",\u1e1d:"e",\u0119:"e",\u1e19:"e",\u1e1b:"e",\u0247:"e",\u025b:"e",\u01dd:"e","\u24d5":"f",\uff46:"f",\u1e1f:"f",\u0192:"f",\ua77c:"f","\u24d6":"g",\uff47:"g",\u01f5:"g",\u011d:"g",\u1e21:"g",\u011f:"g",\u0121:"g",\u01e7:"g",\u0123:"g",\u01e5:"g",\u0260:"g",\ua7a1:"g",\u1d79:"g",\ua77f:"g","\u24d7":"h",\uff48:"h",\u0125:"h",\u1e23:"h",\u1e27:"h",\u021f:"h",\u1e25:"h",\u1e29:"h",\u1e2b:"h",\u1e96:"h",\u0127:"h",\u2c68:"h",\u2c76:"h",\u0265:"h",\u0195:"hv","\u24d8":"i",\uff49:"i",\u00ec:"i",\u00ed:"i",\u00ee:"i",\u0129:"i",\u012b:"i",\u012d:"i",\u00ef:"i",\u1e2f:"i",\u1ec9:"i",\u01d0:"i",\u0209:"i",\u020b:"i",\u1ecb:"i",\u012f:"i",\u1e2d:"i",\u0268:"i",\u0131:"i","\u24d9":"j",\uff4a:"j",\u0135:"j",\u01f0:"j",\u0249:"j","\u24da":"k",\uff4b:"k",\u1e31:"k",\u01e9:"k",\u1e33:"k",\u0137:"k",\u1e35:"k",\u0199:"k",\u2c6a:"k",\ua741:"k",\ua743:"k",\ua745:"k",\ua7a3:"k","\u24db":"l",\uff4c:"l",\u0140:"l",\u013a:"l",\u013e:"l",\u1e37:"l",\u1e39:"l",\u013c:"l",\u1e3d:"l",\u1e3b:"l",\u017f:"l",\u0142:"l",\u019a:"l",\u026b:"l",\u2c61:"l",\ua749:"l",\ua781:"l",\ua747:"l",\u01c9:"lj","\u24dc":"m",\uff4d:"m",\u1e3f:"m",\u1e41:"m",\u1e43:"m",\u0271:"m",\u026f:"m","\u24dd":"n",\uff4e:"n",\u01f9:"n",\u0144:"n",\u00f1:"n",\u1e45:"n",\u0148:"n",\u1e47:"n",\u0146:"n",\u1e4b:"n",\u1e49:"n",\u019e:"n",\u0272:"n",\u0149:"n",\ua791:"n",\ua7a5:"n",\u01cc:"nj","\u24de":"o",\uff4f:"o",\u00f2:"o",\u00f3:"o",\u00f4:"o",\u1ed3:"o",\u1ed1:"o",\u1ed7:"o",\u1ed5:"o",\u00f5:"o",\u1e4d:"o",\u022d:"o",\u1e4f:"o",\u014d:"o",\u1e51:"o",\u1e53:"o",\u014f:"o",\u022f:"o",\u0231:"o",\u00f6:"o",\u022b:"o",\u1ecf:"o",\u0151:"o",\u01d2:"o",\u020d:"o",\u020f:"o",\u01a1:"o",\u1edd:"o",\u1edb:"o",\u1ee1:"o",\u1edf:"o",\u1ee3:"o",\u1ecd:"o",\u1ed9:"o",\u01eb:"o",\u01ed:"o",\u00f8:"o",\u01ff:"o",\u0254:"o",\ua74b:"o",\ua74d:"o",\u0275:"o",\u01a3:"oi",\u0223:"ou",\ua74f:"oo","\u24df":"p",\uff50:"p",\u1e55:"p",\u1e57:"p",\u01a5:"p",\u1d7d:"p",\ua751:"p",\ua753:"p",\ua755:"p","\u24e0":"q",\uff51:"q",\u024b:"q",\ua757:"q",\ua759:"q","\u24e1":"r",\uff52:"r",\u0155:"r",\u1e59:"r",\u0159:"r",\u0211:"r",\u0213:"r",\u1e5b:"r",\u1e5d:"r",\u0157:"r",\u1e5f:"r",\u024d:"r",\u027d:"r",\ua75b:"r",\ua7a7:"r",\ua783:"r","\u24e2":"s",\uff53:"s",\u00df:"s",\u015b:"s",\u1e65:"s",\u015d:"s",\u1e61:"s",\u0161:"s",\u1e67:"s",\u1e63:"s",\u1e69:"s",\u0219:"s",\u015f:"s",\u023f:"s",\ua7a9:"s",\ua785:"s",\u1e9b:"s","\u24e3":"t",\uff54:"t",\u1e6b:"t",\u1e97:"t",\u0165:"t",\u1e6d:"t",\u021b:"t",\u0163:"t",\u1e71:"t",\u1e6f:"t",\u0167:"t",\u01ad:"t",\u0288:"t",\u2c66:"t",\ua787:"t",\ua729:"tz","\u24e4":"u",\uff55:"u",\u00f9:"u",\u00fa:"u",\u00fb:"u",\u0169:"u",\u1e79:"u",\u016b:"u",\u1e7b:"u",\u016d:"u",\u00fc:"u",\u01dc:"u",\u01d8:"u",\u01d6:"u",\u01da:"u",\u1ee7:"u",\u016f:"u",\u0171:"u",\u01d4:"u",\u0215:"u",\u0217:"u",\u01b0:"u",\u1eeb:"u",\u1ee9:"u",\u1eef:"u",\u1eed:"u",\u1ef1:"u",\u1ee5:"u",\u1e73:"u",\u0173:"u",\u1e77:"u",\u1e75:"u",\u0289:"u","\u24e5":"v",\uff56:"v",\u1e7d:"v",\u1e7f:"v",\u028b:"v",\ua75f:"v",\u028c:"v",\ua761:"vy","\u24e6":"w",\uff57:"w",\u1e81:"w",\u1e83:"w",\u0175:"w",\u1e87:"w",\u1e85:"w",\u1e98:"w",\u1e89:"w",\u2c73:"w","\u24e7":"x",\uff58:"x",\u1e8b:"x",\u1e8d:"x","\u24e8":"y",\uff59:"y",\u1ef3:"y",\u00fd:"y",\u0177:"y",\u1ef9:"y",\u0233:"y",\u1e8f:"y",\u00ff:"y",\u1ef7:"y",\u1e99:"y",\u1ef5:"y",\u01b4:"y",\u024f:"y",\u1eff:"y","\u24e9":"z",\uff5a:"z",\u017a:"z",\u1e91:"z",\u017c:"z",\u017e:"z",\u1e93:"z",\u1e95:"z",\u01b6:"z",\u0225:"z",\u0240:"z",\u2c6c:"z",\ua763:"z",\u0386:"\u0391",\u0388:"\u0395",\u0389:"\u0397",\u038a:"\u0399",\u03aa:"\u0399",\u038c:"\u039f",\u038e:"\u03a5",\u03ab:"\u03a5",\u038f:"\u03a9",\u03ac:"\u03b1",\u03ad:"\u03b5",\u03ae:"\u03b7",\u03af:"\u03b9",\u03ca:"\u03b9",\u0390:"\u03b9",\u03cc:"\u03bf",\u03cd:"\u03c5",\u03cb:"\u03c5",\u03b0:"\u03c5",\u03c9:"\u03c9",\u03c2:"\u03c3"};function z_(t){return t.replace(/[^\u0000-\u007E]/g,a=>Jne[a]||a)}class Zne{constructor(e,a){this._ngSelect=e,this._selectionModel=a,this._items=[],this._filteredItems=[],this._markedIndex=-1}get items(){return this._items}get filteredItems(){return this._filteredItems}get markedIndex(){return this._markedIndex}get selectedItems(){return this._selectionModel.value}get markedItem(){return this._filteredItems[this._markedIndex]}get noItemsToSelect(){return this._ngSelect.hideSelected&&this._items.length===this.selectedItems.length}get maxItemsSelected(){return this._ngSelect.multiple&&this._ngSelect.maxSelectedItems<=this.selectedItems.length}get lastSelectedItem(){let e=this.selectedItems.length-1;for(;e>=0;e--){const a=this.selectedItems[e];if(!a.disabled)return a}return null}setItems(e){this._items=e.map((a,u)=>this.mapItem(a,u)),this._ngSelect.groupBy?(this._groups=this._groupBy(this._items,this._ngSelect.groupBy),this._items=this._flatten(this._groups)):(this._groups=new Map,this._groups.set(void 0,this._items)),this._filteredItems=[...this._items]}select(e){if(e.selected||this.maxItemsSelected)return;const a=this._ngSelect.multiple;a||this.clearSelected(),this._selectionModel.select(e,a,this._ngSelect.selectableGroupAsModel),this._ngSelect.hideSelected&&this._hideSelected(e)}unselect(e){e.selected&&(this._selectionModel.unselect(e,this._ngSelect.multiple),this._ngSelect.hideSelected&&Qu(e.index)&&this._ngSelect.multiple&&this._showSelected(e))}findItem(e){let a;return a=this._ngSelect.compareWith?u=>this._ngSelect.compareWith(u.value,e):this._ngSelect.bindValue?u=>!u.children&&this.resolveNested(u.value,this._ngSelect.bindValue)===e:u=>u.value===e||!u.children&&u.label&&u.label===this.resolveNested(e,this._ngSelect.bindLabel),this._items.find(u=>a(u))}addItem(e){const a=this.mapItem(e,this._items.length);return this._items.push(a),this._filteredItems.push(a),a}clearSelected(e=!1){this._selectionModel.clear(e),this._items.forEach(a=>{a.selected=e&&a.selected&&a.disabled,a.marked=!1}),this._ngSelect.hideSelected&&this.resetFilteredItems()}findByLabel(e){return e=z_(e).toLocaleLowerCase(),this.filteredItems.find(a=>z_(a.label).toLocaleLowerCase().substr(0,e.length)===e)}filter(e){if(!e)return void this.resetFilteredItems();this._filteredItems=[],e=this._ngSelect.searchFn?e:z_(e).toLocaleLowerCase();const a=this._ngSelect.searchFn||this._defaultSearchFn,u=this._ngSelect.hideSelected;for(const i of Array.from(this._groups.keys())){const r=[];for(const o of this._groups.get(i)){if(u&&(o.parent&&o.parent.selected||o.selected))continue;a(e,this._ngSelect.searchFn?o.value:o)&&r.push(o)}if(r.length>0){const[o]=r.slice(-1);if(o.parent){const d=this._items.find(h=>h===o.parent);this._filteredItems.push(d)}this._filteredItems.push(...r)}}}resetFilteredItems(){this._filteredItems.length!==this._items.length&&(this._ngSelect.hideSelected&&this.selectedItems.length>0?this._filteredItems=this._items.filter(e=>!e.selected):this._filteredItems=this._items)}unmarkItem(){this._markedIndex=-1}markNextItem(){this._stepToItem(1)}markPreviousItem(){this._stepToItem(-1)}markItem(e){this._markedIndex=this._filteredItems.indexOf(e)}markSelectedOrDefault(e){if(0===this._filteredItems.length)return;const a=this._getLastMarkedIndex();this._markedIndex=a>-1?a:e?this.filteredItems.findIndex(u=>!u.disabled):-1}resolveNested(e,a){if(!Ix(e))return e;if(-1===a.indexOf("."))return e[a];{const u=a.split(".");let i=e;for(let r=0,o=u.length;r-1===this.selectedItems.indexOf(a)))}_showSelected(e){if(this._filteredItems.push(e),e.parent){const a=e.parent;this._filteredItems.find(i=>i===a)||this._filteredItems.push(a)}else if(e.children)for(const a of e.children)a.selected=!1,this._filteredItems.push(a);this._filteredItems=[...this._filteredItems.sort((a,u)=>a.index-u.index)]}_hideSelected(e){this._filteredItems=this._filteredItems.filter(a=>a!==e),e.parent?e.parent.children.every(u=>u.selected)&&(this._filteredItems=this._filteredItems.filter(u=>u!==e.parent)):e.children&&(this._filteredItems=this.filteredItems.filter(a=>a.parent!==e))}_defaultSearchFn(e,a){return z_(a.label).toLocaleLowerCase().indexOf(e)>-1}_getNextItemIndex(e){return e>0?this._markedIndex>=this._filteredItems.length-1?0:this._markedIndex+1:this._markedIndex<=0?this._filteredItems.length-1:this._markedIndex-1}_stepToItem(e){0===this._filteredItems.length||this._filteredItems.every(a=>a.disabled)||(this._markedIndex=this._getNextItemIndex(e),this.markedItem.disabled&&this._stepToItem(e))}_getLastMarkedIndex(){if(this._ngSelect.hideSelected||this._markedIndex>-1&&void 0===this.markedItem)return-1;const e=this._filteredItems.indexOf(this.lastSelectedItem);return this.lastSelectedItem&&e<0?-1:Math.max(this.markedIndex,e)}_groupBy(e,a){const u=new Map;if(0===e.length)return u;if(Array.isArray(e[0].value[a])){for(const o of e){const d=(o.value[a]||[]).map((h,m)=>this.mapItem(h,m));u.set(o,d)}return u}const i=S_(this._ngSelect.groupBy),r=o=>{const d=i?a(o.value):o.value[a];return Qu(d)?d:void 0};for(const o of e){const d=r(o),h=u.get(d);h?h.push(o):u.set(d,[o])}return u}_flatten(e){const a=S_(this._ngSelect.groupBy),u=[];for(const i of Array.from(e.keys())){let r=u.length;if(void 0===i){const v=e.get(void 0)||[];u.push(...v.map(k=>(k.index=r++,k)));continue}const o=Ix(i),d={label:o?"":String(i),children:void 0,parent:null,index:r++,disabled:!this._ngSelect.selectableGroup,htmlId:sV()},h=a?this._ngSelect.bindLabel:this._ngSelect.groupBy,m=this._ngSelect.groupValue||(()=>o?i.value:{[h]:i}),E=e.get(i).map(v=>(v.parent=d,v.children=void 0,v.index=r++,v));d.children=E,d.value=m(i,E.map(v=>v.value)),u.push(d),u.push(...E)}return u}}var B0;!function(t){t[t.Tab=9]="Tab",t[t.Enter=13]="Enter",t[t.Esc=27]="Esc",t[t.Space=32]="Space",t[t.ArrowUp=38]="ArrowUp",t[t.ArrowDown=40]="ArrowDown",t[t.Backspace=8]="Backspace"}(B0||(B0={}));class qg{constructor(){this._dimensions={itemHeight:0,panelHeight:0,itemsPerViewport:0}}get dimensions(){return this._dimensions}calculateItems(e,a,u){const i=this._dimensions,r=i.itemHeight*a,d=Math.max(0,e)/r*a;let h=Math.min(a,Math.ceil(d)+(i.itemsPerViewport+1));const E=Math.max(0,h-i.itemsPerViewport);let v=Math.min(E,Math.floor(d)),k=i.itemHeight*Math.ceil(v)-i.itemHeight*Math.min(v,u);return k=isNaN(k)?0:k,v=isNaN(v)?-1:v,h=isNaN(h)?-1:h,v-=u,v=Math.max(0,v),h+=u,h=Math.min(a,h),{topPadding:k,scrollHeight:r,start:v,end:h}}setDimensions(e,a){const u=Math.max(1,Math.floor(a/e));this._dimensions={itemHeight:e,panelHeight:a,itemsPerViewport:u}}getScrollTo(e,a,u){const{panelHeight:i}=this.dimensions,r=e+a,d=u+i;return i>=r&&u===e?null:r>d?u+r-d:e<=u?e:null}static#e=this.\u0275fac=function(a){return new(a||qg)};static#a=this.\u0275prov=he({token:qg,factory:qg.\u0275fac})}const dV=["top","right","bottom","left"],$ne=typeof requestAnimationFrame<"u"?Uie:Xie;class Yg{constructor(e,a,u,i,r){this._renderer=e,this._zone=a,this._panelService=u,this._document=r,this.items=[],this.position="auto",this.virtualScroll=!1,this.filterValue=null,this.update=new aa,this.scroll=new aa,this.scrollToEnd=new aa,this.outsideClick=new aa,this._destroy$=new Gt,this._scrollToEndFired=!1,this._updateScrollHeight=!1,this._lastScrollPosition=0,this._dropdown=i.nativeElement}get currentPosition(){return this._currentPosition}get itemsLength(){return this._itemsLength}set itemsLength(e){e!==this._itemsLength&&(this._itemsLength=e,this._onItemsLengthChanged())}get _startOffset(){if(this.markedItem){const{itemHeight:e,panelHeight:a}=this._panelService.dimensions,u=this.markedItem.index*e;return a>u?0:u}return 0}ngOnInit(){this._select=this._dropdown.parentElement,this._virtualPadding=this.paddingElementRef.nativeElement,this._scrollablePanel=this.scrollElementRef.nativeElement,this._contentPanel=this.contentElementRef.nativeElement,this._handleScroll(),this._handleOutsideClick(),this._appendDropdown(),this._setupMousedownListener()}ngOnChanges(e){if(e.items){const a=e.items;this._onItemsChange(a.currentValue,a.firstChange)}}ngOnDestroy(){this._destroy$.next(),this._destroy$.complete(),this._destroy$.unsubscribe(),this.appendTo&&this._renderer.removeChild(this._dropdown.parentNode,this._dropdown)}scrollTo(e,a=!1){if(!e)return;const u=this.items.indexOf(e);if(u<0||u>=this.itemsLength)return;let i;if(this.virtualScroll){const r=this._panelService.dimensions.itemHeight;i=this._panelService.getScrollTo(u*r,r,this._lastScrollPosition)}else{const r=this._dropdown.querySelector(`#${e.htmlId}`),o=a?r.offsetTop:this._lastScrollPosition;i=this._panelService.getScrollTo(r.offsetTop,r.clientHeight,o)}Qu(i)&&(this._scrollablePanel.scrollTop=i)}scrollToTag(){const e=this._scrollablePanel;e.scrollTop=e.scrollHeight-e.clientHeight}adjustPosition(){this._updateYPosition()}_handleDropdownPosition(){this._currentPosition=this._calculateCurrentPosition(this._dropdown),dV.includes(this._currentPosition)?this._updateDropdownClass(this._currentPosition):this._updateDropdownClass("bottom"),this.appendTo&&this._updateYPosition(),this._dropdown.style.opacity="1"}_updateDropdownClass(e){dV.forEach(u=>{const i=`ng-select-${u}`;this._renderer.removeClass(this._dropdown,i),this._renderer.removeClass(this._select,i)});const a=`ng-select-${e}`;this._renderer.addClass(this._dropdown,a),this._renderer.addClass(this._select,a)}_handleScroll(){this._zone.runOutsideAngular(()=>{Rg(this.scrollElementRef.nativeElement,"scroll").pipe(Ah(this._destroy$),Oie(0,$ne)).subscribe(e=>{const a=e.path||e.composedPath&&e.composedPath();if(!a||0===a.length&&!e.target)return;const u=a&&0!==a.length?a[0].scrollTop:e.target.scrollTop;this._onContentScrolled(u)})})}_handleOutsideClick(){this._document&&this._zone.runOutsideAngular(()=>{cz(Rg(this._document,"touchstart",{capture:!0}),Rg(this._document,"mousedown",{capture:!0})).pipe(Ah(this._destroy$)).subscribe(e=>this._checkToClose(e))})}_checkToClose(e){if(this._select.contains(e.target)||this._dropdown.contains(e.target))return;const a=e.path||e.composedPath&&e.composedPath();e.target&&e.target.shadowRoot&&a&&a[0]&&this._select.contains(a[0])||this._zone.run(()=>this.outsideClick.emit())}_onItemsChange(e,a){this.items=e||[],this._scrollToEndFired=!1,this.itemsLength=e.length,this.virtualScroll?this._updateItemsRange(a):(this._setVirtualHeight(),this._updateItems(a))}_updateItems(e){this.update.emit(this.items),!1!==e&&this._zone.runOutsideAngular(()=>{Promise.resolve().then(()=>{const a=this._scrollablePanel.clientHeight;this._panelService.setDimensions(0,a),this._handleDropdownPosition(),this.scrollTo(this.markedItem,e)})})}_updateItemsRange(e){this._zone.runOutsideAngular(()=>{this._measureDimensions().then(()=>{e?(this._renderItemsRange(this._startOffset),this._handleDropdownPosition()):this._renderItemsRange()})})}_onContentScrolled(e){this.virtualScroll&&this._renderItemsRange(e),this._lastScrollPosition=e,this._fireScrollToEnd(e)}_updateVirtualHeight(e){this._updateScrollHeight&&(this._virtualPadding.style.height=`${e}px`,this._updateScrollHeight=!1)}_setVirtualHeight(){this._virtualPadding&&(this._virtualPadding.style.height="0px")}_onItemsLengthChanged(){this._updateScrollHeight=!0}_renderItemsRange(e=null){if(e&&this._lastScrollPosition===e)return;e=e||this._scrollablePanel.scrollTop;const a=this._panelService.calculateItems(e,this.itemsLength,this.bufferAmount);this._updateVirtualHeight(a.scrollHeight),this._contentPanel.style.transform=`translateY(${a.topPadding}px)`,this._zone.run(()=>{this.update.emit(this.items.slice(a.start,a.end)),this.scroll.emit({start:a.start,end:a.end})}),Qu(e)&&0===this._lastScrollPosition&&(this._scrollablePanel.scrollTop=e,this._lastScrollPosition=e)}_measureDimensions(){if(this._panelService.dimensions.itemHeight>0||0===this.itemsLength)return Promise.resolve(this._panelService.dimensions);const[e]=this.items;return this.update.emit([e]),Promise.resolve().then(()=>{const u=this._dropdown.querySelector(`#${e.htmlId}`).clientHeight;this._virtualPadding.style.height=u*this.itemsLength+"px";const i=this._scrollablePanel.clientHeight;return this._panelService.setDimensions(u,i),this._panelService.dimensions})}_fireScrollToEnd(e){if(this._scrollToEndFired||0===e)return;const a=this.virtualScroll?this._virtualPadding:this._contentPanel;e+this._dropdown.clientHeight>=a.clientHeight-1&&(this._zone.run(()=>this.scrollToEnd.emit()),this._scrollToEndFired=!0)}_calculateCurrentPosition(e){if("auto"!==this.position)return this.position;const a=this._select.getBoundingClientRect(),u=document.documentElement.scrollTop||document.body.scrollTop;return a.top+window.pageYOffset+a.height+e.getBoundingClientRect().height>u+document.documentElement.clientHeight?"top":"bottom"}_appendDropdown(){if(this.appendTo){if(this._parent=document.querySelector(this.appendTo),!this._parent)throw new Error(`appendTo selector ${this.appendTo} did not found any parent element`);this._updateXPosition(),this._parent.appendChild(this._dropdown)}}_updateXPosition(){const e=this._select.getBoundingClientRect(),a=this._parent.getBoundingClientRect(),u=e.left-a.left;this._dropdown.style.left=u+"px",this._dropdown.style.width=e.width+"px",this._dropdown.style.minWidth=e.width+"px"}_updateYPosition(){const e=this._select.getBoundingClientRect(),a=this._parent.getBoundingClientRect(),u=e.height;if("top"===this._currentPosition){const i=a.bottom-e.bottom;this._dropdown.style.bottom=i+u+"px",this._dropdown.style.top="auto"}else if("bottom"===this._currentPosition){const i=e.top-a.top;this._dropdown.style.top=i+u+"px",this._dropdown.style.bottom="auto"}}_setupMousedownListener(){this._zone.runOutsideAngular(()=>{Rg(this._dropdown,"mousedown").pipe(Ah(this._destroy$)).subscribe(e=>{"INPUT"!==e.target.tagName&&e.preventDefault()})})}static#e=this.\u0275fac=function(a){return new(a||Yg)(q(jn),q(ut),q(qg),q(Ht),q(Ei,8))};static#a=this.\u0275cmp=cd({type:Yg,selectors:[["ng-dropdown-panel"]],viewQuery:function(a,u){if(1&a&&(T4(one,7,Ht),T4(lne,7,Ht),T4(sne,7,Ht)),2&a){let i;Oi(i=Gi())&&(u.contentElementRef=i.first),Oi(i=Gi())&&(u.scrollElementRef=i.first),Oi(i=Gi())&&(u.paddingElementRef=i.first)}},inputs:{items:"items",markedItem:"markedItem",position:"position",appendTo:"appendTo",bufferAmount:"bufferAmount",virtualScroll:"virtualScroll",headerTemplate:"headerTemplate",footerTemplate:"footerTemplate",filterValue:"filterValue"},outputs:{update:"update",scroll:"scroll",scrollToEnd:"scrollToEnd",outsideClick:"outsideClick"},features:[tn],ngContentSelectors:oV,decls:9,vars:6,consts:[["scroll",""],["padding",""],["content",""],["class","ng-dropdown-header",4,"ngIf"],["role","listbox",1,"ng-dropdown-panel-items","scroll-host"],["class","ng-dropdown-footer",4,"ngIf"],[1,"ng-dropdown-header"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"ng-dropdown-footer"]],template:function(a,u){1&a&&(ky(),pi(0,dne,2,4,"div",3),ru(1,"div",4,0),U1(3,"div",null,1),ru(5,"div",null,2),xy(7),_u()(),pi(8,cne,2,4,"div",5)),2&a&&(Dt("ngIf",u.headerTemplate),Ka(3),pr("total-padding",u.virtualScroll),Ka(2),pr("scrollable-content",u.virtualScroll&&u.items.length),Ka(3),Dt("ngIf",u.footerTemplate))},dependencies:[tc,th],encapsulation:2,changeDetection:0})}class Qg{get disabled(){return this._disabled}set disabled(e){this._disabled=this._isDisabled(e)}constructor(e){this.elementRef=e,this.stateChange$=new Gt,this._disabled=!1}get label(){return(this.elementRef.nativeElement.textContent||"").trim()}ngOnChanges(e){e.disabled&&this.stateChange$.next({value:this.value,disabled:this._disabled})}ngAfterViewChecked(){this.label!==this._previousLabel&&(this._previousLabel=this.label,this.stateChange$.next({value:this.value,disabled:this._disabled,label:this.elementRef.nativeElement.innerHTML}))}ngOnDestroy(){this.stateChange$.complete()}_isDisabled(e){return null!=e&&"false"!=`${e}`}static#e=this.\u0275fac=function(a){return new(a||Qg)(q(Ht))};static#a=this.\u0275cmp=cd({type:Qg,selectors:[["ng-option"]],inputs:{value:"value",disabled:"disabled"},features:[tn],ngContentSelectors:oV,decls:1,vars:0,template:function(a,u){1&a&&(ky(),xy(0))},encapsulation:2,changeDetection:0})}class Hx{constructor(){this.notFoundText="No items found",this.typeToSearchText="Type to search",this.addTagText="Add item",this.loadingText="Loading...",this.clearAllText="Clear all",this.disableVirtualScroll=!0,this.openOnEnter=!0,this.appearance="underline"}static#e=this.\u0275fac=function(a){return new(a||Hx)};static#a=this.\u0275prov=he({token:Hx,factory:Hx.\u0275fac,providedIn:"root"})}class Vx{warn(e){console.warn(e)}static#e=this.\u0275fac=function(a){return new(a||Vx)};static#a=this.\u0275prov=he({token:Vx,factory:Vx.\u0275fac,providedIn:"root"})}const cV=new V("ng-select-selection-model");class Xg{get items(){return this._items}set items(e){null===e&&(e=[]),this._itemsAreUsed=!0,this._items=e}get compareWith(){return this._compareWith}set compareWith(e){if(null!=e&&!S_(e))throw Error("`compareWith` must be a function.");this._compareWith=e}get clearSearchOnAdd(){return Qu(this._clearSearchOnAdd)?this._clearSearchOnAdd:Qu(this.config.clearSearchOnAdd)?this.config.clearSearchOnAdd:this.closeOnSelect}set clearSearchOnAdd(e){this._clearSearchOnAdd=e}get deselectOnClick(){return Qu(this._deselectOnClick)?this._deselectOnClick:Qu(this.config.deselectOnClick)?this.config.deselectOnClick:this.multiple}set deselectOnClick(e){this._deselectOnClick=e}get disabled(){return this.readonly||this._disabled}get filtered(){return!!this.searchTerm&&this.searchable||this._isComposing}get single(){return!this.multiple}get _editableSearchTerm(){return this.editableSearchTerm&&!this.multiple}constructor(e,a,u,i,r,o,d){this.classes=e,this.autoFocus=a,this.config=u,this._cd=o,this._console=d,this.markFirst=!0,this.dropdownPosition="auto",this.loading=!1,this.closeOnSelect=!0,this.hideSelected=!1,this.selectOnTab=!1,this.bufferAmount=4,this.selectableGroup=!1,this.selectableGroupAsModel=!0,this.searchFn=null,this.trackByFn=null,this.clearOnBackspace=!0,this.labelForId=null,this.inputAttrs={},this.readonly=!1,this.searchWhileComposing=!0,this.minTermLength=0,this.editableSearchTerm=!1,this.keyDownFn=h=>!0,this.multiple=!1,this.addTag=!1,this.searchable=!0,this.clearable=!0,this.isOpen=!1,this.blurEvent=new aa,this.focusEvent=new aa,this.changeEvent=new aa,this.openEvent=new aa,this.closeEvent=new aa,this.searchEvent=new aa,this.clearEvent=new aa,this.addEvent=new aa,this.removeEvent=new aa,this.scroll=new aa,this.scrollToEnd=new aa,this.useDefaultClass=!0,this.viewPortItems=[],this.searchTerm=null,this.dropdownId=sV(),this.escapeHTML=!0,this._items=[],this._defaultLabel="label",this._pressedKeys=[],this._isComposing=!1,this._destroy$=new Gt,this._keyPress$=new Gt,this._onChange=h=>{},this._onTouched=()=>{},this.clearItem=h=>{const m=this.selectedItems.find(E=>E.value===h);this.unselect(m)},this.trackByOption=(h,m)=>this.trackByFn?this.trackByFn(m.value):m,this._mergeGlobalConfig(u),this.itemsList=new Zne(this,i()),this.element=r.nativeElement}get selectedItems(){return this.itemsList.selectedItems}get selectedValues(){return this.selectedItems.map(e=>e.value)}get hasValue(){return this.selectedItems.length>0}get currentPanelPosition(){if(this.dropdownPanel)return this.dropdownPanel.currentPosition}ngOnInit(){this._handleKeyPresses(),this._setInputAttributes()}ngOnChanges(e){e.multiple&&this.itemsList.clearSelected(),e.items&&this._setItems(e.items.currentValue||[]),e.isOpen&&(this._manualOpen=Qu(e.isOpen.currentValue))}ngAfterViewInit(){this._itemsAreUsed||(this.escapeHTML=!1,this._setItemsFromNgOptions()),Qu(this.autoFocus)&&this.focus()}ngOnDestroy(){this._destroy$.next(),this._destroy$.complete()}handleKeyDown(e){if(B0[e.which]){if(!1===this.keyDownFn(e))return;this.handleKeyCode(e)}else e.key&&1===e.key.length&&this._keyPress$.next(e.key.toLocaleLowerCase())}handleKeyCode(e){const a=e.target;this.clearButton&&this.clearButton.nativeElement===a?this.handleKeyCodeClear(e):this.handleKeyCodeInput(e)}handleKeyCodeInput(e){switch(e.which){case B0.ArrowDown:this._handleArrowDown(e);break;case B0.ArrowUp:this._handleArrowUp(e);break;case B0.Space:this._handleSpace(e);break;case B0.Enter:this._handleEnter(e);break;case B0.Tab:this._handleTab(e);break;case B0.Esc:this.close(),e.preventDefault();break;case B0.Backspace:this._handleBackspace()}}handleKeyCodeClear(e){if(e.which===B0.Enter)this.handleClearClick(),e.preventDefault()}handleMousedown(e){const a=e.target;"INPUT"!==a.tagName&&e.preventDefault(),a.classList.contains("ng-clear-wrapper")?this.handleClearClick():a.classList.contains("ng-arrow-wrapper")?this.handleArrowClick():a.classList.contains("ng-value-icon")||(this.focused||this.focus(),this.searchable?this.open():this.toggle())}handleArrowClick(){this.isOpen?this.close():this.open()}handleClearClick(){this.hasValue&&(this.itemsList.clearSelected(!0),this._updateNgModel()),this._clearSearch(),this.focus(),this.clearEvent.emit(),this._onSelectionChanged()}clearModel(){this.clearable&&(this.itemsList.clearSelected(),this._updateNgModel())}writeValue(e){this.itemsList.clearSelected(),this._handleWriteValue(e),this._cd.markForCheck()}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this._disabled=e,this._cd.markForCheck()}toggle(){this.isOpen?this.close():this.open()}open(){this.disabled||this.isOpen||this._manualOpen||!this._isTypeahead&&!this.addTag&&this.itemsList.noItemsToSelect||(this.isOpen=!0,this.itemsList.markSelectedOrDefault(this.markFirst),this.openEvent.emit(),this.searchTerm||this.focus(),this.detectChanges())}close(){!this.isOpen||this._manualOpen||(this.isOpen=!1,this._isComposing=!1,this._editableSearchTerm?this.itemsList.resetFilteredItems():this._clearSearch(),this.itemsList.unmarkItem(),this._onTouched(),this.closeEvent.emit(),this._cd.markForCheck())}toggleItem(e){!e||e.disabled||this.disabled||(this.deselectOnClick&&e.selected?this.unselect(e):this.select(e),this._editableSearchTerm&&this._setSearchTermFromItems(),this._onSelectionChanged())}select(e){e.selected||(this.itemsList.select(e),this.clearSearchOnAdd&&!this._editableSearchTerm&&this._clearSearch(),this._updateNgModel(),this.multiple&&this.addEvent.emit(e.value)),(this.closeOnSelect||this.itemsList.noItemsToSelect)&&this.close()}focus(){this.searchInput.nativeElement.focus()}blur(){this.searchInput.nativeElement.blur()}unselect(e){e&&(this.itemsList.unselect(e),this.focus(),this._updateNgModel(),this.removeEvent.emit(e.value))}selectTag(){let e;e=S_(this.addTag)?this.addTag(this.searchTerm):this._primitive?this.searchTerm:{[this.bindLabel]:this.searchTerm};const a=u=>this._isTypeahead||!this.isOpen?this.itemsList.mapItem(u,null):this.itemsList.addItem(u);!function Une(t){return t instanceof Promise}(e)?e&&this.select(a(e)):e.then(u=>this.select(a(u))).catch(()=>{})}showClear(){return this.clearable&&(this.hasValue||this.searchTerm)&&!this.disabled}focusOnClear(){this.blur(),this.clearButton&&this.clearButton.nativeElement.focus()}get showAddTag(){if(!this._validTerm)return!1;const e=this.searchTerm.toLowerCase().trim();return this.addTag&&!this.itemsList.filteredItems.some(a=>a.label.toLowerCase()===e)&&(!this.hideSelected&&this.isOpen||!this.selectedItems.some(a=>a.label.toLowerCase()===e))&&!this.loading}showNoItemsFound(){const e=0===this.itemsList.filteredItems.length;return(e&&!this._isTypeahead&&!this.loading||e&&this._isTypeahead&&this._validTerm&&!this.loading)&&!this.showAddTag}showTypeToSearch(){return 0===this.itemsList.filteredItems.length&&this._isTypeahead&&!this._validTerm&&!this.loading}onCompositionStart(){this._isComposing=!0}onCompositionEnd(e){this._isComposing=!1,!this.searchWhileComposing&&this.filter(e)}filter(e){this._isComposing&&!this.searchWhileComposing||(this.searchTerm=e,this._isTypeahead&&(this._validTerm||0===this.minTermLength)&&this.typeahead.next(e),this._isTypeahead||(this.itemsList.filter(this.searchTerm),this.isOpen&&this.itemsList.markSelectedOrDefault(this.markFirst)),this.searchEvent.emit({term:e,items:this.itemsList.filteredItems.map(a=>a.value)}),this.open())}onInputFocus(e){this.focused||(this._editableSearchTerm&&this._setSearchTermFromItems(),this.element.classList.add("ng-select-focused"),this.focusEvent.emit(e),this.focused=!0)}onInputBlur(e){this.element.classList.remove("ng-select-focused"),this.blurEvent.emit(e),!this.isOpen&&!this.disabled&&this._onTouched(),this._editableSearchTerm&&this._setSearchTermFromItems(),this.focused=!1}onItemHover(e){e.disabled||this.itemsList.markItem(e)}detectChanges(){this._cd.destroyed||this._cd.detectChanges()}_setSearchTermFromItems(){const e=this.selectedItems&&this.selectedItems[0];this.searchTerm=e&&e.label||null}_setItems(e){const a=e[0];this.bindLabel=this.bindLabel||this._defaultLabel,this._primitive=Qu(a)?!Ix(a):this._primitive||this.bindLabel===this._defaultLabel,this.itemsList.setItems(e),e.length>0&&this.hasValue&&this.itemsList.mapSelectedItems(),this.isOpen&&Qu(this.searchTerm)&&!this._isTypeahead&&this.itemsList.filter(this.searchTerm),(this._isTypeahead||this.isOpen)&&this.itemsList.markSelectedOrDefault(this.markFirst)}_setItemsFromNgOptions(){const e=u=>{this.items=u.map(i=>({$ngOptionValue:i.value,$ngOptionLabel:i.elementRef.nativeElement.innerHTML,disabled:i.disabled})),this.itemsList.setItems(this.items),this.hasValue&&this.itemsList.mapSelectedItems(),this.detectChanges()},a=()=>{const u=cz(this.ngOptions.changes,this._destroy$);cz(...this.ngOptions.map(i=>i.stateChange$)).pipe(Ah(u)).subscribe(i=>{const r=this.itemsList.findItem(i.value);r.disabled=i.disabled,r.label=i.label||r.label,this._cd.detectChanges()})};this.ngOptions.changes.pipe(uV(this.ngOptions),Ah(this._destroy$)).subscribe(u=>{this.bindLabel=this._defaultLabel,e(u),a()})}_isValidWriteValue(e){if(!Qu(e)||this.multiple&&""===e||Array.isArray(e)&&0===e.length)return!1;const a=u=>!(!Qu(this.compareWith)&&Ix(u)&&this.bindValue)||(this._console.warn(`Setting object(${JSON.stringify(u)}) as your model with bindValue is not allowed unless [compareWith] is used.`),!1);return this.multiple?Array.isArray(e)?e.every(u=>a(u)):(this._console.warn("Multiple select ngModel should be array."),!1):a(e)}_handleWriteValue(e){if(!this._isValidWriteValue(e))return;const a=u=>{let i=this.itemsList.findItem(u);if(i)this.itemsList.select(i);else{const r=Ix(u),o=!r&&!this.bindValue;r||o?this.itemsList.select(this.itemsList.mapItem(u,null)):this.bindValue&&(i={[this.bindLabel]:null,[this.bindValue]:u},this.itemsList.select(this.itemsList.mapItem(i,null)))}};this.multiple?e.forEach(u=>a(u)):a(e)}_handleKeyPresses(){this.searchable||this._keyPress$.pipe(Ah(this._destroy$),vr(e=>this._pressedKeys.push(e)),iV(200),w0(()=>this._pressedKeys.length>0),Qe(()=>this._pressedKeys.join(""))).subscribe(e=>{const a=this.itemsList.findByLabel(e);a&&(this.isOpen?(this.itemsList.markItem(a),this._scrollToMarked(),this._cd.markForCheck()):this.select(a)),this._pressedKeys=[]})}_setInputAttributes(){const e=this.searchInput.nativeElement,a={type:"text",autocorrect:"off",autocapitalize:"off",autocomplete:this.labelForId?"off":this.dropdownId,...this.inputAttrs};for(const u of Object.keys(a))e.setAttribute(u,a[u])}_updateNgModel(){const e=[];for(const u of this.selectedItems)if(this.bindValue){let i=null;if(u.children){const r=this.groupValue?this.bindValue:this.groupBy;i=u.value[r||this.groupBy]}else i=this.itemsList.resolveNested(u.value,this.bindValue);e.push(i)}else e.push(u.value);const a=this.selectedItems.map(u=>u.value);this.multiple?(this._onChange(e),this.changeEvent.emit(a)):(this._onChange(Qu(e[0])?e[0]:null),this.changeEvent.emit(a[0])),this._cd.markForCheck()}_clearSearch(){this.searchTerm&&(this._changeSearch(null),this.itemsList.resetFilteredItems())}_changeSearch(e){this.searchTerm=e,this._isTypeahead&&this.typeahead.next(e)}_scrollToMarked(){!this.isOpen||!this.dropdownPanel||this.dropdownPanel.scrollTo(this.itemsList.markedItem)}_scrollToTag(){!this.isOpen||!this.dropdownPanel||this.dropdownPanel.scrollToTag()}_onSelectionChanged(){this.isOpen&&this.deselectOnClick&&this.appendTo&&(this._cd.detectChanges(),this.dropdownPanel.adjustPosition())}_handleTab(e){if(!1===this.isOpen)if(this.showClear())this.focusOnClear(),e.preventDefault();else if(!this.addTag)return;this.selectOnTab?this.itemsList.markedItem?(this.toggleItem(this.itemsList.markedItem),e.preventDefault()):this.showAddTag?(this.selectTag(),e.preventDefault()):this.close():this.close()}_handleEnter(e){if(this.isOpen||this._manualOpen)this.itemsList.markedItem?this.toggleItem(this.itemsList.markedItem):this.showAddTag&&this.selectTag();else{if(!this.openOnEnter)return;this.open()}e.preventDefault()}_handleSpace(e){this.isOpen||this._manualOpen||(this.open(),e.preventDefault())}_handleArrowDown(e){this._nextItemIsTag(1)?(this.itemsList.unmarkItem(),this._scrollToTag()):(this.itemsList.markNextItem(),this._scrollToMarked()),this.open(),e.preventDefault()}_handleArrowUp(e){this.isOpen&&(this._nextItemIsTag(-1)?(this.itemsList.unmarkItem(),this._scrollToTag()):(this.itemsList.markPreviousItem(),this._scrollToMarked()),e.preventDefault())}_nextItemIsTag(e){const a=this.itemsList.markedIndex+e;return this.addTag&&this.searchTerm&&this.itemsList.markedItem&&(a<0||a===this.itemsList.filteredItems.length)}_handleBackspace(){this.searchTerm||!this.clearable||!this.clearOnBackspace||!this.hasValue||(this.multiple?this.unselect(this.itemsList.lastSelectedItem):this.clearModel())}get _isTypeahead(){return this.typeahead&&this.typeahead.observers.length>0}get _validTerm(){const e=this.searchTerm&&this.searchTerm.trim();return e&&e.length>=this.minTermLength}_mergeGlobalConfig(e){this.placeholder=this.placeholder||e.placeholder,this.notFoundText=this.notFoundText||e.notFoundText,this.typeToSearchText=this.typeToSearchText||e.typeToSearchText,this.addTagText=this.addTagText||e.addTagText,this.loadingText=this.loadingText||e.loadingText,this.clearAllText=this.clearAllText||e.clearAllText,this.virtualScroll=Qu(this.virtualScroll)?this.virtualScroll:!!Qu(e.disableVirtualScroll)&&!e.disableVirtualScroll,this.openOnEnter=Qu(this.openOnEnter)?this.openOnEnter:e.openOnEnter,this.appendTo=this.appendTo||e.appendTo,this.bindValue=this.bindValue||e.bindValue,this.bindLabel=this.bindLabel||e.bindLabel,this.appearance=this.appearance||e.appearance}static#e=this.\u0275fac=function(a){return new(a||Xg)(Ii("class"),Ii("autofocus"),q(Hx),q(cV),q(Ht),q(dn),q(Vx))};static#a=this.\u0275cmp=cd({type:Xg,selectors:[["ng-select"]],contentQueries:function(a,u,i){if(1&a&&(yo(i,Hg,5,gt),yo(i,Vg,5,gt),yo(i,jg,5,gt),yo(i,Og,5,gt),yo(i,Gg,5,gt),yo(i,Kg,5,gt),yo(i,Wg,5,gt),yo(i,Ug,5,gt),yo(i,Jg,5,gt),yo(i,Zg,5,gt),yo(i,$g,5,gt),yo(i,Qg,5)),2&a){let r;Oi(r=Gi())&&(u.optionTemplate=r.first),Oi(r=Gi())&&(u.optgroupTemplate=r.first),Oi(r=Gi())&&(u.labelTemplate=r.first),Oi(r=Gi())&&(u.multiLabelTemplate=r.first),Oi(r=Gi())&&(u.headerTemplate=r.first),Oi(r=Gi())&&(u.footerTemplate=r.first),Oi(r=Gi())&&(u.notFoundTemplate=r.first),Oi(r=Gi())&&(u.typeToSearchTemplate=r.first),Oi(r=Gi())&&(u.loadingTextTemplate=r.first),Oi(r=Gi())&&(u.tagTemplate=r.first),Oi(r=Gi())&&(u.loadingSpinnerTemplate=r.first),Oi(r=Gi())&&(u.ngOptions=r)}},viewQuery:function(a,u){if(1&a&&(T4(Yg,5),T4(hne,7),T4(mne,5)),2&a){let i;Oi(i=Gi())&&(u.dropdownPanel=i.first),Oi(i=Gi())&&(u.searchInput=i.first),Oi(i=Gi())&&(u.clearButton=i.first)}},hostVars:20,hostBindings:function(a,u){1&a&&Yu("keydown",function(r){return u.handleKeyDown(r)}),2&a&&pr("ng-select-typeahead",u.typeahead)("ng-select-multiple",u.multiple)("ng-select-taggable",u.addTag)("ng-select-searchable",u.searchable)("ng-select-clearable",u.clearable)("ng-select-opened",u.isOpen)("ng-select",u.useDefaultClass)("ng-select-disabled",u.disabled)("ng-select-filtered",u.filtered)("ng-select-single",u.single)},inputs:{bindLabel:"bindLabel",bindValue:"bindValue",markFirst:"markFirst",placeholder:"placeholder",notFoundText:"notFoundText",typeToSearchText:"typeToSearchText",addTagText:"addTagText",loadingText:"loadingText",clearAllText:"clearAllText",appearance:"appearance",dropdownPosition:"dropdownPosition",appendTo:"appendTo",loading:"loading",closeOnSelect:"closeOnSelect",hideSelected:"hideSelected",selectOnTab:"selectOnTab",openOnEnter:"openOnEnter",maxSelectedItems:"maxSelectedItems",groupBy:"groupBy",groupValue:"groupValue",bufferAmount:"bufferAmount",virtualScroll:"virtualScroll",selectableGroup:"selectableGroup",selectableGroupAsModel:"selectableGroupAsModel",searchFn:"searchFn",trackByFn:"trackByFn",clearOnBackspace:"clearOnBackspace",labelForId:"labelForId",inputAttrs:"inputAttrs",tabIndex:"tabIndex",readonly:"readonly",searchWhileComposing:"searchWhileComposing",minTermLength:"minTermLength",editableSearchTerm:"editableSearchTerm",keyDownFn:"keyDownFn",typeahead:"typeahead",multiple:"multiple",addTag:"addTag",searchable:"searchable",clearable:"clearable",isOpen:"isOpen",items:"items",compareWith:"compareWith",clearSearchOnAdd:"clearSearchOnAdd",deselectOnClick:"deselectOnClick"},outputs:{blurEvent:"blur",focusEvent:"focus",changeEvent:"change",openEvent:"open",closeEvent:"close",searchEvent:"search",clearEvent:"clear",addEvent:"add",removeEvent:"remove",scroll:"scroll",scrollToEnd:"scrollToEnd"},features:[Fu([{provide:A0,useExisting:Ya(()=>Xg),multi:!0},qg]),tn],decls:14,vars:19,consts:[["searchInput",""],["defaultLabelTemplate",""],["defaultLoadingSpinnerTemplate",""],["clearButton",""],["defaultOptionTemplate",""],["defaultTagTemplate",""],["defaultNotFoundTemplate",""],["defaultTypeToSearchTemplate",""],["defaultLoadingTextTemplate",""],[1,"ng-select-container",3,"mousedown"],[1,"ng-value-container"],[1,"ng-placeholder"],[4,"ngIf"],["role","combobox","aria-haspopup","listbox",1,"ng-input"],["aria-autocomplete","list",3,"input","compositionstart","compositionend","focus","blur","change","readOnly","disabled","value"],["class","ng-clear-wrapper","tabindex","0",3,"title",4,"ngIf"],[1,"ng-arrow-wrapper"],[1,"ng-arrow"],["class","ng-dropdown-panel","role","listbox","aria-label","Options list",3,"virtualScroll","bufferAmount","appendTo","position","headerTemplate","footerTemplate","filterValue","items","markedItem","ng-select-multiple","ngClass","id","update","scroll","scrollToEnd","outsideClick",4,"ngIf"],["class","ng-value",3,"ng-value-disabled",4,"ngFor","ngForOf","ngForTrackBy"],[1,"ng-value"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],["aria-hidden","true",1,"ng-value-icon","left",3,"click"],[1,"ng-value-label",3,"ngItemLabel","escape"],[3,"ngTemplateOutlet"],[1,"ng-spinner-loader"],["tabindex","0",1,"ng-clear-wrapper",3,"title"],["aria-hidden","true",1,"ng-clear"],["role","listbox","aria-label","Options list",1,"ng-dropdown-panel",3,"update","scroll","scrollToEnd","outsideClick","virtualScroll","bufferAmount","appendTo","position","headerTemplate","footerTemplate","filterValue","items","markedItem","ngClass","id"],["class","ng-option",3,"ng-option-disabled","ng-option-selected","ng-optgroup","ng-option","ng-option-child","ng-option-marked","click","mouseover",4,"ngFor","ngForOf","ngForTrackBy"],["class","ng-option","role","option",3,"ng-option-marked","mouseover","click",4,"ngIf"],[1,"ng-option",3,"click","mouseover"],[1,"ng-option-label",3,"ngItemLabel","escape"],["role","option",1,"ng-option",3,"mouseover","click"],[1,"ng-tag-label"],[1,"ng-option","ng-option-disabled"]],template:function(a,u){if(1&a){const i=J1();ru(0,"div",9),Yu("mousedown",function(o){return di(i),Nu(u.handleMousedown(o))}),ru(1,"div",10)(2,"div",11),C0(3),_u(),pi(4,xne,2,2,"ng-container",12)(5,fne,1,5,null,12),ru(6,"div",13)(7,"input",14,0),Yu("input",function(){di(i);const o=Cs(8);return Nu(u.filter(o.value))})("compositionstart",function(){return di(i),Nu(u.onCompositionStart())})("compositionend",function(){di(i);const o=Cs(8);return Nu(u.onCompositionEnd(o.value))})("focus",function(o){return di(i),Nu(u.onInputFocus(o))})("blur",function(o){return di(i),Nu(u.onInputBlur(o))})("change",function(o){return di(i),Nu(o.stopPropagation())}),_u()()(),pi(9,_ne,4,1,"ng-container",12)(10,Fne,4,1,"span",15),ru(11,"span",16),U1(12,"span",17),_u()(),pi(13,One,7,19,"ng-dropdown-panel",18)}2&a&&(pr("ng-appearance-outline","outline"===u.appearance)("ng-has-value",u.hasValue),Ka(3),Z1(u.placeholder),Ka(),Dt("ngIf",(!u.multiLabelTemplate||!u.multiple)&&u.selectedItems.length>0),Ka(),Dt("ngIf",u.multiple&&u.multiLabelTemplate&&u.selectedValues.length>0),Ka(),Gn("aria-expanded",u.isOpen)("aria-owns",u.isOpen?u.dropdownId:null),Ka(),Dt("readOnly",!u.searchable||u.itemsList.maxItemsSelected)("disabled",u.disabled)("value",u.searchTerm?u.searchTerm:""),Gn("id",u.labelForId)("tabindex",u.tabIndex)("aria-activedescendant",u.isOpen?null==u.itemsList||null==u.itemsList.markedItem?null:u.itemsList.markedItem.htmlId:null)("aria-controls",u.isOpen?u.dropdownId:null),Ka(2),Dt("ngIf",u.loading),Ka(),Dt("ngIf",u.showClear()),Ka(3),Dt("ngIf",u.isOpen))},dependencies:[X1,eh,tc,th,Yg,Rx],styles:['@charset "UTF-8";.ng-select{position:relative;display:block;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:none;user-select:none;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@keyframes load8{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:"\\200b"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\n'],encapsulation:2,changeDetection:0})}function qne(){return new Yne}class Yne{constructor(){this._selected=[]}get value(){return this._selected}select(e,a,u){if(e.selected=!0,(!e.children||!a&&u)&&this._selected.push(e),a)if(e.parent){const i=e.parent.children.length,r=e.parent.children.filter(o=>o.selected).length;e.parent.selected=i===r}else e.children&&(this._setChildrenSelectedState(e.children,!0),this._removeChildren(e),u&&this._activeChildren(e)?this._selected=[...this._selected.filter(i=>i.parent!==e),e]:this._selected=[...this._selected,...e.children.filter(i=>!i.disabled)])}unselect(e,a){if(this._selected=this._selected.filter(u=>u!==e),e.selected=!1,a)if(e.parent&&e.parent.selected){const u=e.parent.children;this._removeParent(e.parent),this._removeChildren(e.parent),this._selected.push(...u.filter(i=>i!==e&&!i.disabled)),e.parent.selected=!1}else e.children&&(this._setChildrenSelectedState(e.children,!1),this._removeChildren(e))}clear(e){this._selected=e?this._selected.filter(a=>a.disabled):[]}_setChildrenSelectedState(e,a){for(const u of e)u.disabled||(u.selected=a)}_removeChildren(e){this._selected=[...this._selected.filter(a=>a.parent!==e),...e.children.filter(a=>a.parent===e&&a.disabled&&a.selected)]}_removeParent(e){this._selected=this._selected.filter(a=>a!==e)}_activeChildren(e){return e.children.every(a=>!a.disabled||a.selected)}}class M_{static#e=this.\u0275fac=function(a){return new(a||M_)};static#a=this.\u0275mod=en({type:M_,declarations:[Yg,Qg,Xg,Vg,Hg,jg,Og,Gg,Kg,Wg,Ug,Jg,Zg,$g,Rx],imports:[ws],exports:[Xg,Qg,Vg,Hg,jg,Og,Gg,Kg,Wg,Ug,Jg,Zg,$g]});static#t=this.\u0275inj=P({providers:[{provide:cV,useValue:qne}],imports:[ws]})}const Qne=["*"],Xne=t=>["nav-item",t];function ere(t,e){if(1&t){const a=J1();ru(0,"span",7),Yu("click",function(i){di(a);const r=vt().$implicit,o=vt();return i.preventDefault(),Nu(o.removeTab(r))}),C0(1," \u274c"),_u()}}function are(t,e){if(1&t){const a=J1();ru(0,"li",3),Yu("keydown",function(i){const r=di(a).index;return Nu(vt().keyNavActions(i,r))}),ru(1,"a",4),Yu("click",function(){return Nu(di(a).$implicit.active=!0)}),ru(2,"span",5),C0(3),_u(),pi(4,ere,2,0,"span",6),_u()()}if(2&t){const a=e.$implicit;pr("active",a.active)("disabled",a.disabled),Dt("ngClass",P4(15,Xne,a.customClass||"")),Ka(),pr("active",a.active)("disabled",a.disabled),Gn("aria-controls",a.id?a.id:"")("aria-selected",!!a.active)("id",a.id?a.id+"-link":""),Ka(),Dt("ngTransclude",a.headingRef),Ka(),Z1(a.heading),Ka(),Dt("ngIf",a.removable)}}class ev{set ngTransclude(e){this._ngTransclude=e,e&&this.viewRef.createEmbeddedView(e)}get ngTransclude(){return this._ngTransclude}constructor(e){this.viewRef=e}static#e=this.\u0275fac=function(a){return new(a||ev)(q(mr))};static#a=this.\u0275dir=Ae({type:ev,selectors:[["","ngTransclude",""]],inputs:{ngTransclude:"ngTransclude"}})}class jx{constructor(){this.type="tabs",this.isKeysAllowed=!0,this.ariaLabel="Tabs"}static#e=this.\u0275fac=function(a){return new(a||jx)};static#a=this.\u0275prov=he({token:jx,factory:jx.\u0275fac,providedIn:"root"})}class av{get vertical(){return this._vertical}set vertical(e){this._vertical=e,this.setClassMap()}get justified(){return this._justified}set justified(e){this._justified=e,this.setClassMap()}get type(){return this._type}set type(e){this._type=e,this.setClassMap()}get isKeysAllowed(){return this._isKeysAllowed}set isKeysAllowed(e){this._isKeysAllowed=e}constructor(e,a,u){this.renderer=a,this.elementRef=u,this.clazz=!0,this.tabs=[],this.classMap={},this.ariaLabel="Tabs",this.isDestroyed=!1,this._vertical=!1,this._justified=!1,this._type="tabs",this._isKeysAllowed=!0,Object.assign(this,e)}ngOnDestroy(){this.isDestroyed=!0}addTab(e){this.tabs.push(e),e.active=1===this.tabs.length&&!e.active}removeTab(e,a={reselect:!0,emit:!0}){const u=this.tabs.indexOf(e);if(-1!==u&&!this.isDestroyed){if(a.reselect&&e.active&&this.hasAvailableTabs(u)){const i=this.getClosestTabIndex(u);this.tabs[i].active=!0}a.emit&&e.removed.emit(e),this.tabs.splice(u,1),e.elementRef.nativeElement.parentNode&&this.renderer.removeChild(e.elementRef.nativeElement.parentNode,e.elementRef.nativeElement)}}keyNavActions(e,a){if(!this.isKeysAllowed)return;const u=Array.from(this.elementRef.nativeElement.querySelectorAll(".nav-link"));if(13===e.keyCode||"Enter"===e.key||32===e.keyCode||"Space"===e.key)return e.preventDefault(),void u[a%u.length].click();if(39!==e.keyCode&&"RightArrow"!==e.key)if(37!==e.keyCode&&"LeftArrow"!==e.key)if(36!==e.keyCode&&"Home"!==e.key)if(35!==e.keyCode&&"End"!==e.key){if((46===e.keyCode||"Delete"===e.key)&&this.tabs[a].removable){if(this.removeTab(this.tabs[a]),u[a+1])return void u[(a+1)%u.length].focus();u[u.length-1]&&u[0].focus()}}else{e.preventDefault();let i,r=1,o=a;do{o-r<0?(o=u.length-1,i=u[o],r=0):i=u[o-r],r++}while(i.classList.contains("disabled"));i.focus()}else{e.preventDefault();let i,r=0;do{i=u[r%u.length],r++}while(i.classList.contains("disabled"));i.focus()}else{let i,r=1,o=a;do{o-r<0?(o=u.length-1,i=u[o],r=0):i=u[o-r],r++}while(i.classList.contains("disabled"));i.focus()}else{let i,r=1;do{i=u[(a+r)%u.length],r++}while(i.classList.contains("disabled"));i.focus()}}getClosestTabIndex(e){const a=this.tabs.length;if(!a)return-1;for(let u=1;u<=a;u+=1){const i=e-u,r=e+u;if(this.tabs[i]&&!this.tabs[i].disabled)return i;if(this.tabs[r]&&!this.tabs[r].disabled)return r}return-1}hasAvailableTabs(e){const a=this.tabs.length;if(!a)return!1;for(let u=0;u{this.renderer.removeClass(this.elementRef.nativeElement,a)}),this._customClass=e?e.trim():"",this.customClass&&this.customClass.split(" ").forEach(a=>{this.renderer.addClass(this.elementRef.nativeElement,a)})}get active(){return this._active}set active(e){if(this._active!==e){if(this.disabled&&e||!e)return void(this._active&&!e&&(this.deselect.emit(this),this._active=e));this._active=e,this.selectTab.emit(this),this.tabset.tabs.forEach(a=>{a!==this&&(a.active=!1)})}}get ariaLabelledby(){return this.id?`${this.id}-link`:""}constructor(e,a,u){this.elementRef=a,this.renderer=u,this.disabled=!1,this.removable=!1,this.selectTab=new aa,this.deselect=new aa,this.removed=new aa,this.addClass=!0,this.role="tabpanel",this._active=!1,this._customClass="",this.tabset=e,this.tabset.addTab(this)}ngOnInit(){this.removable=!!this.removable}ngOnDestroy(){this.tabset.removeTab(this,{reselect:!1,emit:!1})}static#e=this.\u0275fac=function(a){return new(a||tv)(q(av),q(Ht),q(jn))};static#a=this.\u0275dir=Ae({type:tv,selectors:[["tab"],["","tab",""]],hostVars:7,hostBindings:function(a,u){2&a&&(Gn("id",u.id)("role",u.role)("aria-labelledby",u.ariaLabelledby),pr("active",u.active)("tab-pane",u.addClass))},inputs:{heading:"heading",id:"id",disabled:"disabled",removable:"removable",customClass:"customClass",active:"active"},outputs:{selectTab:"selectTab",deselect:"deselect",removed:"removed"},exportAs:["tab"]})}class Ox{constructor(e,a){a.headingRef=e}static#e=this.\u0275fac=function(a){return new(a||Ox)(q(gt),q(tv))};static#a=this.\u0275dir=Ae({type:Ox,selectors:[["","tabHeading",""]]})}class Gx{static forRoot(){return{ngModule:Gx,providers:[]}}static#e=this.\u0275fac=function(a){return new(a||Gx)};static#a=this.\u0275mod=en({type:Gx,declarations:[ev,tv,av,Ox],imports:[ws],exports:[tv,av,Ox,ev]});static#t=this.\u0275inj=P({imports:[ws]})}function Ms(t){return!!t&&(t instanceof rt||ha(t.lift)&&ha(t.subscribe))}function Kx(t){return new rt(e=>{qr(t()).subscribe(e)})}function Ls(t){return t<=0?()=>Ol:Re((e,a)=>{let u=0;e.subscribe(at(a,i=>{++u<=t&&(a.next(i),t<=u&&a.complete())}))})}class tre extends Gt{constructor(e=1/0,a=1/0,u=oz){super(),this._bufferSize=e,this._windowTime=a,this._timestampProvider=u,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=a===1/0,this._bufferSize=Math.max(1,e),this._windowTime=Math.max(1,a)}next(e){const{isStopped:a,_buffer:u,_infiniteTimeWindow:i,_timestampProvider:r,_windowTime:o}=this;a||(u.push(e),!i&&u.push(r.now()+o)),this._trimBuffer(),super.next(e)}_subscribe(e){this._throwIfClosed(),this._trimBuffer();const a=this._innerSubscribe(e),{_infiniteTimeWindow:u,_buffer:i}=this,r=i.slice();for(let o=0;o{u.unsubscribe(),t()}});return qr(e(...a)).subscribe(u)}function hV(t,e,a){let u,i=!1;return t&&"object"==typeof t?({bufferSize:u=1/0,windowTime:e=1/0,refCount:i=!1,scheduler:a}=t):u=t??1/0,function ure(t={}){const{connector:e=(()=>new Gt),resetOnError:a=!0,resetOnComplete:u=!0,resetOnRefCountZero:i=!0}=t;return r=>{let o,d,h,m=0,E=!1,v=!1;const k=()=>{d?.unsubscribe(),d=void 0},x=()=>{k(),o=h=void 0,E=v=!1},f=()=>{const C=o;x(),C?.unsubscribe()};return Re((C,A)=>{m++,!v&&!E&&k();const w=h=h??e();A.add(()=>{m--,0===m&&!v&&!E&&(d=hz(f,i))}),w.subscribe(A),!o&&m>0&&(o=new Mn({next:z=>w.next(z),error:z=>{v=!0,k(),d=hz(x,a,z),w.error(z)},complete:()=>{E=!0,k(),d=hz(x,u),w.complete()}}),qr(C).subscribe(o))})(r)}}({connector:()=>new tre(u,e,a),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:i})}class Wx{}class s3 extends Wx{getTranslation(e){return Ue({})}static \u0275fac=(()=>{let e;return function(u){return(e||(e=bu(s3)))(u||s3)}})();static \u0275prov=he({token:s3,factory:s3.\u0275fac})}class mz{}class uv{handle(e){return e.key}static \u0275fac=function(a){return new(a||uv)};static \u0275prov=he({token:uv,factory:uv.\u0275fac})}function Ux(t,e){if(t===e)return!0;if(null===t||null===e)return!1;if(t!=t&&e!=e)return!0;let i,r,o,a=typeof t;if(a==typeof e&&"object"==a){if(!Array.isArray(t)){if(Array.isArray(e))return!1;for(r in o=Object.create(null),t){if(!Ux(t[r],e[r]))return!1;o[r]=!0}for(r in e)if(!(r in o)&&typeof e[r]<"u")return!1;return!0}if(!Array.isArray(e))return!1;if((i=t.length)==e.length){for(r=0;r{pz(e[u])?u in t?a[u]=mV(t[u],e[u]):Object.assign(a,{[u]:e[u]}):Object.assign(a,{[u]:e[u]})}),a}class L_{}class d3 extends L_{templateMatcher=/{{\s?([^{}\s]*)\s?}}/g;interpolate(e,a){let u;return u="string"==typeof e?this.interpolateString(e,a):"function"==typeof e?this.interpolateFunction(e,a):e,u}getValue(e,a){let u="string"==typeof a?a.split("."):[a];a="";do{a+=u.shift(),!Xo(e)||!Xo(e[a])||"object"!=typeof e[a]&&u.length?u.length?a+=".":e=void 0:(e=e[a],a="")}while(u.length);return e}interpolateFunction(e,a){return e(a)}interpolateString(e,a){return a?e.replace(this.templateMatcher,(u,i)=>{let r=this.getValue(a,i);return Xo(r)?r:u}):e}static \u0275fac=(()=>{let e;return function(u){return(e||(e=bu(d3)))(u||d3)}})();static \u0275prov=he({token:d3,factory:d3.\u0275fac})}class T_{}class c3 extends T_{compile(e,a){return e}compileTranslations(e,a){return e}static \u0275fac=(()=>{let e;return function(u){return(e||(e=bu(c3)))(u||c3)}})();static \u0275prov=he({token:c3,factory:c3.\u0275fac})}class pV{defaultLang;currentLang=this.defaultLang;translations={};langs=[];onTranslationChange=new aa;onLangChange=new aa;onDefaultLangChange=new aa}const Ez=new V("USE_STORE"),gz=new V("USE_DEFAULT_LANG"),vz=new V("DEFAULT_LANGUAGE"),bz=new V("USE_EXTEND");class it{store;currentLoader;compiler;parser;missingTranslationHandler;useDefaultLang;isolate;extend;loadingTranslations;pending=!1;_onTranslationChange=new aa;_onLangChange=new aa;_onDefaultLangChange=new aa;_defaultLang;_currentLang;_langs=[];_translations={};_translationRequests={};get onTranslationChange(){return this.isolate?this._onTranslationChange:this.store.onTranslationChange}get onLangChange(){return this.isolate?this._onLangChange:this.store.onLangChange}get onDefaultLangChange(){return this.isolate?this._onDefaultLangChange:this.store.onDefaultLangChange}get defaultLang(){return this.isolate?this._defaultLang:this.store.defaultLang}set defaultLang(e){this.isolate?this._defaultLang=e:this.store.defaultLang=e}get currentLang(){return this.isolate?this._currentLang:this.store.currentLang}set currentLang(e){this.isolate?this._currentLang=e:this.store.currentLang=e}get langs(){return this.isolate?this._langs:this.store.langs}set langs(e){this.isolate?this._langs=e:this.store.langs=e}get translations(){return this.isolate?this._translations:this.store.translations}set translations(e){this.isolate?this._translations=e:this.store.translations=e}constructor(e,a,u,i,r,o=!0,d=!1,h=!1,m){this.store=e,this.currentLoader=a,this.compiler=u,this.parser=i,this.missingTranslationHandler=r,this.useDefaultLang=o,this.isolate=d,this.extend=h,m&&this.setDefaultLang(m)}setDefaultLang(e){if(e===this.defaultLang)return;let a=this.retrieveTranslations(e);typeof a<"u"?(null==this.defaultLang&&(this.defaultLang=e),a.pipe(Ls(1)).subscribe(u=>{this.changeDefaultLang(e)})):this.changeDefaultLang(e)}getDefaultLang(){return this.defaultLang}use(e){if(e===this.currentLang)return Ue(this.translations[e]);let a=this.retrieveTranslations(e);return typeof a<"u"?(this.currentLang||(this.currentLang=e),a.pipe(Ls(1)).subscribe(u=>{this.changeLang(e)}),a):(this.changeLang(e),Ue(this.translations[e]))}retrieveTranslations(e){let a;return(typeof this.translations[e]>"u"||this.extend)&&(this._translationRequests[e]=this._translationRequests[e]||this.getTranslation(e),a=this._translationRequests[e]),a}getTranslation(e){this.pending=!0;const a=this.currentLoader.getTranslation(e).pipe(hV(1),Ls(1));return this.loadingTranslations=a.pipe(Qe(u=>this.compiler.compileTranslations(u,e)),hV(1),Ls(1)),this.loadingTranslations.subscribe({next:u=>{this.translations[e]=this.extend&&this.translations[e]?{...u,...this.translations[e]}:u,this.updateLangs(),this.pending=!1},error:u=>{this.pending=!1}}),a}setTranslation(e,a,u=!1){a=this.compiler.compileTranslations(a,e),(u||this.extend)&&this.translations[e]?this.translations[e]=mV(this.translations[e],a):this.translations[e]=a,this.updateLangs(),this.onTranslationChange.emit({lang:e,translations:this.translations[e]})}getLangs(){return this.langs}addLangs(e){e.forEach(a=>{-1===this.langs.indexOf(a)&&this.langs.push(a)})}updateLangs(){this.addLangs(Object.keys(this.translations))}getParsedResult(e,a,u){let i;if(a instanceof Array){let r={},o=!1;for(let d of a)r[d]=this.getParsedResult(e,d,u),Ms(r[d])&&(o=!0);if(o){return HR(a.map(h=>Ms(r[h])?r[h]:Ue(r[h]))).pipe(Qe(h=>{let m={};return h.forEach((E,v)=>{m[a[v]]=E}),m}))}return r}if(e&&(i=this.parser.interpolate(this.parser.getValue(e,a),u)),typeof i>"u"&&null!=this.defaultLang&&this.defaultLang!==this.currentLang&&this.useDefaultLang&&(i=this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang],a),u)),typeof i>"u"){let r={key:a,translateService:this};typeof u<"u"&&(r.interpolateParams=u),i=this.missingTranslationHandler.handle(r)}return typeof i<"u"?i:a}get(e,a){if(!Xo(e)||!e.length)throw new Error('Parameter "key" required');if(this.pending)return this.loadingTranslations.pipe(r3(u=>Ms(u=this.getParsedResult(u,e,a))?u:Ue(u)));{let u=this.getParsedResult(this.translations[this.currentLang],e,a);return Ms(u)?u:Ue(u)}}getStreamOnTranslationChange(e,a){if(!Xo(e)||!e.length)throw new Error('Parameter "key" required');return Tx(Kx(()=>this.get(e,a)),this.onTranslationChange.pipe(Fo(u=>{const i=this.getParsedResult(u.translations,e,a);return"function"==typeof i.subscribe?i:Ue(i)})))}stream(e,a){if(!Xo(e)||!e.length)throw new Error('Parameter "key" required');return Tx(Kx(()=>this.get(e,a)),this.onLangChange.pipe(Fo(u=>{const i=this.getParsedResult(u.translations,e,a);return Ms(i)?i:Ue(i)})))}instant(e,a){if(!Xo(e)||!e.length)throw new Error('Parameter "key" required');let u=this.getParsedResult(this.translations[this.currentLang],e,a);if(Ms(u)){if(e instanceof Array){let i={};return e.forEach((r,o)=>{i[e[o]]=e[o]}),i}return e}return u}set(e,a,u=this.currentLang){this.translations[u][e]=this.compiler.compile(a,u),this.updateLangs(),this.onTranslationChange.emit({lang:u,translations:this.translations[u]})}changeLang(e){this.currentLang=e,this.onLangChange.emit({lang:e,translations:this.translations[e]}),null==this.defaultLang&&this.changeDefaultLang(e)}changeDefaultLang(e){this.defaultLang=e,this.onDefaultLangChange.emit({lang:e,translations:this.translations[e]})}reloadLang(e){return this.resetLang(e),this.getTranslation(e)}resetLang(e){this._translationRequests[e]=void 0,this.translations[e]=void 0}getBrowserLang(){if(typeof window>"u"||typeof window.navigator>"u")return;let e=window.navigator.languages?window.navigator.languages[0]:null;return e=e||window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage,typeof e>"u"?void 0:(-1!==e.indexOf("-")&&(e=e.split("-")[0]),-1!==e.indexOf("_")&&(e=e.split("_")[0]),e)}getBrowserCultureLang(){if(typeof window>"u"||typeof window.navigator>"u")return;let e=window.navigator.languages?window.navigator.languages[0]:null;return e=e||window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage,e}static \u0275fac=function(a){return new(a||it)(fe(pV),fe(Wx),fe(T_),fe(L_),fe(mz),fe(gz),fe(Ez),fe(bz),fe(vz))};static \u0275prov=he({token:it,factory:it.\u0275fac})}class Jx{translateService;element;_ref;key;lastParams;currentParams;onLangChangeSub;onDefaultLangChangeSub;onTranslationChangeSub;set translate(e){e&&(this.key=e,this.checkNodes())}set translateParams(e){Ux(this.currentParams,e)||(this.currentParams=e,this.checkNodes(!0))}constructor(e,a,u){this.translateService=e,this.element=a,this._ref=u,this.onTranslationChangeSub||(this.onTranslationChangeSub=this.translateService.onTranslationChange.subscribe(i=>{i.lang===this.translateService.currentLang&&this.checkNodes(!0,i.translations)})),this.onLangChangeSub||(this.onLangChangeSub=this.translateService.onLangChange.subscribe(i=>{this.checkNodes(!0,i.translations)})),this.onDefaultLangChangeSub||(this.onDefaultLangChangeSub=this.translateService.onDefaultLangChange.subscribe(i=>{this.checkNodes(!0)}))}ngAfterViewChecked(){this.checkNodes()}checkNodes(e=!1,a){let u=this.element.nativeElement.childNodes;u.length||(this.setContent(this.element.nativeElement,this.key),u=this.element.nativeElement.childNodes);for(let i=0;i{r!==e&&(a.lastKey=e),a.originalContent||(a.originalContent=this.getContent(a)),a.currentValue=Xo(r)?r:a.originalContent||e,this.setContent(a,this.key?a.currentValue:a.originalContent.replace(e,a.currentValue)),this._ref.markForCheck()};if(Xo(u)){let r=this.translateService.getParsedResult(u,e,this.currentParams);Ms(r)?r.subscribe({next:i}):i(r)}else this.translateService.get(e,this.currentParams).subscribe(i)}}getContent(e){return Xo(e.textContent)?e.textContent:e.data}setContent(e,a){Xo(e.textContent)?e.textContent=a:e.data=a}ngOnDestroy(){this.onLangChangeSub&&this.onLangChangeSub.unsubscribe(),this.onDefaultLangChangeSub&&this.onDefaultLangChangeSub.unsubscribe(),this.onTranslationChangeSub&&this.onTranslationChangeSub.unsubscribe()}static \u0275fac=function(a){return new(a||Jx)(q(it),q(Ht),q(dn))};static \u0275dir=Ae({type:Jx,selectors:[["","translate",""],["","ngx-translate",""]],inputs:{translate:"translate",translateParams:"translateParams"}})}class h3{translate;_ref;value="";lastKey=null;lastParams=[];onTranslationChange;onLangChange;onDefaultLangChange;constructor(e,a){this.translate=e,this._ref=a}updateValue(e,a,u){let i=r=>{this.value=void 0!==r?r:e,this.lastKey=e,this._ref.markForCheck()};if(u){let r=this.translate.getParsedResult(u,e,a);Ms(r.subscribe)?r.subscribe(i):i(r)}this.translate.get(e,a).subscribe(i)}transform(e,...a){if(!e||!e.length)return e;if(Ux(e,this.lastKey)&&Ux(a,this.lastParams))return this.value;let u;if(Xo(a[0])&&a.length)if("string"==typeof a[0]&&a[0].length){let i=a[0].replace(/(\')?([a-zA-Z0-9_]+)(\')?(\s)?:/g,'"$2":').replace(/:(\s)?(\')(.*?)(\')/g,':"$3"');try{u=JSON.parse(i)}catch{throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${a[0]}`)}}else"object"==typeof a[0]&&!Array.isArray(a[0])&&(u=a[0]);return this.lastKey=e,this.lastParams=a,this.updateValue(e,u),this._dispose(),this.onTranslationChange||(this.onTranslationChange=this.translate.onTranslationChange.subscribe(i=>{this.lastKey&&i.lang===this.translate.currentLang&&(this.lastKey=null,this.updateValue(e,u,i.translations))})),this.onLangChange||(this.onLangChange=this.translate.onLangChange.subscribe(i=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,u,i.translations))})),this.onDefaultLangChange||(this.onDefaultLangChange=this.translate.onDefaultLangChange.subscribe(()=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,u))})),this.value}_dispose(){typeof this.onTranslationChange<"u"&&(this.onTranslationChange.unsubscribe(),this.onTranslationChange=void 0),typeof this.onLangChange<"u"&&(this.onLangChange.unsubscribe(),this.onLangChange=void 0),typeof this.onDefaultLangChange<"u"&&(this.onDefaultLangChange.unsubscribe(),this.onDefaultLangChange=void 0)}ngOnDestroy(){this._dispose()}static \u0275fac=function(a){return new(a||h3)(q(it,16),q(dn,16))};static \u0275pipe=xn({name:"translate",type:h3,pure:!1});static \u0275prov=he({token:h3,factory:h3.\u0275fac})}class lc{static forRoot(e={}){return{ngModule:lc,providers:[e.loader||{provide:Wx,useClass:s3},e.compiler||{provide:T_,useClass:c3},e.parser||{provide:L_,useClass:d3},e.missingTranslationHandler||{provide:mz,useClass:uv},pV,{provide:Ez,useValue:e.isolate},{provide:gz,useValue:e.useDefaultLang},{provide:bz,useValue:e.extend},{provide:vz,useValue:e.defaultLanguage},it]}}static forChild(e={}){return{ngModule:lc,providers:[e.loader||{provide:Wx,useClass:s3},e.compiler||{provide:T_,useClass:c3},e.parser||{provide:L_,useClass:d3},e.missingTranslationHandler||{provide:mz,useClass:uv},{provide:Ez,useValue:e.isolate},{provide:gz,useValue:e.useDefaultLang},{provide:bz,useValue:e.extend},{provide:vz,useValue:e.defaultLanguage},it]}}static \u0275fac=function(a){return new(a||lc)};static \u0275mod=en({type:lc,declarations:[h3,Jx],exports:[h3,Jx]});static \u0275inj=P({})}class ire{http;prefix;suffix;constructor(e,a="/assets/i18n/",u=".json"){this.http=e,this.prefix=a,this.suffix=u}getTranslation(e){return this.http.get(`${this.prefix}${e}${this.suffix}`)}}var nre=W(973),rre=W.n(nre);var lre=W(128),sre=W.n(lre);function kz(...t){const e=vx(t),a=IR(t),{args:u,keys:i}=PR(t);if(0===u.length)return Ui([],e);const r=new rt(function dre(t,e,a=zi){return u=>{EV(e,()=>{const{length:i}=t,r=new Array(i);let o=i,d=i;for(let h=0;h{const m=Ui(t[h],e);let E=!1;m.subscribe(at(u,v=>{r[h]=v,E||(E=!0,d--),d||u.next(a(r.slice()))},()=>{--o||u.complete()}))},u)},u)}}(u,e,i?o=>RR(i,o):zi));return a?r.pipe(IS(a)):r}function EV(t,e,a){t?uc(a,t,e):e()}const Zx=Ys(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function P_(t,e){const a=ha(t)?t:()=>t,u=i=>i.error(a());return new rt(e?i=>e.schedule(u,0,i):u)}function xz(){return Re((t,e)=>{let a=null;t._refCount++;const u=at(e,void 0,void 0,void 0,()=>{if(!t||t._refCount<=0||0<--t._refCount)return void(a=null);const i=t._connection,r=a;a=null,i&&(!r||i===r)&&i.unsubscribe(),e.unsubscribe()});t.subscribe(u),u.closed||(a=t.connect())})}class gV extends rt{constructor(e,a){super(),this.source=e,this.subjectFactory=a,this._subject=null,this._refCount=0,this._connection=null,To(e)&&(this.lift=e.lift)}_subscribe(e){return this.getSubject().subscribe(e)}getSubject(){const e=this._subject;return(!e||e.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:e}=this;this._subject=this._connection=null,e?.unsubscribe()}connect(){let e=this._connection;if(!e){e=this._connection=new Ce;const a=this.getSubject();e.add(this.source.subscribe(at(a,void 0,()=>{this._teardown(),a.complete()},u=>{this._teardown(),a.error(u)},()=>this._teardown()))),e.closed&&(this._connection=null,e=Ce.EMPTY)}return e}refCount(){return xz()(this)}}function N_(t){return Re((e,a)=>{let u=!1;e.subscribe(at(a,i=>{u=!0,a.next(i)},()=>{u||a.next(t),a.complete()}))})}function vV(t=cre){return Re((e,a)=>{let u=!1;e.subscribe(at(a,i=>{u=!0,a.next(i)},()=>u?a.complete():a.error(t())))})}function cre(){return new Zx}function m3(t,e){const a=arguments.length>=2;return u=>u.pipe(t?w0((i,r)=>t(i,r,u)):zi,Ls(1),a?N_(e):vV(()=>new Zx))}function p3(t){return Re((e,a)=>{let r,u=null,i=!1;u=e.subscribe(at(a,void 0,void 0,o=>{r=qr(t(o,p3(t)(e))),u?(u.unsubscribe(),u=null,r.subscribe(a)):i=!0})),i&&(u.unsubscribe(),u=null,r.subscribe(a))})}function mre(t,e){return Re(function hre(t,e,a,u,i){return(r,o)=>{let d=a,h=e,m=0;r.subscribe(at(o,E=>{const v=m++;h=d?t(h,E,v):(d=!0,E),u&&o.next(h)},i&&(()=>{d&&o.next(h),o.complete()})))}}(t,e,arguments.length>=2,!0))}function Dz(t){return t<=0?()=>Ol:Re((e,a)=>{let u=[];e.subscribe(at(a,i=>{u.push(i),t{for(const i of u)a.next(i);a.complete()},void 0,()=>{u=null}))})}const Va="primary",$x=Symbol("RouteTitle");class gre{constructor(e){this.params=e||{}}has(e){return Object.prototype.hasOwnProperty.call(this.params,e)}get(e){if(this.has(e)){const a=this.params[e];return Array.isArray(a)?a[0]:a}return null}getAll(e){if(this.has(e)){const a=this.params[e];return Array.isArray(a)?a:[a]}return[]}get keys(){return Object.keys(this.params)}}function iv(t){return new gre(t)}function vre(t,e,a){const u=a.path.split("/");if(u.length>t.length||"full"===a.pathMatch&&(e.hasChildren()||u.lengthu[r]===i)}return t===e}function kV(t){return t.length>0?t[t.length-1]:null}function wh(t){return Ms(t)?t:Zk(t)?Ui(Promise.resolve(t)):Ue(t)}const kre={exact:function fV(t,e,a){if(!E3(t.segments,e.segments)||!I_(t.segments,e.segments,a)||t.numberOfChildren!==e.numberOfChildren)return!1;for(const u in e.children)if(!t.children[u]||!fV(t.children[u],e.children[u],a))return!1;return!0},subset:CV},xV={exact:function xre(t,e){return Ts(t,e)},subset:function Dre(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every(a=>bV(t[a],e[a]))},ignored:()=>!0};function DV(t,e,a){return kre[a.paths](t.root,e.root,a.matrixParams)&&xV[a.queryParams](t.queryParams,e.queryParams)&&!("exact"===a.fragment&&t.fragment!==e.fragment)}function CV(t,e,a){return yV(t,e,e.segments,a)}function yV(t,e,a,u){if(t.segments.length>a.length){const i=t.segments.slice(0,a.length);return!(!E3(i,a)||e.hasChildren()||!I_(i,a,u))}if(t.segments.length===a.length){if(!E3(t.segments,a)||!I_(t.segments,a,u))return!1;for(const i in e.children)if(!t.children[i]||!CV(t.children[i],e.children[i],u))return!1;return!0}{const i=a.slice(0,t.segments.length),r=a.slice(t.segments.length);return!!(E3(t.segments,i)&&I_(t.segments,i,u)&&t.children[Va])&&yV(t.children[Va],e,r,u)}}function I_(t,e,a){return e.every((u,i)=>xV[a](t[i].parameters,u.parameters))}class nv{constructor(e=new Xt([],{}),a={},u=null){this.root=e,this.queryParams=a,this.fragment=u}get queryParamMap(){return this._queryParamMap??=iv(this.queryParams),this._queryParamMap}toString(){return yre.serialize(this)}}class Xt{constructor(e,a){this.segments=e,this.children=a,this.parent=null,Object.values(a).forEach(u=>u.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return H_(this)}}class qx{constructor(e,a){this.path=e,this.parameters=a}get parameterMap(){return this._parameterMap??=iv(this.parameters),this._parameterMap}toString(){return AV(this)}}function E3(t,e){return t.length===e.length&&t.every((a,u)=>a.path===e[u].path)}class sc{static#e=this.\u0275fac=function(a){return new(a||sc)};static#a=this.\u0275prov=he({token:sc,factory:()=>new R_,providedIn:"root"})}class R_{parse(e){const a=new Pre(e);return new nv(a.parseRootSegment(),a.parseQueryParams(),a.parseFragment())}serialize(e){const a=`/${Yx(e.root,!0)}`,u=function Are(t){const e=Object.entries(t).map(([a,u])=>Array.isArray(u)?u.map(i=>`${V_(a)}=${V_(i)}`).join("&"):`${V_(a)}=${V_(u)}`).filter(a=>a);return e.length?`?${e.join("&")}`:""}(e.queryParams),i="string"==typeof e.fragment?`#${function _re(t){return encodeURI(t)}(e.fragment)}`:"";return`${a}${u}${i}`}}const yre=new R_;function H_(t){return t.segments.map(e=>AV(e)).join("/")}function Yx(t,e){if(!t.hasChildren())return H_(t);if(e){const a=t.children[Va]?Yx(t.children[Va],!1):"",u=[];return Object.entries(t.children).forEach(([i,r])=>{i!==Va&&u.push(`${i}:${Yx(r,!1)}`)}),u.length>0?`${a}(${u.join("//")})`:a}{const a=function Cre(t,e){let a=[];return Object.entries(t.children).forEach(([u,i])=>{u===Va&&(a=a.concat(e(i,u)))}),Object.entries(t.children).forEach(([u,i])=>{u!==Va&&(a=a.concat(e(i,u)))}),a}(t,(u,i)=>i===Va?[Yx(t.children[Va],!1)]:[`${i}:${Yx(u,!1)}`]);return 1===Object.keys(t.children).length&&null!=t.children[Va]?`${H_(t)}/${a[0]}`:`${H_(t)}/(${a.join("//")})`}}function _V(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function V_(t){return _V(t).replace(/%3B/gi,";")}function Cz(t){return _V(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function j_(t){return decodeURIComponent(t)}function FV(t){return j_(t.replace(/\+/g,"%20"))}function AV(t){return`${Cz(t.path)}${function Fre(t){return Object.entries(t).map(([e,a])=>`;${Cz(e)}=${Cz(a)}`).join("")}(t.parameters)}`}const wre=/^[^\/()?;#]+/;function yz(t){const e=t.match(wre);return e?e[0]:""}const Bre=/^[^\/()?;=#]+/;const zre=/^[^=?&#]+/;const Lre=/^[^&#]+/;class Pre{constructor(e){this.url=e,this.remaining=e}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Xt([],{}):new Xt([],this.parseChildren())}parseQueryParams(){const e={};if(this.consumeOptional("?"))do{this.parseQueryParam(e)}while(this.consumeOptional("&"));return e}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let a={};this.peekStartsWith("/(")&&(this.capture("/"),a=this.parseParens(!0));let u={};return this.peekStartsWith("(")&&(u=this.parseParens(!1)),(e.length>0||Object.keys(a).length>0)&&(u[Va]=new Xt(e,a)),u}parseSegment(){const e=yz(this.remaining);if(""===e&&this.peekStartsWith(";"))throw new J(4009,!1);return this.capture(e),new qx(j_(e),this.parseMatrixParams())}parseMatrixParams(){const e={};for(;this.consumeOptional(";");)this.parseParam(e);return e}parseParam(e){const a=function Sre(t){const e=t.match(Bre);return e?e[0]:""}(this.remaining);if(!a)return;this.capture(a);let u="";if(this.consumeOptional("=")){const i=yz(this.remaining);i&&(u=i,this.capture(u))}e[j_(a)]=j_(u)}parseQueryParam(e){const a=function Mre(t){const e=t.match(zre);return e?e[0]:""}(this.remaining);if(!a)return;this.capture(a);let u="";if(this.consumeOptional("=")){const o=function Tre(t){const e=t.match(Lre);return e?e[0]:""}(this.remaining);o&&(u=o,this.capture(u))}const i=FV(a),r=FV(u);if(e.hasOwnProperty(i)){let o=e[i];Array.isArray(o)||(o=[o],e[i]=o),o.push(r)}else e[i]=r}parseParens(e){const a={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const u=yz(this.remaining),i=this.remaining[u.length];if("/"!==i&&")"!==i&&";"!==i)throw new J(4010,!1);let r;u.indexOf(":")>-1?(r=u.slice(0,u.indexOf(":")),this.capture(r),this.capture(":")):e&&(r=Va);const o=this.parseChildren();a[r]=1===Object.keys(o).length?o[Va]:new Xt([],o),this.consumeOptional("//")}return a}peekStartsWith(e){return this.remaining.startsWith(e)}consumeOptional(e){return!!this.peekStartsWith(e)&&(this.remaining=this.remaining.substring(e.length),!0)}capture(e){if(!this.consumeOptional(e))throw new J(4011,!1)}}function wV(t){return t.segments.length>0?new Xt([],{[Va]:t}):t}function BV(t){const e={};for(const[u,i]of Object.entries(t.children)){const r=BV(i);if(u===Va&&0===r.segments.length&&r.hasChildren())for(const[o,d]of Object.entries(r.children))e[o]=d;else(r.segments.length>0||r.hasChildren())&&(e[u]=r)}return function Nre(t){if(1===t.numberOfChildren&&t.children[Va]){const e=t.children[Va];return new Xt(t.segments.concat(e.segments),e.children)}return t}(new Xt(t.segments,e))}function Qx(t){return t instanceof nv}function SV(t){let e;const u=function a(r){const o={};for(const h of r.children){const m=a(h);o[h.outlet]=m}const d=new Xt(r.url,o);return r===t&&(e=d),d}(t.root),i=wV(u);return e??i}function zV(t,e,a,u){let i=t;for(;i.parent;)i=i.parent;if(0===e.length)return _z(i,i,i,a,u);const r=function Rre(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new LV(!0,0,t);let e=0,a=!1;const u=t.reduce((i,r,o)=>{if("object"==typeof r&&null!=r){if(r.outlets){const d={};return Object.entries(r.outlets).forEach(([h,m])=>{d[h]="string"==typeof m?m.split("/"):m}),[...i,{outlets:d}]}if(r.segmentPath)return[...i,r.segmentPath]}return"string"!=typeof r?[...i,r]:0===o?(r.split("/").forEach((d,h)=>{0==h&&"."===d||(0==h&&""===d?a=!0:".."===d?e++:""!=d&&i.push(d))}),i):[...i,r]},[]);return new LV(a,e,u)}(e);if(r.toRoot())return _z(i,i,new Xt([],{}),a,u);const o=function Hre(t,e,a){if(t.isAbsolute)return new G_(e,!0,0);if(!a)return new G_(e,!1,NaN);if(null===a.parent)return new G_(a,!0,0);const u=O_(t.commands[0])?0:1,i=a.segments.length-1+u;return function Vre(t,e,a){let u=t,i=e,r=a;for(;r>i;){if(r-=i,u=u.parent,!u)throw new J(4005,!1);i=u.segments.length}return new G_(u,!1,i-r)}(a,i,t.numberOfDoubleDots)}(r,i,t),d=o.processChildren?e2(o.segmentGroup,o.index,r.commands):TV(o.segmentGroup,o.index,r.commands);return _z(i,o.segmentGroup,d,a,u)}function O_(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function Xx(t){return"object"==typeof t&&null!=t&&t.outlets}function _z(t,e,a,u,i){let o,r={};u&&Object.entries(u).forEach(([h,m])=>{r[h]=Array.isArray(m)?m.map(E=>`${E}`):`${m}`}),o=t===e?a:MV(t,e,a);const d=wV(BV(o));return new nv(d,r,i)}function MV(t,e,a){const u={};return Object.entries(t.children).forEach(([i,r])=>{u[i]=r===e?a:MV(r,e,a)}),new Xt(t.segments,u)}class LV{constructor(e,a,u){if(this.isAbsolute=e,this.numberOfDoubleDots=a,this.commands=u,e&&u.length>0&&O_(u[0]))throw new J(4003,!1);const i=u.find(Xx);if(i&&i!==kV(u))throw new J(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class G_{constructor(e,a,u){this.segmentGroup=e,this.processChildren=a,this.index=u}}function TV(t,e,a){if(t??=new Xt([],{}),0===t.segments.length&&t.hasChildren())return e2(t,e,a);const u=function Ore(t,e,a){let u=0,i=e;const r={match:!1,pathIndex:0,commandIndex:0};for(;i=a.length)return r;const o=t.segments[i],d=a[u];if(Xx(d))break;const h=`${d}`,m=u0&&void 0===h)break;if(h&&m&&"object"==typeof m&&void 0===m.outlets){if(!NV(h,m,o))return r;u+=2}else{if(!NV(h,{},o))return r;u++}i++}return{match:!0,pathIndex:i,commandIndex:u}}(t,e,a),i=a.slice(u.commandIndex);if(u.match&&u.pathIndexr!==Va)&&t.children[Va]&&1===t.numberOfChildren&&0===t.children[Va].segments.length){const r=e2(t.children[Va],e,a);return new Xt(t.segments,r.children)}return Object.entries(u).forEach(([r,o])=>{"string"==typeof o&&(o=[o]),null!==o&&(i[r]=TV(t.children[r],e,o))}),Object.entries(t.children).forEach(([r,o])=>{void 0===u[r]&&(i[r]=o)}),new Xt(t.segments,i)}}function Fz(t,e,a){const u=t.segments.slice(0,e);let i=0;for(;i{"string"==typeof u&&(u=[u]),null!==u&&(e[a]=Fz(new Xt([],{}),0,u))}),e}function PV(t){const e={};return Object.entries(t).forEach(([a,u])=>e[a]=`${u}`),e}function NV(t,e,a){return t==a.path&&Ts(e,a.parameters)}const a2="imperative";var dt,Ao,t2;!function(t){t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped"}(dt||(dt={}));class Ps{constructor(e,a){this.id=e,this.url=a}}class K_ extends Ps{constructor(e,a,u="imperative",i=null){super(e,a),this.type=dt.NavigationStart,this.navigationTrigger=u,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class Ns extends Ps{constructor(e,a,u){super(e,a),this.urlAfterRedirects=u,this.type=dt.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}!function(t){t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected"}(Ao||(Ao={})),function(t){t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy"}(t2||(t2={}));class g3 extends Ps{constructor(e,a,u,i){super(e,a),this.reason=u,this.code=i,this.type=dt.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class rv extends Ps{constructor(e,a,u,i){super(e,a),this.reason=u,this.code=i,this.type=dt.NavigationSkipped}}class Az extends Ps{constructor(e,a,u,i){super(e,a),this.error=u,this.target=i,this.type=dt.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class IV extends Ps{constructor(e,a,u,i){super(e,a),this.urlAfterRedirects=u,this.state=i,this.type=dt.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Kre extends Ps{constructor(e,a,u,i){super(e,a),this.urlAfterRedirects=u,this.state=i,this.type=dt.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Wre extends Ps{constructor(e,a,u,i,r){super(e,a),this.urlAfterRedirects=u,this.state=i,this.shouldActivate=r,this.type=dt.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class Ure extends Ps{constructor(e,a,u,i){super(e,a),this.urlAfterRedirects=u,this.state=i,this.type=dt.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Jre extends Ps{constructor(e,a,u,i){super(e,a),this.urlAfterRedirects=u,this.state=i,this.type=dt.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Zre{constructor(e){this.route=e,this.type=dt.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class $re{constructor(e){this.route=e,this.type=dt.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class qre{constructor(e){this.snapshot=e,this.type=dt.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Yre{constructor(e){this.snapshot=e,this.type=dt.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Qre{constructor(e){this.snapshot=e,this.type=dt.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Xre{constructor(e){this.snapshot=e,this.type=dt.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class RV{constructor(e,a,u){this.routerEvent=e,this.position=a,this.anchor=u,this.type=dt.Scroll}toString(){const e=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${e}')`}}class wz{}class W_{constructor(e,a){this.url=e,this.navigationBehaviorOptions=a}}class eoe{constructor(e){this.injector=e,this.outlet=null,this.route=null,this.children=new dc(this.injector),this.attachRef=null}}class dc{constructor(e){this.parentInjector=e,this.contexts=new Map}onChildOutletCreated(e,a){const u=this.getOrCreateContext(e);u.outlet=a,this.contexts.set(e,u)}onChildOutletDestroyed(e){const a=this.getContext(e);a&&(a.outlet=null,a.attachRef=null)}onOutletDeactivated(){const e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let a=this.getContext(e);return a||(a=new eoe(this.parentInjector),this.contexts.set(e,a)),a}getContext(e){return this.contexts.get(e)||null}static#e=this.\u0275fac=function(a){return new(a||dc)(fe(Pi))};static#a=this.\u0275prov=he({token:dc,factory:dc.\u0275fac,providedIn:"root"})}class HV{constructor(e){this._root=e}get root(){return this._root.value}parent(e){const a=this.pathFromRoot(e);return a.length>1?a[a.length-2]:null}children(e){const a=Bz(e,this._root);return a?a.children.map(u=>u.value):[]}firstChild(e){const a=Bz(e,this._root);return a&&a.children.length>0?a.children[0].value:null}siblings(e){const a=Sz(e,this._root);return a.length<2?[]:a[a.length-2].children.map(i=>i.value).filter(i=>i!==e)}pathFromRoot(e){return Sz(e,this._root).map(a=>a.value)}}function Bz(t,e){if(t===e.value)return e;for(const a of e.children){const u=Bz(t,a);if(u)return u}return null}function Sz(t,e){if(t===e.value)return[e];for(const a of e.children){const u=Sz(t,a);if(u.length)return u.unshift(e),u}return[]}class S0{constructor(e,a){this.value=e,this.children=a}toString(){return`TreeNode(${this.value})`}}function ov(t){const e={};return t&&t.children.forEach(a=>e[a.value.outlet]=a),e}class VV extends HV{constructor(e,a){super(e),this.snapshot=a,zz(this,e)}toString(){return this.snapshot.toString()}}function jV(t){const e=function aoe(t){const e={},a={},u={},i="",r=new J_([],e,u,i,a,Va,t,null,{});return new OV("",new S0(r,[]))}(t),a=new Ua([new qx("",{})]),u=new Ua({}),i=new Ua({}),r=new Ua({}),o=new Ua(""),d=new lv(a,u,r,o,i,Va,t,e.root);return d.snapshot=e.root,new VV(new S0(d,[]),e)}class lv{constructor(e,a,u,i,r,o,d,h){this.urlSubject=e,this.paramsSubject=a,this.queryParamsSubject=u,this.fragmentSubject=i,this.dataSubject=r,this.outlet=o,this.component=d,this._futureSnapshot=h,this.title=this.dataSubject?.pipe(Qe(m=>m[$x]))??Ue(void 0),this.url=e,this.params=a,this.queryParams=u,this.fragment=i,this.data=r}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(Qe(e=>iv(e))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(Qe(e=>iv(e))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function U_(t,e,a="emptyOnly"){let u;const{routeConfig:i}=t;return u=null===e||"always"!==a&&""!==i?.path&&(e.component||e.routeConfig?.loadComponent)?{params:{...t.params},data:{...t.data},resolve:{...t.data,...t._resolvedData??{}}}:{params:{...e.params,...t.params},data:{...e.data,...t.data},resolve:{...t.data,...e.data,...i?.data,...t._resolvedData}},i&&KV(i)&&(u.resolve[$x]=i.title),u}class J_{get title(){return this.data?.[$x]}constructor(e,a,u,i,r,o,d,h,m){this.url=e,this.params=a,this.queryParams=u,this.fragment=i,this.data=r,this.outlet=o,this.component=d,this.routeConfig=h,this._resolve=m}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=iv(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=iv(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(u=>u.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class OV extends HV{constructor(e,a){super(a),this.url=e,zz(this,a)}toString(){return GV(this._root)}}function zz(t,e){e.value._routerState=t,e.children.forEach(a=>zz(t,a))}function GV(t){const e=t.children.length>0?` { ${t.children.map(GV).join(", ")} } `:"";return`${t.value}${e}`}function Mz(t){if(t.snapshot){const e=t.snapshot,a=t._futureSnapshot;t.snapshot=a,Ts(e.queryParams,a.queryParams)||t.queryParamsSubject.next(a.queryParams),e.fragment!==a.fragment&&t.fragmentSubject.next(a.fragment),Ts(e.params,a.params)||t.paramsSubject.next(a.params),function bre(t,e){if(t.length!==e.length)return!1;for(let a=0;aTs(a.parameters,e[u].parameters))}(t.url,e.url),u=!t.parent!=!e.parent;return a&&!u&&(!t.parent||Lz(t.parent,e.parent))}function KV(t){return"string"==typeof t.title||null===t.title}class v3{constructor(){this.activated=null,this._activatedRoute=null,this.name=Va,this.activateEvents=new aa,this.deactivateEvents=new aa,this.attachEvents=new aa,this.detachEvents=new aa,this.parentContexts=U(dc),this.location=U(mr),this.changeDetector=U(dn),this.inputBinder=U(Z_,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(e){if(e.name){const{firstChange:a,previousValue:u}=e.name;if(a)return;this.isTrackedInParentContexts(u)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(u)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new J(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new J(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new J(4012,!1);this.location.detach();const e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,a){this.activated=e,this._activatedRoute=a,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){const e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,a){if(this.isActivated)throw new J(4013,!1);this._activatedRoute=e;const u=this.location,r=e.snapshot.component,o=this.parentContexts.getOrCreateContext(this.name).children,d=new Tz(e,o,u.injector);this.activated=u.createComponent(r,{index:u.length,injector:d,environmentInjector:a}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static#e=this.\u0275fac=function(a){return new(a||v3)};static#a=this.\u0275dir=Ae({type:v3,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[tn]})}class Tz{__ngOutletInjector(e){return new Tz(this.route,this.childContexts,e)}constructor(e,a,u){this.route=e,this.childContexts=a,this.parent=u}get(e,a){return e===lv?this.route:e===dc?this.childContexts:this.parent.get(e,a)}}const Z_=new V("");class sv{constructor(){this.outletDataSubscriptions=new Map}bindActivatedRouteToOutletComponent(e){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e)}subscribeToRouteData(e){const{activatedRoute:a}=e,u=kz([a.queryParams,a.params,a.data]).pipe(Fo(([i,r,o],d)=>(o={...i,...r,...o},0===d?Ue(o):Promise.resolve(o)))).subscribe(i=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==a||null===a.component)return void this.unsubscribeFromRouteData(e);const r=function PX(t){const e=za(t);if(!e)return null;const a=new p4(e);return{get selector(){return a.selector},get type(){return a.componentType},get inputs(){return a.inputs},get outputs(){return a.outputs},get ngContentSelectors(){return a.ngContentSelectors},get isStandalone(){return e.standalone},get isSignal(){return e.signals}}}(a.component);if(r)for(const{templateName:o}of r.inputs)e.activatedComponentRef.setInput(o,i[o]);else this.unsubscribeFromRouteData(e)});this.outletDataSubscriptions.set(e,u)}static#e=this.\u0275fac=function(a){return new(a||sv)};static#a=this.\u0275prov=he({token:sv,factory:sv.\u0275fac})}function u2(t,e,a){if(a&&t.shouldReuseRoute(e.value,a.value.snapshot)){const u=a.value;u._futureSnapshot=e.value;const i=function uoe(t,e,a){return e.children.map(u=>{for(const i of a.children)if(t.shouldReuseRoute(u.value,i.value.snapshot))return u2(t,u,i);return u2(t,u)})}(t,e,a);return new S0(u,i)}{if(t.shouldAttach(e.value)){const r=t.retrieve(e.value);if(null!==r){const o=r.route;return o.value._futureSnapshot=e.value,o.children=e.children.map(d=>u2(t,d)),o}}const u=function ioe(t){return new lv(new Ua(t.url),new Ua(t.params),new Ua(t.queryParams),new Ua(t.fragment),new Ua(t.data),t.outlet,t.component,t)}(e.value),i=e.children.map(r=>u2(t,r));return new S0(u,i)}}class Pz{constructor(e,a){this.redirectTo=e,this.navigationBehaviorOptions=a}}const WV="ngNavigationCancelingError";function $_(t,e){const{redirectTo:a,navigationBehaviorOptions:u}=Qx(e)?{redirectTo:e,navigationBehaviorOptions:void 0}:e,i=UV(!1,Ao.Redirect);return i.url=a,i.navigationBehaviorOptions=u,i}function UV(t,e){const a=new Error(`NavigationCancelingError: ${t||""}`);return a[WV]=!0,a.cancellationCode=e,a}function JV(t){return!!t&&t[WV]}class b3{static#e=this.\u0275fac=function(a){return new(a||b3)};static#a=this.\u0275cmp=cd({type:b3,selectors:[["ng-component"]],standalone:!0,features:[nN],decls:1,vars:0,template:function(a,u){1&a&&U1(0,"router-outlet")},dependencies:[v3],encapsulation:2})}function Nz(t){const e=t.children&&t.children.map(Nz),a=e?{...t,children:e}:{...t};return!a.component&&!a.loadComponent&&(e||a.loadChildren)&&a.outlet&&a.outlet!==Va&&(a.component=b3),a}function z0(t){return t.outlet||Va}function i2(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let e=t.parent;e;e=e.parent){const a=e.routeConfig;if(a?._loadedInjector)return a._loadedInjector;if(a?._injector)return a._injector}return null}class hoe{constructor(e,a,u,i,r){this.routeReuseStrategy=e,this.futureState=a,this.currState=u,this.forwardEvent=i,this.inputBindingEnabled=r}activate(e){const a=this.futureState._root,u=this.currState?this.currState._root:null;this.deactivateChildRoutes(a,u,e),Mz(this.futureState.root),this.activateChildRoutes(a,u,e)}deactivateChildRoutes(e,a,u){const i=ov(a);e.children.forEach(r=>{const o=r.value.outlet;this.deactivateRoutes(r,i[o],u),delete i[o]}),Object.values(i).forEach(r=>{this.deactivateRouteAndItsChildren(r,u)})}deactivateRoutes(e,a,u){const i=e.value,r=a?a.value:null;if(i===r)if(i.component){const o=u.getContext(i.outlet);o&&this.deactivateChildRoutes(e,a,o.children)}else this.deactivateChildRoutes(e,a,u);else r&&this.deactivateRouteAndItsChildren(a,u)}deactivateRouteAndItsChildren(e,a){e.value.component&&this.routeReuseStrategy.shouldDetach(e.value.snapshot)?this.detachAndStoreRouteSubtree(e,a):this.deactivateRouteAndOutlet(e,a)}detachAndStoreRouteSubtree(e,a){const u=a.getContext(e.value.outlet),i=u&&e.value.component?u.children:a,r=ov(e);for(const o of Object.values(r))this.deactivateRouteAndItsChildren(o,i);if(u&&u.outlet){const o=u.outlet.detach(),d=u.children.onOutletDeactivated();this.routeReuseStrategy.store(e.value.snapshot,{componentRef:o,route:e,contexts:d})}}deactivateRouteAndOutlet(e,a){const u=a.getContext(e.value.outlet),i=u&&e.value.component?u.children:a,r=ov(e);for(const o of Object.values(r))this.deactivateRouteAndItsChildren(o,i);u&&(u.outlet&&(u.outlet.deactivate(),u.children.onOutletDeactivated()),u.attachRef=null,u.route=null)}activateChildRoutes(e,a,u){const i=ov(a);e.children.forEach(r=>{this.activateRoutes(r,i[r.value.outlet],u),this.forwardEvent(new Xre(r.value.snapshot))}),e.children.length&&this.forwardEvent(new Yre(e.value.snapshot))}activateRoutes(e,a,u){const i=e.value,r=a?a.value:null;if(Mz(i),i===r)if(i.component){const o=u.getOrCreateContext(i.outlet);this.activateChildRoutes(e,a,o.children)}else this.activateChildRoutes(e,a,u);else if(i.component){const o=u.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){const d=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),o.children.onOutletReAttached(d.contexts),o.attachRef=d.componentRef,o.route=d.route.value,o.outlet&&o.outlet.attach(d.componentRef,d.route.value),Mz(d.route.value),this.activateChildRoutes(e,null,o.children)}else{const d=i2(i.snapshot);o.attachRef=null,o.route=i,o.injector=d??o.injector,o.outlet&&o.outlet.activateWith(i,o.injector),this.activateChildRoutes(e,null,o.children)}}else this.activateChildRoutes(e,null,u)}}class ZV{constructor(e){this.path=e,this.route=this.path[this.path.length-1]}}class q_{constructor(e,a){this.component=e,this.route=a}}function moe(t,e,a){const u=t._root;return n2(u,e?e._root:null,a,[u.value])}function dv(t,e){const a=Symbol(),u=e.get(t,a);return u===a?"function"!=typeof t||function No(t){return null!==id(t)}(t)?e.get(t):t:u}function n2(t,e,a,u,i={canDeactivateChecks:[],canActivateChecks:[]}){const r=ov(e);return t.children.forEach(o=>{(function Eoe(t,e,a,u,i={canDeactivateChecks:[],canActivateChecks:[]}){const r=t.value,o=e?e.value:null,d=a?a.getContext(t.value.outlet):null;if(o&&r.routeConfig===o.routeConfig){const h=function goe(t,e,a){if("function"==typeof a)return a(t,e);switch(a){case"pathParamsChange":return!E3(t.url,e.url);case"pathParamsOrQueryParamsChange":return!E3(t.url,e.url)||!Ts(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Lz(t,e)||!Ts(t.queryParams,e.queryParams);default:return!Lz(t,e)}}(o,r,r.routeConfig.runGuardsAndResolvers);h?i.canActivateChecks.push(new ZV(u)):(r.data=o.data,r._resolvedData=o._resolvedData),r.component?n2(t,e,d?d.children:null,u,i):n2(t,e,a,u,i),h&&d&&d.outlet&&d.outlet.isActivated&&i.canDeactivateChecks.push(new q_(d.outlet.component,o))}else o&&r2(e,d,i),i.canActivateChecks.push(new ZV(u)),r.component?n2(t,null,d?d.children:null,u,i):n2(t,null,a,u,i);return i})(o,r[o.value.outlet],a,u.concat([o.value]),i),delete r[o.value.outlet]}),Object.entries(r).forEach(([o,d])=>r2(d,a.getContext(o),i)),i}function r2(t,e,a){const u=ov(t),i=t.value;Object.entries(u).forEach(([r,o])=>{i.component?r2(o,e?e.children.getContext(r):null,a):r2(o,e,a)}),i.component&&e&&e.outlet&&e.outlet.isActivated?a.canDeactivateChecks.push(new q_(e.outlet.component,i)):a.canDeactivateChecks.push(new q_(null,i))}function o2(t){return"function"==typeof t}function $V(t){return t instanceof Zx||"EmptyError"===t?.name}const Y_=Symbol("INITIAL_VALUE");function cv(){return Fo(t=>kz(t.map(e=>e.pipe(Ls(1),uV(Y_)))).pipe(Qe(e=>{for(const a of e)if(!0!==a){if(a===Y_)return Y_;if(!1===a||Coe(a))return a}return!0}),w0(e=>e!==Y_),Ls(1)))}function Coe(t){return Qx(t)||t instanceof Pz}function yoe(t,e){return Wn(a=>{const{targetSnapshot:u,currentSnapshot:i,guards:{canActivateChecks:r,canDeactivateChecks:o}}=a;return 0===o.length&&0===r.length?Ue({...a,guardsResult:!0}):function _oe(t,e,a,u){return Ui(t).pipe(Wn(i=>function zoe(t,e,a,u,i){const r=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!r||0===r.length)return Ue(!0);const o=r.map(d=>{const h=i2(e)??i,m=dv(d,h);return wh(function Doe(t){return t&&o2(t.canDeactivate)}(m)?m.canDeactivate(t,e,a,u):ir(h,()=>m(t,e,a,u))).pipe(m3())});return Ue(o).pipe(cv())}(i.component,i.route,a,e,u)),m3(i=>!0!==i,!0))}(o,u,i,t).pipe(Wn(d=>d&&function voe(t){return"boolean"==typeof t}(d)?function Foe(t,e,a,u){return Ui(e).pipe(r3(i=>Tx(function woe(t,e){return null!==t&&e&&e(new qre(t)),Ue(!0)}(i.route.parent,u),function Aoe(t,e){return null!==t&&e&&e(new Qre(t)),Ue(!0)}(i.route,u),function Soe(t,e,a){const u=e[e.length-1],r=e.slice(0,e.length-1).reverse().map(o=>function poe(t){const e=t.routeConfig?t.routeConfig.canActivateChild:null;return e&&0!==e.length?{node:t,guards:e}:null}(o)).filter(o=>null!==o).map(o=>Kx(()=>Ue(o.guards.map(h=>{const m=i2(o.node)??a,E=dv(h,m);return wh(function xoe(t){return t&&o2(t.canActivateChild)}(E)?E.canActivateChild(u,t):ir(m,()=>E(u,t))).pipe(m3())})).pipe(cv())));return Ue(r).pipe(cv())}(t,i.path,a),function Boe(t,e,a){const u=e.routeConfig?e.routeConfig.canActivate:null;if(!u||0===u.length)return Ue(!0);const i=u.map(r=>Kx(()=>{const o=i2(e)??a,d=dv(r,o);return wh(function koe(t){return t&&o2(t.canActivate)}(d)?d.canActivate(e,t):ir(o,()=>d(e,t))).pipe(m3())}));return Ue(i).pipe(cv())}(t,i.route,a))),m3(i=>!0!==i,!0))}(u,r,t,e):Ue(d)),Qe(d=>({...a,guardsResult:d})))})}function Moe(t,e,a,u){const i=e.canLoad;if(void 0===i||0===i.length)return Ue(!0);return Ue(i.map(o=>{const d=dv(o,t);return wh(function boe(t){return t&&o2(t.canLoad)}(d)?d.canLoad(e,a):ir(t,()=>d(e,a)))})).pipe(cv(),qV(u))}function qV(t){return function Yl(...t){return Ql(t)}(vr(e=>{if("boolean"!=typeof e)throw $_(0,e)}),Qe(e=>!0===e))}function Loe(t,e,a,u){const i=e.canMatch;if(!i||0===i.length)return Ue(!0);return Ue(i.map(o=>{const d=dv(o,t);return wh(function foe(t){return t&&o2(t.canMatch)}(d)?d.canMatch(e,a):ir(t,()=>d(e,a)))})).pipe(cv(),qV())}class Iz{constructor(e){this.segmentGroup=e||null}}class Q_ extends Error{constructor(e){super(),this.urlTree=e}}function hv(t){return P_(new Iz(t))}class Noe{constructor(e,a){this.urlSerializer=e,this.urlTree=a}lineralizeSegments(e,a){let u=[],i=a.root;for(;;){if(u=u.concat(i.segments),0===i.numberOfChildren)return Ue(u);if(i.numberOfChildren>1||!i.children[Va])return e.redirectTo,P_(new J(4e3,!1));i=i.children[Va]}}applyRedirectCommands(e,a,u,i,r){if("string"!=typeof a){const d=a,{queryParams:h,fragment:m,routeConfig:E,url:v,outlet:k,params:x,data:f,title:C}=i,A=ir(r,()=>d({params:x,data:f,queryParams:h,fragment:m,routeConfig:E,url:v,outlet:k,title:C}));if(A instanceof nv)throw new Q_(A);a=A}const o=this.applyRedirectCreateUrlTree(a,this.urlSerializer.parse(a),e,u);if("/"===a[0])throw new Q_(o);return o}applyRedirectCreateUrlTree(e,a,u,i){const r=this.createSegmentGroup(e,a.root,u,i);return new nv(r,this.createQueryParams(a.queryParams,this.urlTree.queryParams),a.fragment)}createQueryParams(e,a){const u={};return Object.entries(e).forEach(([i,r])=>{if("string"==typeof r&&":"===r[0]){const d=r.substring(1);u[i]=a[d]}else u[i]=r}),u}createSegmentGroup(e,a,u,i){const r=this.createSegments(e,a.segments,u,i);let o={};return Object.entries(a.children).forEach(([d,h])=>{o[d]=this.createSegmentGroup(e,h,u,i)}),new Xt(r,o)}createSegments(e,a,u,i){return a.map(r=>":"===r.path[0]?this.findPosParam(e,r,i):this.findOrReturn(r,u))}findPosParam(e,a,u){const i=u[a.path.substring(1)];if(!i)throw new J(4001,!1);return i}findOrReturn(e,a){let u=0;for(const i of a){if(i.path===e.path)return a.splice(u),i;u++}return e}}const Rz={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Ioe(t,e,a,u,i){const r=Hz(t,e,a);return r.matched?(u=function roe(t,e){return t.providers&&!t._injector&&(t._injector=HE(t.providers,e,`Route: ${t.path}`)),t._injector??e}(e,u),Loe(u,e,a).pipe(Qe(o=>!0===o?r:{...Rz}))):Ue(r)}function Hz(t,e,a){if("**"===e.path)return function Roe(t){return{matched:!0,parameters:t.length>0?kV(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}(a);if(""===e.path)return"full"===e.pathMatch&&(t.hasChildren()||a.length>0)?{...Rz}:{matched:!0,consumedSegments:[],remainingSegments:a,parameters:{},positionalParamSegments:{}};const i=(e.matcher||vre)(a,t,e);if(!i)return{...Rz};const r={};Object.entries(i.posParams??{}).forEach(([d,h])=>{r[d]=h.path});const o=i.consumed.length>0?{...r,...i.consumed[i.consumed.length-1].parameters}:r;return{matched:!0,consumedSegments:i.consumed,remainingSegments:a.slice(i.consumed.length),parameters:o,positionalParamSegments:i.posParams??{}}}function YV(t,e,a,u){return a.length>0&&function joe(t,e,a){return a.some(u=>X_(t,e,u)&&z0(u)!==Va)}(t,a,u)?{segmentGroup:new Xt(e,Voe(u,new Xt(a,t.children))),slicedSegments:[]}:0===a.length&&function Ooe(t,e,a){return a.some(u=>X_(t,e,u))}(t,a,u)?{segmentGroup:new Xt(t.segments,Hoe(t,a,u,t.children)),slicedSegments:a}:{segmentGroup:new Xt(t.segments,t.children),slicedSegments:a}}function Hoe(t,e,a,u){const i={};for(const r of a)if(X_(t,e,r)&&!u[z0(r)]){const o=new Xt([],{});i[z0(r)]=o}return{...u,...i}}function Voe(t,e){const a={};a[Va]=e;for(const u of t)if(""===u.path&&z0(u)!==Va){const i=new Xt([],{});a[z0(u)]=i}return a}function X_(t,e,a){return(!(t.hasChildren()||e.length>0)||"full"!==a.pathMatch)&&""===a.path}class Woe{}class Zoe{constructor(e,a,u,i,r,o,d){this.injector=e,this.configLoader=a,this.rootComponentType=u,this.config=i,this.urlTree=r,this.paramsInheritanceStrategy=o,this.urlSerializer=d,this.applyRedirects=new Noe(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(e){return new J(4002,`'${e.segmentGroup}'`)}recognize(){const e=YV(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(e).pipe(Qe(({children:a,rootSnapshot:u})=>{const i=new S0(u,a),r=new OV("",i),o=function Ire(t,e,a=null,u=null){return zV(SV(t),e,a,u)}(u,[],this.urlTree.queryParams,this.urlTree.fragment);return o.queryParams=this.urlTree.queryParams,r.url=this.urlSerializer.serialize(o),{state:r,tree:o}}))}match(e){const a=new J_([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,Object.freeze({}),Va,this.rootComponentType,null,{});return this.processSegmentGroup(this.injector,this.config,e,Va,a).pipe(Qe(u=>({children:u,rootSnapshot:a})),p3(u=>{if(u instanceof Q_)return this.urlTree=u.urlTree,this.match(u.urlTree.root);throw u instanceof Iz?this.noMatchError(u):u}))}processSegmentGroup(e,a,u,i,r){return 0===u.segments.length&&u.hasChildren()?this.processChildren(e,a,u,r):this.processSegment(e,a,u,u.segments,i,!0,r).pipe(Qe(o=>o instanceof S0?[o]:[]))}processChildren(e,a,u,i){const r=[];for(const o of Object.keys(u.children))"primary"===o?r.unshift(o):r.push(o);return Ui(r).pipe(r3(o=>{const d=u.children[o],h=function doe(t,e){const a=t.filter(u=>z0(u)===e);return a.push(...t.filter(u=>z0(u)!==e)),a}(a,o);return this.processSegmentGroup(e,h,d,o,i)}),mre((o,d)=>(o.push(...d),o)),N_(null),function pre(t,e){const a=arguments.length>=2;return u=>u.pipe(t?w0((i,r)=>t(i,r,u)):zi,Dz(1),a?N_(e):vV(()=>new Zx))}(),Wn(o=>{if(null===o)return hv(u);const d=QV(o);return function $oe(t){t.sort((e,a)=>e.value.outlet===Va?-1:a.value.outlet===Va?1:e.value.outlet.localeCompare(a.value.outlet))}(d),Ue(d)}))}processSegment(e,a,u,i,r,o,d){return Ui(a).pipe(r3(h=>this.processSegmentAgainstRoute(h._injector??e,a,h,u,i,r,o,d).pipe(p3(m=>{if(m instanceof Iz)return Ue(null);throw m}))),m3(h=>!!h),p3(h=>{if($V(h))return function Koe(t,e,a){return 0===e.length&&!t.children[a]}(u,i,r)?Ue(new Woe):hv(u);throw h}))}processSegmentAgainstRoute(e,a,u,i,r,o,d,h){return function Goe(t,e,a,u){return!!(z0(t)===u||u!==Va&&X_(e,a,t))&&Hz(e,t,a).matched}(u,i,r,o)?void 0===u.redirectTo?this.matchSegmentAgainstRoute(e,i,u,r,o,h):this.allowRedirects&&d?this.expandSegmentAgainstRouteUsingRedirect(e,i,a,u,r,o,h):hv(i):hv(i)}expandSegmentAgainstRouteUsingRedirect(e,a,u,i,r,o,d){const{matched:h,parameters:m,consumedSegments:E,positionalParamSegments:v,remainingSegments:k}=Hz(a,i,r);if(!h)return hv(a);"string"==typeof i.redirectTo&&"/"===i.redirectTo[0]&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>31&&(this.allowRedirects=!1));const x=new J_(r,m,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,XV(i),z0(i),i.component??i._loadedComponent??null,i,ej(i)),f=U_(x,d,this.paramsInheritanceStrategy);x.params=Object.freeze(f.params),x.data=Object.freeze(f.data);const C=this.applyRedirects.applyRedirectCommands(E,i.redirectTo,v,x,e);return this.applyRedirects.lineralizeSegments(i,C).pipe(Wn(A=>this.processSegment(e,u,a,A.concat(k),o,!1,d)))}matchSegmentAgainstRoute(e,a,u,i,r,o){const d=Ioe(a,u,i,e,this.urlSerializer);return"**"===u.path&&(a.children={}),d.pipe(Fo(h=>h.matched?(e=u._injector??e,this.getChildConfig(e,u,i).pipe(Fo(({routes:m})=>{const E=u._loadedInjector??e,{parameters:v,consumedSegments:k,remainingSegments:x}=h,f=new J_(k,v,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,XV(u),z0(u),u.component??u._loadedComponent??null,u,ej(u)),C=U_(f,o,this.paramsInheritanceStrategy);f.params=Object.freeze(C.params),f.data=Object.freeze(C.data);const{segmentGroup:A,slicedSegments:w}=YV(a,k,x,m);if(0===w.length&&A.hasChildren())return this.processChildren(E,m,A,f).pipe(Qe(L=>new S0(f,L)));if(0===m.length&&0===w.length)return Ue(new S0(f,[]));const z=z0(u)===r;return this.processSegment(E,m,A,w,z?Va:r,!0,f).pipe(Qe(L=>new S0(f,L instanceof S0?[L]:[])))}))):hv(a)))}getChildConfig(e,a,u){return a.children?Ue({routes:a.children,injector:e}):a.loadChildren?void 0!==a._loadedRoutes?Ue({routes:a._loadedRoutes,injector:a._loadedInjector}):Moe(e,a,u,this.urlSerializer).pipe(Wn(i=>i?this.configLoader.loadChildren(e,a).pipe(vr(r=>{a._loadedRoutes=r.routes,a._loadedInjector=r.injector})):function Poe(t){return P_(UV(!1,Ao.GuardRejected))}())):Ue({routes:[],injector:e})}}function qoe(t){const e=t.value.routeConfig;return e&&""===e.path}function QV(t){const e=[],a=new Set;for(const u of t){if(!qoe(u)){e.push(u);continue}const i=e.find(r=>u.value.routeConfig===r.value.routeConfig);void 0!==i?(i.children.push(...u.children),a.add(i)):e.push(u)}for(const u of a){const i=QV(u.children);e.push(new S0(u.value,i))}return e.filter(u=>!a.has(u))}function XV(t){return t.data||{}}function ej(t){return t.resolve||{}}function Yoe(t,e,a,u,i,r){return Wn(o=>function Uoe(t,e,a,u,i,r,o="emptyOnly"){return new Zoe(t,e,a,u,i,o,r).recognize()}(t,e,a,u,o.extractedUrl,i,r).pipe(Qe(({state:d,tree:h})=>({...o,targetSnapshot:d,urlAfterRedirects:h}))))}function Qoe(t,e){return Wn(a=>{const{targetSnapshot:u,guards:{canActivateChecks:i}}=a;if(!i.length)return Ue(a);const r=new Set(i.map(h=>h.route)),o=new Set;for(const h of r)if(!o.has(h))for(const m of aj(h))o.add(m);let d=0;return Ui(o).pipe(r3(h=>r.has(h)?function Xoe(t,e,a,u){const i=t.routeConfig,r=t._resolve;return void 0!==i?.title&&!KV(i)&&(r[$x]=i.title),function ele(t,e,a,u){const i=fz(t);if(0===i.length)return Ue({});const r={};return Ui(i).pipe(Wn(o=>function ale(t,e,a,u){const i=i2(e)??u,r=dv(t,i),o=r.resolve?r.resolve(e,a):ir(i,()=>r(e,a));return wh(o)}(t[o],e,a,u).pipe(m3(),vr(d=>{if(d instanceof Pz)throw $_(new R_,d);r[o]=d}))),Dz(1),function Ere(t){return Qe(()=>t)}(r),p3(o=>$V(o)?Ol:P_(o)))}(r,t,e,u).pipe(Qe(o=>(t._resolvedData=o,t.data=U_(t,t.parent,a).resolve,null)))}(h,u,t,e):(h.data=U_(h,h.parent,t).resolve,Ue(void 0))),vr(()=>d++),Dz(1),Wn(h=>d===o.size?Ue(a):Ol))})}function aj(t){const e=t.children.map(a=>aj(a)).flat();return[t,...e]}function Vz(t){return Fo(e=>{const a=t(e);return a?Ui(a).pipe(Qe(()=>e)):Ue(e)})}class l2{buildTitle(e){let a,u=e.root;for(;void 0!==u;)a=this.getResolvedTitleForRoute(u)??a,u=u.children.find(i=>i.outlet===Va);return a}getResolvedTitleForRoute(e){return e.data[$x]}static#e=this.\u0275fac=function(a){return new(a||l2)};static#a=this.\u0275prov=he({token:l2,factory:()=>U(s2),providedIn:"root"})}class s2 extends l2{constructor(e){super(),this.title=e}updateTitle(e){const a=this.buildTitle(e);void 0!==a&&this.title.setTitle(a)}static#e=this.\u0275fac=function(a){return new(a||s2)(fe(cx))};static#a=this.\u0275prov=he({token:s2,factory:s2.\u0275fac,providedIn:"root"})}const mv=new V("",{providedIn:"root",factory:()=>({})}),pv=new V("");class k3{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=U($d)}loadComponent(e){if(this.componentLoaders.get(e))return this.componentLoaders.get(e);if(e._loadedComponent)return Ue(e._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(e);const a=wh(e.loadComponent()).pipe(Qe(tj),vr(i=>{this.onLoadEndListener&&this.onLoadEndListener(e),e._loadedComponent=i}),Bx(()=>{this.componentLoaders.delete(e)})),u=new gV(a,()=>new Gt).pipe(xz());return this.componentLoaders.set(e,u),u}loadChildren(e,a){if(this.childrenLoaders.get(a))return this.childrenLoaders.get(a);if(a._loadedRoutes)return Ue({routes:a._loadedRoutes,injector:a._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(a);const i=function tle(t,e,a,u){return wh(t.loadChildren()).pipe(Qe(tj),Wn(i=>i instanceof Dk||Array.isArray(i)?Ue(i):Ui(e.compileModuleAsync(i))),Qe(i=>{u&&u(t);let r,o,d=!1;return Array.isArray(i)?(o=i,d=!0):(r=i.create(a).injector,o=r.get(pv,[],{optional:!0,self:!0}).flat()),{routes:o.map(Nz),injector:r}}))}(a,this.compiler,e,this.onLoadEndListener).pipe(Bx(()=>{this.childrenLoaders.delete(a)})),r=new gV(i,()=>new Gt).pipe(xz());return this.childrenLoaders.set(a,r),r}static#e=this.\u0275fac=function(a){return new(a||k3)};static#a=this.\u0275prov=he({token:k3,factory:k3.\u0275fac,providedIn:"root"})}function tj(t){return function ule(t){return t&&"object"==typeof t&&"default"in t}(t)?t.default:t}class Ev{static#e=this.\u0275fac=function(a){return new(a||Ev)};static#a=this.\u0275prov=he({token:Ev,factory:()=>U(d2),providedIn:"root"})}class d2{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,a){return e}static#e=this.\u0275fac=function(a){return new(a||d2)};static#a=this.\u0275prov=he({token:d2,factory:d2.\u0275fac,providedIn:"root"})}const uj=new V(""),ij=new V("");function ile(t,e,a){const u=t.get(ij),i=t.get(Ei);return t.get(ut).runOutsideAngular(()=>{if(!i.startViewTransition||u.skipNextTransition)return u.skipNextTransition=!1,new Promise(m=>setTimeout(m));let r;const o=new Promise(m=>{r=m}),d=i.startViewTransition(()=>(r(),function nle(t){return new Promise(e=>{tk(e,{injector:t})})}(t))),{onViewTransitionCreated:h}=u;return h&&ir(t,()=>h({transition:d,from:e,to:a})),o})}const nj=new V("");class Bh{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new Gt,this.transitionAbortSubject=new Gt,this.configLoader=U(k3),this.environmentInjector=U(Pi),this.urlSerializer=U(sc),this.rootContexts=U(dc),this.location=U(ec),this.inputBindingEnabled=null!==U(Z_,{optional:!0}),this.titleStrategy=U(l2),this.options=U(mv,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=U(Ev),this.createViewTransition=U(uj,{optional:!0}),this.navigationErrorHandler=U(nj,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>Ue(void 0),this.rootComponentType=null;this.configLoader.onLoadEndListener=u=>this.events.next(new $re(u)),this.configLoader.onLoadStartListener=u=>this.events.next(new Zre(u))}complete(){this.transitions?.complete()}handleNavigationRequest(e){const a=++this.navigationId;this.transitions?.next({...this.transitions.value,...e,id:a})}setupNavigations(e,a,u){return this.transitions=new Ua({id:0,currentUrlTree:a,currentRawUrl:a,extractedUrl:this.urlHandlingStrategy.extract(a),urlAfterRedirects:this.urlHandlingStrategy.extract(a),rawUrl:a,extras:{},resolve:()=>{},reject:()=>{},promise:Promise.resolve(!0),source:a2,restoredState:null,currentSnapshot:u.snapshot,targetSnapshot:null,currentRouterState:u,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(w0(i=>0!==i.id),Qe(i=>({...i,extractedUrl:this.urlHandlingStrategy.extract(i.rawUrl)})),Fo(i=>{let r=!1,o=!1;return Ue(i).pipe(Fo(d=>{if(this.navigationId>i.id)return this.cancelNavigationTransition(i,"",Ao.SupersededByNewNavigation),Ol;this.currentTransition=i,this.currentNavigation={id:d.id,initialUrl:d.rawUrl,extractedUrl:d.extractedUrl,trigger:d.source,extras:d.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null};const h=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),m=d.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!h&&"reload"!==m){const E="";return this.events.next(new rv(d.id,this.urlSerializer.serialize(d.rawUrl),E,t2.IgnoredSameUrlNavigation)),d.resolve(!1),Ol}if(this.urlHandlingStrategy.shouldProcessUrl(d.rawUrl))return Ue(d).pipe(Fo(E=>{const v=this.transitions?.getValue();return this.events.next(new K_(E.id,this.urlSerializer.serialize(E.extractedUrl),E.source,E.restoredState)),v!==this.transitions?.getValue()?Ol:Promise.resolve(E)}),Yoe(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy),vr(E=>{i.targetSnapshot=E.targetSnapshot,i.urlAfterRedirects=E.urlAfterRedirects,this.currentNavigation={...this.currentNavigation,finalUrl:E.urlAfterRedirects};const v=new IV(E.id,this.urlSerializer.serialize(E.extractedUrl),this.urlSerializer.serialize(E.urlAfterRedirects),E.targetSnapshot);this.events.next(v)}));if(h&&this.urlHandlingStrategy.shouldProcessUrl(d.currentRawUrl)){const{id:E,extractedUrl:v,source:k,restoredState:x,extras:f}=d,C=new K_(E,this.urlSerializer.serialize(v),k,x);this.events.next(C);const A=jV(this.rootComponentType).snapshot;return this.currentTransition=i={...d,targetSnapshot:A,urlAfterRedirects:v,extras:{...f,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.finalUrl=v,Ue(i)}{const E="";return this.events.next(new rv(d.id,this.urlSerializer.serialize(d.extractedUrl),E,t2.IgnoredByUrlHandlingStrategy)),d.resolve(!1),Ol}}),vr(d=>{const h=new Kre(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot);this.events.next(h)}),Qe(d=>(this.currentTransition=i={...d,guards:moe(d.targetSnapshot,d.currentSnapshot,this.rootContexts)},i)),yoe(this.environmentInjector,d=>this.events.next(d)),vr(d=>{if(i.guardsResult=d.guardsResult,d.guardsResult&&"boolean"!=typeof d.guardsResult)throw $_(this.urlSerializer,d.guardsResult);const h=new Wre(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot,!!d.guardsResult);this.events.next(h)}),w0(d=>!!d.guardsResult||(this.cancelNavigationTransition(d,"",Ao.GuardRejected),!1)),Vz(d=>{if(d.guards.canActivateChecks.length)return Ue(d).pipe(vr(h=>{const m=new Ure(h.id,this.urlSerializer.serialize(h.extractedUrl),this.urlSerializer.serialize(h.urlAfterRedirects),h.targetSnapshot);this.events.next(m)}),Fo(h=>{let m=!1;return Ue(h).pipe(Qoe(this.paramsInheritanceStrategy,this.environmentInjector),vr({next:()=>m=!0,complete:()=>{m||this.cancelNavigationTransition(h,"",Ao.NoDataFromResolver)}}))}),vr(h=>{const m=new Jre(h.id,this.urlSerializer.serialize(h.extractedUrl),this.urlSerializer.serialize(h.urlAfterRedirects),h.targetSnapshot);this.events.next(m)}))}),Vz(d=>{const h=m=>{const E=[];m.routeConfig?.loadComponent&&!m.routeConfig._loadedComponent&&E.push(this.configLoader.loadComponent(m.routeConfig).pipe(vr(v=>{m.component=v}),Qe(()=>{})));for(const v of m.children)E.push(...h(v));return E};return kz(h(d.targetSnapshot.root)).pipe(N_(null),Ls(1))}),Vz(()=>this.afterPreactivation()),Fo(()=>{const{currentSnapshot:d,targetSnapshot:h}=i,m=this.createViewTransition?.(this.environmentInjector,d.root,h.root);return m?Ui(m).pipe(Qe(()=>i)):Ue(i)}),Qe(d=>{const h=function toe(t,e,a){const u=u2(t,e._root,a?a._root:void 0);return new VV(u,e)}(e.routeReuseStrategy,d.targetSnapshot,d.currentRouterState);return this.currentTransition=i={...d,targetRouterState:h},this.currentNavigation.targetRouterState=h,i}),vr(()=>{this.events.next(new wz)}),((t,e,a,u)=>Qe(i=>(new hoe(e,i.targetRouterState,i.currentRouterState,a,u).activate(t),i)))(this.rootContexts,e.routeReuseStrategy,d=>this.events.next(d),this.inputBindingEnabled),Ls(1),vr({next:d=>{r=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new Ns(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects))),this.titleStrategy?.updateTitle(d.targetRouterState.snapshot),d.resolve(!0)},complete:()=>{r=!0}}),Ah(this.transitionAbortSubject.pipe(vr(d=>{throw d}))),Bx(()=>{!r&&!o&&this.cancelNavigationTransition(i,"",Ao.SupersededByNewNavigation),this.currentTransition?.id===i.id&&(this.currentNavigation=null,this.currentTransition=null)}),p3(d=>{if(o=!0,JV(d))this.events.next(new g3(i.id,this.urlSerializer.serialize(i.extractedUrl),d.message,d.cancellationCode)),function noe(t){return JV(t)&&Qx(t.url)}(d)?this.events.next(new W_(d.url,d.navigationBehaviorOptions)):i.resolve(!1);else{const h=new Az(i.id,this.urlSerializer.serialize(i.extractedUrl),d,i.targetSnapshot??void 0);try{const m=ir(this.environmentInjector,()=>this.navigationErrorHandler?.(h));if(m instanceof Pz){const{message:E,cancellationCode:v}=$_(this.urlSerializer,m);this.events.next(new g3(i.id,this.urlSerializer.serialize(i.extractedUrl),E,v)),this.events.next(new W_(m.redirectTo,m.navigationBehaviorOptions))}else{this.events.next(h);const E=e.errorHandler(d);i.resolve(!!E)}}catch(m){this.options.resolveNavigationPromiseOnError?i.resolve(!1):i.reject(m)}}return Ol}))}))}cancelNavigationTransition(e,a,u){const i=new g3(e.id,this.urlSerializer.serialize(e.extractedUrl),a,u);this.events.next(i),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}static#e=this.\u0275fac=function(a){return new(a||Bh)};static#a=this.\u0275prov=he({token:Bh,factory:Bh.\u0275fac,providedIn:"root"})}function rle(t){return t!==a2}class e7{static#e=this.\u0275fac=function(a){return new(a||e7)};static#a=this.\u0275prov=he({token:e7,factory:()=>U(gv),providedIn:"root"})}class ole{shouldDetach(e){return!1}store(e,a){}shouldAttach(e){return!1}retrieve(e){return null}shouldReuseRoute(e,a){return e.routeConfig===a.routeConfig}}class gv extends ole{static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(gv)))(u||gv)}})();static#a=this.\u0275prov=he({token:gv,factory:gv.\u0275fac,providedIn:"root"})}class c2{static#e=this.\u0275fac=function(a){return new(a||c2)};static#a=this.\u0275prov=he({token:c2,factory:()=>U(vv),providedIn:"root"})}class vv extends c2{constructor(){super(...arguments),this.location=U(ec),this.urlSerializer=U(sc),this.options=U(mv,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=U(Ev),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new nv,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=jV(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return"computed"!==this.canceledNavigationResolution?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(a=>{"popstate"===a.type&&e(a.url,a.state)})}handleRouterEvent(e,a){if(e instanceof K_)this.stateMemento=this.createStateMemento();else if(e instanceof rv)this.rawUrlTree=a.initialUrl;else if(e instanceof IV){if("eager"===this.urlUpdateStrategy&&!a.extras.skipLocationChange){const u=this.urlHandlingStrategy.merge(a.finalUrl,a.initialUrl);this.setBrowserUrl(u,a)}}else e instanceof wz?(this.currentUrlTree=a.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(a.finalUrl,a.initialUrl),this.routerState=a.targetRouterState,"deferred"===this.urlUpdateStrategy&&(a.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,a))):e instanceof g3&&(e.code===Ao.GuardRejected||e.code===Ao.NoDataFromResolver)?this.restoreHistory(a):e instanceof Az?this.restoreHistory(a,!0):e instanceof Ns&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,a){const u=this.urlSerializer.serialize(e);if(this.location.isCurrentPathEqualTo(u)||a.extras.replaceUrl){const i=this.browserPageId,r={...a.extras.state,...this.generateNgRouterState(a.id,i)};this.location.replaceState(u,"",r)}else{const i={...a.extras.state,...this.generateNgRouterState(a.id,this.browserPageId+1)};this.location.go(u,"",i)}}restoreHistory(e,a=!1){if("computed"===this.canceledNavigationResolution){const u=this.browserPageId,i=this.currentPageId-u;0!==i?this.location.historyGo(i):this.currentUrlTree===e.finalUrl&&0===i&&(this.resetState(e),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(a&&this.resetState(e),this.resetUrlToCurrentUrlTree())}resetState(e){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,a){return"computed"===this.canceledNavigationResolution?{navigationId:e,\u0275routerPageId:a}:{navigationId:e}}static#e=this.\u0275fac=(()=>{let e;return function(u){return(e||(e=bu(vv)))(u||vv)}})();static#a=this.\u0275prov=he({token:vv,factory:vv.\u0275fac,providedIn:"root"})}var bv;function rj(t,e){t.events.pipe(w0(a=>a instanceof Ns||a instanceof g3||a instanceof Az||a instanceof rv),Qe(a=>a instanceof Ns||a instanceof rv?bv.COMPLETE:a instanceof g3&&(a.code===Ao.Redirect||a.code===Ao.SupersededByNewNavigation)?bv.REDIRECTING:bv.FAILED),w0(a=>a!==bv.REDIRECTING),Ls(1)).subscribe(()=>{e()})}function lle(t){throw t}!function(t){t[t.COMPLETE=0]="COMPLETE",t[t.FAILED=1]="FAILED",t[t.REDIRECTING=2]="REDIRECTING"}(bv||(bv={}));const sle={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},dle={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};class br{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.console=U(q1),this.stateManager=U(c2),this.options=U(mv,{optional:!0})||{},this.pendingTasks=U(Wr),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=U(Bh),this.urlSerializer=U(sc),this.location=U(ec),this.urlHandlingStrategy=U(Ev),this._events=new Gt,this.errorHandler=this.options.errorHandler||lle,this.navigated=!1,this.routeReuseStrategy=U(e7),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=U(pv,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!U(Z_,{optional:!0}),this.eventsSubscription=new Ce,this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:e=>{this.console.warn(e)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){const e=this.navigationTransitions.events.subscribe(a=>{try{const u=this.navigationTransitions.currentTransition,i=this.navigationTransitions.currentNavigation;if(null!==u&&null!==i)if(this.stateManager.handleRouterEvent(a,i),a instanceof g3&&a.code!==Ao.Redirect&&a.code!==Ao.SupersededByNewNavigation)this.navigated=!0;else if(a instanceof Ns)this.navigated=!0;else if(a instanceof W_){const r=a.navigationBehaviorOptions,o=this.urlHandlingStrategy.merge(a.url,u.currentRawUrl),d={info:u.extras.info,skipLocationChange:u.extras.skipLocationChange,replaceUrl:u.extras.replaceUrl||"eager"===this.urlUpdateStrategy||rle(u.source),...r};this.scheduleNavigation(o,a2,null,d,{resolve:u.resolve,reject:u.reject,promise:u.promise})}(function hle(t){return!(t instanceof wz||t instanceof W_)})(a)&&this._events.next(a)}catch(u){this.navigationTransitions.transitionAbortSubject.next(u)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),a2,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,a)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(e,"popstate",a)},0)})}navigateToSyncWithBrowser(e,a,u){const i={replaceUrl:!0},r=u?.navigationId?u:null;if(u){const d={...u};delete d.navigationId,delete d.\u0275routerPageId,0!==Object.keys(d).length&&(i.state=d)}const o=this.parseUrl(e);this.scheduleNavigation(o,a,r,i)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(Nz),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,a={}){const{relativeTo:u,queryParams:i,fragment:r,queryParamsHandling:o,preserveFragment:d}=a,h=d?this.currentUrlTree.fragment:r;let E,m=null;switch(o){case"merge":m={...this.currentUrlTree.queryParams,...i};break;case"preserve":m=this.currentUrlTree.queryParams;break;default:m=i||null}null!==m&&(m=this.removeEmptyProps(m));try{E=SV(u?u.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof e[0]||"/"!==e[0][0])&&(e=[]),E=this.currentUrlTree.root}return zV(E,e,m,h??null)}navigateByUrl(e,a={skipLocationChange:!1}){const u=Qx(e)?e:this.parseUrl(e),i=this.urlHandlingStrategy.merge(u,this.rawUrlTree);return this.scheduleNavigation(i,a2,null,a)}navigate(e,a={skipLocationChange:!1}){return function cle(t){for(let e=0;e(null!=i&&(a[u]=i),a),{})}scheduleNavigation(e,a,u,i,r){if(this.disposed)return Promise.resolve(!1);let o,d,h;r?(o=r.resolve,d=r.reject,h=r.promise):h=new Promise((E,v)=>{o=E,d=v});const m=this.pendingTasks.add();return rj(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(m))}),this.navigationTransitions.handleNavigationRequest({source:a,restoredState:u,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:i,resolve:o,reject:d,promise:h,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),h.catch(E=>Promise.reject(E))}static#e=this.\u0275fac=function(a){return new(a||br)};static#a=this.\u0275prov=he({token:br,factory:br.\u0275fac,providedIn:"root"})}class Sh{constructor(e,a,u,i,r,o){this.router=e,this.route=a,this.tabIndexAttribute=u,this.renderer=i,this.el=r,this.locationStrategy=o,this.href=null,this.commands=null,this.onChanges=new Gt,this.preserveFragment=!1,this.skipLocationChange=!1,this.replaceUrl=!1;const d=r.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===d||"area"===d,this.isAnchorElement?this.subscription=e.events.subscribe(h=>{h instanceof Ns&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}setTabIndexIfNotOnNativeEl(e){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(e){null!=e?(this.commands=Array.isArray(e)?e:[e],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(e,a,u,i,r){const o=this.urlTree;if(null===o||this.isAnchorElement&&(0!==e||a||u||i||r||"string"==typeof this.target&&"_self"!=this.target))return!0;const d={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(o,d),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){const e=this.urlTree;this.href=null!==e&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e)):null;const a=null===this.href?null:rb(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",a)}applyAttributeValue(e,a){const u=this.renderer,i=this.el.nativeElement;null!==a?u.setAttribute(i,e,a):u.removeAttribute(i,e)}get urlTree(){return null===this.commands?null:this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static#e=this.\u0275fac=function(a){return new(a||Sh)(q(br),q(lv),Ii("tabindex"),q(jn),q(Ht),q(Fs))};static#a=this.\u0275dir=Ae({type:Sh,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(a,u){1&a&&Yu("click",function(r){return u.onClick(r.button,r.ctrlKey,r.shiftKey,r.altKey,r.metaKey)}),2&a&&Gn("target",u.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",_s],skipLocationChange:[2,"skipLocationChange","skipLocationChange",_s],replaceUrl:[2,"replaceUrl","replaceUrl",_s],routerLink:"routerLink"},standalone:!0,features:[RE,tn]})}class kv{get isActive(){return this._isActive}constructor(e,a,u,i,r){this.router=e,this.element=a,this.renderer=u,this.cdr=i,this.link=r,this.classes=[],this._isActive=!1,this.routerLinkActiveOptions={exact:!1},this.isActiveChange=new aa,this.routerEventsSubscription=e.events.subscribe(o=>{o instanceof Ns&&this.update()})}ngAfterContentInit(){Ue(this.links.changes,Ue(null)).pipe(Ig()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();const e=[...this.links.toArray(),this.link].filter(a=>!!a).map(a=>a.onChanges);this.linkInputChangesSubscription=Ui(e).pipe(Ig()).subscribe(a=>{this._isActive!==this.isLinkActive(this.router)(a)&&this.update()})}set routerLinkActive(e){const a=Array.isArray(e)?e:e.split(" ");this.classes=a.filter(u=>!!u)}ngOnChanges(e){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{const e=this.hasActiveLinks();this.classes.forEach(a=>{e?this.renderer.addClass(this.element.nativeElement,a):this.renderer.removeClass(this.element.nativeElement,a)}),e&&void 0!==this.ariaCurrentWhenActive?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==e&&(this._isActive=e,this.cdr.markForCheck(),this.isActiveChange.emit(e))})}isLinkActive(e){const a=function mle(t){return!!t.paths}(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return u=>{const i=u.urlTree;return!!i&&e.isActive(i,a)}}hasActiveLinks(){const e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static#e=this.\u0275fac=function(a){return new(a||kv)(q(br),q(Ht),q(jn),q(dn),q(Sh,8))};static#a=this.\u0275dir=Ae({type:kv,selectors:[["","routerLinkActive",""]],contentQueries:function(a,u,i){if(1&a&&yo(i,Sh,5),2&a){let r;Oi(r=Gi())&&(u.links=r)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],standalone:!0,features:[tn]})}class oj{}class a7{preload(e,a){return a().pipe(p3(()=>Ue(null)))}static#e=this.\u0275fac=function(a){return new(a||a7)};static#a=this.\u0275prov=he({token:a7,factory:a7.\u0275fac,providedIn:"root"})}class t7{preload(e,a){return Ue(null)}static#e=this.\u0275fac=function(a){return new(a||t7)};static#a=this.\u0275prov=he({token:t7,factory:t7.\u0275fac,providedIn:"root"})}class h2{constructor(e,a,u,i,r){this.router=e,this.injector=u,this.preloadingStrategy=i,this.loader=r}setUpPreloading(){this.subscription=this.router.events.pipe(w0(e=>e instanceof Ns),r3(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(e,a){const u=[];for(const i of a){i.providers&&!i._injector&&(i._injector=HE(i.providers,e,`Route: ${i.path}`));const r=i._injector??e,o=i._loadedInjector??r;(i.loadChildren&&!i._loadedRoutes&&void 0===i.canLoad||i.loadComponent&&!i._loadedComponent)&&u.push(this.preloadConfig(r,i)),(i.children||i._loadedRoutes)&&u.push(this.processRoutes(o,i.children??i._loadedRoutes))}return Ui(u).pipe(Ig())}preloadConfig(e,a){return this.preloadingStrategy.preload(a,()=>{let u;u=a.loadChildren&&void 0===a.canLoad?this.loader.loadChildren(e,a):Ue(null);const i=u.pipe(Wn(r=>null===r?Ue(void 0):(a._loadedRoutes=r.routes,a._loadedInjector=r.injector,this.processRoutes(r.injector??e,r.routes))));if(a.loadComponent&&!a._loadedComponent){return Ui([i,this.loader.loadComponent(a)]).pipe(Ig())}return i})}static#e=this.\u0275fac=function(a){return new(a||h2)(fe(br),fe($d),fe(Pi),fe(oj),fe(k3))};static#a=this.\u0275prov=he({token:h2,factory:h2.\u0275fac,providedIn:"root"})}const jz=new V("");class m2{constructor(e,a,u,i,r={}){this.urlSerializer=e,this.transitions=a,this.viewportScroller=u,this.zone=i,this.options=r,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},this.environmentInjector=U(Pi),r.scrollPositionRestoration||="disabled",r.anchorScrolling||="disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof K_?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof Ns?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof rv&&e.code===t2.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof RV&&(e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(e,a){var u=this;this.zone.runOutsideAngular(Au(function*(){yield new Promise(i=>{setTimeout(()=>{i()}),tk(()=>{i()},{injector:u.environmentInjector})}),u.zone.run(()=>{u.transitions.events.next(new RV(e,"popstate"===u.lastSource?u.store[u.restoredId]:null,a))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static#e=this.\u0275fac=function(a){d6()};static#a=this.\u0275prov=he({token:m2,factory:m2.\u0275fac})}function lj(t){return t.routerState.root}function Is(t,e){return{\u0275kind:t,\u0275providers:e}}new V("",{providedIn:"root",factory:()=>!1});function sj(){const t=U(Ut);return e=>{const a=t.get(wn);if(e!==a.components[0])return;const u=t.get(br),i=t.get(dj);1===t.get(Oz)&&u.initialNavigation(),t.get(cj,null,Sa.Optional)?.setUpPreloading(),t.get(jz,null,Sa.Optional)?.init(),u.resetRootComponentType(a.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}const dj=new V("",{factory:()=>new Gt}),Oz=new V("",{providedIn:"root",factory:()=>1});const cj=new V("");function vle(t){return Is(0,[{provide:cj,useExisting:h2},{provide:oj,useExisting:t}])}function kle(t){return Is(9,[{provide:uj,useValue:ile},{provide:ij,useValue:{skipNextTransition:!!t?.skipInitialTransition,...t}}])}const hj=new V("ROUTER_FORROOT_GUARD"),xle=[ec,{provide:sc,useClass:R_},br,dc,{provide:lv,useFactory:lj,deps:[br]},k3,[]];class x3{constructor(e){}static forRoot(e,a){return{ngModule:x3,providers:[xle,[],{provide:pv,multi:!0,useValue:e},{provide:hj,useFactory:yle,deps:[[br,new Ho,new t0]]},{provide:mv,useValue:a||{}},a?.useHash?{provide:Fs,useClass:ax}:{provide:Fs,useClass:sg},{provide:jz,useFactory:()=>{const t=U(mS),e=U(ut),a=U(mv),u=U(Bh),i=U(sc);return a.scrollOffset&&t.setOffset(a.scrollOffset),new m2(i,u,t,e,a)}},a?.preloadingStrategy?vle(a.preloadingStrategy).\u0275providers:[],a?.initialNavigation?_le(a):[],a?.bindToComponentInputs?Is(8,[sv,{provide:Z_,useExisting:sv}]).\u0275providers:[],a?.enableViewTransitions?kle().\u0275providers:[],[{provide:mj,useFactory:sj},{provide:By,multi:!0,useExisting:mj}]]}}static forChild(e){return{ngModule:x3,providers:[{provide:pv,multi:!0,useValue:e}]}}static#e=this.\u0275fac=function(a){return new(a||x3)(fe(hj,8))};static#a=this.\u0275mod=en({type:x3,imports:[v3,Sh,kv,b3],exports:[v3,Sh,kv,b3]});static#t=this.\u0275inj=P({})}function yle(t){return"guarded"}function _le(t){return["disabled"===t.initialNavigation?Is(3,[{provide:wy,multi:!0,useFactory:()=>{const e=U(br);return()=>{e.setUpLocationChangeListener()}}},{provide:Oz,useValue:2}]).\u0275providers:[],"enabledBlocking"===t.initialNavigation?Is(2,[{provide:Oz,useValue:0},{provide:wy,multi:!0,deps:[Ut],useFactory:e=>{const a=e.get(BI,Promise.resolve());return()=>a.then(()=>new Promise(u=>{const i=e.get(br),r=e.get(dj);rj(i,()=>{u(!0)}),e.get(Bh).afterPreactivation=()=>(u(!0),r.closed?Ue(void 0):r),i.initialNavigation()}))}}]).\u0275providers:[]]}const mj=new V("");new ig("18.0.0");let u7=class{constructor(e){this.router=e,this.title="Angular-SlickGrid"}ngOnInit(){this.router.events.pipe(w0(e=>e instanceof Ns)).pipe(iV(0)).subscribe(()=>{const e=document.querySelector(".nav-link.active");e&&e.scrollIntoView({block:"nearest"})})}static#e=this.ctorParameters=()=>[{type:br}]};u7=Ye([xa({selector:"app-root",template:'\n\n
\n \n
',styles:[sre()]}),Nt("design:paramtypes",[br])],u7);let i7=class{constructor(){this.title="Angular-Slickgrid - Demo Site",this.subTitle="This site is to demo multiple usage of Angular-Slickgrid, choose an example from the left side menu"}};i7=Ye([xa({template:'
\n

{{title}}

\n
\n\n
\n\n

Quick intro

\n

\n One of the best javascript datagrid\n SlickGrid which was originally developed by @mleibman is now available to Angular. I have\n tried, and used, a few datagrids and SlickGrid beats most of them in terms of functionalities\n and performance (it can easily even handle a million row).\n

\n

Documentation

\n

\n The documentation is powered by GitBook and can be found at this link\n Angular-Slickgrid - Documentation, so be sure to consult it before opening any new issue.\n
\n The\n HOWTO - Quick Start\n is the best starting point to get going with this library.\n

\n\n
\n Like my work? You can support me with caffeine :)\n\n

\n\n \n \'Buy\n \n
\n'})],i7);var wle=W(145),Ble=W.n(wle);var wu;!function(t){t.local="local",t.remote="remote"}(wu||(wu={}));class pj{constructor(e){this.rxjs=e}addRxJsResource(e){this.rxjs=e}executeBackendProcessesCallback(e,a,u,i){const r=new Date;a&&u.service.postProcess&&u.service.postProcess(a),a&&u?.internalPostProcess&&u.internalPostProcess(a),void 0!==u.postProcess&&(a instanceof Object&&(a.metrics={startTime:e,endTime:r,executionTime:r.valueOf()-e.valueOf(),itemCount:i,totalItemCount:i}),u.postProcess(a))}onBackendError(e,a){if("function"!=typeof a?.onError)throw e;a.onError(e)}executeBackendCallback(e,a,u,i,r,o){if(e){u&&!u.clearFilterTriggered&&!u.clearSortTriggered&&o?.emitActionChangedCallback&&o.emitActionChangedCallback.call(this,wu.remote);const d=e.process(a);if(d instanceof Promise&&d.then)d.then(h=>{this.executeBackendProcessesCallback(i,h,e,r),o?.successCallback?.call(this,u)}).catch(h=>{o?.errorCallback?.call(this,u),this.onBackendError(h,e)});else if(this.rxjs?.isObservable(d)){const h=this.rxjs;h.isObservable(o?.httpCancelRequestSubject)&&o?.httpCancelRequestSubject.next(),d.pipe(h.takeUntil(h.iif(()=>h.isObservable(o?.httpCancelRequestSubject),o?.httpCancelRequestSubject,h.EMPTY))).subscribe(m=>{this.executeBackendProcessesCallback(i,m,e,r),o?.successCallback?.call(this,u)},m=>{o?.errorCallback?.call(this,u),this.onBackendError(m,e)})}}}refreshBackendDataset(e){let a="";const u=e?.backendServiceApi;if(!u||!u.service||!u.process)throw new Error('BackendServiceApi requires at least a "process" function and a "service" defined');if(u.service&&(a=u.service.buildQuery()),a&&""!==a){const i=new Date;u.preProcess&&u.preProcess();const r=e?.pagination?.totalItems??0;this.executeBackendCallback(u,a,null,i,r)}}}function p2(t,e){["pop","push","reverse","shift","unshift","splice","sort"].forEach(u=>{t[u]=(...i)=>{const r=Array.prototype[u].apply(t,i);return e.apply(t,[t,i]),r}})}function Gz(t,e,a){let u=t[e];Object.defineProperty(t,e,{configurable:!0,get:()=>u,set(i){u=i,a.apply(t,[i,t[e]])}})}Array.prototype.map,Array.prototype.reduce;const Mle=t=>t;class ae{}var D3,Qr,oa;ae.locales={TEXT_ALL_SELECTED:"All Selected",TEXT_ALL_X_RECORDS_SELECTED:"All {{x}} records selected",TEXT_APPLY_MASS_UPDATE:"Apply Mass Update",TEXT_APPLY_TO_SELECTION:"Update Selection",TEXT_CANCEL:"Cancel",TEXT_CLEAR_ALL_FILTERS:"Clear all Filters",TEXT_CLEAR_ALL_GROUPING:"Clear all Grouping",TEXT_CLEAR_ALL_SORTING:"Clear all Sorting",TEXT_CLEAR_PINNING:"Unfreeze Columns/Rows",TEXT_CLONE:"Clone",TEXT_COLLAPSE_ALL_GROUPS:"Collapse all Groups",TEXT_CONTAINS:"Contains",TEXT_COLUMNS:"Columns",TEXT_COLUMN_RESIZE_BY_CONTENT:"Resize by Content",TEXT_COMMANDS:"Commands",TEXT_COPY:"Copy",TEXT_DROP_COLUMN_HEADER_TO_GROUP_BY:"Drop a column header here to group by the column",TEXT_EQUALS:"Equals",TEXT_EQUAL_TO:"Equal to",TEXT_ENDS_WITH:"Ends With",TEXT_ERROR_EDITABLE_GRID_REQUIRED:"Your grid must be editable in order to use the Composite Editor Modal.",TEXT_ERROR_ENABLE_CELL_NAVIGATION_REQUIRED:'Composite Editor requires the flag "enableCellNavigation" to be set to True in your Grid Options.',TEXT_ERROR_NO_CHANGES_DETECTED:"Sorry we could not detect any changes.",TEXT_ERROR_NO_EDITOR_FOUND:"We could not find any Editor in your Column Definition.",TEXT_ERROR_NO_RECORD_FOUND:"No records selected for edit or clone operation.",TEXT_ERROR_ROW_NOT_EDITABLE:"Current row is not editable.",TEXT_ERROR_ROW_SELECTION_REQUIRED:"You must select some rows before trying to apply new value(s).",TEXT_EXPAND_ALL_GROUPS:"Expand all Groups",TEXT_EXPORT_TO_CSV:"Export in CSV format",TEXT_EXPORT_TO_TEXT_FORMAT:"Export in Text format (Tab delimited)",TEXT_EXPORT_TO_EXCEL:"Export to Excel",TEXT_EXPORT_TO_TAB_DELIMITED:"Export in Text format (Tab delimited)",TEXT_FORCE_FIT_COLUMNS:"Force fit columns",TEXT_FREEZE_COLUMNS:"Freeze Columns",TEXT_GREATER_THAN:"Greater than",TEXT_GREATER_THAN_OR_EQUAL_TO:"Greater than or equal to",TEXT_GROUP_BY:"Group By",TEXT_HIDE_COLUMN:"Hide Column",TEXT_ITEMS:"items",TEXT_ITEMS_PER_PAGE:"items per page",TEXT_ITEMS_SELECTED:"items selected",TEXT_OF:"of",TEXT_OK:"OK",TEXT_LAST_UPDATE:"Last Update",TEXT_LESS_THAN:"Less than",TEXT_LESS_THAN_OR_EQUAL_TO:"Less than or equal to",TEXT_NOT_CONTAINS:"Not contains",TEXT_NOT_EQUAL_TO:"Not equal to",TEXT_PAGE:"Page",TEXT_RECORDS_SELECTED:"records selected",TEXT_REFRESH_DATASET:"Refresh Dataset",TEXT_REMOVE_FILTER:"Remove Filter",TEXT_REMOVE_SORT:"Remove Sort",TEXT_RESET_INPUT_VALUE:"Reset Input Value",TEXT_RESET_FORM:"Reset Form",TEXT_SAVE:"Save",TEXT_SELECT_ALL:"Select All",TEXT_SYNCHRONOUS_RESIZE:"Synchronous resize",TEXT_SORT_ASCENDING:"Sort Ascending",TEXT_SORT_DESCENDING:"Sort Descending",TEXT_STARTS_WITH:"Starts With",TEXT_TOGGLE_ALL_GROUPS:"Toggle all Groups",TEXT_TOGGLE_DARK_MODE:"Toggle Dark Mode",TEXT_TOGGLE_FILTER_ROW:"Toggle Filter Row",TEXT_TOGGLE_PRE_HEADER_ROW:"Toggle Pre-Header Row",TEXT_UNFREEZE_COLUMNS:"Unfreeze Columns",TEXT_X_OF_Y_SELECTED:"# of % selected",TEXT_X_OF_Y_MASS_SELECTED:"{{x}} of {{y}} selected"},ae.treeDataProperties={CHILDREN_PROP:"children",COLLAPSED_PROP:"__collapsed",HAS_CHILDREN_PROP:"__hasChildren",TREE_LEVEL_PROP:"__treeLevel",PARENT_PROP:"__parentId"},ae.DEFAULT_FORMATTER_NUMBER_MIN_DECIMAL=2,ae.DEFAULT_FORMATTER_NUMBER_MAX_DECIMAL=2,ae.DEFAULT_FORMATTER_CURRENCY_MIN_DECIMAL=2,ae.DEFAULT_FORMATTER_CURRENCY_MAX_DECIMAL=4,ae.DEFAULT_FORMATTER_PERCENT_MIN_DECIMAL=void 0,ae.DEFAULT_FORMATTER_PERCENT_MAX_DECIMAL=void 0,ae.DEFAULT_NUMBER_DECIMAL_SEPARATOR=".",ae.DEFAULT_NUMBER_THOUSAND_SEPARATOR="",ae.DEFAULT_NEGATIVE_NUMBER_WRAPPED_IN_BRAQUET=!1,ae.SLIDER_DEFAULT_MIN_VALUE=0,ae.SLIDER_DEFAULT_MAX_VALUE=100,ae.SLIDER_DEFAULT_STEP=1,ae.VALIDATION_REQUIRED_FIELD="Field is required",ae.VALIDATION_EDITOR_VALID_NUMBER="Please enter a valid number",ae.VALIDATION_EDITOR_VALID_INTEGER="Please enter a valid integer number",ae.VALIDATION_EDITOR_INTEGER_BETWEEN="Please enter a valid integer number between {{minValue}} and {{maxValue}}",ae.VALIDATION_EDITOR_INTEGER_MAX="Please enter a valid integer number that is lower than {{maxValue}}",ae.VALIDATION_EDITOR_INTEGER_MAX_INCLUSIVE="Please enter a valid integer number that is lower than or equal to {{maxValue}}",ae.VALIDATION_EDITOR_INTEGER_MIN="Please enter a valid integer number that is greater than {{minValue}}",ae.VALIDATION_EDITOR_INTEGER_MIN_INCLUSIVE="Please enter a valid integer number that is greater than or equal to {{minValue}}",ae.VALIDATION_EDITOR_NUMBER_BETWEEN="Please enter a valid number between {{minValue}} and {{maxValue}}",ae.VALIDATION_EDITOR_NUMBER_MAX="Please enter a valid number that is lower than {{maxValue}}",ae.VALIDATION_EDITOR_NUMBER_MAX_INCLUSIVE="Please enter a valid number that is lower than or equal to {{maxValue}}",ae.VALIDATION_EDITOR_NUMBER_MIN="Please enter a valid number that is greater than {{minValue}}",ae.VALIDATION_EDITOR_NUMBER_MIN_INCLUSIVE="Please enter a valid number that is greater than or equal to {{minValue}}",ae.VALIDATION_EDITOR_DECIMAL_BETWEEN="Please enter a valid number with a maximum of {{maxDecimal}} decimals",ae.VALIDATION_EDITOR_TEXT_LENGTH_BETWEEN="Please make sure your text length is between {{minLength}} and {{maxLength}} characters",ae.VALIDATION_EDITOR_TEXT_MAX_LENGTH="Please make sure your text is less than {{maxLength}} characters",ae.VALIDATION_EDITOR_TEXT_MAX_LENGTH_INCLUSIVE="Please make sure your text is less than or equal to {{maxLength}} characters",ae.VALIDATION_EDITOR_TEXT_MIN_LENGTH="Please make sure your text is more than {{minLength}} character(s)",ae.VALIDATION_EDITOR_TEXT_MIN_LENGTH_INCLUSIVE="Please make sure your text is at least {{minLength}} character(s)",function(t){t[t.camelCase=0]="camelCase",t[t.pascalCase=1]="pascalCase",t[t.snakeCase=2]="snakeCase",t[t.kebabCase=3]="kebabCase"}(D3||(D3={})),function(t){t.colon=":",t.comma=",",t.equalSign="=",t.pipe="|",t.semicolon=";",t.space=" ",t.tab="\t",t.doubleColon="::",t.doublePipe="||",t.doubleSemicolon=";;"}(Qr||(Qr={})),function(t){t.autoTooltip="autoTooltip",t.cellExternalCopyManager="cellExternalCopyManager",t.cellMenu="cellMenu",t.checkboxSelector="checkboxSelector",t.columnPicker="columnPicker",t.contextMenu="contextMenu",t.customTooltip="customTooltip",t.draggableGrouping="draggableGrouping",t.groupItemMetaProvider="groupItemMetaProvider",t.gridMenu="gridMenu",t.headerButton="headerButton",t.headerMenu="headerMenu",t.rowBasedEdit="rowBasedEdit",t.rowDetailView="rowDetailView",t.rowMoveManager="rowMoveManager",t.rowSelection="rowSelection"}(oa||(oa={}));const F={unknown:"unknown",string:"string",boolean:"boolean",integer:"integer",float:"float",number:"number",date:"date",dateIso:"dateIso",dateUtc:"dateUtc",dateTime:"dateTime",dateTimeIso:"dateTimeIso",dateTimeIsoAmPm:"dateTimeIsoAmPm",dateTimeIsoAM_PM:"dateTimeIsoAM_PM",dateTimeShortIso:"dateTimeShortIso",dateEuro:"dateEuro",dateEuroShort:"dateEuroShort",dateTimeShortEuro:"dateTimeShortEuro",dateTimeEuro:"dateTimeEuro",dateTimeEuroAmPm:"dateTimeEuroAmPm",dateTimeEuroAM_PM:"dateTimeEuroAM_PM",dateTimeEuroShort:"dateTimeEuroShort",dateTimeEuroShortAmPm:"dateTimeEuroShortAmPm",dateTimeEuroShortAM_PM:"dateTimeEuroShortAM_PM",dateUs:"dateUs",dateUsShort:"dateUsShort",dateTimeShortUs:"dateTimeShortUs",dateTimeUs:"dateTimeUs",dateTimeUsAmPm:"dateTimeUsAmPm",dateTimeUsAM_PM:"dateTimeUsAM_PM",dateTimeUsShort:"dateTimeUsShort",dateTimeUsShortAmPm:"dateTimeUsShortAmPm",dateTimeUsShortAM_PM:"dateTimeUsShortAM_PM",object:"object",password:"password",text:"text",readonly:"readonly"};var ft,E2,kr,re,gi,eu,zh;!function(t){t.csv="csv",t.txt="txt",t.xls="xls",t.xlsx="xlsx"}(ft||(ft={})),function(t){t.merge="merge",t.chain="chain"}(E2||(E2={})),function(t){t.columns="columns",t.filter="filter",t.pagination="pagination",t.pinning="pinning",t.rowSelection="rowSelection",t.sorter="sorter",t.treeData="treeData"}(kr||(kr={})),function(t){t.empty="",t.contains="Contains",t.notContains="Not_Contains",t.lessThan="LT",t.lessThanOrEqual="LE",t.greaterThan="GT",t.greaterThanOrEqual="GE",t.notEqual="NE",t.equal="EQ",t.endsWith="EndsWith",t.rangeInclusive="RangeInclusive",t.rangeExclusive="RangeExclusive",t.startsWith="StartsWith",t.in="IN",t.notIn="NOT_IN",t.inContains="IN_CONTAINS",t.notInContains="NOT_IN_CONTAINS",t.inCollection="IN_COLLECTION",t.notInCollection="NOT_IN_COLLECTION"}(re||(re={})),function(t){t.asc="asc",t.ASC="ASC",t.desc="desc",t.DESC="DESC"}(gi||(gi={})),function(t){t[t.asc=1]="asc",t[t.desc=-1]="desc",t[t.neutral=0]="neutral"}(eu||(eu={})),function(t){t.toggleCollapse="toggle-collapse",t.fullExpand="full-expand",t.fullCollapse="full-collapse",t.toggleExpand="toggle-expand"}(zh||(zh={}));class g2 extends Error{constructor(e){super(e),Object.setPrototypeOf(this,g2.prototype)}}function gj(t){let e=!1;return t instanceof Promise?{promise:t.then(a=>{if(e)throw new g2("Cancelled Promise");return a}),cancel:()=>e=!0}:t}function Wz(t,e,a=""){let u=e;if(e instanceof Promise)return e;if(t.isObservable(e)&&(u=t.firstValueFrom(e)),!(u instanceof Promise))throw new Error(`Something went wrong, Slickgrid-Universal ${a} is not able to convert the Observable into a Promise.`);return u}function n7(t,e,a=0){const u=e?.childrenPropName??ae.treeDataProperties.CHILDREN_PROP;Array.isArray(t)&&t.forEach(i=>{i&&(Array.isArray(i[u])&&i[u].length>0&&(a++,n7(i[u],e,a),a--),i[e.levelPropName]=a)})}function v2(t,e,a=0,u=null){const i=e?.childrenPropName??ae.treeDataProperties.CHILDREN_PROP,{aggregator:r}=e;Array.isArray(t)&&t.forEach(o=>{if(o){const d=Array.isArray(o[i]);Array.isArray(o[i])&&o[i].length>0&&(r.init(o,!0),a++,v2(o[i],e,a,o),a--),u&&r.isInitialized&&"function"==typeof r.accumulate&&!o?.__filteredOut&&(r.accumulate(o,d),r.storeResult(u.__treeTotals)),o[e.levelPropName]=a}})}function vj(t,e){const a=e?.identifierPropName??"id",u=e?.childrenPropName??ae.treeDataProperties.CHILDREN_PROP,i=e?.hasChildrenPropName??ae.treeDataProperties.HAS_CHILDREN_PROP,r=e?.parentPropName??ae.treeDataProperties.PARENT_PROP,o=e?.levelPropName??ae.treeDataProperties.TREE_LEVEL_PROP;return e?.shouldAddTreeLevelNumber&&(e?.aggregators?e.aggregators.forEach(h=>{v2(t,{childrenPropName:u,levelPropName:o,aggregator:h})}):n7(t,{childrenPropName:u,levelPropName:o})),function Lle(t,e,a=Mle,u=(()=>{})){const i=t&&t.length?[{pointer:t,offset:0}]:[],r=[];let o;for(;i.length;)for(o=i.pop();o.offseth[u],(h,m)=>({[a]:h[a],[r]:void 0!==m?m[a]:null,[i]:!!h[u],...xj(h,u)}))}function bj(t,e){const a=e?.identifierPropName??"id",u=e?.childrenPropName??ae.treeDataProperties.CHILDREN_PROP,i=e?.parentPropName??ae.treeDataProperties.PARENT_PROP,r=e?.levelPropName??ae.treeDataProperties.TREE_LEVEL_PROP,o=e?.collapsedPropName??ae.treeDataProperties.COLLAPSED_PROP,h=[],m={};return(t||[]).forEach(E=>m[E[a]]=E),Object.keys(m).forEach(E=>{const v=m[E];if(i in v&&null!==v[i]&&void 0!==v[i]&&""!==v[i]){if(v[i]in m){const k=m[v[i]];u in k||(k[u]=[]),k[u].push(v),void 0===k[o]&&(k[o]=e?.initiallyCollapsed??!1)}}else h.push(v)}),e?.aggregators?e.aggregators.forEach(E=>{v2(h,{childrenPropName:u,levelPropName:r,aggregator:E},0)}):n7(h,{childrenPropName:u,levelPropName:r},0),h}function Mh(t,e,a){if(!a)throw new Error('findRecursive requires parameter "childrenPropertyName"');const u=t.find(e),i=t.filter(r=>r?.hasOwnProperty(a)&&r[a]);if(u)return u;if(i.length){const r=[];return i.forEach(o=>{o?.hasOwnProperty(a)&&r.push(...o[a])}),Mh(r,e,a)}}function M0(t,e,a,u=".",i=""){if(isNaN(+t))return t;const r=void 0===e?2:e,o=void 0===a?2:a;let d=String(Math.round(+t*Math.pow(10,o))/Math.pow(10,o));for(d.indexOf(".")<0&&r>0&&(d+=".");d.length-d.indexOf(".")<=r;)d+="0";const h=d.split(".");let m,E;m=i?h.length>=1?cc(h[0],i):void 0:h.length>=1?h[0]:d,h.length>1&&(E=h[1]);let v="";return void 0!==m&&void 0!==E?v=`${m}${u}${E}`:null!=m&&(v=m),v}function Bu(t,e,a,u,i="",r="",o=".",d=""){if(isNaN(+t))return t;const h=Math.round(1e6*parseFloat(t))/1e6;if(h<0){const m=Math.abs(h);if(u){if(!isNaN(e)||!isNaN(a))return`(${i}${M0(m,e,a,o,d)}${r})`;return`(${i}${cc(`${m}`,d)}${r})`}if(!isNaN(e)||!isNaN(a))return`-${i}${M0(m,e,a,o,d)}${r}`;return`-${i}${cc(`${m}`,d)}${r}`}if(!isNaN(e)||!isNaN(a))return`${i}${M0(t,e,a,o,d)}${r}`;return`${i}${cc(`${t}`,d)}${r}`}function b2(t,e,a){if("function"==typeof t.queryFieldNameGetterFn){const u=t.queryFieldNameGetterFn(e);a=u?.indexOf(".")>=0?Xu(e,u):e.hasOwnProperty(u)?e[u]:a}return a}function Xu(t,e){return t&&e?e.split(".").reduce((a,u)=>a&&a[u],t):t}function Gl(t){return t&&t.translationNamespace?t.translationNamespace+(t.translationNamespaceSeparator||""):""}function k2(t){return t.outputType||t.type||F.string}function Uz(t){switch(t){case F.date:case F.dateTime:case F.dateIso:case F.dateTimeIso:case F.dateTimeShortIso:case F.dateTimeIsoAmPm:case F.dateTimeIsoAM_PM:case F.dateEuro:case F.dateEuroShort:case F.dateTimeEuro:case F.dateTimeShortEuro:case F.dateTimeEuroAmPm:case F.dateTimeEuroAM_PM:case F.dateTimeEuroShort:case F.dateTimeEuroShortAmPm:case F.dateTimeEuroShortAM_PM:case F.dateUs:case F.dateUsShort:case F.dateTimeUs:case F.dateTimeShortUs:case F.dateTimeUsAmPm:case F.dateTimeUsAM_PM:case F.dateTimeUsShort:case F.dateTimeUsShortAmPm:case F.dateTimeUsShortAM_PM:case F.dateUtc:return!0;default:return!1}}function kj(t){let e;switch(t){case"<":case"LT":e=re.lessThan;break;case"<=":case"LE":e=re.lessThanOrEqual;break;case">":case"GT":e=re.greaterThan;break;case">=":case"GE":e=re.greaterThanOrEqual;break;case"<>":case"!=":case"NE":e=re.notEqual;break;case"*":case"a*":case"StartsWith":e=re.startsWith;break;case"*z":case"EndsWith":e=re.endsWith;break;case"=":case"==":case"EQ":e=re.equal;break;case"IN":e=re.in;break;case"NIN":case"NOT_IN":e=re.notIn;break;case"Not_Contains":case"NOT_CONTAINS":e=re.notContains;break;default:e=re.contains}return e}function xv(t){let e="";switch(t){case re.greaterThan:case">":e=">";break;case re.greaterThanOrEqual:case">=":e=">=";break;case re.lessThan:case"<":e="<";break;case re.lessThanOrEqual:case"<=":e="<=";break;case re.notEqual:case"<>":e="<>";break;case re.equal:case"=":case"==":case"EQ":e="=";break;case re.startsWith:case"a*":case"*":e="a*";break;case re.endsWith:case"*z":e="*z";break;default:e=t}return e}function x2(t){let e;if(Uz(t))e=re.equal;else switch(t){case F.unknown:case F.string:case F.text:case F.password:case F.readonly:e=re.contains;break;case F.float:case F.number:default:e=re.equal}return e}function xj(t,e){return Object.keys(t).reduce((a,u)=>(u!==e&&(a[u]=t[u]),a),{})}function cc(t,e=","){if(null!=t){const a=`${t}`,u=a.split(".");return 2===u.length?`${u[0].replace(/\B(?=(\d{3})+(?!\d))/g,e)}.${u[1]}`:a.replace(/\B(?=(\d{3})+(?!\d))/g,e)}return t}function hc(t,e,a={}){return Array.isArray(t)?t.find(e)||a:t}function D2(t){if(Array.isArray(t))for(;t.length>0;){const e=t.pop();e?.unsubscribe&&e.unsubscribe()}return t}function f2(t){let e=0,a=0,u=0,i=0;const r=window.innerHeight??0,o=window.innerWidth??0,d=Zz(),h=d.top,m=d.left,E=Du(t);if(E){const v=E.top??0,k=E.left??0;a=v-h,u=k-m,e=r-(v-h+t.clientHeight),i=o-(k-m+t.clientWidth)}return{top:a,bottom:e,left:u,right:i}}function T(t,e,a){const u=document.createElement(t);return e&&Object.keys(e).forEach(i=>{"innerHTML"===i&&console.warn(`[Slickgrid-Universal] For better CSP (Content Security Policy) support, do not use "innerHTML" directly in "createDomElement('${t}', { innerHTML: 'some html'})", it is better as separate assignment: "const elm = createDomElement('span'); elm.innerHTML = 'some html';"`);const r=e[i];"object"==typeof r?Object.assign(u[i],r):u[i]=e[i]}),a?.appendChild&&a.appendChild(u),u}function Vt(t=""){return t.split(" ").filter(e=>e)}function Jz(t){"object"==typeof t&&Object.keys(t).forEach(e=>{Array.isArray(t[e])&&Jz(t[e]),t[e]instanceof HTMLElement&&(t[e]=null)})}function Ct(t){for(;t?.firstChild;)t.removeChild(t.firstChild);return t}function hn(t,e="innerHTML"){return t instanceof DocumentFragment?[].map.call(t.childNodes,a=>a[e]).join("")||t.textContent||"":t instanceof HTMLElement?t[e]:String(t??"")}function Dj(t,e){if(!t||!e)return;const a=t.getBoundingClientRect(),u=e.getBoundingClientRect();return{top:u.top-a.top,right:u.right-a.right,bottom:u.bottom-a.bottom,left:u.left-a.left}}function Du(t){if(!t||!t.getBoundingClientRect)return;const e=t.getBoundingClientRect(),a=document.documentElement;let u=0,i=0,r=0,o=0;return void 0!==e?.top&&void 0!==e.left&&(u=e.top+window.pageYOffset-a.clientTop,i=e.left+window.pageXOffset-a.clientLeft,o=e.right,r=e.bottom),{top:u,left:i,bottom:r,right:o}}function r7(t,e){let a=0;if(t){const i="height"===e?["top","bottom"]:["left","right"];a=t["height"===e?"clientHeight":"clientWidth"];for(const r of i){a-=parseFloat(fj(t,`padding-${r}`)||"")||0}}return a}function fj(t,e){return t?window.getComputedStyle(t).getPropertyValue(e):null}function C2(t,e){if(t)for(const a of e){const u=t.getAttribute(a);if(u)return u}return null}function mc(t,e="auto"){return(/^[0-9]+$/i.test(`${t}`)?+t+"px":t)||e}function Cj(t){const e="string"==typeof t?t:String(t),a={"&":"&","<":"<",">":">",'"':""","'":"'"};return(e||"").toString().replace(/[&<>"']/g,u=>a[u])}function yj(t){return t.replace(/&#(\d+);/g,(e,a)=>String.fromCharCode(a))}function _j(t,e){const a=t.length;let u=Cj(t);if(a"u"||o7.call(e,i)},Mj=function(e,a){wj&&"__proto__"===a.name?wj(e,a.name,{enumerable:!0,configurable:!0,value:a.newValue,writable:!0}):e[a.name]=a.newValue},Lj=function(e,a){if("__proto__"===a){if(!o7.call(e,a))return;if(Bj)return Bj(e,a).value}return e[a]};function su(...t){let e,a,u,i,r,o,d=t[0],h=1;const m=t.length;let E=!1;for("boolean"==typeof d&&(E=d,d=t[1]||{},h=2),(null==d||"object"!=typeof d&&"function"!=typeof d)&&(d={});hi[a]===e[a]):t.findIndex(i=>i===e),u<0&&t.push(e)}function Dv(t,e=" "){let a="";for(let u=0;ue!==u)}function Pj(t){if(!Array.isArray(t)&&!Lh(t))return t;return su(!0,Array.isArray(t)?[]:{},t)}function f3(t,...e){if(!e.length)return t;const a=e.shift();return t=!Lh(t)&&Lh(a)?{}:t,Lh(t)&&Lh(a)&&Object.keys(a).forEach(u=>{a.hasOwnProperty(u)&&(u in t?"object"!=typeof t[u]||"object"!=typeof a[u]?t[u]=a[u]:t[u].concat&&a[u].concat?t[u]=t[u].concat(a[u]):t[u]=f3(t[u],a[u]):t[u]=a[u])}),f3(t,...e)}function Nj(t){return Lh(t)&&Object.keys(t).forEach(e=>{t.hasOwnProperty(e)&&delete t[e]}),t=null,t={}}function qz(t,e=!0){let a=!1;return{params:(r=>{const h=r.toString().replace(/(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,)]*(('(?:\\'|[^'\r\n])*')|("(?:\\"|[^"\r\n])*"))|(\s*=[^,)]*))/gm,"");return h.slice(h.indexOf("(")+1,h.indexOf(")")).match(/([^\s,]+)/g)??[]})(t),body:(r=>{const o=r.toString();if(a=o.includes("async "),o.replaceAll(" ","").includes("=>({")){const m=o.match(/(({.*}))/g)||[];return m.length>=1?`return ${m[0].trimStart()}`:o}const d=!o.includes("{")&&o.includes("=>"),h=o.substring(o.indexOf("{")+1||o.indexOf("=>")+2,o.includes("}")?o.lastIndexOf("}"):o.length);return e&&d&&!h.startsWith("return")?"return "+h.trimStart():h})(t),isAsync:a}}function Yz(t){return null==t||0===Object.entries(t).length}function Su(t){return null!=t&&""!==t}function C3(t){return null!==t&&!isNaN(t)&&""!==t}function Lh(t){return!(null===t||"object"!=typeof t||Array.isArray(t)||t instanceof Date)}function y2(t){return"boolean"==typeof t||"number"==typeof t||"string"==typeof t||null==t}function y3(t){return t instanceof HTMLElement||t instanceof DocumentFragment||y2(t)}function l7(t){return null!=t&&""!==t}function Ca(t,e=!1){return e?null!=t&&"string"!=typeof t&&!isNaN(t):null!=t&&""!==t&&!isNaN(+t)}function Ij(t){return!t||t&&"object"==typeof t&&0===Object.keys(t).length}function s7(t){return/(true|1)/i.test(t+"")}function fv(t,e=!1){const a="function"==typeof t.normalize?t.normalize("NFD").replace(/[\u0300-\u036f]/g,""):t;return e?a.toLowerCase():a}function xr(t,e,a){if("string"==typeof e&&(e=e.split(".")),e.length>1){const u=e.shift();t&&void 0!==u&&xr(t[u]=l7(t[u])&&(Array.isArray(t[u])||"[object Object]"===Object.prototype.toString.call(t[u]))?t[u]:{},e,a)}else t&&e[0]&&(t[e[0]]=a)}function wo(t,e=!1){return"string"==typeof t?e?t.replace(/\w\S*/g,a=>a.charAt(0).toUpperCase()+a.substring(1).toLowerCase()):t.charAt(0).toUpperCase()+t.slice(1):t}function Qz(t){return"string"==typeof t?t.replace(/(?:^\w|[A-Z]|\b\w|[\s+\-_/])/g,(e,a)=>/[\s+\-_/]/.test(e)?"":0===a?e.toLowerCase():e.toUpperCase()):t}function _2(t){return"string"==typeof t?Qz(t).replace(/([A-Z])/g,"-$1").toLowerCase():t}function Rs(t){if("string"==typeof t){const e=t.replace(/([A-Z])|(-)/g," $1").replace(/\s+/g," ").trim();return e.charAt(0).toUpperCase()+e.slice(1)}return t}function Nle(t){return"string"==typeof t?Qz(t).replace(/([A-Z])/g,"_$1").toLowerCase():t}function Rj(t){return Array.isArray(t)&&t.length>0?t.filter((e,a)=>t.indexOf(e)>=a):t}function Ile(t,e="id"){if(Array.isArray(t)&&t.length>0){const a=[],u=new Map;for(const i of t)i&&!u.has(i[e])&&(u.set(i[e],!0),a.push({id:i[e],name:i.name}));return a}return t}const F2=Symbol("plaintext"),Hj=Symbol("html"),Vj=Symbol("comment"),Rle=/<(\w*)>/g,Hle=/<\/?([^\s/>]+)/;function zu(t,e,a){function o(h){let m=new Set;if("string"==typeof h){let E;for(;E=Rle.exec(h);)m.add(E[1])}else"function"==typeof h[Symbol.iterator]&&(m=new Set(h));return m}function d(h){const m=Hle.exec(h);return m?m[1].toLowerCase():null}return function u(h,m,E){if("string"!=typeof h&&(Ca(h)||"boolean"==typeof h))return String(h);if(h instanceof HTMLElement&&(h=h.innerHTML),"string"!=typeof h&&null!=h)throw new TypeError("'html' parameter must be a string");return function r(h,m){const E=m.allowable_tags,v=m.tag_replacement;let k=m.state,x=m.tag_buffer,f=m.depth,C=m.in_quote_char,A="";for(let w=0,z=h.length;w":if(C)break;if(f){f--;break}C="",k=F2,x+=">",E.has(d(x))?A+=x:A+=v,x="";break;case'"':case"'":C=L===C?"":C||L,x+=L;break;case"-":""===L)"--"===x.slice(-2)&&(k=F2),x="";else x+=L}return m.state=k,m.tag_buffer=x,m.depth=f,m.in_quote_char=C,A}(h||"",function i(h,m){return{allowable_tags:o(h),tag_replacement:m,state:F2,tag_buffer:"",depth:0,in_quote_char:""}}(m||"",E||""))}(t,e,a)}const jj=(t,e,a,u,i)=>{const r=u?.valueCouldBeUndefined??i?.cellValueCouldBeUndefined??!1,o=isNaN(t)||""===t||null===t||r&&void 0===t?-99e10:parseFloat(t),d=isNaN(e)||""===e||null===e||r&&void 0===e?-99e10:parseFloat(e);return a*(o===d?0:o>d?1:-1)};var Oj=/^([0-9]{4})-([0-1][0-9])(?:-([0-3][0-9]))?(?:[T ]?([0-2][0-9])(?::([0-5][0-9]))?(?::([0-5][0-9]))?)?(?:\.[0-9]+)?(Z|(?:\+|\-)[0-9]{2}:?[0-9]{2})?$/;function Hs(t){if(t||(t=new Date),t instanceof Date){const e=new Date(t);return e.setMilliseconds(0),e}if(function jle(t){const e=t.match(Oj);if(e){const a=Number(e[2]);if(a<1||a>12)return!1;if(void 0!==typeof e[3]){const u=Number(e[3]);if(u<1||u>31)return!1}if(void 0!==typeof e[4]){const u=Number(e[4]);if(u<0||u>23)return!1}return!0}return!1}(t=t.trim()))return new Date(function Ole(t){const e=t.match(Oj);return e&&typeof e[4]>"u"?t+="T00:00:00":t}(t));throw new Error(`Non ISO 8601 compliant date (${t}).`)}function Vs(t,e=1){const a=Hs(t);return a.setDate(a.getDate()+e),a}var Xz="1999-03-04T02:05:01.000Z",eM=new Map,aM=[["YYYY",{year:"numeric"}],["YY",{year:"2-digit"}],["MMMM",{month:"long"}],["MMM",{month:"short"}],["MM",{month:"2-digit"}],["M",{month:"numeric"}],["DD",{day:"2-digit"}],["D",{day:"numeric"}],["dddd",{weekday:"long"}],["ddd",{weekday:"short"}],["d",{weekday:"narrow"}],["mm",{minute:"2-digit"}],["m",{minute:"numeric"}],["ss",{second:"2-digit"}],["s",{second:"numeric"}],["ZZ",{timeZoneName:"long"}],["Z",{timeZoneName:"short"}]],tM=[["HH",{hour:"2-digit"}],["H",{hour:"numeric"}]],uM=[["hh",{hour:"2-digit"}],["h",{hour:"numeric"}],["a",{dayPeriod:"narrow"}],["A",{dayPeriod:"narrow"}]],d7={DD:2,HH:2,MM:2,YY:2,YYYY:4,hh:2,mm:2,ss:2};function Gj(t){if(/^[+-]\d{2}:\d{2}/.test(t))return 6;if(/^[+-]\d{4}/.test(t))return 5;throw new Error("Invalid offset format")}var Gle=["MMMM","MMM","dddd","ddd"],ei=new Map([...aM,...tM,...uM].map(t=>[t[0],t])),Kj=new Map,Wj=["full","long","medium","short"],Th=t=>String(t).padStart(2,"0"),iM=t=>String(t).padStart(2,"0");function pc(t){return"literal"===t.type&&(t.value=t.value.normalize("NFKC")),t}function Kle(t,e,a,u=!1,i=null){const r=function Wle(t,e,a,u=!1){const i=Hs(t),r=e.filter(E=>E.hour12),o=e.filter(E=>!E.hour12),d=[],h=[];function m(E,v=!1){const k=`${a}-u-hc-${v?"h12":"h23"}`;if(d.push(...new Intl.DateTimeFormat(k,E.reduce((x,f)=>"literal"===f.partName?x:(u&&Gle.includes(f.token)&&h.push(f),Object.assign(x,f.option)),{timeZone:"UTC"})).formatToParts(i).map(pc)),u&&h.length)for(const x of h){let f=[];switch(x.token){case"MMMM":f=new Intl.DateTimeFormat(k,{dateStyle:"long",timeZone:"UTC"}).formatToParts(i).map(pc);break;case"MMM":f=new Intl.DateTimeFormat(k,{dateStyle:"medium",timeZone:"UTC"}).formatToParts(i).map(pc)}const C=f.find(w=>w.type===x.partName),A=d.findIndex(w=>w.type===x.partName);C&&A>-1&&(d[A]=C)}}return r.length&&m(r,!0),o.length&&m(o),d.reduce((E,v)=>(E[v.type]=v.value,E),{})}(t,e,a,u),o=Hs(t);function d({partName:h,partValue:m,token:E}){if("literal"===h)return m;const v=r[h];if("hour"===h&&"H"===E)return v.replace(/^0/,"")||"0";if(["mm","ss","MM"].includes(E)&&1===v.length)return`0${v}`;if("dayPeriod"===h){const k=Cv(o.getUTCHours()<12?"am":"pm",a);return"A"===E?k.toUpperCase():k.toLowerCase()}return"timeZoneName"===h?i??Uj(-1*o.getTimezoneOffset(),E):v}return e.map(h=>({...h,value:d(h)}))}function Uj(t,e="Z"){const a=String(Math.floor(Math.abs(t/60))).padStart(2,"0"),u=String(Math.abs(t%60)).padStart(2,"0"),i=t<0?"-":"+";return"ZZ"===e?`${i}${a}${u}`:`${i}${a}:${u}`}function Jj(t,e="Z"){if(!(u=>{switch(u){case"Z":return/^([+-])[0-3][0-9]:[0-6][0-9]$/.test(t);case"ZZ":return/^([+-])[0-3][0-9][0-6][0-9]$/.test(t)}})(e))throw new Error(`Invalid offset: ${t}`);return t}function Zle(t){return["numeric","2-digit"].includes(t.partValue)}function Cv(t,e){const a=Kj.get(e);if(a&&a[t])return a[t];const u=new Date(Xz);u.setUTCHours("am"===t?5:20);const r=new Intl.DateTimeFormat(e,{timeStyle:"full",timeZone:"UTC",hour12:!0}).formatToParts(u).map(pc).find(o=>"dayPeriod"===o.type);if(r){const o=a||{};return Kj.set(e,Object.assign(o,{[t]:r.value})),r.value}return t}function Zj(t,e="+00:00"){const a=Hs(t),u=(()=>{switch(Gj(e)){case 5:return"ZZ";case 6:return"Z"}})(),i=function Ule(t,e){Jj(t,e);const[a,u,i,r]=t.match(/([+-])([0-3][0-9]):?([0-6][0-9])/),o=60*Number(i)+Number(r);return"+"===u?o:-o}(e,u);return new Date(a.getTime()+1e3*i*60)}function $j(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function qj(t,e){const a=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:e,hourCycle:"h23"}).formatToParts(t).map(pc),u={};return a.forEach(i=>{u[i.type]=i.value}),new Date(`${u.year}-${u.month}-${u.day}T${u.hour}:${u.minute}:${u.second}Z`)}function c7(t,e="UTC",a="device",u="Z"){var i;a="device"===a?null!=(i=$j())?i:"utc":a;const r=Hs(t),o=qj(r,e);return Uj((qj(r,a).getTime()-o.getTime())/1e3/60,u)}function Yj(t){const e=Hs(t);return e.setHours(0,0,0),e}function nM(t,e){if(Wj.includes(t)||"object"==typeof t)return function Qle(t,e){const a={timeZone:"UTC"};"string"==typeof t?a.dateStyle=t:("date"in t&&(a.dateStyle=t.date),"time"in t&&(a.timeStyle=t.time));const u=new Intl.DateTimeFormat(e,a),i=u.formatToParts(new Date(Xz)).map(pc),o=u.formatToParts(new Date("1999-04-05T23:05:01.000Z")).map(pc).find(h=>"hour"===h.type),d=o&&"23"===o.value?24:12;return i.map(h=>{const m=h.type,E=function Xle(t,e,a,u,i){const r=e.length,o=!isNaN(Number(e));let d;switch(t){case"year":return 2===r?ei.get("YY"):ei.get("YYYY");case"month":return o?1===r?ei.get("M"):ei.get("MM"):"long"===(d=Qj(a,t,e),d)?ei.get("MMMM"):ei.get("MMM");case"day":return 1===r?ei.get("D"):ei.get("DD");case"weekday":switch(d=Qj(a,t,e),d){case"narrow":return ei.get("d");case"short":return ei.get("ddd");default:return ei.get("dddd")}case"hour":return 12===u?1===r?ei.get("h"):ei.get("hh"):1===r?ei.get("H"):ei.get("HH");case"minute":return 1===r?ei.get("m"):ei.get("mm");case"second":return 1===r?ei.get("s"):ei.get("ss");case"dayPeriod":return/^[A-Z]+$/u.test(e)?ei.get("A"):ei.get("a");case"literal":return[e,{literal:e},new RegExp("")];case"timeZoneName":return"full"===i.timeStyle?ei.get("Z"):ei.get("ZZ");default:return}}(h.type,h.value,e,"hour"===h.type?d:void 0,a);if(void 0===E)return;const v=E[1][m];return v?(E[2]||(E[2]=new RegExp(`${E[0]}`,"g")),{option:{[m]:v},partName:m,partValue:v,token:E[0],pattern:E[2],hour12:12===d}):void 0}).filter(h=>!!h)}(t,e);let a=t,u=0;const i=E=>{if(E[2]||(E[2]=new RegExp(`(.)?(${E[0]})`,"g")),E[2].test(a)){let v=0;return a=a.replace(E[2],(k,x,f)=>"\\"===x?f:`${"string"==typeof x?x:""}{!${v++?u:u++}!}`),!!v}return!1};function o(E,[v,k,x]){const f=Object.keys(k)[0];return{option:k,partName:f,partValue:k[f],token:v,pattern:x,hour12:E}}const h=function r(E){const v=E.map(x=>x.partName),k=new Set(v);if(v.length>k.size)throw new Error("Cannot reuse format tokens.");return E}(aM.filter(i).concat(tM.filter(i)).map(o.bind(null,!1)).concat(uM.filter(i).map(o.bind(null,!0)))),m=/^\{!(\d+)!\}$/;return a.split(/(\{!\d+!\})/).map(E=>{const v=E.match(m);return v?h[Number(v[1])]:{option:{literal:E},partName:"literal",partValue:E,token:E,pattern:new RegExp(""),hour12:!1}}).filter(E=>!("literal"===E.partName&&""===E.partValue))}function Qj(t,e,a){if(!eM.has(t)){const i=new Date(Xz),r=[3,8,9,7,6,4,3],o=["weekday","month","dayPeriod"],d=["long","short","narrow"],h={};for(let m=0;m<12;m++){i.setMonth(0+m),m in r&&i.setDate(r[m]),i.setUTCHours(8+m);for(const E of d){const v=new Intl.DateTimeFormat(t,o.reduce((k,x)=>Object.assign(k,{[x]:E}),{hour12:!0,timeZone:"UTC"})).formatToParts(i).map(pc);if("long"===E||"short"===E){const x=new Intl.DateTimeFormat(t,{dateStyle:"short"===E?"medium":"long",timeZone:"UTC"}).formatToParts(i).map(pc).find(C=>"month"===C.type),f=v.findIndex(C=>"month"===C.type);f>-1&&x&&(v[f]=x)}v.forEach(k=>{if("literal"===k.type)return;const x=k.type;h[x]=Object.assign(h[x]||{},{[k.value]:E})})}}eM.set(t,h)}const u=eM.get(t);return u?u[e][a]:void 0}function Xj(t,e="+00:00"){const a="+"===e.slice(0,1);return Zj(t,e.replace(a?"+":"-",a?"-":"+"))}function ai(t,e="long",a="device",u=!1,i){let r,o;return"object"==typeof t&&!(t instanceof Date)&&({date:t,format:e,locale:a,genitive:u,partFilter:i,tz:r}=t),"ISO8601"===e?Hs(t).toISOString():(r&&(o=c7(t,"utc",r,function qle(t){return"string"==typeof t?t.includes("ZZ")?"ZZ":"Z":"time"in t&&"full"===t.time?"Z":"ZZ"}(e))),r??(r=$j()),"utc"!==r?.toLowerCase()&&(t=Xj(t,c7(t,r,"utc"))),(!a||"device"===a)&&(a=function e0e(){return Intl.DateTimeFormat().resolvedOptions().locale}()),Kle(t,nM(e,a).filter(i??(()=>!0)),a,u,o).map(d=>d.value).join(""))}function a0e(t,e="en",a=!1,u=(()=>!0)){return nM(t,e).filter(u).reduce((i,r)=>i+(a&&"literal"===r.partName?function Jle(t){return aM.concat(tM).concat(uM).sort((e,a)=>e[0].length>a[0].length?1:-1).reduce((e,a)=>e.replace(a[0],`\\${a[0]}`),t)}(r.token):r.token),"").normalize("NFKC")}function eO(t,e="en",a=!1){const u=(i,r)=>Array(i).fill("").map((o,d)=>`${r(d)}`);if("M"===t)return u(12,i=>i+1);if("MM"===t)return u(12,i=>{const r=i+1;return r<10?`0${r}`:r});if(t.startsWith("M"))return eO("MM").map(i=>ai(`2000-${i}-05`,t,e,a));if(t.startsWith("d"))return u(7,i=>`0${i+2}`).map(i=>ai(`2022-10-${i}`,t,e));if("a"===t)return[Cv("am",e).toLowerCase(),Cv("pm",e).toLowerCase()];if("A"===t)return[Cv("am",e).toUpperCase(),Cv("pm",e).toUpperCase()];if(t.startsWith("Y")){const i=(new Date).getFullYear();return u(120,r=>r+1).reduce((r,o)=>("120"!==o&&r.push(ai(`${i+Number(o)}-06-06`,t,e)),r.unshift(ai(i-Number(o)+"-06-06",t,e)),r),[ai(`${i}-06-06`,t,e)])}return t.startsWith("D")?u(31,i=>`${"DD"===t&&i<9?"0":""}${i+1}`):t.startsWith("H")?u(24,i=>`${"HH"===t&&i<10?"0":""}${i}`):t.startsWith("h")?u(12,i=>`${"hh"===t&&i<9?"0":""}${i+1}`):t.startsWith("m")||t.startsWith("s")?u(60,i=>`${t.length>1&&i<10?"0":""}${i}`):[]}function i0e(t){return function u0e(t){const e=Hs(t);return e.setDate(1),e.setMonth(e.getMonth()+1),e.setDate(0),e}(t).getDate()}function h7(t,e="ISO8601",a="device"){let i,u=()=>!0,r="backward";if("object"==typeof t?({date:i,format:e="ISO8601",locale:a="device",dateOverflow:r="backward",partFilter:u=(()=>!0)}=t):i=t,!i)throw new Error("parse() requires a date string.");const o=()=>{throw new Error(`Date (${i}) does not match format (${a0e(e,a)})`)};if("ISO8601"===e)return Hs(i);const d=Wj.includes(e)||"object"==typeof e,h=function $le(t){let e;for(const a of t){if("literal"===a.partName&&!isNaN(parseFloat(a.partValue)))throw new Error(`Numbers in format (${a.partValue}).`);if(e&&"literal"!==e.partName&&"literal"!==a.partName&&!(e.token in d7)&&!(a.token in d7)&&(!Zle(e)||"a"!==a.token.toLowerCase()))throw new Error(`Illegal adjacent tokens (${e.token}, ${a.token})`);e=a}return t}(nM(e,a).filter(u));if(!h.length)throw new Error("parse() requires a pattern.");let m;try{m=function n0e(t,e){let a=0;const u=d=>[d[a++],d[a]];let i=0;const r=[];let o;do{const[d,h]=u(e);o=h;let m=1;if("literal"===d.partName)m=d.partValue.length;else if("timeZoneName"===d.partName)m=Gj(t.substring(i));else if(d.token in d7)m=d7[d.token];else if(h)if("literal"===h.partName){if(m=t.indexOf(h.partValue,i)-i,m<0)throw new Error}else if("dayPeriod"===h.partName){for(let E=1;E<=4;E++)if(isNaN(Number(t.charAt(i+E)))){m=E;break}}else{const E=t.substring(i).search(/\d/);-1!==E&&(m=i+E)}else m=t.length;r.push({...d,value:t.substring(i,i+m)}),i+=m}while(o);return r}(i,h)}catch{return o()}const E=new Date,v=new Map([["YYYY",E.getFullYear()],["MM",E.getMonth()+1],["DD",E.getDate()],["HH",0],["mm",0],["ss",0]]);let k=null,x="";m.forEach(ee=>{if("literal"===ee.partName)return;if(ee.token===ee.value)return o();const ne=Number(ee.value);if(v.has(ee.token))v.set(ee.token,ne);else if("YY"===ee.token)v.set("YYYY",function t0e(t){const e=(new Date).getFullYear(),a=e%100,u=Math.floor(e/100),i=Number(t);return 100*(u+(i>a+20?-1:0))+i}(ee.value));else{const Ne=ee.token;if(Ne.startsWith("d"))return;if("D"===Ne)v.set("DD",ne);else if("H"===Ne||Ne.startsWith("h"))v.set("HH",ne);else if("M"===Ne)v.set("MM",ne);else if("a"===Ne||"A"===Ne)k=ee.value.toLowerCase()===Cv("am",a).toLowerCase();else if("Z"===Ne||"ZZ"===Ne)x=Jj(ee.value,Ne);else{const Se=eO(Ne,a,d).indexOf(ee.value);if(-1!==Se)switch(Ne){case"MMM":case"MMMM":v.set("MM",Se+1)}}}});let f=v.get("HH")||0;!1===k?(f+=12===f?0:12,v.set("HH",24===f?0:f)):!0===k&&12===f&&v.set("HH",0),v.set("MM",(v.get("MM")||1)-1);let[C,A,w,z,L,M]=Array.from(v.values());const j=i0e(new Date(`${iM(C)}-${Th(A+1)}-10`));if(jaO(a,u,i,e,void 0!==e)}const L0={boolean:(t,e,a)=>{null==a&&(a=eu.neutral);let u=0;return u=t===e?0:null===t?-1:null===e?1:a?t{if(!u||!u.dataKey)throw new Error('Sorting a "FieldType.object" requires you to provide the "dataKey" (object property name) of the object so that we can use it to sort correctly');const r=t?.hasOwnProperty(u.dataKey)?t[u.dataKey]:t,o=e?.hasOwnProperty(u.dataKey)?e[u.dataKey]:e,d=u?.valueCouldBeUndefined??i?.cellValueCouldBeUndefined??!1;null==a&&(a=eu.neutral);let h=0;return h="object"!=typeof t?-99e10:"object"!=typeof e?99e10:null===r||d&&void 0===r?-1:null===o||d&&void 0===o?1:r===o?0:a?r{null==a&&(a=eu.neutral);let r=0;const o=u?.valueCouldBeUndefined??i?.cellValueCouldBeUndefined??!1;return t===e?r=0:null===t||o&&void 0===t?r=-1:null===e||o&&void 0===e?r=1:(i?.ignoreAccentOnStringFilterAndSort&&(t=fv(t,!1),e=fv(e,!1)),r=a?te.name)}constructor(e){this._subscribedEvents=[],this.eventNamingStyle=T0.camelCase,this._elementSource=e||document.createElement("div")}dispose(){this.unsubscribeAll(),this._subscribedEvents=[],clearTimeout(this._timer),this._elementSource?.remove(),this._elementSource=null}dispatchCustomEvent(e,a,u=!0,i=!0,r){const o={bubbles:u,cancelable:i};a&&(o.detail=a);const d=new CustomEvent(e,o);return"function"==typeof r&&r(d),this._elementSource?.dispatchEvent(d)}getEventNameByNamingConvention(e,a){let u="";switch(this.eventNamingStyle){case T0.camelCase:u=""!==a?`${a}${wo(e)}`:e;break;case T0.kebabCase:u=""!==a?`${a}-${_2(e)}`:_2(e);break;case T0.lowerCase:u=`${a}${e}`.toLowerCase();break;case T0.lowerCaseWithoutOnPrefix:u=`${a}${e.replace(/^on/,"")}`.toLowerCase()}return u}publish(e,a,u,i){const r=this.getEventNameByNamingConvention(e,"");return u?new Promise(o=>{clearTimeout(this._timer),this._timer=setTimeout(()=>o(this.dispatchCustomEvent(r,a,!0,!0,i)),u)}):this.dispatchCustomEvent(r,a,!0,!0,i)}subscribe(e,a){const u=this.getEventNameByNamingConvention(e,"");return this._elementSource.addEventListener(u,i=>a.call(null,i.detail)),this._subscribedEvents.push({name:u,listener:a}),{unsubscribe:()=>this.unsubscribe(u,a)}}subscribeEvent(e,a){const u=this.getEventNameByNamingConvention(e,"");return this._elementSource.addEventListener(u,a),this._subscribedEvents.push({name:u,listener:a}),{unsubscribe:()=>this.unsubscribe(u,a)}}unsubscribe(e,a,u=!0){const i=this.getEventNameByNamingConvention(e,"");this._elementSource.removeEventListener(i,a),u&&this.removeSubscribedEventWhenFound(e,a)}unsubscribeAll(e){if(Array.isArray(e)){let a;do{a=e.pop(),a?.dispose?a.dispose():a?.unsubscribe&&a.unsubscribe()}while(a)}else{let a=this._subscribedEvents.pop();for(;a;)this.unsubscribe(a.name,a.listener,!1),a=this._subscribedEvents.pop()}}removeSubscribedEventWhenFound(e,a){const u=this._subscribedEvents.findIndex(i=>i.name===e&&i.listener===a);u>=0&&this._subscribedEvents.splice(u,1)}}const m7=function s0e(t){var e=document,a=t.container||e.createElement("div"),u=t.preventSubmit||0;a.id=a.id||"autocomplete-"+z();var k,f,i=a.style,r=t.debounceWaitMs||0,o=t.disableAutoSelect||!1,d=a.parentElement,h=[],m="",E=2,v=t.showOnFocus,x=0,C=!1,A=!1;if(void 0!==t.minLength&&(E=t.minLength),!t.input)throw new Error("input undefined");var w=t.input;function z(){return Date.now().toString(36)+Math.random().toString(36).substring(2)}function L(){var Ve=a.parentNode;Ve&&Ve.removeChild(a)}function M(){f&&window.clearTimeout(f)}function $(){return!!a.parentNode}function oe(){x++,h=[],m="",k=void 0,w.setAttribute("aria-activedescendant",""),w.setAttribute("aria-expanded","false"),L()}function ne(){a.textContent="",w.setAttribute("aria-activedescendant","");var Ve=function(dl,Wv,Fc){var zo=e.createElement("div");return zo.textContent=dl.label||"",zo};t.render&&(Ve=t.render);var $a=function(dl,Wv){var Fc=e.createElement("div");return Fc.textContent=dl,Fc};t.renderGroup&&($a=t.renderGroup);var ii=e.createDocumentFragment(),_r=z();if(h.forEach(function(dl,Wv){if(dl.group&&dl.group!==_r){_r=dl.group;var Fc=$a(dl.group,m);Fc&&(Fc.className+=" group",ii.appendChild(Fc))}var zo=Ve(dl,m,Wv);zo&&(zo.id=a.id+"_"+Wv,zo.setAttribute("role","option"),zo.addEventListener("click",function(rD){A=!0;try{t.onSelect(dl,w)}finally{A=!1}oe(),rD.preventDefault(),rD.stopPropagation()}),dl===k&&(zo.className+=" selected",zo.setAttribute("aria-selected","true"),w.setAttribute("aria-activedescendant",zo.id)),ii.appendChild(zo))}),a.appendChild(ii),h.length<1){if(!t.emptyMsg)return void oe();var sl=e.createElement("div");sl.id=a.id+"_"+z(),sl.className="empty",sl.textContent=t.emptyMsg,a.appendChild(sl),w.setAttribute("aria-activedescendant",sl.id)}(function j(){a.parentNode||(d||e.body).appendChild(a)})(),function ee(){if($()){w.setAttribute("aria-expanded","true"),i.height="auto",i.width=w.offsetWidth+"px";var $a,Ve=0;ii(),ii(),t.customize&&$a&&t.customize(w,$a,a,Ve)}function ii(){var _r=e.documentElement,sl=_r.clientTop||e.body.clientTop||0,dl=_r.clientLeft||e.body.clientLeft||0,Wv=window.pageYOffset||_r.scrollTop,Fc=window.pageXOffset||_r.scrollLeft,zo=($a=w.getBoundingClientRect()).top+w.offsetHeight+Wv-sl,rD=$a.left+Fc-dl;i.top=zo+"px",i.left=rD+"px",(Ve=window.innerHeight-($a.top+w.offsetHeight))<0&&(Ve=0),i.top=zo+"px",i.bottom="",i.left=rD+"px",i.maxHeight=Ve+"px"}}(),_t()}function Ne(){$()&&ne()}function Ie(){Ne()}function Se(Ve){Ve.target!==a?Ne():Ve.preventDefault()}function ga(){A||mn(0)}function _t(){var Ve=a.getElementsByClassName("selected");if(Ve.length>0){var $a=Ve[0],ii=$a.previousElementSibling;if(ii&&-1!==ii.className.indexOf("group")&&!ii.previousElementSibling&&($a=ii),$a.offsetTopsl&&(a.scrollTop+=_r-sl)}}}function Pe(Ve){h.length>0&&(function au(Ve){var $a=e.getElementById(a.id+"_"+Ve);$a&&($a.classList.remove("selected"),$a.removeAttribute("aria-selected"),w.removeAttribute("aria-activedescendant"))}(Ve),function Ra(Ve){var $a=e.getElementById(a.id+"_"+Ve);$a&&($a.classList.add("selected"),$a.setAttribute("aria-selected","true"),w.setAttribute("aria-activedescendant",$a.id))}(h.indexOf(k)),_t())}function ol(Ve,$a){var ii=$();if("Escape"===$a)oe();else{if(!ii||h.length<1)return;"ArrowUp"===$a?function ht(){var Ve=h.indexOf(k);k=-1===Ve?void 0:h[(Ve+h.length-1)%h.length],Pe(Ve)}():function Oa(){var Ve=h.indexOf(k);k=h.length<1?void 0:-1===Ve?h[0]:h[(Ve+1)%h.length],Pe(Ve)}()}Ve.preventDefault(),ii&&Ve.stopPropagation()}function Zn(Ve){var $a=Ve.key;switch($a){case"ArrowUp":case"ArrowDown":case"Escape":ol(Ve,$a);break;case"Enter":!function Zi(Ve){if(k){2===u&&Ve.preventDefault(),A=!0;try{t.onSelect(k,w)}finally{A=!1}oe()}1===u&&Ve.preventDefault()}(Ve)}}function yr(){v&&mn(1)}function mn(Ve){w.value.length>=E||1===Ve?(M(),f=window.setTimeout(function(){return Tu(w.value,Ve,w.selectionStart||0)},0===Ve||2===Ve?r:0)):oe()}function Tu(Ve,$a,ii){if(!C){var _r=++x;t.fetch(Ve,function(sl){x===_r&&sl&&(m=Ve,k=(h=sl).length<1||o?void 0:h[0],ne())},$a,ii)}}function ll(Ve){t.keyup?t.keyup({event:Ve,fetch:function(){return mn(0)}}):!$()&&"ArrowDown"===Ve.key&&mn(0)}function yc(Ve){t.click&&t.click({event:Ve,fetch:function(){return mn(2)}})}function _c(){setTimeout(function(){e.activeElement!==w&&oe()},200)}return a.className="autocomplete "+(t.className||""),a.setAttribute("role","listbox"),w.setAttribute("role","combobox"),w.setAttribute("aria-expanded","false"),w.setAttribute("aria-autocomplete","list"),w.setAttribute("aria-controls",a.id),w.setAttribute("aria-owns",a.id),w.setAttribute("aria-activedescendant",""),w.setAttribute("aria-haspopup","listbox"),i.position="absolute",a.addEventListener("mousedown",function(Ve){Ve.stopPropagation(),Ve.preventDefault()}),a.addEventListener("focus",function(){return w.focus()}),L(),w.addEventListener("keyup",ll),w.addEventListener("click",yc),w.addEventListener("keydown",Zn),w.addEventListener("input",ga),w.addEventListener("blur",_c),w.addEventListener("focus",yr),window.addEventListener("resize",Ie),e.addEventListener("scroll",Se,!0),{destroy:function Kv(){w.removeEventListener("focus",yr),w.removeEventListener("keyup",ll),w.removeEventListener("click",yc),w.removeEventListener("keydown",Zn),w.removeEventListener("input",ga),w.removeEventListener("blur",_c),window.removeEventListener("resize",Ie),e.removeEventListener("scroll",Se,!0),w.removeAttribute("role"),w.removeAttribute("aria-expanded"),w.removeAttribute("aria-autocomplete"),w.removeAttribute("aria-controls"),w.removeAttribute("aria-activedescendant"),w.removeAttribute("aria-owns"),w.removeAttribute("aria-haspopup"),M(),oe(),C=!0},fetch:function Gv(){Tu(w.value,3,w.selectionStart||0)}}};class wi{constructor(){this._boundedEvents=[]}get boundedEvents(){return this._boundedEvents}dispose(){this.unbindAll(),this._boundedEvents=[]}bind(e,a,u,i,r=""){const o=Array.isArray(a)?a:[a];if(e?.forEach)e.forEach(d=>{for(const h of o)d.addEventListener(h,u,i),this._boundedEvents.push({element:d,eventName:h,listener:u,groupName:r})});else for(const d of o)e.addEventListener(d,u,i),this._boundedEvents.push({element:e,eventName:d,listener:u,groupName:r})}unbind(e,a,u){const i=Array.isArray(e)?e:[e],r=Array.isArray(a)?a:[a];for(const o of r)for(const d of i)"function"==typeof d?.removeEventListener&&d.removeEventListener(o,u)}unbindByEventName(e,a){const u=this._boundedEvents.find(i=>i.element===e&&i.eventName===a);u&&this.unbind(u.element,u.eventName,u.listener)}unbindAll(e){if(e){const a=Array.isArray(e)?e:[e];for(let u=this._boundedEvents.length-1;u>=0;--u){const i=this._boundedEvents[u];if(a.some(r=>r===i.groupName)){const{element:r,eventName:o,listener:d}=i;this.unbind(r,o,d),this._boundedEvents.splice(u,1)}}}else for(;this._boundedEvents.length>0;){const a=this._boundedEvents.pop(),{element:u,eventName:i,listener:r}=a;this.unbind(u,i,r)}}}function tO(t,e){const a=e.fetch;a&&(e.fetch=(u,i,r,o)=>{t.classList.add("slick-autocomplete-loading");const d=i;a(u,m=>{d(m),t.classList.remove("slick-autocomplete-loading")},r,o)})}function p7(t,e,a,u,i){const r=a,o=u.outputType||i.type||u.type||F.dateUtc,d=i.type||u.type,h=el(F.dateIso),m=d?el(d):void 0,E=Array.isArray(r)?r:[r||""];if(E.length&&E[0]){const v=[];for(const k of E){const x=k instanceof Date?k:Ec(k,m);x&&v.push(x)}v.length&&(e.settings.selected={dates:[v.map(k=>ai(k,h)).join(":")],month:v[0].getMonth(),year:v[0].getFullYear(),time:"ISO8601"===m||(m||"").toLowerCase().includes("h")?ai(v[0],"HH:mm"):void 0}),t.value=E.length?v.map(k=>js(k,void 0,o)).join(" \u2014 "):""}}function rM(t,e){const a=T("select",{className:"form-control"});for(const u of t){const i=document.createElement("option");i.value=u.operator,e.applyHtmlCode(i,`${_j(u.operatorAlt||u.operator,3)}${u.descAlt||u.desc}`),a.appendChild(i)}return a}function uO(t,e,a,u,i){return oM.apply(this,arguments)}function oM(){return oM=Au(function*(t,e,a,u,i){const r=e?.filter??{},o=r?.collectionOptions??{};let d=null;if(t){const h=u?.isObservable(t)??!1;h&&u&&(d=yield Wz(u,t));const m=yield t;if(Array.isArray(m)?d=m:m?.status>=200&&m.status<300&&"function"==typeof m.json?d=yield m.json():m&&m.content&&(d=m.content),!Array.isArray(d)&&o?.collectionInsideObjectProperty){d=Xu(d||m,o.collectionInsideObjectProperty||"")}if(!Array.isArray(d))throw new Error('Something went wrong while trying to pull the collection from the "collectionAsync" call in the Filter, the collection is not a valid array.');r.collection=d,a(d),h&&function c0e(t,e,a,u){const i=t?.filter??{},r=a?.createSubject();i.collectionAsync=r,u&&r&&u.push(r.subscribe(o=>function d0e(t,e,a){const u=e?.filter??{},i=u?.collectionOptions??{};i&&i.collectionInsideObjectProperty&&(t=Xu(t,i.collectionInsideObjectProperty));if(!Array.isArray(t))throw new Error('Something went wrong while trying to pull the collection from the "collectionAsync" call in the Filter, the collection is not a valid array.');u.collection=t,a(t)}(o,t,e)))}(e,a,u,i)}return d}),oM.apply(this,arguments)}function Kl(t,e,a,u,i){if(u?.enableTranslate&&i?.translate){const o=Gl(u);return i.translate(`${o}${t}`)}return(u.locales||ae.locales)?.[e]??a}function lM(t,e){const a=[{operator:"",desc:""},{operator:"=",desc:Kl("EQUAL_TO","TEXT_EQUAL_TO","Equal to",t,e)},{operator:"<",desc:Kl("LESS_THAN","TEXT_LESS_THAN","Less than",t,e)},{operator:"<=",desc:Kl("LESS_THAN_OR_EQUAL_TO","TEXT_LESS_THAN_OR_EQUAL_TO","Less than or equal to",t,e)},{operator:">",desc:Kl("GREATER_THAN","TEXT_GREATER_THAN","Greater than",t,e)},{operator:">=",desc:Kl("GREATER_THAN_OR_EQUAL_TO","TEXT_GREATER_THAN_OR_EQUAL_TO","Greater than or equal to",t,e)},{operator:"<>",desc:Kl("NOT_EQUAL_TO","TEXT_NOT_EQUAL_TO","Not equal to",t,e)}];return iO(t,a,"numeric"),a}function iO(t,e,a){if(t.compoundOperatorAltTexts)for(const u of e)if(t.compoundOperatorAltTexts.hasOwnProperty(a)){const i=t.compoundOperatorAltTexts[a][u.operator];u.operatorAlt=i?.operatorAlt||"",u.descAlt=i?.descAlt||""}}var p0e=Object.defineProperty,nO=Object.getOwnPropertySymbols,E0e=Object.prototype.hasOwnProperty,g0e=Object.prototype.propertyIsEnumerable,sM=(t,e,a)=>e in t?p0e(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a,rO=(t,e)=>{for(var a in e||(e={}))E0e.call(e,a)&&sM(t,a,e[a]);if(nO)for(var a of nO(e))g0e.call(e,a)&&sM(t,a,e[a]);return t},ja=(t,e,a)=>(sM(t,"symbol"!=typeof e?e+"":e,a),a);const v0e={calendar:"vanilla-calendar",calendarDefault:"vanilla-calendar_default",calendarMultiple:"vanilla-calendar_multiple",calendarMonth:"vanilla-calendar_month",calendarYear:"vanilla-calendar_year",calendarHidden:"vanilla-calendar_hidden",calendarToInput:"vanilla-calendar_to-input",calendarToInputTop:"vanilla-calendar_to-input_top",calendarToInputBottom:"vanilla-calendar_to-input_bottom",controls:"vanilla-calendar-controls",grid:"vanilla-calendar-grid",gridDisabled:"vanilla-calendar-grid_disabled",column:"vanilla-calendar-column",columnMonth:"vanilla-calendar-column_month",columnYear:"vanilla-calendar-column_year",header:"vanilla-calendar-header",headerContent:"vanilla-calendar-header__content",month:"vanilla-calendar-month",monthDisabled:"vanilla-calendar-month_disabled",year:"vanilla-calendar-year",yearDisabled:"vanilla-calendar-year_disabled",arrow:"vanilla-calendar-arrow",arrowPrev:"vanilla-calendar-arrow_prev",arrowNext:"vanilla-calendar-arrow_next",wrapper:"vanilla-calendar-wrapper",content:"vanilla-calendar-content",week:"vanilla-calendar-week",weekDay:"vanilla-calendar-week__day",weekDayWeekend:"vanilla-calendar-week__day_weekend",days:"vanilla-calendar-days",daysSelecting:"vanilla-calendar-days_selecting",months:"vanilla-calendar-months",monthsSelecting:"vanilla-calendar-months_selecting",monthsMonth:"vanilla-calendar-months__month",monthsMonthSelected:"vanilla-calendar-months__month_selected",monthsMonthDisabled:"vanilla-calendar-months__month_disabled",years:"vanilla-calendar-years",yearsSelecting:"vanilla-calendar-years_selecting",yearsYear:"vanilla-calendar-years__year",yearsYearSelected:"vanilla-calendar-years__year_selected",yearsYearDisabled:"vanilla-calendar-years__year_disabled",time:"vanilla-calendar-time",timeContent:"vanilla-calendar-time__content",timeHours:"vanilla-calendar-time__hours",timeMinutes:"vanilla-calendar-time__minutes",timeKeeping:"vanilla-calendar-time__keeping",timeRanges:"vanilla-calendar-time__ranges",timeRange:"vanilla-calendar-time__range",day:"vanilla-calendar-day",dayHoverFirst:"vanilla-calendar-day_hover-first",dayHoverLast:"vanilla-calendar-day_hover-last",dayHoverIntermediate:"vanilla-calendar-day_hover-intermediate",daySelectedFirst:"vanilla-calendar-day_selected-first",daySelectedLast:"vanilla-calendar-day_selected-last",daySelectedIntermediate:"vanilla-calendar-day_selected-intermediate",dayPopup:"vanilla-calendar-day__popup",dayBtn:"vanilla-calendar-day__btn",dayBtnPrev:"vanilla-calendar-day__btn_prev",dayBtnNext:"vanilla-calendar-day__btn_next",dayBtnToday:"vanilla-calendar-day__btn_today",dayBtnSelected:"vanilla-calendar-day__btn_selected",dayBtnHover:"vanilla-calendar-day__btn_hover",dayBtnDisabled:"vanilla-calendar-day__btn_disabled",dayBtnWeekend:"vanilla-calendar-day__btn_weekend",dayBtnHoliday:"vanilla-calendar-day__btn_holiday",weekNumbers:"vanilla-calendar-week-numbers",weekNumbersTitle:"vanilla-calendar-week-numbers__title",weekNumbersContent:"vanilla-calendar-week-numbers__content",weekNumber:"vanilla-calendar-week-number",isFocus:"vanilla-calendar-is-focus"},b0e=t=>`
<#ArrowPrev />
<#Month /><#Year />
<#ArrowNext />
<#WeekNumbers />
<#Week /><#Days />
<#ControlTime />`,k0e=t=>`
<#ArrowPrev /><#ArrowNext />
<#Multiple>
<#Month /><#Year />
<#WeekNumbers />
<#Week /><#Days />
<#/Multiple>
<#ControlTime />`,x0e=t=>`
<#Month /><#Year />
<#Months />
`,D0e=t=>`
<#ArrowPrev />
<#Month /><#Year />
<#ArrowNext />
<#Years />
`;class f0e{constructor(){ja(this,"isInit",!1),ja(this,"input",!1),ja(this,"type","default"),ja(this,"months",2),ja(this,"jumpMonths",1),ja(this,"toggleSelected",!0),ja(this,"jumpToSelectedDate",!1),ja(this,"date",{min:"1970-01-01",max:"2470-12-31",today:new Date}),ja(this,"settings",{lang:"en",iso8601:!0,range:{min:this.date.min,max:this.date.max,disablePast:!1,disableGaps:!1,edgesOnly:!1,disableAllDays:!1,disableWeekday:void 0,disabled:void 0,enabled:void 0},selection:{day:"single",month:!0,year:!0,time:!1,controlTime:"all",stepHours:1,stepMinutes:1,cancelableDay:!0},selected:{dates:void 0,month:void 0,year:void 0,holidays:void 0,time:void 0},visibility:{theme:"system",themeDetect:"html[data-theme]",monthShort:!0,weekNumbers:!1,weekend:!0,today:!0,disabled:!1,daysOutside:!0,positionToInput:"left"}}),ja(this,"locale",{months:[],weekday:[]}),ja(this,"sanitizer",e=>e),ja(this,"actions",{clickDay:null,clickWeekNumber:null,clickMonth:null,clickYear:null,clickArrow:null,changeTime:null,changeToInput:null,getDays:null,getMonths:null,getYears:null,initCalendar:null,updateCalendar:null,destroyCalendar:null,showCalendar:null,hideCalendar:null}),ja(this,"popups",{}),ja(this,"CSSClasses",rO({},v0e)),ja(this,"DOMTemplates",{default:b0e(this.CSSClasses),multiple:k0e(this.CSSClasses),month:x0e(this.CSSClasses),year:D0e(this.CSSClasses)}),ja(this,"HTMLElement"),ja(this,"HTMLOriginalElement"),ja(this,"HTMLInputElement"),ja(this,"rangeMin"),ja(this,"rangeMax"),ja(this,"rangeDisabled"),ja(this,"rangeEnabled"),ja(this,"selectedDates"),ja(this,"selectedHolidays"),ja(this,"selectedMonth"),ja(this,"selectedYear"),ja(this,"selectedHours"),ja(this,"selectedMinutes"),ja(this,"selectedKeeping"),ja(this,"selectedTime"),ja(this,"currentType"),ja(this,"correctMonths"),ja(this,"viewYear"),ja(this,"dateMin"),ja(this,"dateMax")}}const Os=t=>`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`,fu=t=>new Date(`${t}T00:00:00`),_v=t=>t.reduce((e,a)=>{if(a instanceof Date||"number"==typeof a){const u=a instanceof Date?a:new Date(a);e.push(u.toISOString().substring(0,10))}else a.match(/^(\d{4}-\d{2}-\d{2})$/g)?e.push(a):a.replace(/(\d{4}-\d{2}-\d{2}).*?(\d{4}-\d{2}-\d{2})/g,(u,i,r)=>{const o=fu(i),d=fu(r),h=new Date(o.getTime());for(;h<=d;h.setDate(h.getDate()+1))e.push(Os(h));return u});return e},[]),oO=()=>{const t=new Date;return new Date(t.getTime()-6e4*t.getTimezoneOffset()).toISOString().substring(0,10)},A2=t=>t?{0:"12",13:"01",14:"02",15:"03",16:"04",17:"05",18:"06",19:"07",20:"08",21:"09",22:"10",23:"11"}[Number(t)]||String(t):"",Fv_notFoundSelector=t=>`${t} is not found, check the first argument passed to new VanillaCalendar.`,Fv_notInit='The calendar has not been initialized, please initialize it using the "init()" method first.',Fv_notLocale='You specified "define" for "settings.lang" but did not provide the required values for "locale.weekday" or "locale.months".',Fv_incorrectTheme='Incorrect name of theme in "settings.visibility.theme".',Fv_incorrectTime="The value of the time property can be: false, true, 12 or 24.",lO=t=>{t.currentType=t.type,(t=>{var e;if(t.jumpToSelectedDate&&null!=(e=t.settings.selected.dates)&&e.length&&void 0===t.settings.selected.month&&void 0===t.settings.selected.year){const i=fu(_v(t.settings.selected.dates)[0]);t.settings.selected.month=i.getMonth(),t.settings.selected.year=i.getFullYear()}const a=void 0!==t.settings.selected.month&&Number(t.settings.selected.month)>=0&&Number(t.settings.selected.month)<12,u=void 0!==t.settings.selected.year&&Number(t.settings.selected.year)>=0&&Number(t.settings.selected.year)<=9999;t.selectedMonth=a?Number(t.settings.selected.month):t.date.today.getMonth(),t.selectedYear=u?Number(t.settings.selected.year):t.date.today.getFullYear(),t.viewYear=t.selectedYear})(t),(t=>{var e,a,u;"today"===t.settings.range.min&&(t.settings.range.min=oO()),"today"===t.settings.range.max&&(t.settings.range.max=oO()),t.settings.range.min=fu(t.date.min)>=fu(t.settings.range.min)?t.date.min:t.settings.range.min,t.settings.range.max=fu(t.date.max)<=fu(t.settings.range.max)?t.date.max:t.settings.range.max;const i=t.settings.range.disablePast&&!t.settings.range.disableAllDays&&fu(t.settings.range.min)1&&t.rangeDisabled.sort((r,o)=>+new Date(r)-+new Date(o)),t.rangeEnabled=t.settings.range.enabled?_v(t.settings.range.enabled):[],null!=(e=t.rangeEnabled)&&e[0]&&null!=(a=t.rangeDisabled)&&a[0]&&(t.rangeDisabled=t.rangeDisabled.filter(r=>!t.rangeEnabled.includes(r))),t.rangeEnabled.length>1&&t.rangeEnabled.sort((r,o)=>+new Date(r)-+new Date(o)),null!=(u=t.rangeEnabled)&&u[0]&&t.settings.range.disableAllDays&&(t.rangeMin=t.rangeEnabled[0],t.rangeMax=t.rangeEnabled[t.rangeEnabled.length-1])})(t),(t=>{var e,a;t.selectedDates=null!=(e=t.settings.selected.dates)&&e[0]?_v(t.settings.selected.dates):[],t.selectedHolidays=null!=(a=t.settings.selected.holidays)&&a[0]?_v(t.settings.selected.holidays):[]})(t),(t=>{t.dateMin=t.settings.visibility.disabled?fu(t.date.min):fu(t.rangeMin),t.dateMax=t.settings.visibility.disabled?fu(t.date.max):fu(t.rangeMax)})(t),(t=>{const e=!0===t.settings.selection.time||12===t.settings.selection.time;if(e||24===t.settings.selection.time){let a=!1;if("string"==typeof t.settings.selected.time){const u=e?/^([0-9]|0[1-9]|1[0-2]):([0-5][0-9])|(AM|PM)/g:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])/g;t.settings.selected.time.replace(u,(i,r,o,d)=>(r&&o&&(a=!0,t.selectedHours=r,t.selectedMinutes=o),d&&e?t.selectedKeeping=d:e&&(t.selectedKeeping="AM"),""))}!a&&e?(t.selectedHours=A2(String(t.date.today.getHours())),t.selectedMinutes=String(t.date.today.getMinutes()),t.selectedKeeping=Number(t.date.today.getHours())>=12?"PM":"AM"):a||(t.selectedHours=String(t.date.today.getHours()),t.selectedMinutes=String(t.date.today.getMinutes())),t.selectedHours=Number(t.selectedHours)<10?`0${Number(t.selectedHours)}`:`${t.selectedHours}`,t.selectedMinutes=Number(t.selectedMinutes)<10?`0${Number(t.selectedMinutes)}`:`${t.selectedMinutes}`,t.selectedTime=`${t.selectedHours}:${t.selectedMinutes}${t.selectedKeeping?` ${t.selectedKeeping}`:""}`}else if(t.settings.selection.time)throw new Error(Fv_incorrectTime)})(t),(t=>{t.correctMonths="multiple"===t.type?1===t.months?2:t.months>12?12:t.months:1})(t)},sO=({arrowPrev:t,arrowNext:e,isPrevHidden:a,isNextHidden:u})=>{t.style.visibility=a?"hidden":"",e.style.visibility=u?"hidden":""},dM=t=>{var e,a;if("month"===t.currentType)return;const u=null==(e=t.HTMLElement)?void 0:e.querySelector(`.${t.CSSClasses.arrowPrev}`),i=null==(a=t.HTMLElement)?void 0:a.querySelector(`.${t.CSSClasses.arrowNext}`);!u||!i||{default:()=>{const r=fu(Os(new Date(t.selectedYear,t.selectedMonth,1))),o=new Date(r.getTime()),d=new Date(r.getTime());o.setMonth(o.getMonth()-t.jumpMonths),d.setMonth(d.getMonth()+t.jumpMonths),t.settings.selection.year||(t.dateMin.setFullYear(r.getFullYear()),t.dateMax.setFullYear(r.getFullYear()));const h=!t.settings.selection.month||o.getFullYear()t.dateMax.getFullYear()||d.getFullYear()===t.dateMax.getFullYear()&&d.getMonth()>t.dateMax.getMonth();sO({arrowPrev:u,arrowNext:i,isPrevHidden:h,isNextHidden:m})},year:()=>{sO({arrowPrev:u,arrowNext:i,isPrevHidden:t.dateMin.getFullYear()&&t.viewYear-7<=t.dateMin.getFullYear(),isNextHidden:t.dateMax.getFullYear()&&t.viewYear+7>=t.dateMax.getFullYear()})}}["multiple"===t.currentType?"default":t.currentType]()},dO=(t,e)=>{if(!t)return null;const a=fu(t),u=e?a.getDay()||7:a.getDay();a.setDate(a.getDate()+4-u);const i=new Date(a.getFullYear(),0,1),r=Math.ceil(((+a-+i)/864e5+1)/7);return{year:a.getFullYear(),week:r}},z0e=(t,e,a,u,i)=>{const r=e[a].querySelector(`.${t.CSSClasses.dayBtn}`),o=dO(r?.dataset.calendarDay,t.settings.iso8601);if(!o)return;const d=u.cloneNode(!0);d.innerText=String(o.week),d.dataset.calendarYearWeek=String(o.year),i.appendChild(d)},cM=(t,e,a,u,i,r,o,d)=>{const h=document.createElement("div");h.className=t.CSSClasses.day;const m=document.createElement("button");m.className=`${t.CSSClasses.dayBtn}${d?` ${d}`:""}`,m.type="button",m.innerText=String(u),m.dataset.calendarDay=r,t.settings.visibility.weekNumbers&&(()=>{const E=dO(r,t.settings.iso8601);E&&(m.dataset.calendarWeekNumber=String(E.week))})(),o?t.settings.visibility.daysOutside&&h.appendChild(m):h.appendChild(m),((t,e,a)=>{var u,i,r,o,d;const h=null==(u=t.settings.range.disableWeekday)?void 0:u.includes(a),m=t.settings.range.disableAllDays&&!(null==(i=t.rangeEnabled)||!i[0]);!h&&!m||null!=(r=t.rangeEnabled)&&r.includes(e)||null!=(o=t.rangeDisabled)&&o.includes(e)||(t.rangeDisabled.push(e),null==(d=t.rangeDisabled)||d.sort((E,v)=>+new Date(E)-+new Date(v)))})(t,r,i),((t,e,a,u,i,r,o)=>{var d,h,m;if((fu(t.rangeMin)>fu(r)||fu(t.rangeMax)1&&"multiple-ranged"===t.settings.selection.day&&(t.selectedDates[0]===r&&a.classList.add(t.CSSClasses.daySelectedFirst),t.selectedDates[t.selectedDates.length-1]===r&&a.classList.add(t.CSSClasses.daySelectedLast),t.selectedDates[0]!==r&&t.selectedDates[t.selectedDates.length-1]!==r&&a.classList.add(t.CSSClasses.daySelectedIntermediate))),t.settings.range.edgesOnly&&t.selectedDates.length>1&&"multiple-ranged"===t.settings.selection.day){const E=+new Date(t.selectedDates[0]),v=+new Date(t.selectedDates[t.selectedDates.length-1]),k=+new Date(r);k>E&&k{const e=t.HTMLElement.querySelectorAll(`.${t.CSSClasses.days}`),a=t.HTMLElement.querySelectorAll(`.${t.CSSClasses.weekNumbers}`),u=new Date(t.selectedYear,t.selectedMonth,1);e.forEach((i,r)=>{const o=new Date(u);o.setMonth(o.getMonth()+r);const d=o.getMonth(),h=o.getFullYear(),m=new Date(h,d,1),E=new Date(h,d+1,0).getDate(),v=t.settings.iso8601?(0!==m.getDay()?m.getDay():7)-1:m.getDay();t.settings.selection.day&&i.classList.add(t.CSSClasses.daysSelecting),i.textContent="",((t,e,a,u,i)=>{let r=new Date(a,u,0).getDate()-(i-1);const o=0===u?a-1:a,d=0===u?12:u<10?`0${u}`:u;for(let h=i;h>0;h--,r++){const m=`${o}-${d}-${r}`,E=fu(m).getDay();cM(t,a,e,r,E,m,!0,t.CSSClasses.dayBtnPrev)}})(t,i,h,d,v),((t,e,a,u,i)=>{for(let r=1;r<=a;r++){const o=new Date(u,i,r),d=Os(o),h=o.getDay();cM(t,u,e,r,h,d,!1,null)}})(t,i,E,h,d),((t,e,a,u,i,r)=>{const o=r+a,d=7*Math.ceil(o/7)-o,h=i+1===12?u+1:u,m=i+1===12?"01":i+2<10?`0${i+2}`:i+2;for(let E=1;E<=d;E++){const v=`${h}-${m}-${E<10?`0${E}`:String(E)}`,k=fu(v).getDay();cM(t,u,e,E,k,v,!0,t.CSSClasses.dayBtnNext)}})(t,i,E,h,d,v),((t,e,a,u,i)=>{if(!t.settings.visibility.weekNumbers)return;u.textContent="";const r=document.createElement("b");r.className=t.CSSClasses.weekNumbersTitle,r.innerText="#",u.appendChild(r);const o=document.createElement("div");o.className=t.CSSClasses.weekNumbersContent,u.appendChild(o);const d=document.createElement("button");d.type="button",d.className=t.CSSClasses.weekNumber;const h=i.querySelectorAll(`.${t.CSSClasses.day}`),m=Math.ceil((e+a)/7);for(let E=0;E{var a;t.popups&&(null==(a=Object.entries(t.popups))||a.forEach(([u,i])=>((t,e,a,u)=>{const i=a.querySelector(`[data-calendar-day="${t}"]`);i&&(e?.modifier&&i.classList.add(...e.modifier.trim().split(" ")),e?.html&&(i.parentElement.innerHTML+=`
${e.html}
`))})(u,i,e,t.CSSClasses.dayPopup)))})(t,i)})},g7=t=>{var e,a;const u=null==(e=t.HTMLElement)?void 0:e.querySelectorAll("[data-calendar-selected-month]"),i=null==(a=t.HTMLElement)?void 0:a.querySelectorAll("[data-calendar-selected-year]");if(!u?.[0]&&i?.[0])return;const r=new Date(t.selectedYear,t.selectedMonth,1);u?.forEach((o,d)=>((t,e,a,u)=>{const i=new Date(u.setMonth(t.selectedMonth+a)).getMonth(),r=!1===t.settings.selection.month||"only-arrows"===t.settings.selection.month;e.tabIndex=r?-1:0,e.classList.toggle(t.CSSClasses.monthDisabled,r),e.setAttribute("data-calendar-selected-month",String(i)),e.innerText=t.locale.months[i]})(t,o,d,r)),i?.forEach((o,d)=>((t,e,a,u)=>{const i=new Date(u.setFullYear(t.selectedYear,t.selectedMonth+a)).getFullYear(),r=!1===t.settings.selection.year||"only-arrows"===t.settings.selection.year;e.tabIndex=r?-1:0,e.classList.toggle(t.CSSClasses.yearDisabled,r),e.setAttribute("data-calendar-selected-year",String(i)),e.innerText=String(i)})(t,o,d,r))},hM=(t,e)=>{const a=fu(Os(new Date(t.selectedYear,t.selectedMonth,1)));({prev:()=>a.setMonth(a.getMonth()-t.jumpMonths),next:()=>a.setMonth(a.getMonth()+t.jumpMonths)})[e](),[t.selectedMonth,t.selectedYear]=[a.getMonth(),a.getFullYear()],g7(t),dM(t),E7(t)},q0e=Object.freeze(Object.defineProperty({__proto__:null,ArrowNext:t=>``,ArrowPrev:t=>``,ControlTime:t=>t.settings.selection.time?`
`:"",Days:t=>`
`,Month:t=>``,Months:t=>`
`,Week:t=>`
`,WeekNumbers:t=>t.settings.visibility.weekNumbers?`
`:"",Year:t=>``,Years:t=>`
`},Symbol.toStringTag,{value:"Module"})),w2=(t,e)=>e.replace(/[\n\t]/g,"").replace(/<#(?!\/?Multiple)(.*?)>/g,(a,u)=>{const i=(t=>q0e[t])(u.replace(/[/\s\n\t]/g,"")),r=i?i(t):"";return t.sanitizer(r)}).replace(/[\n\t]/g,""),mM=(t,e)=>{const{HTMLElement:a,CSSClasses:u,DOMTemplates:i,type:r,currentType:o,correctMonths:d}=t,h=(E,v)=>{if(!e)return;const k=a.querySelector(`.${u.controls}`);k&&a.removeChild(k),a.querySelector(`.${u.grid}`).classList.add(u.gridDisabled);const x=e.closest(`.${u.column}`);x.classList.add(E),x.innerHTML=w2(t,v)},m={default:()=>{a.classList.add(u.calendarDefault),a.classList.remove(u.calendarMonth,u.calendarYear),a.innerHTML=w2(t,i.default)},multiple:()=>{d&&(a.classList.add(u.calendarMultiple),a.classList.remove(u.calendarMonth,u.calendarYear),a.innerHTML=((t,e)=>e.replace(/<#Multiple>(.*?)<#\/Multiple>/g,(a,u)=>{let i="";for(let r=0;r{"multiple"!==r?(a.classList.add(u.calendarMonth),a.classList.remove(u.calendarDefault,u.calendarYear),a.innerHTML=w2(t,i.month)):h(u.columnMonth,i.month)},year:()=>{"multiple"!==r?(a.classList.add(u.calendarYear),a.classList.remove(u.calendarDefault,u.calendarMonth),a.innerHTML=w2(t,i.year)):h(u.columnYear,i.year)}};a.classList.add(u.calendar),m[o]()},X0e=(t,e,a,u,i)=>{const r=e.cloneNode(!1);return r.className=`${t.CSSClasses.yearsYear}${a===i?` ${t.CSSClasses.yearsYearSelected}`:u?` ${t.CSSClasses.yearsYearDisabled}`:""}`,r.dataset.calendarYear=String(i),r.title=String(i),r.innerText=String(i),u&&(r.tabIndex=-1),r},pM=(t,e)=>{const a=e?.dataset.calendarSelectedYear?Number(e?.dataset.calendarSelectedYear):t.selectedYear;t.currentType="year",mM(t,e),g7(t),dM(t);const u=t.HTMLElement.querySelector(`.${t.CSSClasses.years}`);if(!t.settings.selection.year||!u)return;u.classList.add(t.CSSClasses.yearsSelecting);const i="multiple"!==t.type||t.selectedYear===a?0:1,r=document.createElement("button");r.type="button";for(let o=t.viewYear-7;ot.dateMax.getFullYear(),h=X0e(t,r,a,d,o);u.appendChild(h),t.actions.getYears&&t.actions.getYears(o,h,t)}},cO=t=>`${t.charAt(0).toUpperCase()}${t.substring(1,t.length)}`.replace(/\./,""),tse=(t,e)=>{const a=new Date(`1978-01-0${e+1}T00:00:00.000Z`).toLocaleString(t.settings.lang,{weekday:"short",timeZone:"UTC"});t.locale.weekday.push(cO(a))},use=(t,e)=>{const a=new Date(`1978-${e+1<=9?`0${e+1}`:e+1}-01T00:00:00.000Z`).toLocaleString(t.settings.lang,{month:"long",timeZone:"UTC"});t.locale.months.push(cO(a))},hO=t=>{if("multiple"!==t.type)return 0;const e=t.HTMLElement.querySelectorAll(`.${t.CSSClasses.column}`),a=Array.from(e).findIndex(u=>u.classList.contains(`${t.CSSClasses.columnMonth}`));return a>0?a:0},nse=(t,e,a,u,i,r)=>{const o=e.cloneNode(!1);return o.className=`${t.CSSClasses.monthsMonth}${a===r?` ${t.CSSClasses.monthsMonthSelected}`:i?` ${t.CSSClasses.monthsMonthDisabled}`:""}`,o.title=u,o.innerText=`${t.settings.visibility.monthShort?u.substring(0,3):u}`,o.dataset.calendarMonth=String(r),i&&(o.tabIndex=-1),o},mO=(t,e)=>{var a,u;const i=e?.dataset.calendarSelectedMonth?Number(e.dataset.calendarSelectedMonth):t.selectedMonth,r=null==(a=e?.closest(`.${t.CSSClasses.column}`))?void 0:a.querySelector(`.${t.CSSClasses.year}`),o=r?Number(r.dataset.calendarSelectedYear):t.selectedYear;t.currentType="month",mM(t,e),g7(t);const d=null==(u=t.HTMLElement)?void 0:u.querySelector(`.${t.CSSClasses.months}`);if(!t.settings.selection.month||!d)return;d.classList.add(t.CSSClasses.monthsSelecting);const h=t.jumpMonths>1?t.locale.months.map((E,v)=>i-t.jumpMonths*v).concat(t.locale.months.map((E,v)=>i+t.jumpMonths*v)).filter(E=>E>=0&&E<=12):Array.from(Array(12).keys()),m=document.createElement("button");m.type="button";for(let E=0;E<12;E++){const v=t.locale.months[E],k=Et.dateMax.getMonth()+hO(t)&&o>=t.dateMax.getFullYear()||E!==i&&!h.includes(E),x=nse(t,m,i,v,k,E);d.appendChild(x),t.actions.getMonths&&t.actions.getMonths(E,x,t)}},EM=(t,e)=>t&&e?{0:{AM:"00",PM:"12"},1:{AM:"01",PM:"13"},2:{AM:"02",PM:"14"},3:{AM:"03",PM:"15"},4:{AM:"04",PM:"16"},5:{AM:"05",PM:"17"},6:{AM:"06",PM:"18"},7:{AM:"07",PM:"19"},8:{AM:"08",PM:"20"},9:{AM:"09",PM:"21"},10:{AM:"10",PM:"22"},11:{AM:"11",PM:"23"},12:{AM:"12",PM:"12"}}[Number(t)][e]:"",v7=(t,e,a)=>t.querySelector(`.${e}${a?` input[name="${a}"]`:""}`),pO=(t,e,a)=>{t.addEventListener("mouseover",()=>e.classList.add(a)),t.addEventListener("mouseout",()=>e.classList.remove(a))},_3=(t,e,a,u)=>{({hours:()=>{t.selectedHours=a},minutes:()=>{t.selectedMinutes=a}})[u](),t.selectedTime=`${t.selectedHours}:${t.selectedMinutes}${t.selectedKeeping?` ${t.selectedKeeping}`:""}`,t.actions.changeTime&&t.actions.changeTime(e,t),t.input&&t.HTMLInputElement&&t.actions.changeToInput&&t.actions.changeToInput(e,t)},EO=(t,e,a,u,i,r)=>{e.addEventListener("input",o=>{const d=o.target,h=Number(d.value),m=h<10?`0${h}`:`${h}`;if("hours"!==i||12!==r)return a.value=m,void _3(t,o,m,i);h0?(a.value=m,t.selectedKeeping="AM",u.innerText=t.selectedKeeping,_3(t,o,m,i)):(0===h?(t.selectedKeeping="AM",u.innerText="AM"):(t.selectedKeeping="PM",u.innerText="PM"),a.value=A2(d.value),_3(t,o,A2(d.value),i))})},gO=(t,e,a,u,i,r)=>{a.addEventListener("change",o=>{const d=o.target,h=Number(d.value),m=h<10?`0${h}`:`${h}`;"hours"===i&&12===r?d.value&&h<=r&&h>0?(d.value=m,e.value=EM(m,t.selectedKeeping),_3(t,o,m,i)):d.value&&h<24&&(h>r||0===h)?(0===h?(t.selectedKeeping="AM",u.innerText="AM"):(t.selectedKeeping="PM",u.innerText="PM"),d.value=A2(d.value),e.value=m,_3(t,o,A2(d.value),i)):d.value=t.selectedHours:d.value&&h<=r&&h>=0?(d.value=m,e.value=m,_3(t,o,m,i)):"hours"===i?d.value=t.selectedHours:"minutes"===i&&(d.value=t.selectedMinutes)})},ose=(t,e,a)=>{const u=24===a?23:a||12,i=v7(e,t.CSSClasses.timeRange,"hours"),r=v7(e,t.CSSClasses.timeRange,"minutes"),o=v7(e,t.CSSClasses.timeHours,"hours"),d=v7(e,t.CSSClasses.timeMinutes,"minutes"),h=e.querySelector(`.${t.CSSClasses.timeKeeping}`);pO(i,o,t.CSSClasses.isFocus),pO(r,d,t.CSSClasses.isFocus),EO(t,i,o,h,"hours",u),EO(t,r,d,h,"minutes",0),gO(t,i,o,h,"hours",u),gO(t,r,d,h,"minutes",59),h&&((t,e,a)=>{e.addEventListener("click",u=>{t.selectedKeeping=e.innerText.includes("AM")?"PM":"AM",e.innerText=t.selectedKeeping,a.value=EM(t.selectedHours,t.selectedKeeping),_3(t,u,t.selectedHours,"hours")})})(t,h,i)},vO=(t,e,a,u)=>``,bO=(t,e,a,u,i,r)=>``,kO=t=>{const e=[...t.locale.weekday];e[0]&&(t.settings.iso8601&&e.push(e.shift()),t.HTMLElement.querySelectorAll(`.${t.CSSClasses.week}`).forEach(a=>((t,e,a)=>{const u=document.createElement("b");e.textContent="";for(let i=0;i{b7.value=!0},check:()=>b7.value},DO=(t,e)=>xO.find(a=>{var u;return"system"!==a&&(null==(u=t.getAttribute(e))?void 0:u.includes(a))}),F3=(t,e)=>{t.dataset.calendarTheme=e},fO=(t,e)=>{var a;if(a=e,F3(t.HTMLElement,a.matches?"dark":"light"),"system"!==t.settings.visibility.theme||b7.check())return;const u=i=>{const r=document.querySelectorAll(`.${t.CSSClasses.calendar}`);r?.forEach(o=>F3(o,i.matches?"dark":"light"))};e.addEventListener?e.addEventListener("change",u):e.addListener(u),b7.set()},cse=(t,e)=>{const a=t.settings.visibility.themeDetect?document.querySelector(t.settings.visibility.themeDetect):null;if(!a)return void fO(t,e);const u=t.settings.visibility.themeDetect.replace(/^.*\[(.+)\]/g,(r,o)=>o),i=DO(a,u);i?(F3(t.HTMLElement,i),((t,e,a)=>{new MutationObserver(u=>{for(let i=0;i{const e={default:()=>{kO(t),E7(t)},multiple:()=>{kO(t),E7(t)},month:()=>mO(t),year:()=>pM(t)};(t=>{if(!xO.includes(t.settings.visibility.theme))throw new Error(Fv_incorrectTheme);"not all"!==window.matchMedia("(prefers-color-scheme)").media?{light:()=>F3(t.HTMLElement,"light"),dark:()=>F3(t.HTMLElement,"dark"),system:()=>cse(t,window.matchMedia("(prefers-color-scheme: dark)"))}[t.settings.visibility.theme]():F3(t.HTMLElement,"light")})(t),(t=>{if("define"!==t.settings.lang||!t.locale.weekday[6]||!t.locale.months[11]){if("define"===t.settings.lang)throw new Error(Fv_notLocale);t.locale.weekday=[],t.locale.months=[];for(let e=0;e<7;e++)tse(t,e);for(let e=0;e<12;e++)use(t,e)}})(t),mM(t),g7(t),dM(t),(t=>{const e=t.HTMLElement.querySelector(`.${t.CSSClasses.time}`);if(!e)return;const a=!0===t.settings.selection.time?12:t.settings.selection.time,u="range"===t.settings.selection.controlTime,[i,r]=[0,23],[o,d]=[0,59];e.innerHTML=t.sanitizer(`
${vO("hours",t.CSSClasses.timeHours,t.selectedHours,u)}${vO("minutes",t.CSSClasses.timeMinutes,t.selectedMinutes,u)}${12===a?``:""}
${bO("hours",t.CSSClasses.timeRange,i,r,t.settings.selection.stepHours,t.selectedKeeping?EM(t.selectedHours,t.selectedKeeping):t.selectedHours)}${bO("minutes",t.CSSClasses.timeRange,o,d,t.settings.selection.stepMinutes,t.selectedMinutes)}
`),ose(t,e,a)})(t),e[t.currentType]()},Qa={self:null,rangeMin:void 0,rangeMax:void 0},CO=()=>{var t;if(null==(t=Qa.self)||!t.HTMLElement)return;const{CSSClasses:e}=Qa.self;Qa.self.HTMLElement.querySelectorAll(`.${Qa.self.CSSClasses.dayBtnHover}`).forEach(a=>{var u;a.classList.remove(Qa.self.CSSClasses.dayBtnHover),null==(u=a.parentElement)||u.classList.remove(e.dayHoverIntermediate,e.dayHoverFirst,e.dayHoverLast)})},mse=(t,e,a)=>{var u,i,r;if(null==(u=Qa.self)||!u.selectedDates)return;const o=Os(t),{CSSClasses:d}=Qa.self;if(null!=(i=Qa.self.rangeDisabled)&&i.includes(o))return;const h=null==(r=Qa.self.HTMLElement)?void 0:r.querySelectorAll(`[data-calendar-day="${o}"]`);h?.forEach(m=>{var E;m.classList.add(d.dayBtnHover),null==(E=m.parentElement)||E.classList.add(d.dayHoverIntermediate)}),e?.forEach(m=>{var E;return null==(E=m.parentElement)?void 0:E.classList.add(d.dayHoverFirst)}),a?.forEach(m=>{var E;return null==(E=m.parentElement)?void 0:E.classList.add(d.dayHoverLast)})},gM=t=>{var e;if(!t.target||null==(e=Qa.self)||!e.selectedDates)return;if(!t.target.closest(`.${Qa.self.CSSClasses.days}`))return void CO();const a=t.target.closest("[data-calendar-day]");if(!a)return;const u=a.dataset.calendarDay,i=fu(Qa.self.selectedDates[0]),r=fu(u),o=Qa.self.HTMLElement.querySelectorAll(`[data-calendar-day="${Qa.self.selectedDates[0]}"]`),d=Qa.self.HTMLElement.querySelectorAll(`[data-calendar-day="${u}"]`),[h,m]=i{Qa.self&&"Escape"===t.key&&(Qa.self.selectedDates=[],Qa.self.HTMLElement.removeEventListener("mousemove",gM),document.removeEventListener("keydown",vM),B2(Qa.self))},yO=(t,e)=>{var a;if(e){const u=1===t.selectedDates.length&&t.selectedDates[0].includes(e);t.selectedDates=u&&!t.settings.selection.cancelableDay?[e,e]:u&&t.settings.selection.cancelableDay?[]:t.selectedDates.length>1?[e]:[...t.selectedDates,e],null==(a=t.selectedDates)||a.sort((i,r)=>+new Date(i)-+new Date(r))}t.settings.range.disableGaps&&(Qa.rangeMin=Qa.rangeMin?Qa.rangeMin:t.rangeMin,Qa.rangeMax=Qa.rangeMax?Qa.rangeMax:t.rangeMax),Qa.self=t,{set:()=>{t.HTMLElement.addEventListener("mousemove",gM),document.addEventListener("keydown",vM),t.settings.range.disableGaps&&(()=>{var t,e,a;if(null==(e=null==(t=Qa.self)?void 0:t.selectedDates)||!e[0]||!Qa.self.rangeDisabled||(null==(a=Qa.self.rangeDisabled)?void 0:a.length)<2)return;const u=fu(Qa.self.selectedDates[0]),[i,r]=Qa.self.rangeDisabled.map(o=>fu(o)).reduce(([o,d],h)=>[u>=h?h:o,u{const[u,i]=[t.selectedDates[0],t.selectedDates[t.selectedDates.length-1]];t.selectedDates=t.selectedDates[0]!==t.selectedDates[t.selectedDates.length-1]?t.settings.range.edgesOnly?[u,i]:_v([`${u}:${i}`]):[t.selectedDates[0],t.selectedDates[0]],t.HTMLElement.removeEventListener("mousemove",gM),document.removeEventListener("keydown",vM),t.settings.range.disableGaps&&Qa.self&&(Qa.self.rangeMin=Qa.rangeMin,Qa.self.rangeMax=Qa.rangeMax)}}[1===t.selectedDates.length?"set":"reset"]()},_O=(t,e,a)=>{if(!e.dataset.calendarDay)return;const u=e.dataset.calendarDay,i=e.classList.contains(t.CSSClasses.dayBtnSelected);if(i&&!t.settings.selection.cancelableDay)return;let r=!0;void 0!==t.toggleSelected&&(r="function"==typeof t.toggleSelected?t.toggleSelected(t):t.toggleSelected),i&&!r||(t.selectedDates=i?t.selectedDates.filter(o=>o!==u):a?[...t.selectedDates,u]:[u])},FO=(t,e,a,u,i)=>{const r=t.HTMLElement.querySelectorAll(`.${t.CSSClasses.column}`),o=Array.from(r).findIndex(h=>h.classList.contains(e)),d=Number(r[o].querySelector(`.${a}`).getAttribute(i));return"month"===t.currentType&&o>=0?u-o:"year"===t.currentType&&t.selectedYear!==d?u-1:u},AO=(t,e,a,u)=>{if(!t.settings.selection[a])return;const i=e.target,r=E=>i.closest(`.${E}`),o=r(u.header),d=r(u.item),h=r(t.CSSClasses.grid),m=r(t.CSSClasses.column);t.currentType!==a&&o?{year:()=>pM(t,i),month:()=>mO(t,i)}[a]():d?((t,e,a,u,i)=>{const r={year:()=>{var o,d;return null==(d=(o=t.actions).clickYear)?void 0:d.call(o,e,t)},month:()=>{var o,d;return null==(d=(o=t.actions).clickMonth)?void 0:d.call(o,e,t)}};({year:()=>{if("multiple"===t.type){const o=FO(t,t.CSSClasses.columnYear,t.CSSClasses.year,Number(i.dataset.calendarYear),"data-calendar-selected-year"),d=t.selectedMontht.dateMax.getMonth()&&o>=t.dateMax.getFullYear(),m=ot.dateMax.getFullYear();d||m?(t.selectedYear=t.dateMin.getFullYear(),t.selectedMonth=t.dateMin.getMonth()):h||E?(t.selectedYear=t.dateMax.getFullYear(),t.selectedMonth=t.dateMax.getMonth()):t.selectedYear=o}else t.selectedYear=Number(i.dataset.calendarYear)},month:()=>{if("multiple"===t.type){const o=FO(t,t.CSSClasses.columnMonth,t.CSSClasses.month,Number(i.dataset.calendarMonth),"data-calendar-selected-month"),d=i.closest(`.${u.column}`).querySelector(`.${t.CSSClasses.year}`);t.selectedYear=Number(d.dataset.calendarSelectedYear);const h=ot.dateMax.getMonth()&&t.selectedYear>=t.dateMax.getFullYear();t.selectedMonth=h?t.dateMin.getMonth():m?t.dateMax.getMonth():o}else t.selectedMonth=Number(i.dataset.calendarMonth)}})[a](),r[a](),t.currentType=t.type,B2(t)})(t,e,a,u,d):(t.currentType===a&&o||"multiple"===t.type&&t.currentType===a&&h&&!m)&&(t.currentType=t.type,B2(t))},wO=t=>{const e=a=>{((t,e)=>{const a=e.target.closest(`.${t.CSSClasses.arrow}`);a&&(["default","multiple"].includes(t.currentType)?hM(t,a.dataset.calendarArrow):"year"===t.currentType&&void 0!==t.viewYear&&(t.viewYear+={prev:-15,next:15}[a.dataset.calendarArrow],pM(t,e.target)),t.actions.clickArrow&&t.actions.clickArrow(e,t))})(t,a),((t,e)=>{var a;if(!t.settings.visibility.weekNumbers||!t.actions.clickWeekNumber)return;const u=e.target.closest(`.${t.CSSClasses.weekNumber}`),i=null==(a=t.HTMLElement)?void 0:a.querySelectorAll("[data-calendar-week-number]");if(!u||!i)return;const r=Number(u.innerText),o=Number(u.dataset.calendarYearWeek),d=Array.from(i).filter(h=>Number(h.dataset.calendarWeekNumber)===r);t.actions.clickWeekNumber(e,r,d,o,t)})(t,a),((t,e)=>{var a;const u=e.target,i=h=>u.closest(`.${h}`),r=i(t.CSSClasses.dayBtn);if(!t.settings.selection.day||!["single","multiple","multiple-ranged"].includes(t.settings.selection.day)||!r)return;({single:()=>_O(t,r,!1),multiple:()=>_O(t,r,!0),"multiple-ranged":()=>yO(t,r.dataset.calendarDay)})[t.settings.selection.day](),null==(a=t.selectedDates)||a.sort((h,m)=>+new Date(h)-+new Date(m)),t.actions.clickDay&&t.actions.clickDay(e,t),t.input&&t.HTMLInputElement&&t.HTMLElement&&t.actions.changeToInput&&t.actions.changeToInput(e,t);const o=i(t.CSSClasses.dayBtnPrev),d=i(t.CSSClasses.dayBtnNext);({prev:()=>hM(t,"prev"),next:()=>hM(t,"next"),default:()=>E7(t)})[o?"prev":d?"next":"default"]()})(t,a),AO(t,a,"month",{header:t.CSSClasses.month,item:t.CSSClasses.monthsMonth,column:t.CSSClasses.columnMonth}),AO(t,a,"year",{header:t.CSSClasses.year,item:t.CSSClasses.yearsYear,column:t.CSSClasses.columnYear})};return t.HTMLElement.addEventListener("click",e),()=>t.HTMLElement.removeEventListener("click",e)},BO=(t,{year:e,month:a,dates:u,holidays:i,time:r}={})=>{var o;const d=rO({},t.settings.selected);t.settings.selected.year=e?d.year:t.selectedYear,t.settings.selected.month=a?d.month:t.selectedMonth,t.settings.selected.holidays=i?d.holidays:t.selectedHolidays,t.settings.selected.time=r?d.time:t.selectedTime,t.settings.selected.dates="only-first"===u&&null!=(o=t.selectedDates)&&o[0]?[t.selectedDates[0]]:!0===u?d.dates:t.selectedDates,lO(t),B2(t),t.settings.selected=d,"multiple-ranged"===t.settings.selection.day&&u&&yO(t)};function SO(t){if(!t||!t.getBoundingClientRect)return;const e=t.getBoundingClientRect(),a=document.documentElement;return{bottom:e.bottom,right:e.right,top:e.top+window.pageYOffset-a.clientTop,left:e.left+window.pageXOffset-a.clientLeft}}function zO(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function kse(t){var e,a;let u=0,i=0,r=0,o=0;const d=function bse(){return{left:window.pageXOffset||document.documentElement.scrollLeft||0,top:window.pageYOffset||document.documentElement.scrollTop||0}}(),h=SO(t),{vh:m,vw:E}=zO(),v=d.top,k=d.left;if(h){const x=null!=(e=h.top)?e:0,f=null!=(a=h.left)?a:0;i=x-v,r=f-k,u=m-(x-v+t.clientHeight),o=E-(f-k+t.clientWidth)}return{top:i,bottom:u,left:r,right:o}}function Dse(t,e){let a="left";if(e&&t){const{canShow:u,parentPositions:i}=function xse(t,e,a=5){const u={top:!0,bottom:!0,left:!0,right:!0},i=[];if(e&&t){const{bottom:r,top:o}=kse(t),{top:d,left:h}=SO(t),{height:m,width:E}=e.getBoundingClientRect(),{vh:v,vw:k}=zO(),x={x:k/2,y:v/2};dx.y&&i.push("bottom"),hx.x&&i.push("right"),m>o-a&&(u.top=!1),m>r-a&&(u.bottom=!1),E>h&&(u.left=!1),k-h{if(t){const i="auto"===a?Dse(t,e):a,r={top:-e.offsetHeight,bottom:t.offsetHeight,left:0,center:t.offsetWidth/2-e.offsetWidth/2,right:t.offsetWidth-e.offsetWidth},o=Array.isArray(i)?i[0]:"bottom",d=Array.isArray(i)?i[1]:i;e.classList.add("bottom"===o?u.calendarToInputBottom:u.calendarToInputTop);const h=t.getBoundingClientRect(),m=window.scrollX||document.documentElement.scrollLeft,E=window.scrollY||document.documentElement.scrollTop,v=h.top+E+r[o],k=h.left+m+r[d];Object.assign(e.style,{left:`${k}px`,top:`${v}px`})}},Cse=t=>(t.HTMLOriginalElement=t.HTMLElement.cloneNode(!0),t.isInit=!0,t.input?(t=>{let e=!0;const a=[];t.HTMLInputElement=t.HTMLElement;const u=()=>bM(t.HTMLInputElement,t.HTMLElement,t.settings.visibility.positionToInput,t.CSSClasses),i=r=>{var o;t&&r.target!==t.HTMLInputElement&&(null==(o=t.HTMLElement)||!o.contains(r.target))&&(t.HTMLInputElement&&t.HTMLElement&&t.hide(),window.removeEventListener("resize",u),document.removeEventListener("click",i,{capture:!0}))};return t.HTMLInputElement.addEventListener("click",()=>{e?a.push((()=>{const r=document.createElement("div");return r.className=`${t.CSSClasses.calendar} ${t.CSSClasses.calendarToInput} ${t.CSSClasses.calendarHidden}`,t.HTMLElement=r,document.body.appendChild(t.HTMLElement),e=!1,setTimeout(()=>{bM(t.HTMLInputElement,r,t.settings.visibility.positionToInput,t.CSSClasses),t.show()},0),BO(t,{year:!0,month:!0,dates:!0,holidays:!0,time:!0}),t.actions.initCalendar&&t.actions.initCalendar(t),wO(t)})()):(bM(t.HTMLInputElement,t.HTMLElement,t.settings.visibility.positionToInput,t.CSSClasses),t.show()),window.addEventListener("resize",u),document.addEventListener("click",i,{capture:!0})}),()=>{a.forEach(r=>r())}})(t):(lO(t),B2(t),t.actions.initCalendar&&t.actions.initCalendar(t),wO(t)));function kM(t,...e){const a=i=>i&&"object"==typeof i&&!Array.isArray(i);if(!e.length)return t;const u=e.shift();return a(t)&&a(u)&&Object.keys(u).forEach(i=>{a(u[i])?(t[i]||Object.assign(t,{[i]:{}}),kM(t[i],u[i])):Object.assign(t,{[i]:u[i]})}),kM(t,...e)}function wse(t,e,a){t.settings=kM(t.settings,{[e]:a})}class MO extends f0e{constructor(e,a){if(super(),ja(this,"init",()=>Cse(this)),ja(this,"update",i=>((t,{year:e,month:a,dates:u,holidays:i,time:r}={})=>{if(!t.isInit)throw new Error(Fv_notInit);BO(t,{year:e,month:a,dates:u,holidays:i,time:r}),t.actions.updateCalendar&&t.actions.updateCalendar(t)})(this,i)),ja(this,"destroy",()=>(t=>{var e,a,u,i,r,o;if(!t.isInit)throw new Error(Fv_notInit);t.input?(null==(a=null==(e=t.HTMLElement)?void 0:e.parentElement)||a.removeChild(t.HTMLElement),null==(i=null==(u=t.HTMLInputElement)?void 0:u.replaceWith)||i.call(u,t.HTMLOriginalElement),t.HTMLInputElement=void 0):null==(o=null==(r=t.HTMLElement)?void 0:r.replaceWith)||o.call(r,t.HTMLOriginalElement),t.HTMLElement=t.HTMLOriginalElement,t.actions.destroyCalendar&&t.actions.destroyCalendar(t)})(this)),ja(this,"show",()=>(t=>{t.currentType?(t.HTMLElement.classList.remove(t.CSSClasses.calendarHidden),t.actions.showCalendar&&t.actions.showCalendar(t)):t.HTMLElement.click()})(this)),ja(this,"hide",()=>(t=>{t.currentType&&(t.HTMLElement.classList.add(t.CSSClasses.calendarHidden),t.actions.hideCalendar&&t.actions.hideCalendar(t))})(this)),ja(this,"changeSetting",(i,r)=>wse(this,i,r)),this.HTMLElement="string"==typeof e?document.querySelector(e):e,!this.HTMLElement)throw new Error(Fv_notFoundSelector(e));if(!a)return;const u=(i,r)=>{Object.keys(r).forEach(o=>{"object"!=typeof i[o]||"object"!=typeof r[o]||r[o]instanceof Date?i[o]=r[o]:u(i[o],r[o])})};u(this,a)}}class LO{constructor(e){this.translaterService=e,this._clearFilterTriggered=!1,this._lastClickIsDate=!1,this._shouldTriggerQuery=!0,this.hasTimePicker=!1,this.inputFilterType="range",this.searchTerms=[],this._bindEventService=new wi}get gridOptions(){return this.grid?.getOptions()??{}}get columnFilter(){return this.columnDef?.filter||{}}get currentDateOrDates(){return this._currentDateOrDates}get defaultOperator(){return"compound"===this.inputFilterType?re.empty:this.gridOptions.defaultFilterRangeOperator||re.rangeInclusive}get pickerOptions(){return this._pickerOptions||{}}get filterOptions(){return{...this.gridOptions.defaultFilterOptions?.date,...this.columnFilter?.filterOptions}}get operator(){return"compound"===this.inputFilterType?this._operator||this.columnFilter.operator||this.defaultOperator:this.columnFilter?.operator??this.defaultOperator}set operator(e){"compound"===this.inputFilterType?this._operator=e:this.columnFilter&&(this.columnFilter.operator=e)}init(e){if(!e)throw new Error('[Slickgrid-Universal] A filter must always have an "init()" with valid arguments.');this.grid=e.grid,this.callback=e.callback,this.columnDef=e.columnDef,"compound"===this.inputFilterType&&(this.operator=e.operator||""),this.searchTerms=e?.searchTerms??[],this.filterContainerElm=e.filterContainerElm;const a="compound"===this.inputFilterType?Array.isArray(this.searchTerms)&&this.searchTerms.length>=0?this.searchTerms[0]:"":this.searchTerms;this._filterElm=this.createDomFilterElement(a),this.searchTerms.length&&this._filterElm.classList.add("filled"),this._selectOperatorElm&&this._bindEventService.bind(this._selectOperatorElm,"change",this.onTriggerEvent.bind(this)),this._bindEventService.bind(document.body,"keydown",u=>{("Escape"===u.key||"Tab"===u.key)&&this.hide()}),this._bindEventService.bind(this._dateInputElm,"keydown",u=>{"Backspace"===u.key&&this.clear(!0)})}clear(e=!0){this.calendarInstance&&(this._clearFilterTriggered=!0,this._shouldTriggerQuery=e,this.searchTerms=[],this._selectOperatorElm&&(this._selectOperatorElm.selectedIndex=0),this.calendarInstance.input&&(this.calendarInstance.settings.selected.dates=[],this._dateInputElm.value="")),this.onTriggerEvent(new Event("keyup")),this._filterElm.classList.remove("filled")}destroy(){this._bindEventService.unbindAll(),this.calendarInstance?.destroy(),Ct(this.filterContainerElm),this.filterContainerElm?.remove(),this._selectOperatorElm?.remove(),this._filterElm?.remove()}hide(){"function"==typeof this.calendarInstance?.hide&&this.calendarInstance.hide()}show(){"function"==typeof this.calendarInstance?.show&&this.calendarInstance.show()}getValues(){return this._currentDateOrDates}setValues(e,a){let u;"compound"===this.inputFilterType?u=Array.isArray(e)?e[0]:e:"string"==typeof e||Array.isArray(e)&&"string"==typeof e[0]&&e[0].indexOf("..")>0?u="string"==typeof e?[e]:e[0].split(".."):Array.isArray(e)&&(u=e),this.calendarInstance&&void 0!==u&&(p7(this._dateInputElm,this.calendarInstance,u,this.columnDef,this.columnFilter),this._currentDateOrDates=e&&u?u:void 0);const i=this.getValues()||[];if(this.getValues()||Array.isArray(i)&&i.length>0&&e?this._filterElm.classList.add("filled"):this._filterElm.classList.remove("filled"),this.operator=a||this.defaultOperator,a&&this._selectOperatorElm){const r=xv(this.operator);this._selectOperatorElm.value=r}}buildDatePickerInput(e){const a=this.columnDef?.id??"",u=this.columnFilter.type||this.columnDef.type||F.dateIso,i=this.columnDef.outputType||this.columnFilter.type||this.columnDef.type||F.dateUtc,r=el(i),o=this.columnFilter.type||this.columnDef.type||F.dateIso;r&&"range"!==this.inputFilterType&&("ISO8601"===r||r.toLowerCase().includes("h"))&&(this.hasTimePicker=!0);const d=el(this.hasTimePicker?F.dateTimeIsoAM_PM:F.dateIso),h=(this.filterOptions?.locale??this.translaterService?.getCurrentLanguage?.())||this.gridOptions.locale||"en";let m;"compound"===this.inputFilterType?e&&(m=e,this._currentDateOrDates=e):("string"==typeof e||Array.isArray(e)&&"string"==typeof e[0]&&e[0].indexOf("..")>0?m="string"==typeof e?[e]:e[0].split(".."):Array.isArray(e)&&(m=e),Array.isArray(m)&&(this._currentDateOrDates=m,this._currentDateStrings=m.map(k=>js(k,void 0,o))));const E={input:!0,jumpToSelectedDate:!0,type:"range"===this.inputFilterType?"multiple":"default",sanitizer:k=>this.grid.sanitizeHtmlString(k),toggleSelected:!1,actions:{clickDay:k=>{this._lastClickIsDate=!0},changeToInput:(k,x)=>{if(x.HTMLInputElement){let f=[],C="",A="";if(x.selectedDates[1]){x.selectedDates.sort((L,M)=>+new Date(L)-+new Date(M)),C=x.selectedDates[0],A=x.selectedDates[x.selectedDates.length-1];const w=ai(x.selectedDates[0],r,"en-US"),z=ai(A,r,"en-US");x.HTMLInputElement.value=`${w} \u2014 ${z}`,f=[C,A]}else x.selectedDates[0]?(C=x.selectedDates[0],x.HTMLInputElement.value=js(C,F.dateIso,i),f=x.selectedDates):x.HTMLInputElement.value="";if(this.hasTimePicker&&C){const w=h7(C,d);w.setHours(+(x.selectedHours||0)),w.setMinutes(+(x.selectedMinutes||0)),x.HTMLInputElement.value=js(w,void 0,i),f=[w]}if("compound"===this.inputFilterType?this._currentValue=js(f[0],void 0,u):Array.isArray(f)&&(this._currentDateStrings=f.map(w=>js(w,void 0,u)),this._currentValue=this._currentDateStrings.join("..")),this._currentDateOrDates=f.map(w=>w instanceof Date?w:h7(w,d)),this._currentValue){const w=this.hasTimePicker?new Event("keyup"):void 0;this.onTriggerEvent(w)}"range"===this.inputFilterType&&x.selectedDates.length<2&&(this._lastClickIsDate=!1),this._lastClickIsDate&&(x.hide(),this._lastClickIsDate=!1)}}},settings:{lang:h,iso8601:!1,visibility:{theme:this.gridOptions?.darkMode?"dark":"light",positionToInput:"auto",weekend:!1}}};"range"===this.inputFilterType&&(E.type="multiple",E.months=2,E.jumpMonths=2,E.settings={...E.settings,range:{edgesOnly:!0},selection:{day:"multiple-ranged"},visibility:{...E.settings?.visibility,daysOutside:!1}}),this.hasTimePicker&&(E.settings.selection??={},E.settings.selection.time=24),this._pickerOptions=su(!0,{},E,{settings:this.filterOptions});let v=this.gridOptions?.defaultFilterPlaceholder??"";this.columnFilter?.placeholder&&(v=this.columnFilter.placeholder),this._dateInputElm=T("input",{type:"text",className:"form-control date-picker",placeholder:v,readOnly:!0,dataset:{input:"",columnid:`${a}`}}),this.calendarInstance=new MO(this._dateInputElm,this._pickerOptions),this.calendarInstance.init(),this._pickerOptions.settings?.selected?.dates&&(m=this._pickerOptions.settings.selected.dates),m&&p7(this._dateInputElm,E,m,this.columnDef,this.columnFilter)}getOperatorOptionValues(){return this.columnFilter?.compoundOperatorList?this.columnFilter.compoundOperatorList:lM(this.gridOptions,this.translaterService)}createDomFilterElement(e){const a=this.columnDef?.id??"";if(Ct(this.filterContainerElm),this.buildDatePickerInput(e),"range"===this.inputFilterType){const u=T("div",{className:`date-picker form-group search-filter filter-${a}`});return Array.isArray(e)&&e.length>0&&""!==e[0]&&(this._currentDateOrDates=e,this._currentValue=e[0]),u.appendChild(this._dateInputElm),u&&this.filterContainerElm.appendChild(u),u}{this._selectOperatorElm=rM(this.getOperatorOptionValues(),this.grid);const u=T("div",{className:`date-picker form-group search-filter filter-${a}`}),i=T("div",{className:"input-group date-picker"},u);if(T("div",{className:"input-group-addon input-group-prepend operator"},i).appendChild(this._selectOperatorElm),i.appendChild(this._dateInputElm),this.operator){const o=xv(this.operator);this._selectOperatorElm.value=o}return this._currentDateOrDates=e,this._currentValue=e,u&&this.filterContainerElm.appendChild(u),u}}onTriggerEvent(e){if(this._clearFilterTriggered)this.callback(e,{columnDef:this.columnDef,clearFilterTriggered:this._clearFilterTriggered,shouldTriggerQuery:this._shouldTriggerQuery}),this._filterElm.classList.remove("filled");else if("range"===this.inputFilterType)this._currentDateStrings?this._filterElm.classList.add("filled"):this._filterElm.classList.remove("filled"),this.callback(e,{columnDef:this.columnDef,searchTerms:this._currentDateStrings?this._currentDateStrings:[this._currentValue],operator:this.operator||"",shouldTriggerQuery:this._shouldTriggerQuery});else if("compound"===this.inputFilterType&&this._selectOperatorElm){const a=this._selectOperatorElm.value;this._currentValue?this._filterElm.classList.add("filled"):this._filterElm.classList.remove("filled"),(!(this.columnFilter.skipCompoundOperatorFilterWithNullInput??this.gridOptions.skipCompoundOperatorFilterWithNullInput??void 0===this.gridOptions.skipCompoundOperatorFilterWithNullInput)||void 0!==this._currentDateOrDates)&&this.callback(e,{columnDef:this.columnDef,searchTerms:this._currentValue?[this._currentValue]:null,operator:a||"",shouldTriggerQuery:this._shouldTriggerQuery})}this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0}}class TO{constructor(e){this.translaterService=e}filterCollection(e,a,u=E2.chain){let i=[];return Array.isArray(a)?(i=u===E2.merge?[]:[...e],a.forEach(r=>{if(u===E2.merge){const o=this.singleFilterCollection(e,r);i=Rj([...i,...o])}else i=this.singleFilterCollection(i,r)})):i=this.singleFilterCollection(e,a),i}singleFilterCollection(e,a){let u=[];if(a){const i=a.property,r=a.operator||re.equal,o=typeof a.value>"u"?"":a.value;switch(r){case re.equal:u=i?e.filter(d=>d[i]===o):e.filter(d=>d===o);break;case re.contains:u=i?e.filter(d=>-1!==d[i]?.toString().indexOf(o.toString())):e.filter(d=>null!=d&&-1!==d.toString().indexOf(o.toString()));break;case re.notContains:u=i?e.filter(d=>-1===d[i]?.toString().indexOf(o.toString())):e.filter(d=>null!=d&&-1===d.toString().indexOf(o.toString()));break;case re.notEqual:default:u=i?e.filter(d=>d[i]!==o):e.filter(d=>d!==o)}}return u}sortCollection(e,a,u,i){if(i&&(!this.translaterService||!this.translaterService.translate))throw new Error('[Slickgrid-Universal] requires a Translate Service to be installed and configured when the grid option "enableTranslate" is enabled.');let r=[];if(u)if(Array.isArray(u))r=a.sort((o,d)=>{for(let h=0,m=u.length;h{const v=i?this.translaterService?.translate&&this.translaterService.translate(m[o]||" "):m[o],k=i?this.translaterService?.translate&&this.translaterService.translate(E[o]||" "):E[o],x=yv(h,v,k,d,e);return x!==eu.neutral?x:eu.neutral})}else if(u&&!u.property){const o=u.sortDesc?eu.desc:eu.asc,d=u?.fieldType??e?.type??F.string;r=a.sort((h,m)=>{const E=i?this.translaterService?.translate&&this.translaterService.translate(h||" "):h,v=i?this.translaterService?.translate&&this.translaterService.translate(m||" "):m,k=yv(d,E,v,o,e);return k!==eu.neutral?k:eu.neutral})}return r}}function PO(t,e,a,u,i=!1,r,o){const d=a?.id??"",h=u.getOptions(),m=("editor"===t?a?.editor:a?.filter)??{},v=(m?.collectionOptions??{})?.separatorBetweenTextLabels??"",k=m?.enableTranslateLabel??!1,x=h?.enableTranslate??!1,f=m?.enableRenderHtml??!1,C=m?.customStructure?.label??"label",A=m?.customStructure?.labelPrefix??"labelPrefix",w=m?.customStructure?.labelSuffix??"labelSuffix",z=m?.customStructure?.optionLabel??"value",L=m?.customStructure?.value??"value",M=T("select",{className:"ms-filter search-filter"}),j="filter"===t?["search-filter",`filter-${d}`]:["select-editor",`editor-${d}`];M.classList.add(...j),M.multiple=i;const $=[];let oe=!1;return Array.isArray(e)&&(e.every(ee=>"number"==typeof ee||"string"==typeof ee)?e.forEach(ee=>{const ne={text:ee,value:ee};"filter"===t&&Array.isArray(o)&&(ne.selected=o.findIndex(Ne=>Ne===ee)>=0),$.push(ne),(ne.selected&&i||ne.selected&&!i&&""!==ee)&&(oe=!0)}):e.forEach(ee=>{if(void 0===ee||"object"==typeof ee&&void 0===ee[C]&&void 0===ee.labelKey)throw new Error("[Slickgrid-Universal] Select Filter/Editor collection with value/label (or value/labelKey when using Locale) is required to populate the Select list, for example:: { filter: model: Filters.multipleSelect, collection: [ { value: '1', label: 'One' } ]')");const ne=ee.labelKey||ee[C],Ne=(ee.labelKey||k&&r)&&ne&&x?r?.translate(ne||" "):ne;let Ie=ee[A]||"",Se=ee[w]||"",ga=ee.hasOwnProperty(z)?ee[z]:"";ga?.toString&&(ga=ga.toString().replace(/"/g,"'")),Ie=k&&r&&Ie&&"string"==typeof Ie?r.translate(Ie||" "):Ie,Se=k&&r&&Se&&"string"==typeof Se?r.translate(Se||" "):Se,ga=k&&r&&ga&&"string"==typeof ga?r.translate(ga||" "):ga;let ht=[Ie,"string"==typeof Ne||"number"==typeof Ne?Ne.toString():Ne,Se].filter(Ra=>Ra).join(v);const Oa={text:"",value:""};f&&(ht=u.sanitizeHtmlString(ht)),Oa.text=ht;let Pe=ee[L];null==Pe&&(Pe=""),"filter"===t&&Array.isArray(o)&&(Oa.selected=o.findIndex(Ra=>`${Ra}`==`${ee[L]}`)>=0),Oa.value=`${Pe??""}`,$.push(Oa),(Oa.selected&&i||Oa.selected&&!i&&""!==ee[L])&&(oe=!0)})),{selectElement:M,dataCollection:$,hasFoundSearchTerm:oe}}class Sse{constructor(e,a,u){this.sharedService=e,this.backendUtilities=a,this.translaterService=u}getPickerTitleOutputString(e,a){if(this.sharedService.gridOptions?.enableTranslate&&!this.translaterService?.translate)throw new Error('[Slickgrid-Universal] requires a Translate Service to be installed and configured when the grid option "enableTranslate" is enabled.');let u="";const i=this.sharedService.gridOptions?.[a]??{},r=this.sharedService.gridOptions?.enableTranslate??!1,o=this.sharedService.gridOptions?.locales??ae.locales,d=i?.[e],h=i?.[`${e}Key`],E=Gl(this.sharedService.gridOptions);if(h&&this.translaterService?.translate)u=this.translaterService.translate(h||" ");else switch(e){case"commandTitle":u=d||r&&this.translaterService?.getCurrentLanguage&&this.translaterService?.translate(`${E}COMMANDS`)||o?.TEXT_COMMANDS;break;case"columnTitle":u=d||r&&this.translaterService?.getCurrentLanguage&&this.translaterService?.translate(`${E}COLUMNS`)||o?.TEXT_COLUMNS;break;case"forceFitTitle":u=d||r&&this.translaterService?.getCurrentLanguage&&this.translaterService?.translate(`${E}FORCE_FIT_COLUMNS`)||o?.TEXT_FORCE_FIT_COLUMNS;break;case"syncResizeTitle":u=d||r&&this.translaterService?.getCurrentLanguage&&this.translaterService?.translate(`${E}SYNCHRONOUS_RESIZE`)||o?.TEXT_SYNCHRONOUS_RESIZE;break;default:u=d}return u}readjustFrozenColumnIndexWhenNeeded(e,a,u){if(e>=0){const i=u.findIndex(r=>r.id===this.sharedService.frozenVisibleColumnId);i>=0&&i!==e&&(this.sharedService.gridOptions.frozenColumn=i,this.sharedService.slickGrid.setOptions({frozenColumn:i})),Array.isArray(u)&&Array.isArray(a)&&u.length!==a.length&&this.sharedService.slickGrid.setColumns(u)}}refreshBackendDataset(e){let a=this.sharedService.gridOptions;e&&(a={...this.sharedService.gridOptions,...e},this.sharedService.gridOptions=a),this.backendUtilities?.refreshBackendDataset(a)}runOverrideFunctionWhenExists(e,a){return"function"!=typeof e||!!e.call(this,a)}sortItems(e,a){Array.isArray(e)&&e.sort((u,i)=>u&&i&&u.hasOwnProperty(a)&&i.hasOwnProperty(a)?u[a]-i[a]:0)}translateItems(e,a,u){if(Array.isArray(e))for(const i of e)i.hasOwnProperty(a)&&(i[u]=this.translaterService?.translate?.(i[a]))}translateMenuItemsFromTitleKey(e,a="commandItems"){for(const u of e)"object"==typeof u&&(u.titleKey&&(u.title=this.translateWhenEnabledAndServiceExist(`${u.titleKey}`,`TEXT_${u.titleKey}`)),u.subMenuTitleKey&&(u.subMenuTitle=this.translateWhenEnabledAndServiceExist(`${u.subMenuTitleKey}`,`TEXT_${u.subMenuTitleKey}`))),Array.isArray(u?.[a])&&this.translateMenuItemsFromTitleKey(u?.[a])}translateWhenEnabledAndServiceExist(e,a,u){let i="";const r=this.sharedService?.gridOptions,o=r?.locales??ae.locales;return i=u||(r.enableTranslate&&this.translaterService?.translate?this.translaterService.translate(e||" "):a in o?o[a]:a),i}}class jt{get defaultPrevented(){return this._isDefaultPrevented}constructor(e,a){this.event=e,this.args=a,this._isPropagationStopped=!1,this._isImmediatePropagationStopped=!1,this._isDefaultPrevented=!1,this.returnValue=void 0,this.nativeEvent=e,this._arguments=a,e&&["altKey","ctrlKey","metaKey","shiftKey","key","keyCode","clientX","clientY","offsetX","offsetY","pageX","pageY","bubbles","target","type","which","x","y"].forEach(u=>this[u]=e[u]),this._eventTarget=this.nativeEvent?this.nativeEvent.target:void 0}stopPropagation(){this._isPropagationStopped=!0,this.nativeEvent?.stopPropagation()}isPropagationStopped(){return this._isPropagationStopped}stopImmediatePropagation(){this._isImmediatePropagationStopped=!0,this.nativeEvent&&this.nativeEvent.stopImmediatePropagation()}isImmediatePropagationStopped(){return this._isImmediatePropagationStopped}getNativeEvent(){return this.nativeEvent}preventDefault(){this.nativeEvent&&this.nativeEvent.preventDefault(),this._isDefaultPrevented=!0}isDefaultPrevented(){return this.nativeEvent?this.nativeEvent.defaultPrevented:this._isDefaultPrevented}addReturnValue(e){void 0===this.returnValue&&void 0!==e&&(this.returnValue=e)}getReturnValue(){return this.returnValue}getArguments(){return this._arguments}resetReturnValue(){this.returnValue=void 0}}class ve{get subscriberCount(){return this._handlers.length}constructor(e,a){this.eventName=e,this.pubSub=a,this._handlers=[],this._pubSubService=a}subscribe(e){this._handlers.push(e)}unsubscribe(e){for(let a=this._handlers.length-1;a>=0;a--)this._handlers[a]===e&&this._handlers.splice(a,1)}notify(e,a,u,i=!1){const r=a instanceof jt?a:new jt(a,e);i&&r.resetReturnValue(),u=u||this;for(let o=0;or.nativeEvent??=d);r.addReturnValue(o)}return r}setPubSubService(e){this._pubSubService=e}}class Ot{constructor(){this.handlers=[]}get subscriberCount(){return this.handlers.length}subscribe(e,a){return this.handlers.push({event:e,handler:a}),e.subscribe(a),this}unsubscribe(e,a){let u=this.handlers.length;for(;u--;)if(this.handlers[u].event===e&&this.handlers[u].handler===a)return this.handlers.splice(u,1),void e.unsubscribe(a);return this}unsubscribeAll(){let e=this.handlers.length;for(;e--;)this.handlers[e].event.unsubscribe(this.handlers[e].handler);return this.handlers=[],this}}class al{constructor(e,a,u,i){void 0===u&&void 0===i&&(u=e,i=a),this.fromRow=Math.min(e,u),this.fromCell=Math.min(a,i),this.toRow=Math.max(e,u),this.toCell=Math.max(a,i)}isSingleCell(){return this.fromRow===this.toRow&&this.fromCell===this.toCell}isSingleRow(){return this.fromRow===this.toRow}contains(e,a){return e>=this.fromRow&&e<=this.toRow&&a>=this.fromCell&&a<=this.toCell}toString(){return this.isSingleCell()?`(${this.fromRow}:${this.fromCell})`:`(${this.fromRow}:${this.fromCell} - ${this.toRow}:${this.toCell})`}}class NO{constructor(){this.__nonDataRow=!0}}class k7 extends NO{constructor(){super(),this.__group=!0,this.level=0,this.count=0,this.value=null,this.title=null,this.collapsed=!1,this.selectChecked=!1,this.totals=null,this.rows=[],this.groups=null,this.groupingKey=""}equals(e){return this.value===e.value&&this.count===e.count&&this.collapsed===e.collapsed&&this.title===e.title}}class zse extends NO{constructor(){super(),this.__groupTotals=!0,this.group=null,this.initialized=!1}}class K{static height(e,a){if(e){if(void 0===a)return e.getBoundingClientRect().height;K.setStyleSize(e,"height",a)}}static width(e,a){if(e&&e.getBoundingClientRect){if(void 0===a)return e.getBoundingClientRect().width;K.setStyleSize(e,"width",a)}}static setStyleSize(e,a,u){"function"==typeof u&&(u=u()),e.style[a]="string"==typeof u?u:`${u}px`}static isHidden(e){return 0===e.offsetWidth&&0===e.offsetHeight}static parents(e,a){const u=[],i=":visible"===a,r=":hidden"===a;for(;(e=e.parentNode)&&e!==document&&e&&e.parentNode;)r?K.isHidden(e)&&u.push(e):i?K.isHidden(e)||u.push(e):(!a||e.matches(a))&&u.push(e);return u}static toFloat(e){const a=parseFloat(e);return isNaN(a)?0:a}static show(e,a=""){Array.isArray(e)?e.forEach(u=>u.style.display=a):e.style.display=a}static hide(e){Array.isArray(e)?e.forEach(a=>a.style.display="none"):e.style.display="none"}static applyDefaults(e,a){"object"==typeof a&&Object.keys(a).forEach(u=>{a.hasOwnProperty(u)&&!e.hasOwnProperty(u)&&(e[u]=a[u])})}static addSlickEventPubSubWhenDefined(e,a){if(e)for(const u in a)a[u]instanceof ve&&"function"==typeof a[u].setPubSubService&&a[u].setPubSubService(e)}}K.storage={_storage:new WeakMap,put:function(t,e,a){this._storage.has(t)||this._storage.set(t,new Map),this._storage.get(t).set(e,a)},get:function(t,e){const a=this._storage.get(t);return a?a.get(e):null},remove:function(t,e){const a=this._storage.get(t).delete(e);return 0!==this._storage.get(t).size&&this._storage.delete(t),a}};const Gs=new class Mse{constructor(){this.activeEditController=null}isActive(e){return e?this.activeEditController===e:null!==this.activeEditController}activate(e){if(e!==this.activeEditController){if(null!==this.activeEditController)throw new Error("SlickEditorLock.activate: an editController is still active, can't activate another editController");if(!e.commitCurrentEdit)throw new Error("SlickEditorLock.activate: editController must implement .commitCurrentEdit()");if(!e.cancelCurrentEdit)throw new Error("SlickEditorLock.activate: editController must implement .cancelCurrentEdit()");this.activeEditController=e}}deactivate(e){if(this.activeEditController){if(this.activeEditController!==e)throw new Error("SlickEditorLock.deactivate: specified editController is not the currently active one");this.activeEditController=null}}commitCurrentEdit(){return!this.activeEditController||this.activeEditController.commitCurrentEdit()}cancelCurrentEdit(){return!this.activeEditController||this.activeEditController.cancelCurrentEdit()}};class IO{constructor(e){this.pluginName="GroupItemMetadataProvider",this._defaults={groupCssClass:"slick-group",groupTitleCssClass:"slick-group-title",totalsCssClass:"slick-group-totals",groupFocusable:!0,indentation:15,totalsFocusable:!1,toggleCssClass:"slick-group-toggle",toggleExpandedCssClass:"expanded",toggleCollapsedCssClass:"collapsed",enableExpandCollapse:!0,groupFormatter:this.defaultGroupCellFormatter.bind(this),totalsFormatter:this.defaultTotalsCellFormatter.bind(this),includeHeaderTotals:!1},this._eventHandler=new Ot,this._options=su(!0,{},this._defaults,e)}get eventHandler(){return this._eventHandler}get dataView(){return this._grid?.getData()??{}}get gridOptions(){return this._grid?.getOptions()||{}}init(e,a){this._grid=e,this._options={...this._defaults,...a},this._eventHandler.subscribe(e.onClick,this.handleGridClick.bind(this)),this._eventHandler.subscribe(e.onKeyDown,this.handleGridKeyDown.bind(this))}destroy(){this.dispose()}dispose(){this._eventHandler?.unsubscribeAll()}getOptions(){return this._options}setOptions(e){this._options={...this._options,...e}}getGroupRowMetadata(e){return{selectable:!1,focusable:this._options.groupFocusable,cssClasses:`${this._options.groupCssClass} slick-group-level-${e?.level||0}`,formatter:this._options.includeHeaderTotals&&this._options.totalsFormatter||void 0,columns:{0:{colspan:this._options.includeHeaderTotals?"1":"*",formatter:this._options.groupFormatter,editorClass:null}}}}getTotalsRowMetadata(e){return{selectable:!1,focusable:this._options.totalsFocusable,cssClasses:`${this._options.totalsCssClass} slick-group-level-${e?.group?.level||0}`,formatter:this._options.totalsFormatter,editorClass:null}}defaultGroupCellFormatter(e,a,u,i,r){if(!this._options.enableExpandCollapse)return r.title;const o=r.level||0,h=o*(this._options?.indentation??15)+"px",m=r.collapsed?this._options.toggleCollapsedCssClass:this._options.toggleExpandedCssClass,E=this.gridOptions?.preventDocumentFragmentUsage?document.createElement("span"):new DocumentFragment;E.appendChild(T("span",{className:`${this._options.toggleCssClass} ${m}`,ariaExpanded:String(!r.collapsed),style:{marginLeft:h}}));const v=T("span",{className:this._options.groupTitleCssClass||""});return v.setAttribute("level",o),r.title instanceof HTMLElement||r.title instanceof DocumentFragment?v.appendChild(r.title):this._grid.applyHtmlCode(v,r.title??""),E.appendChild(v),E}defaultTotalsCellFormatter(e,a,u,i,r,o){return i?.groupTotalsFormatter?.(r,i,o)??""}handleGridClick(e,a){const u=e.target,i=this._grid?.getDataItem(a.row);i instanceof k7&&u.classList.contains(this._options.toggleCssClass||"")&&(this.handleDataViewExpandOrCollapse(i),e.stopImmediatePropagation(),e.preventDefault())}handleGridKeyDown(e){if(this._options.enableExpandCollapse&&" "===e.key){const a=this._grid?.getActiveCell();if(a){const u=this._grid.getDataItem(a.row);u instanceof k7&&(this.handleDataViewExpandOrCollapse(u),e.stopImmediatePropagation(),e.preventDefault())}}}handleDataViewExpandOrCollapse(e){const a=this._grid?.getRenderedRange();this.dataView.setRefreshHints({ignoreDiffsBefore:a.top,ignoreDiffsAfter:a.bottom+1}),e.collapsed?this.dataView.expandGroup(e.groupingKey):this.dataView.collapseGroup(e.groupingKey)}}class Tse{constructor(e,a){this.externalPubSub=a,this.defaults={groupItemMetadataProvider:null,inlineFilters:!1,useCSPSafeFilter:!1},this.idProperty="id",this.items=[],this.rows=[],this.idxById=new Map,this.rowsById=void 0,this.filter=null,this.filterCSPSafe=null,this.updated=null,this.suspend=!1,this.isBulkSuspend=!1,this.bulkDeleteIds=new Map,this.sortAsc=!0,this.refreshHints={},this.prevRefreshHints={},this.filteredItems=[],this.filterCache=[],this.groupingInfoDefaults={getter:void 0,formatter:void 0,comparer:(u,i)=>u.value===i.value?0:u.value>i.value?1:-1,predefinedValues:[],aggregators:[],aggregateEmpty:!1,aggregateCollapsed:!1,aggregateChildGroups:!1,collapsed:!1,displayTotalsRow:!0,lazyTotalsCalculation:!1},this.groupingInfos=[],this.groups=[],this.toggledGroupsByLevel=[],this.groupingDelimiter=":|:",this.selectedRowIds=[],this.pagesize=0,this.pagenum=0,this.totalRows=0,this.onBeforePagingInfoChanged=new ve("onBeforePagingInfoChanged",a),this.onGroupExpanded=new ve("onGroupExpanded",a),this.onGroupCollapsed=new ve("onGroupCollapsed",a),this.onPagingInfoChanged=new ve("onPagingInfoChanged",a),this.onRowCountChanged=new ve("onRowCountChanged",a),this.onRowsChanged=new ve("onRowsChanged",a),this.onRowsOrCountChanged=new ve("onRowsOrCountChanged",a),this.onSelectedRowIdsChanged=new ve("onSelectedRowIdsChanged",a),this.onSetItemsCalled=new ve("onSetItemsCalled",a),this._options=su(!0,{},this.defaults,e)}beginUpdate(e){this.suspend=!0,this.isBulkSuspend=!0===e}endUpdate(){const e=this.isBulkSuspend;this.isBulkSuspend=!1,this.suspend=!1,e&&(this.processBulkDelete(),this.ensureIdUniqueness()),this.refresh()}destroy(){this.items=[],this.idProperty="id",this.idxById=null,this.rowsById=null,this.filter=null,this.filterCSPSafe=null,this.updated=null,this.sortComparer=null,this.filterCache=[],this.filteredItems=[],this.compiledFilter=null,this.compiledFilterCSPSafe=null,this.compiledFilterWithCaching=null,this.compiledFilterWithCachingCSPSafe=null,this._grid&&(this._grid.onSelectedRowsChanged?.unsubscribe(),this._grid.onCellCssStylesChanged?.unsubscribe()),this.onRowsOrCountChanged?.unsubscribe()}setRefreshHints(e){this.refreshHints=e}getFilterArgs(){return this.filterArgs}setFilterArgs(e){this.filterArgs=e}processBulkDelete(){if(!this.idxById)return;let e,a,u=0;for(let i=0,r=this.items.length;i=0;--u)this.items.splice(a[u],1);this.updateIdxById(a[0]),this.refresh()}}sortedAddItem(e){if(!this.sortComparer)throw new Error("[SlickGrid DataView] sortedAddItem() requires a sort comparer, use sort()");this.insertItem(this.sortedIndex(e),e)}sortedUpdateItem(e,a){if(!this.idxById)return;if(!this.idxById.has(e)||e!==a[this.idProperty])throw new Error(`[SlickGrid DataView] Invalid or non-matching id ${e}`);if(!this.sortComparer)throw new Error("[SlickGrid DataView] sortedUpdateItem() requires a sort comparer, use sort()");const u=this.getItemById(e);0!==this.sortComparer(u,a)?(this.deleteItem(e),this.sortedAddItem(a)):this.updateItem(e,a)}sortedIndex(e){let a=0,u=this.items.length;for(;a>>1;-1===this.sortComparer(this.items[i],e)?a=i+1:u=i}return a}getItemCount(){return this.items.length}getLength(){return this.rows.length}getItem(e){const a=this.rows[e];if(a?.__group&&a.totals&&!a.totals?.initialized){const u=this.groupingInfos[a.level];u.displayTotalsRow||(this.calculateTotals(a.totals),a.title=u.formatter?u.formatter(a):a.value)}else a?.__groupTotals&&!a.initialized&&this.calculateTotals(a);return a}getItemMetadata(e){const a=this.rows[e];return void 0===a?null:a.__group?this._options.groupItemMetadataProvider.getGroupRowMetadata(a):a.__groupTotals?this._options.groupItemMetadataProvider.getTotalsRowMetadata(a):null}expandCollapseAllGroups(e,a){if(Su(e))this.toggledGroupsByLevel[e]={},this.groupingInfos[e].collapsed=a,!0===a?this.onGroupCollapsed.notify({level:e,groupingKey:null}):this.onGroupExpanded.notify({level:e,groupingKey:null});else for(let u=0;u=E?o[o.length]=m:(u=a[m],i=e[m],(!u||this.groupingInfos.length&&(r=u.__nonDataRow||i.__nonDataRow)&&u.__group!==i.__group||u.__group&&!u.equals(i)||r&&(u.__groupTotals||i.__groupTotals)||u[this.idProperty]!==i[this.idProperty]||this.updated?.[u[this.idProperty]])&&(o[o.length]=m));return o}recalc(e){this.rowsById=void 0,(this.refreshHints.isFilterNarrowing!==this.prevRefreshHints.isFilterNarrowing||this.refreshHints.isFilterExpanding!==this.prevRefreshHints.isFilterExpanding)&&(this.filterCache=[]);const a=this.getFilteredAndPagedItems(e);this.totalRows=a.totalRows;let u=a.rows;this.groups=[],this.groupingInfos.length&&(this.groups=this.extractGroups(u),this.groups.length&&(u=this.flattenGroupedRows(this.groups)));const i=this.getRowDiffs(this.rows,u);return this.rows=u,i}refresh(){if(this.suspend)return;const e=su(!0,{},this.getPagingInfo()),a=this.rows.length,u=this.totalRows;let i=this.recalc(this.items);this.pagesize&&this.totalRows0},null,this),i.length>0&&this.onRowsChanged.notify({rows:i,itemCount:this.items.length,dataView:this,calledOnRowCountChanged:a!==this.rows.length},null,this),(a!==this.rows.length||i.length>0)&&this.onRowsOrCountChanged.notify({rowsDiff:i,previousRowCount:a,currentRowCount:this.rows.length,itemCount:this.items.length,rowCountChanged:a!==this.rows.length,rowsChanged:i.length>0,dataView:this},null,this)}syncGridSelection(e,a,u){let i;this._grid=e,this.selectedRowIds=this.mapRowsToIds(e.getSelectedRows());const r=e.getOptions(),o=h=>{!1===h?this.selectedRowIds=[]:this.selectedRowIds.sort().join(",")!==h.sort().join(",")&&(this.selectedRowIds=h)};return e.onSelectedRowsChanged.subscribe((h,m)=>{if(!i){const E=this.mapRowsToIds(m.rows),v={grid:this._grid,ids:E,rows:m.rows,added:!0,dataView:this};this.preSelectedRowIdsChangeFn(v),this.onSelectedRowIdsChanged.notify(Object.assign(v,{selectedRowIds:this.selectedRowIds,filteredIds:this.getAllSelectedFilteredIds()}),new jt,this)}}),this.preSelectedRowIdsChangeFn=h=>{if(!i){if(i=!0,typeof h.added>"u")o(h.ids);else{let E;E=h.added?u&&r.multiSelect?(this.selectedRowIds?.filter(k=>void 0===this.getRowById(k))).concat(h.ids):h.ids:u&&r.multiSelect?this.selectedRowIds?.filter(v=>-1===h.ids.indexOf(v)):[],o(E)}i=!1}},this.onRowsOrCountChanged.subscribe((()=>{if((this.selectedRowIds||[]).length>0&&!i){i=!0;const h=this.mapIdsToRows(this.selectedRowIds||[]);if(!a){const m={grid:this._grid,ids:this.mapRowsToIds(h),rows:h,dataView:this};this.preSelectedRowIdsChangeFn(m),this.onSelectedRowIdsChanged.notify(Object.assign(m,{selectedRowIds:this.selectedRowIds,filteredIds:this.getAllSelectedFilteredIds()}),new jt,this)}e.setSelectedRows(h),i=!1}}).bind(this)),this.onSelectedRowIdsChanged}getAllSelectedIds(){return this.selectedRowIds}getAllSelectedFilteredIds(){return this.getAllSelectedFilteredItems().map(e=>e[this.idProperty])}setSelectedIds(e,a){let u=a?.isRowBeingAdded;const i=a?.shouldTriggerEvent,r=a?.applyRowSelectionToGrid;!1!==u&&(u=!0);const o=this.mapIdsToRows(e),d={grid:this._grid,ids:e,rows:o,added:u,dataView:this};this.preSelectedRowIdsChangeFn?.(d),!1!==i&&this.onSelectedRowIdsChanged.notify(Object.assign(d,{selectedRowIds:this.selectedRowIds,filteredIds:this.getAllSelectedFilteredIds()}),new jt,this),!1!==r&&this._grid&&this._grid.setSelectedRows(o)}getAllSelectedItems(){const e=[];return this.getAllSelectedIds().forEach(u=>{e.push(this.getItemById(u))}),e}getAllSelectedFilteredItems(){return Array.isArray(this.selectedRowIds)&&this.filteredItems.filter(a=>this.selectedRowIds.some(u=>a[this.idProperty]===u))||[]}syncGridCellCssStyles(e,a){let u,i;const r=d=>{u={},"object"==typeof d&&Object.keys(d).forEach(h=>{if(d&&this.rows[h]){const m=this.rows[h][this.idProperty];u[m]=d[h]}})};r(e.getCellCssStyles(a));const o=()=>{if("object"==typeof u){i=!0,this.ensureRowsByIdCache();const d={};Object.keys(u).forEach(h=>{const m=this.rowsById?.[h];Su(m)&&(d[m]=u[h])}),e.setCellCssStyles(a,d),i=!1}};e.onCellCssStylesChanged.subscribe((d,h)=>{i||a!==h.key||(h.hash?r(h.hash):(e.onCellCssStylesChanged.unsubscribe(),this.onRowsOrCountChanged.unsubscribe(o)))}),this.onRowsOrCountChanged.subscribe(o.bind(this))}}function RO(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);e&&(u=u.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),a.push.apply(a,u)}return a}function Ks(t){for(var e=1;e=0)&&(a[i]=t[i]);return a}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(t,u)&&(a[u]=t[u])}return a}function gc(t){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(t)}var vc=gc(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),S2=gc(/Edge/i),HO=gc(/firefox/i),z2=gc(/safari/i)&&!gc(/chrome/i)&&!gc(/android/i),VO=gc(/iP(ad|od|hone)/i),jO=gc(/chrome/i)&&gc(/android/i),OO={capture:!1,passive:!1};function ct(t,e,a){t.addEventListener(e,a,!vc&&OO)}function Xa(t,e,a){t.removeEventListener(e,a,!vc&&OO)}function D7(t,e){if(e){if(">"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch{return!1}return!1}}function Kse(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function Ul(t,e,a,u){if(t){a=a||document;do{if(null!=e&&(">"===e[0]?t.parentNode===a&&D7(t,e):D7(t,e))||u&&t===a)return t;if(t===a)break}while(t=Kse(t))}return null}var M2,GO=/\s+/g;function ti(t,e,a){if(t&&e)if(t.classList)t.classList[a?"add":"remove"](e);else{var u=(" "+t.className+" ").replace(GO," ").replace(" "+e+" "," ");t.className=(u+(a?" "+e:"")).replace(GO," ")}}function Ge(t,e,a){var u=t&&t.style;if(u){if(void 0===a)return document.defaultView&&document.defaultView.getComputedStyle?a=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(a=t.currentStyle),void 0===e?a:a[e];!(e in u)&&-1===e.indexOf("webkit")&&(e="-webkit-"+e),u[e]=a+("string"==typeof a?"":"px")}}function A3(t,e){var a="";if("string"==typeof t)a=t;else do{var u=Ge(t,"transform");u&&"none"!==u&&(a=u+" "+a)}while(!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(a)}function KO(t,e,a){if(t){var u=t.getElementsByTagName(e),i=0,r=u.length;if(a)for(;i=r:i<=r))return u;if(u===Ws())break;u=Ph(u,!1)}return!1}function Av(t,e,a,u){for(var i=0,r=0,o=t.children;r2&&void 0!==arguments[2]?arguments[2]:{},i=u.evt,r=Ise(u,Yse);L2.pluginEvent.bind(Ea)(e,a,Ks({dragEl:xe,parentEl:bi,ghostEl:Fa,rootEl:Vu,nextEl:w3,lastDownEl:f7,cloneEl:ui,cloneHidden:Nh,dragStarted:N2,putSortable:Un,activeSortable:Ea.active,originalEvent:i,oldIndex:Bv,oldDraggableIndex:P2,newIndex:tl,newDraggableIndex:Ih,hideGhostForTarget:uG,unhideGhostForTarget:iG,cloneNowHidden:function(){Nh=!0},cloneNowShown:function(){Nh=!1},dispatchSortableEvent:function(d){Xr({sortable:a,name:d,originalEvent:i})}},r))};function Xr(t){T2(Ks({putSortable:Un,cloneEl:ui,targetEl:xe,rootEl:Vu,oldIndex:Bv,oldDraggableIndex:P2,newIndex:tl,newDraggableIndex:Ih},t))}var xe,bi,Fa,Vu,w3,f7,ui,Nh,Bv,tl,P2,Ih,C7,Un,B3,P0,FM,AM,YO,QO,N2,zv,I2,A7,fr,Sv=!1,y7=!1,_7=[],R2=!1,F7=!1,wM=[],BM=!1,w7=[],B7=typeof document<"u",S7=VO,XO=S2||vc?"cssFloat":"float",Qse=B7&&!jO&&!VO&&"draggable"in document.createElement("div"),eG=function(){if(B7){if(vc)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),aG=function(e,a){var u=Ge(e),i=parseInt(u.width)-parseInt(u.paddingLeft)-parseInt(u.paddingRight)-parseInt(u.borderLeftWidth)-parseInt(u.borderRightWidth),r=Av(e,0,a),o=Av(e,1,a),d=r&&Ge(r),h=o&&Ge(o),m=d&&parseInt(d.marginLeft)+parseInt(d.marginRight)+Mu(r).width,E=h&&parseInt(h.marginLeft)+parseInt(h.marginRight)+Mu(o).width;if("flex"===u.display)return"column"===u.flexDirection||"column-reverse"===u.flexDirection?"vertical":"horizontal";if("grid"===u.display)return u.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(r&&d.float&&"none"!==d.float){var v="left"===d.float?"left":"right";return!o||"both"!==h.clear&&h.clear!==v?"horizontal":"vertical"}return r&&("block"===d.display||"flex"===d.display||"table"===d.display||"grid"===d.display||m>=i&&"none"===u[XO]||o&&"none"===u[XO]&&m+E>i)?"vertical":"horizontal"},tG=function(e){function a(r,o){return function(d,h,m,E){var v=d.options.group.name&&h.options.group.name&&d.options.group.name===h.options.group.name;if(null==r&&(o||v))return!0;if(null==r||!1===r)return!1;if(o&&"clone"===r)return r;if("function"==typeof r)return a(r(d,h,m,E),o)(d,h,m,E);var k=(o?d:h).options.group.name;return!0===r||"string"==typeof r&&r===k||r.join&&r.indexOf(k)>-1}}var u={},i=e.group;(!i||"object"!=x7(i))&&(i={name:i}),u.name=i.name,u.checkPull=a(i.pull,!0),u.checkPut=a(i.put),u.revertClone=i.revertClone,e.group=u},uG=function(){!eG&&Fa&&Ge(Fa,"display","none")},iG=function(){!eG&&Fa&&Ge(Fa,"display","")};B7&&!jO&&document.addEventListener("click",function(t){if(y7)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),y7=!1,!1},!0);var S3=function(e){if(xe){var a=function(e,a){var u;return _7.some(function(i){var r=i[Dr].options.emptyInsertThreshold;if(r&&!DM(i)){var o=Mu(i),d=e>=o.left-r&&e<=o.right+r,h=a>=o.top-r&&a<=o.bottom+r;if(d&&h)return u=i}}),u}((e=e.touches?e.touches[0]:e).clientX,e.clientY);if(a){var u={};for(var i in e)e.hasOwnProperty(i)&&(u[i]=e[i]);u.target=u.rootEl=a,u.preventDefault=void 0,u.stopPropagation=void 0,a[Dr]._onDragOver(u)}}},ade=function(e){xe&&xe.parentNode[Dr]._isOutsideThisEl(e.target)};function Ea(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=Wl({},e),t[Dr]=this;var a={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return aG(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(o,d){o.setData("Text",d.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Ea.supportPointer&&"PointerEvent"in window&&!z2,emptyInsertThreshold:5};for(var u in L2.initializePlugins(this,t,a),a)!(u in e)&&(e[u]=a[u]);for(var i in tG(e),this)"_"===i.charAt(0)&&"function"==typeof this[i]&&(this[i]=this[i].bind(this));this.nativeDraggable=!e.forceFallback&&Qse,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?ct(t,"pointerdown",this._onTapStart):(ct(t,"mousedown",this._onTapStart),ct(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(ct(t,"dragover",this),ct(t,"dragenter",this)),_7.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),Wl(this,Zse())}function z7(t,e,a,u,i,r,o,d){var h,v,m=t[Dr],E=m.options.onMove;return!window.CustomEvent||vc||S2?(h=document.createEvent("Event")).initEvent("move",!0,!0):h=new CustomEvent("move",{bubbles:!0,cancelable:!0}),h.to=e,h.from=t,h.dragged=a,h.draggedRect=u,h.related=i||e,h.relatedRect=r||Mu(e),h.willInsertAfter=d,h.originalEvent=o,t.dispatchEvent(h),E&&(v=E.call(m,h,o)),v}function SM(t){t.draggable=!1}function ude(){BM=!1}function lde(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,a=e.length,u=0;a--;)u+=e.charCodeAt(a);return u.toString(36)}function M7(t){return setTimeout(t,0)}function zM(t){return clearTimeout(t)}Ea.prototype={constructor:Ea,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(zv=null)},_getDirection:function(e,a){return"function"==typeof this.options.direction?this.options.direction.call(this,e,a,xe):this.options.direction},_onTapStart:function(e){if(e.cancelable){var a=this,u=this.el,i=this.options,r=i.preventOnFilter,o=e.type,d=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,h=(d||e).target,m=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||h,E=i.filter;if(function sde(t){w7.length=0;for(var e=t.getElementsByTagName("input"),a=e.length;a--;){var u=e[a];u.checked&&w7.push(u)}}(u),!xe&&!(/mousedown|pointerdown/.test(o)&&0!==e.button||i.disabled)&&!m.isContentEditable&&(this.nativeDraggable||!z2||!h||"SELECT"!==h.tagName.toUpperCase())&&!((h=Ul(h,i.draggable,u,!1))&&h.animated||f7===h)){if(Bv=vi(h),P2=vi(h,i.draggable),"function"==typeof E){if(E.call(this,e,h,this))return Xr({sortable:a,rootEl:m,name:"filter",targetEl:h,toEl:u,fromEl:u}),Bo("filter",a,{evt:e}),void(r&&e.cancelable&&e.preventDefault())}else if(E&&(E=E.split(",").some(function(v){if(v=Ul(m,v.trim(),u,!1))return Xr({sortable:a,rootEl:v,name:"filter",targetEl:h,fromEl:u,toEl:u}),Bo("filter",a,{evt:e}),!0})))return void(r&&e.cancelable&&e.preventDefault());i.handle&&!Ul(m,i.handle,u,!1)||this._prepareDragStart(e,d,h)}}},_prepareDragStart:function(e,a,u){var h,i=this,r=i.el,o=i.options,d=r.ownerDocument;if(u&&!xe&&u.parentNode===r){var m=Mu(u);if(Vu=r,bi=(xe=u).parentNode,w3=xe.nextSibling,f7=u,C7=o.group,Ea.dragged=xe,B3={target:xe,clientX:(a||e).clientX,clientY:(a||e).clientY},YO=B3.clientX-m.left,QO=B3.clientY-m.top,this._lastX=(a||e).clientX,this._lastY=(a||e).clientY,xe.style["will-change"]="all",h=function(){Bo("delayEnded",i,{evt:e}),Ea.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!HO&&i.nativeDraggable&&(xe.draggable=!0),i._triggerDragStart(e,a),Xr({sortable:i,name:"choose",originalEvent:e}),ti(xe,o.chosenClass,!0))},o.ignore.split(",").forEach(function(E){KO(xe,E.trim(),SM)}),ct(d,"dragover",S3),ct(d,"mousemove",S3),ct(d,"touchmove",S3),ct(d,"mouseup",i._onDrop),ct(d,"touchend",i._onDrop),ct(d,"touchcancel",i._onDrop),HO&&this.nativeDraggable&&(this.options.touchStartThreshold=4,xe.draggable=!0),Bo("delayStart",this,{evt:e}),!o.delay||o.delayOnTouchOnly&&!a||this.nativeDraggable&&(S2||vc))h();else{if(Ea.eventCanceled)return void this._onDrop();ct(d,"mouseup",i._disableDelayedDrag),ct(d,"touchend",i._disableDelayedDrag),ct(d,"touchcancel",i._disableDelayedDrag),ct(d,"mousemove",i._delayedDragTouchMoveHandler),ct(d,"touchmove",i._delayedDragTouchMoveHandler),o.supportPointer&&ct(d,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(h,o.delay)}}},_delayedDragTouchMoveHandler:function(e){var a=e.touches?e.touches[0]:e;Math.max(Math.abs(a.clientX-this._lastX),Math.abs(a.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){xe&&SM(xe),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Xa(e,"mouseup",this._disableDelayedDrag),Xa(e,"touchend",this._disableDelayedDrag),Xa(e,"touchcancel",this._disableDelayedDrag),Xa(e,"mousemove",this._delayedDragTouchMoveHandler),Xa(e,"touchmove",this._delayedDragTouchMoveHandler),Xa(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,a){a=a||"touch"==e.pointerType&&e,!this.nativeDraggable||a?this.options.supportPointer?ct(document,"pointermove",this._onTouchMove):ct(document,a?"touchmove":"mousemove",this._onTouchMove):(ct(xe,"dragend",this),ct(Vu,"dragstart",this._onDragStart));try{document.selection?M7(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,a){if(Sv=!1,Vu&&xe){Bo("dragStarted",this,{evt:a}),this.nativeDraggable&&ct(document,"dragover",ade);var u=this.options;!e&&ti(xe,u.dragClass,!1),ti(xe,u.ghostClass,!0),Ea.active=this,e&&this._appendGhost(),Xr({sortable:this,name:"start",originalEvent:a})}else this._nulling()},_emulateDragOver:function(){if(P0){this._lastX=P0.clientX,this._lastY=P0.clientY,uG();for(var e=document.elementFromPoint(P0.clientX,P0.clientY),a=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(P0.clientX,P0.clientY))!==a;)a=e;if(xe.parentNode[Dr]._isOutsideThisEl(e),a)do{if(a[Dr]){if(a[Dr]._onDragOver({clientX:P0.clientX,clientY:P0.clientY,target:e,rootEl:a})&&!this.options.dragoverBubble)break}e=a}while(a=a.parentNode);iG()}},_onTouchMove:function(e){if(B3){var a=this.options,u=a.fallbackTolerance,i=a.fallbackOffset,r=e.touches?e.touches[0]:e,o=Fa&&A3(Fa,!0),d=Fa&&o&&o.a,h=Fa&&o&&o.d,m=S7&&fr&&UO(fr),E=(r.clientX-B3.clientX+i.x)/(d||1)+(m?m[0]-wM[0]:0)/(d||1),v=(r.clientY-B3.clientY+i.y)/(h||1)+(m?m[1]-wM[1]:0)/(h||1);if(!Ea.active&&!Sv){if(u&&Math.max(Math.abs(r.clientX-this._lastX),Math.abs(r.clientY-this._lastY))i.right+r||t.clientY>u.bottom&&t.clientX>u.left:t.clientY>i.bottom+r||t.clientX>u.right&&t.clientY>u.top}(e,x,this)&&!M.animated){if(M===xe)return z(!1);if(M&&a===e.target&&(u=M),u&&(r=Mu(u)),!1!==z7(Vu,a,xe,i,u,r,e,!!u))return w(),M&&M.nextSibling?a.insertBefore(xe,M.nextSibling):a.appendChild(xe),bi=a,L(),z(!0)}else if(M&&function ide(t,e,a){var u=Mu(Av(a.el,0,a.options,!0)),i=qO(a.el,a.options,Fa),r=10;return e?t.clientXE+m*r/2:hv-A7)return-I2}else if(h>E+m*(1-i)/2&&hv-m*r/2)?h>E+m/2?1:-1:0}(e,u,r,x,ne?1:d.swapThreshold,null==d.invertedSwapThreshold?d.swapThreshold:d.invertedSwapThreshold,F7,zv===u),0!==$){var _t=vi(xe);do{_t-=$,ga=bi.children[_t]}while(ga&&("none"===Ge(ga,"display")||ga===Fa))}if(0===$||ga===u)return z(!1);zv=u,I2=$;var ht=u.nextElementSibling,Oa=!1,Pe=z7(Vu,a,xe,i,u,r,e,Oa=1===$);if(!1!==Pe)return(1===Pe||-1===Pe)&&(Oa=1===Pe),BM=!0,setTimeout(ude,30),w(),Oa&&!ht?a.appendChild(xe):u.parentNode.insertBefore(xe,Oa?ht:u),Ie&&ZO(Ie,0,Se-Ie.scrollTop),bi=xe.parentNode,void 0!==oe&&!F7&&(A7=Math.abs(oe-Mu(u)[Ne])),L(),z(!0)}if(a.contains(xe))return z(!1)}return!1}function A(Ra,au){Bo(Ra,f,Ks({evt:e,isOwner:E,axis:x?"vertical":"horizontal",revert:o,dragRect:i,targetRect:r,canSort:v,fromSortable:k,target:u,completed:z,onMove:function(Zi,Zn){return z7(Vu,a,xe,i,Zi,Mu(Zi),e,Zn)},changed:L},au))}function w(){A("dragOverAnimationCapture"),f.captureAnimationState(),f!==k&&k.captureAnimationState()}function z(Ra){return A("dragOverCompleted",{insertion:Ra}),Ra&&(E?m._hideClone():m._showClone(f),f!==k&&(ti(xe,Un?Un.options.ghostClass:m.options.ghostClass,!1),ti(xe,d.ghostClass,!0)),Un!==f&&f!==Ea.active?Un=f:f===Ea.active&&Un&&(Un=null),k===f&&(f._ignoreWhileAnimating=u),f.animateAll(function(){A("dragOverAnimationComplete"),f._ignoreWhileAnimating=null}),f!==k&&(k.animateAll(),k._ignoreWhileAnimating=null)),(u===xe&&!xe.animated||u===a&&!u.animated)&&(zv=null),!d.dragoverBubble&&!e.rootEl&&u!==document&&(xe.parentNode[Dr]._isOutsideThisEl(e.target),!Ra&&S3(e)),!d.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),C=!0}function L(){tl=vi(xe),Ih=vi(xe,d.draggable),Xr({sortable:f,name:"change",toEl:a,newIndex:tl,newDraggableIndex:Ih,originalEvent:e})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){Xa(document,"mousemove",this._onTouchMove),Xa(document,"touchmove",this._onTouchMove),Xa(document,"pointermove",this._onTouchMove),Xa(document,"dragover",S3),Xa(document,"mousemove",S3),Xa(document,"touchmove",S3)},_offUpEvents:function(){var e=this.el.ownerDocument;Xa(e,"mouseup",this._onDrop),Xa(e,"touchend",this._onDrop),Xa(e,"pointerup",this._onDrop),Xa(e,"touchcancel",this._onDrop),Xa(document,"selectstart",this)},_onDrop:function(e){var a=this.el,u=this.options;tl=vi(xe),Ih=vi(xe,u.draggable),Bo("drop",this,{evt:e}),bi=xe&&xe.parentNode,tl=vi(xe),Ih=vi(xe,u.draggable),Ea.eventCanceled||(Sv=!1,F7=!1,R2=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),zM(this.cloneId),zM(this._dragStartId),this.nativeDraggable&&(Xa(document,"drop",this),Xa(a,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),z2&&Ge(document.body,"user-select",""),Ge(xe,"transform",""),e&&(N2&&(e.cancelable&&e.preventDefault(),!u.dropBubble&&e.stopPropagation()),Fa&&Fa.parentNode&&Fa.parentNode.removeChild(Fa),(Vu===bi||Un&&"clone"!==Un.lastPutMode)&&ui&&ui.parentNode&&ui.parentNode.removeChild(ui),xe&&(this.nativeDraggable&&Xa(xe,"dragend",this),SM(xe),xe.style["will-change"]="",N2&&!Sv&&ti(xe,Un?Un.options.ghostClass:this.options.ghostClass,!1),ti(xe,this.options.chosenClass,!1),Xr({sortable:this,name:"unchoose",toEl:bi,newIndex:null,newDraggableIndex:null,originalEvent:e}),Vu!==bi?(tl>=0&&(Xr({rootEl:bi,name:"add",toEl:bi,fromEl:Vu,originalEvent:e}),Xr({sortable:this,name:"remove",toEl:bi,originalEvent:e}),Xr({rootEl:bi,name:"sort",toEl:bi,fromEl:Vu,originalEvent:e}),Xr({sortable:this,name:"sort",toEl:bi,originalEvent:e})),Un&&Un.save()):tl!==Bv&&tl>=0&&(Xr({sortable:this,name:"update",toEl:bi,originalEvent:e}),Xr({sortable:this,name:"sort",toEl:bi,originalEvent:e})),Ea.active&&((null==tl||-1===tl)&&(tl=Bv,Ih=P2),Xr({sortable:this,name:"end",toEl:bi,originalEvent:e}),this.save())))),this._nulling()},_nulling:function(){Bo("nulling",this),Vu=xe=bi=Fa=w3=ui=f7=Nh=B3=P0=N2=tl=Ih=Bv=P2=zv=I2=Un=C7=Ea.dragged=Ea.ghost=Ea.clone=Ea.active=null,w7.forEach(function(e){e.checked=!0}),w7.length=FM=AM=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":xe&&(this._onDragOver(e),function tde(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.cancelable&&t.preventDefault()}(e));break;case"selectstart":e.preventDefault()}},toArray:function(){for(var a,e=[],u=this.el.children,i=0,r=u.length,o=this.options;i{K.hide(u)}),this._options.showTopPanel||this._topPanelScrollers.forEach(u=>{K.hide(u)}),this._options.showHeaderRow||this._headerRowScroller.forEach(u=>{K.hide(u)}),this._viewportTopL=T("div",{className:"slick-viewport slick-viewport-top slick-viewport-left",tabIndex:0},this._paneTopL),this._viewportTopR=T("div",{className:"slick-viewport slick-viewport-top slick-viewport-right",tabIndex:0},this._paneTopR),this._viewportBottomL=T("div",{className:"slick-viewport slick-viewport-bottom slick-viewport-left",tabIndex:0},this._paneBottomL),this._viewportBottomR=T("div",{className:"slick-viewport slick-viewport-bottom slick-viewport-right",tabIndex:0},this._paneBottomR),this._viewport=[this._viewportTopL,this._viewportTopR,this._viewportBottomL,this._viewportBottomR],this._options.viewportClass&&this._viewport.forEach(u=>{u.classList.add(...Vt(this._options.viewportClass))}),this._activeViewportNode=this._viewportTopL,this._canvasTopL=T("div",{className:"grid-canvas grid-canvas-top grid-canvas-left",tabIndex:0},this._viewportTopL),this._canvasTopR=T("div",{className:"grid-canvas grid-canvas-top grid-canvas-right",tabIndex:0},this._viewportTopR),this._canvasBottomL=T("div",{className:"grid-canvas grid-canvas-bottom grid-canvas-left",tabIndex:0},this._viewportBottomL),this._canvasBottomR=T("div",{className:"grid-canvas grid-canvas-bottom grid-canvas-right",tabIndex:0},this._viewportBottomR),this._canvas=[this._canvasTopL,this._canvasTopR,this._canvasBottomL,this._canvasBottomR],this.scrollbarDimensions=this.scrollbarDimensions||this.measureScrollbar(),this._activeCanvasNode=this._canvasTopL,this._preHeaderPanelSpacer&&K.width(this._preHeaderPanelSpacer,this.getCanvasWidth()+this.scrollbarDimensions.width),this._headers.forEach(u=>{K.width(u,this.getHeadersWidth())}),K.width(this._headerRowSpacerL,this.getCanvasWidth()+this.scrollbarDimensions.width),K.width(this._headerRowSpacerR,this.getCanvasWidth()+this.scrollbarDimensions.width),this._options.createFooterRow&&(this._footerRowScrollerR=T("div",{className:"slick-footerrow slick-state-default"},this._paneTopR),this._footerRowScrollerL=T("div",{className:"slick-footerrow slick-state-default"},this._paneTopL),this._footerRowScroller=[this._footerRowScrollerL,this._footerRowScrollerR],this._footerRowSpacerL=T("div",{style:{display:"block",height:"1px",position:"absolute",top:"0px",left:"0px"}},this._footerRowScrollerL),K.width(this._footerRowSpacerL,this.getCanvasWidth()+this.scrollbarDimensions.width),this._footerRowSpacerR=T("div",{style:{display:"block",height:"1px",position:"absolute",top:"0px",left:"0px"}},this._footerRowScrollerR),K.width(this._footerRowSpacerR,this.getCanvasWidth()+this.scrollbarDimensions.width),this._footerRowL=T("div",{className:"slick-footerrow-columns slick-footerrow-columns-left"},this._footerRowScrollerL),this._footerRowR=T("div",{className:"slick-footerrow-columns slick-footerrow-columns-right"},this._footerRowScrollerR),this._footerRow=[this._footerRowL,this._footerRowR],this._options.showFooterRow||this._footerRowScroller.forEach(u=>{K.hide(u)})),this._focusSink2=this._focusSink.cloneNode(!0),this._container.appendChild(this._focusSink2),this._options.explicitInitialization||this.finishInitialization()}finishInitialization(){this.initialized||(this.initialized=!0,this.getViewportWidth(),this.getViewportHeight(),this.measureCellPaddingAndBorder(),this.disableSelection(this._headers),this._options.enableTextSelectionOnCells||this._viewport.forEach(e=>{this._bindingEventService.bind(e,"selectstart",a=>{a.target instanceof HTMLInputElement||(a.target,HTMLTextAreaElement)})}),this.setFrozenOptions(),this.setPaneVisibility(),this.setScroller(),this.setOverflow(),this.updateColumnCaches(),this.createColumnHeaders(),this.createColumnFooter(),this.setupColumnSort(),this.createCssRules(),this.resizeCanvas(),this.bindAncestorScrollEvents(),this._bindingEventService.bind(this._container,"resize",this.resizeCanvas.bind(this)),this._viewport.forEach(e=>{this._bindingEventService.bind(e,"scroll",this.handleScroll.bind(this))}),this._options.enableMouseWheelScrollHandler&&this._viewport.forEach(e=>{this.slickMouseWheelInstances.push(sG({element:e,onMouseWheel:this.handleMouseWheel.bind(this)}))}),this._headerScroller.forEach(e=>{this._bindingEventService.bind(e,"contextmenu",this.handleHeaderContextMenu.bind(this)),this._bindingEventService.bind(e,"click",this.handleHeaderClick.bind(this))}),this._headerRowScroller.forEach(e=>{this._bindingEventService.bind(e,"scroll",this.handleHeaderRowScroll.bind(this))}),this._options.createFooterRow&&(this._footerRow.forEach(e=>{this._bindingEventService.bind(e,"contextmenu",this.handleFooterContextMenu.bind(this)),this._bindingEventService.bind(e,"click",this.handleFooterClick.bind(this))}),this._footerRowScroller.forEach(e=>{this._bindingEventService.bind(e,"scroll",this.handleFooterRowScroll.bind(this))})),this._options.createPreHeaderPanel&&this._bindingEventService.bind(this._preHeaderPanelScroller,"scroll",this.handlePreHeaderPanelScroll.bind(this)),this._bindingEventService.bind(this._focusSink,"keydown",this.handleKeyDown.bind(this)),this._bindingEventService.bind(this._focusSink2,"keydown",this.handleKeyDown.bind(this)),this._canvas.forEach(e=>{this._bindingEventService.bind(e,"keydown",this.handleKeyDown.bind(this)),this._bindingEventService.bind(e,"click",this.handleClick.bind(this)),this._bindingEventService.bind(e,"dblclick",this.handleDblClick.bind(this)),this._bindingEventService.bind(e,"contextmenu",this.handleContextMenu.bind(this)),this._bindingEventService.bind(e,"mouseover",this.handleCellMouseOver.bind(this)),this._bindingEventService.bind(e,"mouseout",this.handleCellMouseOut.bind(this))}),lG&&(this.slickDraggableInstance=lG({containerElement:this._container,allowDragFrom:"div.slick-cell",allowDragFromClosest:"div.slick-cell.dnd, div.slick-cell.cell-reorder",onDragInit:this.handleDragInit.bind(this),onDragStart:this.handleDragStart.bind(this),onDrag:this.handleDrag.bind(this),onDragEnd:this.handleDragEnd.bind(this)})),this._options.suppressCssChangesOnHiddenInit||this.restoreCssFromHiddenInit())}cacheCssForHiddenInit(){this._hiddenParents=K.parents(this._container,":hidden"),this._hiddenParents.forEach(e=>{const a={};Object.keys(this.cssShow).forEach(u=>{this.cssShow&&(a[u]=e.style[u],e.style[u]=this.cssShow[u])}),this.oldProps.push(a)})}restoreCssFromHiddenInit(){let e=0;this._hiddenParents&&this._hiddenParents.forEach(a=>{const u=this.oldProps[e++];Object.keys(this.cssShow).forEach(i=>{this.cssShow&&(a.style[i]=u[i])})})}hasFrozenColumns(){return this._options.frozenColumn>-1}registerPlugin(e){this.plugins.unshift(e),e.init(this)}unregisterPlugin(e){for(let a=this.plugins.length;a>=0;a--)if(this.plugins[a]===e){this.plugins[a]?.destroy(),this.plugins.splice(a,1);break}}getPluginByName(e){for(let a=this.plugins.length-1;a>=0;a--)if(this.plugins[a]?.pluginName===e)return this.plugins[a]}getPubSubService(){return this._pubSubService}setSelectionModel(e){this.selectionModel&&(this.selectionModel.onSelectedRangesChanged.unsubscribe(this.handleSelectedRangesChanged.bind(this)),this.selectionModel.destroy&&this.selectionModel.destroy()),this.selectionModel=e,this.selectionModel&&(this.selectionModel.init(this),this.selectionModel.onSelectedRangesChanged.subscribe(this.handleSelectedRangesChanged.bind(this)))}getSelectionModel(){return this.selectionModel}getCanvasNode(e,a){return this._getContainerElement(this.getCanvases(),e,a)}getActiveCanvasNode(e){return void 0===e||(e instanceof jt&&(e=e.getNativeEvent()),this._activeCanvasNode=e?.target?.closest(".grid-canvas")),this._activeCanvasNode}getCanvases(){return this._canvas}getViewportNode(e,a){return this._getContainerElement(this.getViewports(),e,a)}getViewports(){return this._viewport}getActiveViewportNode(e){return this.setActiveViewportNode(e),this._activeViewportNode}setActiveViewportNode(e){return e instanceof jt&&(e=e.getNativeEvent()),this._activeViewportNode=e?.target?.closest(".slick-viewport"),this._activeViewportNode}_getContainerElement(e,a,u){if(!e)return;a||(a=0),u||(u=0);const i="number"==typeof a?a:this.getColumnIndex(a);return e[(this.hasFrozenRows&&u>=this.actualFrozenRow+(this._options.frozenBottom?0:1)?2:0)+(this.hasFrozenColumns()&&i>this._options.frozenColumn?1:0)]}measureScrollbar(){let e="";this._viewport.forEach(r=>e+=r.className);const a=T("div",{className:e,style:{position:"absolute",top:"-10000px",left:"-10000px",overflow:"auto",width:"100px",height:"100px"}},document.body),u=T("div",{style:{width:"200px",height:"200px",overflow:"auto"}},a),i={width:a.offsetWidth-a.clientWidth,height:a.offsetHeight-a.clientHeight};return u.remove(),a.remove(),i}getHeadersWidth(){this.headersWidth=this.headersWidthL=this.headersWidthR=0;const e=!this._options.autoHeight;let a=0;const u=this.columns.length;for(a=0;a-1&&a>this._options.frozenColumn?this.headersWidthR+=i||0:this.headersWidthL+=i||0}return e&&(this._options.frozenColumn>-1&&a>this._options.frozenColumn?this.headersWidthR+=this.scrollbarDimensions?.width||0:this.headersWidthL+=this.scrollbarDimensions?.width||0),this.hasFrozenColumns()?(this.headersWidthL=this.headersWidthL+1e3,this.headersWidthR=Math.max(this.headersWidthR,this.viewportW)+this.headersWidthL,this.headersWidthR+=this.scrollbarDimensions?.width||0):(this.headersWidthL+=this.scrollbarDimensions?.width||0,this.headersWidthL=Math.max(this.headersWidthL,this.viewportW)+1e3),this.headersWidth=this.headersWidthL+this.headersWidthR,Math.max(this.headersWidth,this.viewportW)+1e3}getCanvasWidth(){const e=this.viewportHasVScroll?this.viewportW-(this.scrollbarDimensions?.width||0):this.viewportW;let a=this.columns.length;for(this.canvasWidthL=this.canvasWidthR=0;a--;)!this.columns[a]||this.columns[a].hidden||(this.hasFrozenColumns()&&a>this._options.frozenColumn?this.canvasWidthR+=this.columns[a].width||0:this.canvasWidthL+=this.columns[a].width||0);let u=this.canvasWidthL+this.canvasWidthR;if(this._options.fullWidthRows){const i=Math.max(u,e)-u;i>0&&(u+=i,this.hasFrozenColumns()?this.canvasWidthR+=i:this.canvasWidthL+=i)}return u}updateCanvasWidth(e){const a=this.canvasWidth,u=this.canvasWidthL,i=this.canvasWidthR;this.canvasWidth=this.getCanvasWidth();const r=this.canvasWidth!==a||this.canvasWidthL!==u||this.canvasWidthR!==i;if(r||this.hasFrozenColumns()||this.hasFrozenRows)if(K.width(this._canvasTopL,this.canvasWidthL),this.getHeadersWidth(),K.width(this._headerL,this.headersWidthL),K.width(this._headerR,this.headersWidthR),this.hasFrozenColumns()){const o=K.width(this._container)||0;if(o>0&&this.canvasWidthL>o&&this._options.throwWhenFrozenNotAllViewable)throw new Error("[SlickGrid] Frozen columns cannot be wider than the actual grid container width. Make sure to have less columns freezed or make your grid container wider");K.width(this._canvasTopR,this.canvasWidthR),K.width(this._paneHeaderL,this.canvasWidthL),K.setStyleSize(this._paneHeaderR,"left",this.canvasWidthL),K.setStyleSize(this._paneHeaderR,"width",this.viewportW-this.canvasWidthL),K.width(this._paneTopL,this.canvasWidthL),K.setStyleSize(this._paneTopR,"left",this.canvasWidthL),K.width(this._paneTopR,this.viewportW-this.canvasWidthL),K.width(this._headerRowScrollerL,this.canvasWidthL),K.width(this._headerRowScrollerR,this.viewportW-this.canvasWidthL),K.width(this._headerRowL,this.canvasWidthL),K.width(this._headerRowR,this.canvasWidthR),this._options.createFooterRow&&(K.width(this._footerRowScrollerL,this.canvasWidthL),K.width(this._footerRowScrollerR,this.viewportW-this.canvasWidthL),K.width(this._footerRowL,this.canvasWidthL),K.width(this._footerRowR,this.canvasWidthR)),this._options.createPreHeaderPanel&&K.width(this._preHeaderPanel,this._options.preHeaderPanelWidth??this.canvasWidth),K.width(this._viewportTopL,this.canvasWidthL),K.width(this._viewportTopR,this.viewportW-this.canvasWidthL),this.hasFrozenRows&&(K.width(this._paneBottomL,this.canvasWidthL),K.setStyleSize(this._paneBottomR,"left",this.canvasWidthL),K.width(this._viewportBottomL,this.canvasWidthL),K.width(this._viewportBottomR,this.viewportW-this.canvasWidthL),K.width(this._canvasBottomL,this.canvasWidthL),K.width(this._canvasBottomR,this.canvasWidthR))}else K.width(this._paneHeaderL,"100%"),K.width(this._paneTopL,"100%"),K.width(this._headerRowScrollerL,"100%"),K.width(this._headerRowL,this.canvasWidth),this._options.createFooterRow&&(K.width(this._footerRowScrollerL,"100%"),K.width(this._footerRowL,this.canvasWidth)),this._options.createPreHeaderPanel&&K.width(this._preHeaderPanel,this._options.preHeaderPanelWidth??this.canvasWidth),K.width(this._viewportTopL,"100%"),this.hasFrozenRows&&(K.width(this._viewportBottomL,"100%"),K.width(this._canvasBottomL,this.canvasWidthL));this.viewportHasHScroll=this.canvasWidth>=this.viewportW-(this.scrollbarDimensions?.width||0),K.width(this._headerRowSpacerL,this.canvasWidth+(this.viewportHasVScroll&&this.scrollbarDimensions?.width||0)),K.width(this._headerRowSpacerR,this.canvasWidth+(this.viewportHasVScroll&&this.scrollbarDimensions?.width||0)),this._options.createFooterRow&&(K.width(this._footerRowSpacerL,this.canvasWidth+(this.viewportHasVScroll&&this.scrollbarDimensions?.width||0)),K.width(this._footerRowSpacerR,this.canvasWidth+(this.viewportHasVScroll&&this.scrollbarDimensions?.width||0))),(r||e)&&this.applyColumnWidths()}disableSelection(e){e.forEach(a=>{a.setAttribute("unselectable","on"),a.style.mozUserSelect="none",this._bindingEventService.bind(a,"selectstart",()=>!1)})}getMaxSupportedCssHeight(){let e=1e6;const a=navigator.userAgent.toLowerCase().match(/firefox/)?this._options.ffMaxSupportedCssHeight:this._options.maxSupportedCssHeight,u=T("div",{style:{display:"hidden"}},document.body);let i=!0;for(;i;){const r=2*e;K.height(u,r);const o=K.height(u);if(r>a||o!==r){i=!1;break}e=r}return u.remove(),e}getUID(){return this.uid}getHeaderColumnWidthDiff(){return this.headerColumnWidthDiff}getScrollbarDimensions(){return this.scrollbarDimensions}getDisplayedScrollbarDimensions(){return{width:this.viewportHasVScroll&&this.scrollbarDimensions?.width||0,height:this.viewportHasHScroll&&this.scrollbarDimensions?.height||0}}getAbsoluteColumnMinWidth(){return this.absoluteColumnMinWidth}bindAncestorScrollEvents(){let e=this.hasFrozenRows&&!this._options.frozenBottom?this._canvasBottomL:this._canvasTopL;for(;(e=e.parentNode)!==document.body&&e;)(e===this._viewportTopL||e.scrollWidth!==e.clientWidth||e.scrollHeight!==e.clientHeight)&&(this._boundAncestors.push(e),this._bindingEventService.bind(e,"scroll",this.handleActiveCellPositionChange.bind(this)))}unbindAncestorScrollEvents(){this._boundAncestors.forEach(e=>{this._bindingEventService.unbindByEventName(e,"scroll")}),this._boundAncestors=[]}updateColumnHeader(e,a,u){if(this.initialized){const i=this.getColumnIndex(e);if(!Su(i))return;const r=this.columns[i],o=this.getColumnByIndex(i);return o&&(void 0!==a&&(this.columns[i].name=a),void 0!==u&&(this.columns[i].toolTip=u),this.triggerEvent(this.onBeforeHeaderCellDestroy,{node:o,column:r,grid:this}),o.setAttribute("title",u||""),void 0!==a&&this.applyHtmlCode(o.children[0],a),this.triggerEvent(this.onHeaderCellRendered,{node:o,column:r,grid:this})),o}}getHeader(e){if(!e)return this.hasFrozenColumns()?this._headers:this._headerL;const a=this.getColumnIndex(e.id);return this.hasFrozenColumns()?a<=this._options.frozenColumn?this._headerL:this._headerR:this._headerL}getHeaderColumn(e){const a="number"==typeof e?e:this.getColumnIndex(e),u=this.hasFrozenColumns()?a<=this._options.frozenColumn?this._headerL:this._headerR:this._headerL,i=this.hasFrozenColumns()?a<=this._options.frozenColumn?a:a-this._options.frozenColumn-1:a;return u.children[i]}getHeaderRow(){return this.hasFrozenColumns()?this._headerRows:this._headerRows?.[0]}getFooterRow(){return this.hasFrozenColumns()?this._footerRow:this._footerRow?.[0]}getPreHeaderPanel(){return this._preHeaderPanel}getPreHeaderPanelLeft(){return this._preHeaderPanel}getPreHeaderPanelRight(){return this._preHeaderPanelR}getHeaderRowColumn(e){let u,a="number"==typeof e?e:this.getColumnIndex(e);return this.hasFrozenColumns()?a<=this._options.frozenColumn?u=this._headerRowL:(u=this._headerRowR,a-=this._options.frozenColumn+1):u=this._headerRowL,u.children[a]}getFooterRowColumn(e){let u,a="number"==typeof e?e:this.getColumnIndex(e);return this.hasFrozenColumns()?a<=this._options.frozenColumn?u=this._footerRowL:(u=this._footerRowR,a-=this._options.frozenColumn+1):u=this._footerRowL,u?.children[a]}createColumnFooter(){if(this._options.createFooterRow){this._footerRow.forEach(e=>{e.querySelectorAll(".slick-footerrow-column").forEach(u=>{const i=K.storage.get(u,"column");this.triggerEvent(this.onBeforeFooterRowCellDestroy,{node:u,column:i,grid:this})})}),Ct(this._footerRowL),Ct(this._footerRowR);for(let e=0;ethis._options.frozenColumn?this._footerRowR:this._footerRowL),i=this.hasFrozenColumns()&&e<=this._options.frozenColumn?"frozen":null;i&&u.classList.add(i),K.storage.put(u,"column",a),this.triggerEvent(this.onFooterRowCellRendered,{node:u,column:a,grid:this})}}}handleHeaderMouseHoverOn(e){e?.target.classList.add("slick-state-hover")}handleHeaderMouseHoverOff(e){e?.target.classList.remove("slick-state-hover")}createColumnHeaders(){this._headers.forEach(e=>{e.querySelectorAll(".slick-header-column").forEach(u=>{const i=K.storage.get(u,"column");i&&this.triggerEvent(this.onBeforeHeaderCellDestroy,{node:u,column:i,grid:this})})}),Ct(this._headerL),Ct(this._headerR),this.getHeadersWidth(),K.width(this._headerL,this.headersWidthL),K.width(this._headerR,this.headersWidthR),this._headerRows.forEach(e=>{e.querySelectorAll(".slick-headerrow-column").forEach(u=>{const i=K.storage.get(u,"column");i&&this.triggerEvent(this.onBeforeHeaderRowCellDestroy,{node:this,column:i,grid:this})})}),Ct(this._headerRowL),Ct(this._headerRowR),this._options.createFooterRow&&(this._footerRowL.querySelectorAll(".slick-footerrow-column").forEach(a=>{const u=K.storage.get(a,"column");u&&this.triggerEvent(this.onBeforeFooterRowCellDestroy,{node:this,column:u,grid:this})}),Ct(this._footerRowL),this.hasFrozenColumns()&&(this._footerRowR.querySelectorAll(".slick-footerrow-column").forEach(u=>{const i=K.storage.get(u,"column");i&&this.triggerEvent(this.onBeforeFooterRowCellDestroy,{node:this,column:i,grid:this})}),Ct(this._footerRowR)));for(let e=0;e{a.headerCellAttrs.hasOwnProperty(h)&&r.setAttribute(h,a.headerCellAttrs[h])}),a.sortable&&(r.classList.add("slick-header-sortable"),T("div",{className:"slick-sort-indicator "+(this._options.numberedMultiColumnSort&&!this._options.sortColNumberInSeparateSpan?" slick-sort-indicator-numbered":"")},r),this._options.numberedMultiColumnSort&&this._options.sortColNumberInSeparateSpan&&T("div",{className:"slick-sort-indicator-numbered"},r)),this.triggerEvent(this.onHeaderCellRendered,{node:r,column:a,grid:this}),this._options.showHeaderRow){const h=T("div",{className:`slick-state-default slick-headerrow-column l${e} r${e}`},i),m=this.hasFrozenColumns()&&e<=this._options.frozenColumn?"frozen":null;m&&h.classList.add(m),this._bindingEventService.bind(h,"mouseenter",this.handleHeaderRowMouseEnter.bind(this)),this._bindingEventService.bind(h,"mouseleave",this.handleHeaderRowMouseLeave.bind(this)),this._bindingEventService.bind(h,"mouseover",this.handleHeaderRowMouseOver.bind(this)),this._bindingEventService.bind(h,"mouseout",this.handleHeaderRowMouseOut.bind(this)),K.storage.put(h,"column",a),this.triggerEvent(this.onHeaderRowCellRendered,{node:h,column:a,grid:this})}if(this._options.createFooterRow&&this._options.showFooterRow){const m=T("div",{className:`slick-state-default slick-footerrow-column l${e} r${e}`},this.hasFrozenColumns()?e<=this._options.frozenColumn?this._footerRow[0]:this._footerRow[1]:this._footerRow[0]);K.storage.put(m,"column",a),this.triggerEvent(this.onFooterRowCellRendered,{node:m,column:a,grid:this})}}this.setSortColumns(this.sortColumns),this.setupColumnResize(),this._options.enableColumnReorder&&("function"==typeof this._options.enableColumnReorder?this._options.enableColumnReorder(this,this._headers,this.headerColumnWidthDiff,this.setColumns,this.setupColumnResize,this.columns,this.getColumnIndex,this.uid,this.triggerEvent):this.setupColumnReorder())}setupColumnSort(){this._headers.forEach(e=>{this._bindingEventService.bind(e,"click",a=>{if(this.columnResizeDragging||a.target.classList.contains("slick-resizable-handle"))return;const u=a.target.closest(".slick-header-column");if(!u)return;const i=K.storage.get(u,"column");if(i?.sortable){if(!this.getEditorLock()?.commitCurrentEdit())return;const r=this.sortColumns.slice();let o=null,d=0;for(;d{const v=this.columns[this.getColumnIndex(E.columnId)];return!v||v.hidden?null:{columnId:v.id,sortCol:v,sortAsc:E.sortAsc}}).filter(E=>E)}:{multiColumnSort:!1,previousSortColumns:r,columnId:this.sortColumns.length>0?i.id:null,sortCol:this.sortColumns.length>0?i:null,sortAsc:!(this.sortColumns.length>0)||this.sortColumns[0].sortAsc},!1!==this.triggerEvent(this.onBeforeSort,m,a).getReturnValue()&&(this.setSortColumns(this.sortColumns),this.triggerEvent(this.onSort,m,a))}})})}setupColumnReorder(){this.sortableSideLeftInstance?.destroy(),this.sortableSideRightInstance?.destroy();let e=null;const a=()=>this._viewportScrollContainerX.scrollLeft+=10,u=()=>this._viewportScrollContainerX.scrollLeft-=10;let i=!1;const r={animation:50,direction:"horizontal",chosenClass:"slick-header-column-active",ghostClass:"slick-sortable-placeholder",draggable:".slick-header-column",dragoverBubble:!1,revertClone:!0,scroll:!this.hasFrozenColumns(),filter:`.${this._options.unorderableColumnCssClass}`,onMove:o=>!o.related.classList.contains(this._options.unorderableColumnCssClass),onStart:o=>{i=!this.hasFrozenColumns()||Du(o.item).left>Du(this._viewportScrollContainerX).left,i&&o.originalEvent.pageX>this._container.clientWidth?e||(e=setInterval(a,100)):i&&o.originalEvent.pageX{if(clearInterval(e),e=null,!this.getEditorLock()?.commitCurrentEdit())return;let d=this.sortableSideLeftInstance?.toArray()??[];d=d.concat(this.sortableSideRightInstance?.toArray()??[]);const h=[];for(let m=0;mC.remove()),k=v.length||!v[k]||k=h)continue;const f=T("div",{className:"slick-resizable-handle",role:"separator",ariaOrientation:"horizontal"},x);this._bindingEventService.bind(f,"dblclick",this.handleResizeableDoubleClick.bind(this)),this.slickResizableInstances.push(dG({resizeableElement:x,resizeableHandleElement:f,onResizeStart:(C,A)=>{const w=C.touches?C.changedTouches[0]:C;if(!this.getEditorLock()?.commitCurrentEdit())return!1;i=w.pageX,m=0,A.resizeableElement.classList.add("slick-header-column-active");let z=null,L=null;for(let $=0;${const w=C.touches?C.changedTouches[0]:C;let z;this.columnResizeDragging=!0;const L=Math.min(o,Math.max(r,w.pageX))-i;let M,j=0,$=0;const oe=this.viewportHasVScroll?this.viewportW-(this.scrollbarDimensions?.width||0):this.viewportW;if(L<0){for(M=L,e=k;e>=0;e--)u=v[e],u&&u.resizable&&!u.hidden&&(z=Math.max(u.minWidth||0,this.absoluteColumnMinWidth),M&&(u.previousWidth||0)+Mthis._options.frozenColumn?$+=u.width||0:j+=u.width||0);if(this._options.forceFitColumns)for(M=-L,e=k+1;ethis._options.frozenColumn?$+=u.width||0:j+=u.width||0);else for(e=k+1;ethis._options.frozenColumn?$+=u.width||0:j+=u.width||0);if(this._options.forceFitColumns)for(M=-L,e=k+1;e=0;e--)if(u=v[e],u&&!u.hidden&&u.resizable)if(M&&u.maxWidth&&u.maxWidth-(u.previousWidth||0)m&&neoe?m:ee):u.width=ee,M=0}for(a=0;a<=k;a++)u=v[a],u&&!u.hidden&&(this.hasFrozenColumns()&&a>this._options.frozenColumn?$+=u.width||0:j+=u.width||0);if(this._options.forceFitColumns)for(M=-L,e=k+1;ethis._options.frozenColumn?$+=u.width||0:j+=u.width||0);else for(e=k+1;ethis._options.frozenColumn?$+=u.width||0:j+=u.width||0)}this.hasFrozenColumns()&&j!==this.canvasWidthL&&(K.width(this._headerL,j+1e3),K.setStyleSize(this._paneHeaderR,"left",j)),this.applyColumnHeaderWidths(),this._options.syncColumnCellResize&&this.applyColumnWidths(),this.triggerEvent(this.onColumnsDrag,{triggeredByColumn:A.resizeableElement,resizeHandle:A.resizeableHandleElement})},onResizeEnd:(C,A)=>{A.resizeableElement.classList.remove("slick-header-column-active");const w=A.resizeableElement.id.replace(this.uid,"");let z;for(!0===this.triggerEvent(this.onBeforeColumnsResize,{triggeredByColumn:w}).getReturnValue()&&this.applyColumnHeaderWidths(),e=0;ethis.columnResizeDragging=!1,this._options.columnResizingDelay)}}))}}getVBoxDelta(e){const u=getComputedStyle(e);let i=0;return["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"].forEach(r=>i+=K.toFloat(u[r])),i}setFrozenOptions(){if(this._options.frozenColumn=this._options.frozenColumn>=0&&this._options.frozenColumn-1){this.hasFrozenRows=!0,this.frozenRowsHeight=this._options.frozenRow*this._options.rowHeight;const e=this.getDataLength();this.actualFrozenRow=this._options.frozenBottom?e-this._options.frozenRow:this._options.frozenRow}else this.hasFrozenRows=!1}setPaneVisibility(){this.hasFrozenColumns()?(K.show(this._paneHeaderR),K.show(this._paneTopR),this.hasFrozenRows?(K.show(this._paneBottomL),K.show(this._paneBottomR)):(K.hide(this._paneBottomR),K.hide(this._paneBottomL))):(K.hide(this._paneHeaderR),K.hide(this._paneTopR),K.hide(this._paneBottomR),this.hasFrozenRows?K.show(this._paneBottomL):(K.hide(this._paneBottomR),K.hide(this._paneBottomL)))}setOverflow(){if(this._viewportTopL.style.overflowX=this.hasFrozenColumns()?this.hasFrozenRows&&!this._options.alwaysAllowHorizontalScroll?"hidden":"scroll":this.hasFrozenRows&&!this._options.alwaysAllowHorizontalScroll?"hidden":"auto",this._viewportTopL.style.overflowY=!this.hasFrozenColumns()&&this._options.alwaysShowVerticalScroll?"scroll":this.hasFrozenColumns()?(this.hasFrozenRows,"hidden"):this.hasFrozenRows?"scroll":"auto",this._viewportTopR.style.overflowX=this.hasFrozenColumns()?this.hasFrozenRows&&!this._options.alwaysAllowHorizontalScroll?"hidden":"scroll":this.hasFrozenRows&&!this._options.alwaysAllowHorizontalScroll?"hidden":"auto",this._viewportTopR.style.overflowY=this._options.alwaysShowVerticalScroll?"scroll":(this.hasFrozenColumns(),this.hasFrozenRows?"scroll":"auto"),this._viewportBottomL.style.overflowX=this.hasFrozenColumns()?this.hasFrozenRows&&!this._options.alwaysAllowHorizontalScroll?"scroll":"auto":(this.hasFrozenRows&&this._options.alwaysAllowHorizontalScroll,"auto"),this._viewportBottomL.style.overflowY=!this.hasFrozenColumns()&&this._options.alwaysShowVerticalScroll?"scroll":this.hasFrozenColumns()?(this.hasFrozenRows,"hidden"):this.hasFrozenRows?"scroll":"auto",this._viewportBottomR.style.overflowX=this.hasFrozenColumns()?this.hasFrozenRows&&!this._options.alwaysAllowHorizontalScroll?"scroll":"auto":(this.hasFrozenRows&&this._options.alwaysAllowHorizontalScroll,"auto"),this._viewportBottomR.style.overflowY=this._options.alwaysShowVerticalScroll?"scroll":(this.hasFrozenColumns(),this.hasFrozenRows,"auto"),this._options.viewportClass){const e=Vt(this._options.viewportClass);this._viewportTopL.classList.add(...e),this._viewportTopR.classList.add(...e),this._viewportBottomL.classList.add(...e),this._viewportBottomR.classList.add(...e)}}setScroller(){this.hasFrozenColumns()?(this._headerScrollContainer=this._headerScrollerR,this._headerRowScrollContainer=this._headerRowScrollerR,this._footerRowScrollContainer=this._footerRowScrollerR,this.hasFrozenRows?this._options.frozenBottom?(this._viewportScrollContainerX=this._viewportBottomR,this._viewportScrollContainerY=this._viewportTopR):this._viewportScrollContainerX=this._viewportScrollContainerY=this._viewportBottomR:this._viewportScrollContainerX=this._viewportScrollContainerY=this._viewportTopR):(this._headerScrollContainer=this._headerScrollerL,this._headerRowScrollContainer=this._headerRowScrollerL,this._footerRowScrollContainer=this._footerRowScrollerL,this.hasFrozenRows?this._options.frozenBottom?(this._viewportScrollContainerX=this._viewportBottomL,this._viewportScrollContainerY=this._viewportTopL):this._viewportScrollContainerX=this._viewportScrollContainerY=this._viewportBottomL:this._viewportScrollContainerX=this._viewportScrollContainerY=this._viewportTopL)}measureCellPaddingAndBorder(){const e=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],a=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],u=this._headers[0];this.headerColumnWidthDiff=this.headerColumnHeightDiff=0,this.cellWidthDiff=this.cellHeightDiff=0;let i=T("div",{className:"slick-state-default slick-header-column",style:{visibility:"hidden"},textContent:"-"},u),r=getComputedStyle(i);"border-box"!==r.boxSizing&&(e.forEach(d=>this.headerColumnWidthDiff+=K.toFloat(r[d])),a.forEach(d=>this.headerColumnHeightDiff+=K.toFloat(r[d]))),i.remove();const o=T("div",{className:"slick-row"},this._canvas[0]);i=T("div",{className:"slick-cell",id:"",style:{visibility:"hidden"},textContent:"-"},o),r=getComputedStyle(i),"border-box"!==r.boxSizing&&(e.forEach(d=>this.cellWidthDiff+=K.toFloat(r[d])),a.forEach(d=>this.cellHeightDiff+=K.toFloat(r[d]))),o.remove(),this.absoluteColumnMinWidth=Math.max(this.headerColumnWidthDiff,this.cellWidthDiff)}createCssRules(){this._style=document.createElement("style"),this._style.nonce=this._options.nonce||"",(this._options.shadowRoot||document.head).appendChild(this._style);const e=this._options.rowHeight-this.cellHeightDiff,a=[`.${this.uid} .slick-group-header-column { left: 1000px; }`,`.${this.uid} .slick-header-column { left: 1000px; }`,`.${this.uid} .slick-top-panel { height: ${this._options.topPanelHeight}px; }`,`.${this.uid} .slick-preheader-panel { height: ${this._options.preHeaderPanelHeight}px; }`,`.${this.uid} .slick-headerrow-columns { height: ${this._options.headerRowHeight}px; }`,`.${this.uid} .slick-footerrow-columns { height: ${this._options.footerRowHeight}px; }`,`.${this.uid} .slick-cell { height: ${e}px; }`,`.${this.uid} .slick-row { height: ${this._options.rowHeight}px; }`],u=this._style.sheet;if(u){a.forEach(i=>{u.insertRule(i)});for(let i=0;i',this._style=a.content.firstChild,(this._options.shadowRoot||document.head).appendChild(this._style);for(let u=0;u=0&&(u[this._options.devMode.ownerNodeIndex].ownerNode=this._style),a=0;a{this._bindingEventService.unbindByEventName(r,"keydown"),this._bindingEventService.unbindByEventName(r,"click"),this._bindingEventService.unbindByEventName(r,"dblclick"),this._bindingEventService.unbindByEventName(r,"contextmenu"),this._bindingEventService.unbindByEventName(r,"mouseover"),this._bindingEventService.unbindByEventName(r,"mouseout")}),this._viewport.forEach(r=>{this._bindingEventService.unbindByEventName(r,"scroll")}),this._headerScroller.forEach(r=>{this._bindingEventService.unbindByEventName(r,"contextmenu"),this._bindingEventService.unbindByEventName(r,"click")}),this._headerRowScroller.forEach(r=>{this._bindingEventService.unbindByEventName(r,"scroll")}),this._footerRow&&this._footerRow.forEach(r=>{this._bindingEventService.unbindByEventName(r,"contextmenu"),this._bindingEventService.unbindByEventName(r,"click")}),this._footerRowScroller&&this._footerRowScroller.forEach(r=>{this._bindingEventService.unbindByEventName(r,"scroll")}),this._preHeaderPanelScroller&&this._bindingEventService.unbindByEventName(this._preHeaderPanelScroller,"scroll"),this._bindingEventService.unbindByEventName(this._focusSink,"keydown"),this._bindingEventService.unbindByEventName(this._focusSink2,"keydown");const u=this._container.querySelectorAll(".slick-resizable-handle");[].forEach.call(u,r=>{this._bindingEventService.unbindByEventName(r,"dblclick")});const i=this._container.querySelectorAll(".slick-header-column");[].forEach.call(i,r=>{this._bindingEventService.unbindByEventName(r,"mouseenter"),this._bindingEventService.unbindByEventName(r,"mouseleave"),this._bindingEventService.unbindByEventName(r,"mouseover"),this._bindingEventService.unbindByEventName(r,"mouseout")}),Ct(this._container),this._container.classList.remove(this.uid),this.clearAllTimers(),e&&Jz(this)}destroyAllInstances(e){if(e){const a=Array.isArray(e)?e:[e];let u;for(;Su(u=a.pop());)u&&"function"==typeof u.destroy&&u.destroy()}return e=Array.isArray(e)?[]:null}autosizeColumns(){this.legacyAutosizeColumns()}legacyAutosizeColumns(){let e,a,u=0,i=0,r=0;const o=[],d=this.viewportHasVScroll?this.viewportW-(this.scrollbarDimensions?.width||0):this.viewportW;for(e=0;ed&&u;){const m=(i-d)/u;for(e=0;ed;e++){if(a=this.columns[e],!a||a.hidden)continue;const E=o[e];if(!a.resizable||E<=a.minWidth||E<=this.absoluteColumnMinWidth)continue;const v=Math.max(a.minWidth,this.absoluteColumnMinWidth);let k=Math.floor(m*(E-v))||1;k=Math.min(k,E-v),i-=k,u-=k,o[e]-=k}if(r<=i)break;r=i}for(r=i;i=i)break;r=i}let h=!1;for(e=0;e!e.hidden)}triggerEvent(e,a,u){const i=u||new jt(u,a),r=a||{};return r.grid=this,e.notify(r,i,this)}getEditorLock(){return this._options.editorLock}getEditController(){return this.editController}getColumnIndex(e){return this.columnsById[e]}applyColumnHeaderWidths(){if(this.initialized){let e=0;const a=this.getVisibleColumns();this._headers.forEach(u=>{for(let i=0;ithis._options.frozenColumn?this.canvasWidthR:this.canvasWidthL)-e-a+"px",this._options.frozenColumn!==i&&(e+=this.columns[i].width)),this._options.frozenColumn===i&&(e=0)}setSortColumn(e,a){this.setSortColumns([{columnId:e,sortAsc:a}])}getColumnByIndex(e){let a;return this._headers.every(u=>{const i=u.children.length;return e1;this._headers.forEach(i=>{let r=i.querySelectorAll(".slick-header-column-sorted");r.forEach(o=>o.classList.remove("slick-header-column-sorted")),r=i.querySelectorAll(".slick-sort-indicator"),r.forEach(o=>o.classList.remove("slick-sort-indicator-asc","slick-sort-indicator-desc")),r=i.querySelectorAll(".slick-sort-indicator-numbered"),r.forEach(o=>o.textContent="")});let u=1;this.sortColumns.forEach(i=>{Su(i.sortAsc)||(i.sortAsc=!0);const r=this.getColumnIndex(i.columnId);if(Su(r)){const o=this.getColumnByIndex(r);if(o){o.classList.add("slick-header-column-sorted");let d=o.querySelector(".slick-sort-indicator");d?.classList.add(i.sortAsc?"slick-sort-indicator-asc":"slick-sort-indicator-desc"),a&&(d=o.querySelector(".slick-sort-indicator-numbered"),d&&(d.textContent=String(u)))}}u++})}getSortColumns(){return this.sortColumns}handleSelectedRangesChanged(e,a){const u=e.getNativeEvent(),i=this.selectedRows.slice(0);this.selectedRows=[];const r={};for(let o=0;oi.indexOf(m)<0),h=i.filter(m=>this.getSelectedRows().indexOf(m)<0);this.triggerEvent(this.onSelectedRowsChanged,{rows:this.getSelectedRows(),previousSelectedRows:i,caller:o,changedSelectedRows:d,changedUnselectedRows:h},e)}}simpleArrayEquals(e,a){return Array.isArray(e)&&Array.isArray(a)&&a.sort().toString()!==e.sort().toString()}getColumns(){return this.columns}updateColumnCaches(){this.columnPosLeft=[],this.columnPosRight=[];let e=0;for(let a=0,u=this.columns.length;aa.maxWidth&&(a.width=a.maxWidth)}}setColumns(e){this.triggerEvent(this.onBeforeSetColumns,{previousColumns:this.columns,newColumns:e,grid:this}),this.columns=e,this.updateColumnsInternal(),this.triggerEvent(this.onAfterSetColumns,{newColumns:e,grid:this})}updateColumns(){this.triggerEvent(this.onBeforeUpdateColumns,{columns:this.columns,grid:this}),this.updateColumnsInternal()}updateColumnsInternal(){this.updateColumnProps(),this.updateColumnCaches(),this.initialized&&(this.setPaneVisibility(),this.setOverflow(),this.invalidateAllRows(),this.createColumnHeaders(),this.createColumnFooter(),this.removeCssRules(),this.createCssRules(),this.resizeCanvas(),this.updateCanvasWidth(),this.applyColumnWidths(),this.handleScroll(),this.getSelectionModel()?.refreshSelections())}getOptions(){return this._options}setOptions(e,a,u,i){this.prepareForOptionsChange(),this._options.enableAddRow!==e.enableAddRow&&this.invalidateRow(this.getDataLength()),e.frozenColumn&&(this.getViewports().forEach(o=>o.scrollLeft=0),this.handleScroll());const r=su(!0,{},this._options);this._options=su(this._options,e),this.triggerEvent(this.onSetOptions,{optionsBefore:r,optionsAfter:this._options}),this.internal_setOptions(a,u,i)}activateChangedOptions(e,a,u){this.prepareForOptionsChange(),this.invalidateRow(this.getDataLength()),this.triggerEvent(this.onActivateChangedOptions,{options:this._options}),this.internal_setOptions(e,a,u)}prepareForOptionsChange(){this.getEditorLock()?.commitCurrentEdit()&&this.makeActiveCellNormal()}internal_setOptions(e,a,u){void 0!==this._options.showColumnHeader&&this.setColumnHeaderVisibility(this._options.showColumnHeader),this.validateAndEnforceOptions(),this.setFrozenOptions(),void 0!==this._options.frozenBottom&&(this.enforceFrozenRowHeightRecalc=!0),this._viewport.forEach(i=>{i.style.overflowY=this._options.autoHeight?"hidden":"auto"}),e||this.render(),this.setScroller(),u||this.setOverflow(),a||this.setColumns(this.columns),!this._options.enableMouseWheelScrollHandler||!this._viewport||this.slickMouseWheelInstances&&0!==this.slickMouseWheelInstances.length?!1===this._options.enableMouseWheelScrollHandler&&this.destroyAllInstances(this.slickMouseWheelInstances):this._viewport.forEach(i=>{this.slickMouseWheelInstances.push(sG({element:i,onMouseWheel:this.handleMouseWheel.bind(this)}))})}validateAndEnforceOptions(){this._options.autoHeight&&(this._options.leaveSpaceForNewRows=!1)}setData(e,a){this.data=e,this.invalidateAllRows(),this.updateRowCount(),a&&this.scrollTo(0)}getData(){return this.data}getDataLength(){return this.data.getLength?this.data.getLength():this.data?.length||0}getDataLengthIncludingAddNew(){return this.getDataLength()+(!this._options.enableAddRow||this.pagingActive&&!this.pagingIsLastPage?0:1)}getDataItem(e){return this.data.getItem?this.data.getItem(e):this.data[e]}getTopPanel(){return this._topPanels[0]}getTopPanels(){return this._topPanels}hasDataView(){return!Array.isArray(this.data)}togglePanelVisibility(e,a,u){this._options[e]!==u&&(this._options[e]=u,u?K.show(a):K.hide(a),this.resizeCanvas())}setTopPanelVisibility(e){this.togglePanelVisibility("showTopPanel",this._topPanelScrollers,e)}setHeaderRowVisibility(e){this.togglePanelVisibility("showHeaderRow",this._headerRowScroller,e)}setColumnHeaderVisibility(e){this.togglePanelVisibility("showColumnHeader",this._headerScroller,e)}setFooterRowVisibility(e){this.togglePanelVisibility("showFooterRow",this._footerRowScroller,e)}setPreHeaderPanelVisibility(e){this.togglePanelVisibility("showPreHeaderPanel",[this._preHeaderPanelScroller,this._preHeaderPanelScrollerR],e)}getContainerNode(){return this._container}getRowTop(e){return this._options.rowHeight*e-this.offset}getRowFromPosition(e){return Math.floor((e+this.offset)/this._options.rowHeight)}scrollTo(e){e=Math.max(e,0),e=Math.min(e,(this.th||0)-K.height(this._viewportScrollContainerY)+((this.viewportHasHScroll||this.hasFrozenColumns())&&this.scrollbarDimensions?.height||0));const a=this.offset;this.offset=Math.round(this.page*(this.cj||0)),this.page=Math.min((this.n||0)-1,Math.floor(e/(this.ph||0)));const u=e-this.offset;if(this.offset!==a){const i=this.getVisibleRange(u);this.cleanupRows(i),this.updateRowPositions()}this.prevScrollTop!==u&&(this.vScrollDir=this.prevScrollTop+a/g,">"):""}getFormatter(e,a){const u=this.data?.getItemMetadata?.(e);return(u?.columns&&(u.columns[a.id]||u.columns[this.getColumnIndex(a.id)]))?.formatter||u?.formatter||a.formatter||this._options.formatterFactory?.getFormatter(a)||this._options.defaultFormatter}getEditor(e,a){const u=this.columns[a],r=this.data?.getItemMetadata?.(e)?.columns;return void 0!==r?.[u.id]?.editorClass?r[u.id].editorClass:void 0!==r?.[a]?.editorClass?r[a].editorClass:u.editorClass||this._options?.editorFactory?.getEditor(u)}getDataItemValueForColumn(e,a){return this._options.dataItemColumnValueExtractor?this._options.dataItemColumnValueExtractor(e,a):e[a.field]}appendRowHtml(e,a,u,i,r){const o=this.getDataItem(u),d=ui.leftPx){if(!f.alwaysRenderColumn&&this.columnPosLeft[C]>i.rightPx)break;this.hasFrozenColumns()&&C>this._options.frozenColumn?this.appendCellHtml(k,u,C,x,o):this.appendCellHtml(v,u,C,x,o)}else(f.alwaysRenderColumn||this.hasFrozenColumns()&&C<=this._options.frozenColumn)&&this.appendCellHtml(v,u,C,x,o);x>1&&(C+=x-1)}}appendCellHtml(e,a,u,i,r){const o=this.columns[u];let d="slick-cell l"+u+" r"+Math.min(this.columns.length-1,u+i-1)+(o.cssClass?" "+o.cssClass:"");this.hasFrozenColumns()&&u<=this._options.frozenColumn&&(d+=" frozen"),a===this.activeRow&&u===this.activeCell&&this._options.showCellSelection&&(d+=" active"),Object.keys(this.cellCssClasses).forEach(C=>{this.cellCssClasses[C][a]?.[o.id]&&(d+=` ${this.cellCssClasses[C][a][o.id]}`)});let h=null,m="";r&&(h=this.getDataItemValueForColumn(r,o),m=this.getFormatter(a,o)(a,u,h,o,r,this),null==m&&(m=""));const v=this.triggerEvent(this.onBeforeAppendCell,{row:a,cell:u,value:h,dataContext:r}).getReturnValue();let k="string"==typeof v?v:"";m?.addClasses&&(k+=Vt((k?" ":"")+m.addClasses).join(" "));const x=m?.toolTip?`${m.toolTip}`:"",f=T("div",{className:Vt(`${d} ${k||""}`).join(" "),role:"gridcell",tabIndex:-1});if(f.setAttribute("aria-describedby",this.uid+o.id),x&&f.setAttribute("title",x),o.hasOwnProperty("cellAttrs")&&o.cellAttrs instanceof Object&&Object.keys(o.cellAttrs).forEach(C=>{o.cellAttrs.hasOwnProperty(C)&&f.setAttribute(C,o.cellAttrs[C])}),r){const C=y3(m)?m:m.html||m.text;this.applyHtmlCode(f,C)}e.appendChild(f),m.insertElementAfterTarget&&Fj(f,m.insertElementAfterTarget),this.rowsCache[a].cellRenderQueue.push(u),this.rowsCache[a].cellColSpans[u]=i}cleanupRows(e){Object.keys(this.rowsCache).forEach(a=>{if(this.rowsCache){let u=+a,i=!0;this.hasFrozenRows&&(this._options.frozenBottom&&u>=this.actualFrozenRow||!this._options.frozenBottom&&u<=this.actualFrozenRow)&&(i=!1),(u=parseInt(a,10))!==this.activeRow&&(ue.bottom)&&i&&this.removeRowFromCache(u)}}),this._options.enableAsyncPostRenderCleanup&&this.startPostProcessingCleanup()}invalidate(){this.updateRowCount(),this.invalidateAllRows(),this.render()}invalidateAllRows(){this.currentEditor&&this.makeActiveCellNormal(),"object"==typeof this.rowsCache&&Object.keys(this.rowsCache).forEach(e=>{this.rowsCache&&this.removeRowFromCache(+e)}),this._options.enableAsyncPostRenderCleanup&&this.startPostProcessingCleanup()}invalidateRows(e){if(e?.length){this.vScrollDir=0;const a=e.length;for(let u=0;u=0&&this.invalidateRows([e])}queuePostProcessedRowForCleanup(e,a,u){this.postProcessgroupId++,"object"==typeof a&&Object.keys(a).forEach(i=>{a.hasOwnProperty(i)&&this.postProcessedCleanupQueue.push({actionType:"C",groupId:this.postProcessgroupId,node:e.cellNodesByColumnIdx[+i],columnIdx:+i,rowIdx:u})}),e.rowNode||(e.rowNode=[]),this.postProcessedCleanupQueue.push({actionType:"R",groupId:this.postProcessgroupId,node:e.rowNode}),e.rowNode?.forEach(i=>i.remove())}queuePostProcessedCellForCleanup(e,a,u){this.postProcessedCleanupQueue.push({actionType:"C",groupId:this.postProcessgroupId,node:e,columnIdx:a,rowIdx:u}),e.remove()}removeRowFromCache(e){const a=this.rowsCache[e];a?.rowNode&&(this._options.enableAsyncPostRenderCleanup&&this.postProcessedRows[e]?this.queuePostProcessedRowForCleanup(a,this.postProcessedRows[e],e):a.rowNode?.forEach(u=>u.parentElement?.removeChild(u)),delete this.rowsCache[e],delete this.postProcessedRows[e],this.renderedRows--,this.counter_rows_removed++)}applyFormatResultToCellNode(e,a,u){if(null==e&&(e=""),y3(e))return void this.applyHtmlCode(a,e);const i=e.html||e.text;this.applyHtmlCode(a,i),e.removeClasses&&!u&&a.classList.remove(...Vt(e.removeClasses)),e.addClasses&&a.classList.add(...Vt(e.addClasses)),e.toolTip&&a.setAttribute("title",e.toolTip)}updateCell(e,a){const u=this.getCellNode(e,a);if(u){const i=this.columns[a],r=this.getDataItem(e);if(this.currentEditor&&this.activeRow===e&&this.activeCell===a)this.currentEditor.loadValue(r);else{const o=r?this.getFormatter(e,i)(e,a,this.getDataItemValueForColumn(r,i),i,r,this):"";this.applyFormatResultToCellNode(o,u),this.invalidatePostProcessingResults(e)}}}updateRow(e){const a=this.rowsCache[e];if(!a)return;let u;this.ensureCellNodesInRowsCache(e);const i=this.getDataItem(e);Object.keys(a.cellNodesByColumnIdx).forEach(r=>{if(!a.cellNodesByColumnIdx.hasOwnProperty(r))return;const o=+r,d=this.columns[o],h=a.cellNodesByColumnIdx[o];this.currentEditor&&e===this.activeRow&&o===this.activeCell?this.currentEditor.loadValue(i):i?(u=this.getFormatter(e,d)(e,o,this.getDataItemValueForColumn(i,d),d,i,this),this.applyFormatResultToCellNode(u,h)):Ct(h)}),this.invalidatePostProcessingResults(e)}getViewportRowCount(){const e=this.getViewportHeight(),a=this.getScrollbarDimensions()?.height||0;return Math.floor((e-a)/this._options.rowHeight)}getViewportHeight(){if((!this._options.autoHeight||-1!==this._options.frozenColumn)&&(this.topPanelH=this._options.showTopPanel?this._options.topPanelHeight+this.getVBoxDelta(this._topPanelScrollers[0]):0,this.headerRowH=this._options.showHeaderRow?this._options.headerRowHeight+this.getVBoxDelta(this._headerRowScroller[0]):0,this.footerRowH=this._options.showFooterRow?this._options.footerRowHeight+this.getVBoxDelta(this._footerRowScroller[0]):0),this._options.autoHeight){let e=this._paneHeaderL.offsetHeight;e+=this._options.showHeaderRow?this._options.headerRowHeight+this.getVBoxDelta(this._headerRowScroller[0]):0,e+=this._options.showFooterRow?this._options.footerRowHeight+this.getVBoxDelta(this._footerRowScroller[0]):0,e+=this.getCanvasWidth()>this.viewportW&&this.scrollbarDimensions?.height||0,this.viewportH=this._options.rowHeight*this.getDataLengthIncludingAddNew()+(-1===this._options.frozenColumn?e:0)}else{const e=this._options.showColumnHeader?K.toFloat(K.height(this._headerScroller[0]))+this.getVBoxDelta(this._headerScroller[0]):0,a=this._options.createPreHeaderPanel&&this._options.showPreHeaderPanel?this._options.preHeaderPanelHeight+this.getVBoxDelta(this._preHeaderPanelScroller):0,u=getComputedStyle(this._container);this.viewportH=K.toFloat(u.height)-K.toFloat(u.paddingTop)-K.toFloat(u.paddingBottom)-e-this.topPanelH-this.headerRowH-this.footerRowH-a}return this.numVisibleRows=Math.ceil(this.viewportH/this._options.rowHeight),this.viewportH}getViewportWidth(){return this.viewportW=parseFloat(r7(this._container,"width"))||this._options.devMode&&this._options.devMode.containerClientWidth||0,this.viewportW}resizeCanvas(){if(this.initialized){if(this.paneTopH=0,this.paneBottomH=0,this.viewportTopH=0,this.viewportBottomH=0,this.getViewportWidth(),this.getViewportHeight(),this.hasFrozenRows?this._options.frozenBottom?(this.paneTopH=this.viewportH-this.frozenRowsHeight-(this.scrollbarDimensions?.height||0),this.paneBottomH=this.frozenRowsHeight+(this.scrollbarDimensions?.height||0)):(this.paneTopH=this.frozenRowsHeight,this.paneBottomH=this.viewportH-this.frozenRowsHeight):this.paneTopH=this.viewportH,this.paneTopH+=this.topPanelH+this.headerRowH+this.footerRowH,this.hasFrozenColumns()&&this._options.autoHeight&&(this.paneTopH+=this.scrollbarDimensions?.height||0),this.viewportTopH=this.paneTopH-this.topPanelH-this.headerRowH-this.footerRowH,this._options.autoHeight){if(this.hasFrozenColumns()){const a=getComputedStyle(this._headerScrollerL);K.height(this._container,this.paneTopH+K.toFloat(a.height))}this._paneTopL.style.position="relative"}K.setStyleSize(this._paneTopL,"top",K.height(this._paneHeaderL)||(this._options.showHeaderRow?this._options.headerRowHeight:0)+(this._options.showPreHeaderPanel?this._options.preHeaderPanelHeight:0)),K.height(this._paneTopL,this.paneTopH);const e=this._paneTopL.offsetTop+this.paneTopH;this._options.autoHeight||K.height(this._viewportTopL,this.viewportTopH),this.hasFrozenColumns()?(K.setStyleSize(this._paneTopR,"top",K.height(this._paneHeaderL)),K.height(this._paneTopR,this.paneTopH),K.height(this._viewportTopR,this.viewportTopH),this.hasFrozenRows&&(K.setStyleSize(this._paneBottomL,"top",e),K.height(this._paneBottomL,this.paneBottomH),K.setStyleSize(this._paneBottomR,"top",e),K.height(this._paneBottomR,this.paneBottomH),K.height(this._viewportBottomR,this.paneBottomH))):this.hasFrozenRows&&(K.width(this._paneBottomL,"100%"),K.height(this._paneBottomL,this.paneBottomH),K.setStyleSize(this._paneBottomL,"top",e)),this.hasFrozenRows?(K.height(this._viewportBottomL,this.paneBottomH),this._options.frozenBottom?(K.height(this._canvasBottomL,this.frozenRowsHeight),this.hasFrozenColumns()&&K.height(this._canvasBottomR,this.frozenRowsHeight)):(K.height(this._canvasTopL,this.frozenRowsHeight),this.hasFrozenColumns()&&K.height(this._canvasTopR,this.frozenRowsHeight))):K.height(this._viewportTopR,this.viewportTopH),(!this.scrollbarDimensions||!this.scrollbarDimensions.width)&&(this.scrollbarDimensions=this.measureScrollbar()),this._options.forceFitColumns&&this.legacyAutosizeColumns(),this.updateRowCount(),this.handleScroll(),this.lastRenderedScrollLeft=-1,this.render()}}updatePagingStatusFromView(e){this.pagingActive=0!==e.pageSize,this.pagingIsLastPage=e.pageNum===e.totalPages-1}updateRowCount(){if(this.initialized){const e=this.getDataLength(),a=this.getDataLengthIncludingAddNew();let u=0,i=this.hasFrozenRows&&!this._options.frozenBottom?K.height(this._canvasBottomL):K.height(this._canvasTopL);u=this.hasFrozenRows?this.getDataLength()-this._options.frozenRow:a+(this._options.leaveSpaceForNewRows?this.numVisibleRows-1:0);const r=K.height(this._viewportScrollContainerY),o=this.viewportHasVScroll;this.viewportHasVScroll=this._options.alwaysShowVerticalScroll||!this._options.autoHeight&&u*this._options.rowHeight>r,this.makeActiveCellNormal();const d=e-1;"object"==typeof this.rowsCache&&Object.keys(this.rowsCache).forEach(m=>{const E=+m;E>d&&this.removeRowFromCache(E)}),this._options.enableAsyncPostRenderCleanup&&this.startPostProcessingCleanup(),this.activeCellNode&&this.activeRow>d&&this.resetActiveCell(),i=this.h,this._options.autoHeight?this.h=this._options.rowHeight*u:(this.th=Math.max(this._options.rowHeight*u,r-(this.scrollbarDimensions?.height||0)),this.th1&&(i=i.concat(Array.from(u[1].children)));let r=i.length-1;for(;a.cellRenderQueue.length;){const o=a.cellRenderQueue.pop();a.cellNodesByColumnIdx[o]=i[r--]}}}cleanUpCells(e,a){if(this.hasFrozenRows&&(this._options.frozenBottom&&a>this.actualFrozenRow||a<=this.actualFrozenRow))return;const i=this.rowsCache[a],r=[];let o,d;for(Object.keys(i.cellNodesByColumnIdx).forEach(h=>{if(!i.cellNodesByColumnIdx.hasOwnProperty(h))return;const m=+h;if(m<=this._options.frozenColumn||Array.isArray(this.columns)&&this.columns[m]?.alwaysRenderColumn)return;const E=i.cellColSpans[m];(this.columnPosLeft[m]>e.rightPx||this.columnPosRight[Math.min(this.columns.length-1,(m||0)+E-1)]e.rightPx)break;if(Su(d=a.cellColSpans[f])){f+=d>1?d-1:0;continue}d=1,k&&(d=(k[this.columns[f].id]||k[f])?.colspan??1,"*"===d&&(d=C-f));const A=d;this.columnPosRight[Math.min(C-1,f+A-1)]>e.leftPx&&(this.appendCellHtml(u,E,f,A,x),r++),f+=A>1?A-1:0}r&&(o+=r,i.push(E))}if(u.children.length)for(;Su(h=i.pop());){let E;for(a=this.rowsCache[h];Su(E=a.cellRenderQueue.pop());)m=u.lastChild,m&&(this.hasFrozenColumns()&&E>this._options.frozenColumn?a.rowNode[1].appendChild(m):a.rowNode[0].appendChild(m),a.cellNodesByColumnIdx[E]=m)}}renderRows(e){const a=[],u=[],i=[];let r=!1;const o=this.getDataLength();for(let m=e.top,E=e.bottom;m<=E;m++)this.rowsCache[m]||this.hasFrozenRows&&this._options.frozenBottom&&m===this.getDataLength()||(this.renderedRows++,i.push(m),this.rowsCache[m]={rowNode:null,cellColSpans:[],cellNodesByColumnIdx:[],cellRenderQueue:[]},this.appendRowHtml(a,u,m,e,o),this.activeCellNode&&this.activeRow===m&&(r=!0),this.counter_rows_rendered++);if(!i.length)return;const d=document.createElement("div"),h=document.createElement("div");a.forEach(m=>d.appendChild(m)),u.forEach(m=>h.appendChild(m));for(let m=0,E=i.length;m=this.actualFrozenRow?this.hasFrozenColumns()?this.rowsCache?.hasOwnProperty(i[m])&&d.firstChild&&h.firstChild&&(this.rowsCache[i[m]].rowNode=[d.firstChild,h.firstChild],this._canvasBottomL.appendChild(d.firstChild),this._canvasBottomR.appendChild(h.firstChild)):this.rowsCache?.hasOwnProperty(i[m])&&d.firstChild&&(this.rowsCache[i[m]].rowNode=[d.firstChild],this._canvasBottomL.appendChild(d.firstChild)):this.hasFrozenColumns()?this.rowsCache?.hasOwnProperty(i[m])&&d.firstChild&&h.firstChild&&(this.rowsCache[i[m]].rowNode=[d.firstChild,h.firstChild],this._canvasTopL.appendChild(d.firstChild),this._canvasTopR.appendChild(h.firstChild)):this.rowsCache?.hasOwnProperty(i[m])&&d.firstChild&&(this.rowsCache[i[m]].rowNode=[d.firstChild],this._canvasTopL.appendChild(d.firstChild));r&&(this.activeCellNode=this.getCellNode(this.activeRow,this.activeCell))}startPostProcessing(){this._options.enableAsyncPostRender&&(clearTimeout(this.h_postrender),this.h_postrender=setTimeout(this.asyncPostProcessRows.bind(this),this._options.asyncPostRenderDelay))}startPostProcessingCleanup(){this._options.enableAsyncPostRenderCleanup&&(clearTimeout(this.h_postrenderCleanup),this.h_postrenderCleanup=setTimeout(this.asyncPostProcessCleanupRows.bind(this),this._options.asyncPostRenderCleanupDelay))}invalidatePostProcessingResults(e){"object"==typeof this.postProcessedRows[e]&&Object.keys(this.postProcessedRows[e]).forEach(a=>{this.postProcessedRows[e].hasOwnProperty(a)&&(this.postProcessedRows[e][a]="C")}),this.postProcessFromRow=Math.min(this.postProcessFromRow,e),this.postProcessToRow=Math.max(this.postProcessToRow,e),this.startPostProcessing()}updateRowPositions(){this.rowsCache&&"object"==typeof this.rowsCache&&Object.keys(this.rowsCache).forEach(e=>{const a=e?parseInt(e,10):0;K.setStyleSize(this.rowsCache[a].rowNode[0],"top",this.getRowTop(a))})}render(){if(this.initialized){this.scrollThrottle.dequeue();const e=this.getVisibleRange(),a=this.getRenderedRange();if(this.cleanupRows(a),this.lastRenderedScrollLeft!==this.scrollLeft){if(this.hasFrozenRows){const u=su(!0,{},a);this._options.frozenBottom?(u.top=this.actualFrozenRow,u.bottom=this.getDataLength()):(u.top=0,u.bottom=this._options.frozenRow),this.cleanUpAndRenderCells(u)}this.cleanUpAndRenderCells(a)}this.renderRows(a),this.hasFrozenRows&&(this._options.frozenBottom?this.renderRows({top:this.actualFrozenRow,bottom:this.getDataLength()-1,leftPx:a.leftPx,rightPx:a.rightPx}):this.renderRows({top:0,bottom:this._options.frozenRow-1,leftPx:a.leftPx,rightPx:a.rightPx})),this.postProcessFromRow=e.top,this.postProcessToRow=Math.min(this.getDataLengthIncludingAddNew()-1,e.bottom),this.startPostProcessing(),this.lastRenderedScrollTop=this.scrollTop,this.lastRenderedScrollLeft=this.scrollLeft,this.h_render=null,this.triggerEvent(this.onRendered,{startRow:e.top,endRow:e.bottom,grid:this})}}handleHeaderRowScroll(){const e=this._headerRowScrollContainer.scrollLeft;e!==this._viewportScrollContainerX.scrollLeft&&(this._viewportScrollContainerX.scrollLeft=e)}handleFooterRowScroll(){const e=this._footerRowScrollContainer.scrollLeft;e!==this._viewportScrollContainerX.scrollLeft&&(this._viewportScrollContainerX.scrollLeft=e)}handlePreHeaderPanelScroll(){this.handleElementScroll(this._preHeaderPanelScroller)}handleElementScroll(e){const a=e.scrollLeft;a!==this._viewportScrollContainerX.scrollLeft&&(this._viewportScrollContainerX.scrollLeft=a)}handleScroll(){return this.scrollTop=this._viewportScrollContainerY.scrollTop,this.scrollLeft=this._viewportScrollContainerX.scrollLeft,this._handleScroll(!1)}_handleScroll(e){let a=this._viewportScrollContainerY.scrollHeight-this._viewportScrollContainerY.clientHeight,u=this._viewportScrollContainerY.scrollWidth-this._viewportScrollContainerY.clientWidth;a=Math.max(0,a),u=Math.max(0,u),this.scrollTop>a&&(this.scrollTop=a),this.scrollLeft>u&&(this.scrollLeft=u);const i=Math.abs(this.scrollTop-this.prevScrollTop),r=Math.abs(this.scrollLeft-this.prevScrollLeft);if(r&&(this.prevScrollLeft=this.scrollLeft,this._viewportScrollContainerX.scrollLeft=this.scrollLeft,this._headerScrollContainer.scrollLeft=this.scrollLeft,this._topPanelScrollers[0].scrollLeft=this.scrollLeft,this._options.createFooterRow&&(this._footerRowScrollContainer.scrollLeft=this.scrollLeft),this._options.createPreHeaderPanel&&(this.hasFrozenColumns()?this._preHeaderPanelScrollerR.scrollLeft=this.scrollLeft:this._preHeaderPanelScroller.scrollLeft=this.scrollLeft),this.hasFrozenColumns()?(this.hasFrozenRows&&(this._viewportTopR.scrollLeft=this.scrollLeft),this._headerRowScrollerR.scrollLeft=this.scrollLeft):(this.hasFrozenRows&&(this._viewportTopL.scrollLeft=this.scrollLeft),this._headerRowScrollerL.scrollLeft=this.scrollLeft)),i&&!this._options.autoHeight)if(this.vScrollDir=this.prevScrollTop20||d>20)&&(this._options.forceSyncScrolling||d{i=!1},d=()=>{u=!0,clearTimeout(this._executionBlockTimer),this._executionBlockTimer=setTimeout(h,a),e.call(this)},h=()=>{i?(o(),d()):u=!1};return{enqueue:(()=>{u?i=!0:d()}).bind(this),dequeue:o.bind(this)}}asyncPostProcessRows(){const e=this.getDataLength();for(;this.postProcessFromRow<=this.postProcessToRow;){const a=this.vScrollDir>=0?this.postProcessFromRow++:this.postProcessToRow--,u=this.rowsCache[a];if(u&&!(a>=e))return this.postProcessedRows[a]||(this.postProcessedRows[a]={}),this.ensureCellNodesInRowsCache(a),Object.keys(u.cellNodesByColumnIdx).forEach(i=>{if(u.cellNodesByColumnIdx.hasOwnProperty(i)){const r=+i,o=this.columns[r],d=this.postProcessedRows[a][r];if(o.asyncPostRender&&"R"!==d){const h=u.cellNodesByColumnIdx[r];h&&o.asyncPostRender(h,a,this.getDataItem(a),o,"C"===d),this.postProcessedRows[a][r]="R"}}}),void(this.h_postrender=setTimeout(this.asyncPostProcessRows.bind(this),this._options.asyncPostRenderDelay))}}asyncPostProcessCleanupRows(){if(this.postProcessedCleanupQueue.length>0){const e=this.postProcessedCleanupQueue[0].groupId;for(;this.postProcessedCleanupQueue.length>0&&this.postProcessedCleanupQueue[0].groupId===e;){const a=this.postProcessedCleanupQueue.shift();if("R"===a?.actionType&&a.node.forEach(u=>{u.remove()}),"C"===a?.actionType){const u=this.columns[a.columnIdx];u.asyncPostRenderCleanup&&a.node&&u.asyncPostRenderCleanup(a.node,a.rowIdx,u)}}this.h_postrenderCleanup=setTimeout(this.asyncPostProcessCleanupRows.bind(this),this._options.asyncPostRenderCleanupDelay)}}updateCellCssStylesOnRenderedRows(e,a){let u,i,r;"object"==typeof this.rowsCache&&Object.keys(this.rowsCache).forEach(o=>{this.rowsCache&&(r=a?.[o],i=e?.[o],r&&Object.keys(r).forEach(d=>{(!i||r[d]!==i[d])&&(u=this.getCellNode(+o,this.getColumnIndex(d)),u&&u.classList.remove(r[d]))}),i&&Object.keys(i).forEach(d=>{(!r||r[d]!==i[d])&&(u=this.getCellNode(+o,this.getColumnIndex(d)),u&&u.classList.add(i[d]))}))})}addCellCssStyles(e,a){if(this.cellCssClasses[e])throw new Error(`SlickGrid addCellCssStyles: cell CSS hash with key "${e}" already exists.`);this.cellCssClasses[e]=a,this.updateCellCssStylesOnRenderedRows(a,null),this.triggerEvent(this.onCellCssStylesChanged,{key:e,hash:a,grid:this})}removeCellCssStyles(e){this.cellCssClasses[e]&&(this.updateCellCssStylesOnRenderedRows(null,this.cellCssClasses[e]),delete this.cellCssClasses[e],this.triggerEvent(this.onCellCssStylesChanged,{key:e,hash:null,grid:this}))}setCellCssStyles(e,a){const u=this.cellCssClasses[e];this.cellCssClasses[e]=a,this.updateCellCssStylesOnRenderedRows(a,u),this.triggerEvent(this.onCellCssStylesChanged,{key:e,hash:a,grid:this})}getCellCssStyles(e){return this.cellCssClasses[e]}flashCell(e,a,u=250){const i=(r,o)=>{o<1||(clearTimeout(this._flashCellTimer),this._flashCellTimer=setTimeout(()=>{o%2==0?r.classList.add(this._options.cellFlashingCssClass||""):r.classList.remove(this._options.cellFlashingCssClass||""),i(r,o-1)},u))};if(this.rowsCache[e]){const r=this.getCellNode(e,a);r&&i(r,5)}}highlightRow(e,a){const u=this.rowsCache[e];a||=this._options.rowHighlightDuration,Array.isArray(u?.rowNode)&&this._options.rowHighlightCssClass&&(u.rowNode.forEach(i=>i.classList.add(...Vt(this._options.rowHighlightCssClass))),clearTimeout(this._highlightRowTimer),this._highlightRowTimer=setTimeout(()=>{u.rowNode?.forEach(i=>i.classList.remove(...Vt(this._options.rowHighlightCssClass)))},a))}handleMouseWheel(e,a,u,i){this.scrollTop=Math.max(0,this._viewportScrollContainerY.scrollTop-i*this._options.rowHeight),this.scrollLeft=this._viewportScrollContainerX.scrollLeft+10*u,this._handleScroll(!0)&&e.preventDefault()}handleDragInit(e,a){const u=this.getCellFromEvent(e);if(!u||!this.cellExists(u.row,u.cell))return!1;const i=this.triggerEvent(this.onDragInit,a,e);return!!i.isImmediatePropagationStopped()&&i.getReturnValue()}handleDragStart(e,a){const u=this.getCellFromEvent(e);if(!u||!this.cellExists(u.row,u.cell))return!1;const i=this.triggerEvent(this.onDragStart,a,e);return!!i.isImmediatePropagationStopped()&&i.getReturnValue()}handleDrag(e,a){return this.triggerEvent(this.onDrag,a,e).getReturnValue()}handleDragEnd(e,a){this.triggerEvent(this.onDragEnd,a,e)}handleKeyDown(e){let u=this.triggerEvent(this.onKeyDown,{row:this.activeRow,cell:this.activeCell},e).isImmediatePropagationStopped();if(!u&&!e.shiftKey&&!e.altKey){if(this._options.editable&&this.currentEditor?.keyCaptureList&&this.currentEditor.keyCaptureList.indexOf(e.which)>-1)return;"Home"===e.key?u=e.ctrlKey?this.navigateTop():this.navigateRowStart():"End"===e.key&&(u=e.ctrlKey?this.navigateBottom():this.navigateRowEnd())}if(!u)if(e.shiftKey||e.altKey||e.ctrlKey)"Tab"===e.key&&e.shiftKey&&!e.ctrlKey&&!e.altKey&&(u=this.navigatePrev());else if("Escape"===e.key){if(!this.getEditorLock()?.isActive())return;this.cancelEditAndSetFocus()}else"PageDown"===e.key?(this.navigatePageDown(),u=!0):"PageUp"===e.key?(this.navigatePageUp(),u=!0):"ArrowLeft"===e.key?u=this.navigateLeft():"ArrowRight"===e.key?u=this.navigateRight():"ArrowUp"===e.key?u=this.navigateUp():"ArrowDown"===e.key?u=this.navigateDown():"Tab"===e.key?u=this.navigateNext():"Enter"===e.key&&(this._options.editable&&(this.currentEditor?this.activeRow===this.getDataLength()?this.navigateDown():this.commitEditAndSetFocus():this.getEditorLock()?.commitCurrentEdit()&&this.makeActiveCellEditable(void 0,void 0,e)),u=!0);u&&(e.stopPropagation(),e.preventDefault())}handleClick(e){const a=e instanceof jt?e.getNativeEvent():e;if(!this.currentEditor&&(a.target!==document.activeElement||a.target.classList.contains("slick-cell"))){const i=this.getTextSelection();this.setFocus(),this.setTextSelection(i)}const u=this.getCellFromEvent(a);if(u&&(null===this.currentEditor||this.activeRow!==u.row||this.activeCell!==u.cell)&&(!(e=this.triggerEvent(this.onClick,{row:u.row,cell:u.cell},e||a)).isImmediatePropagationStopped()&&!a.defaultPrevented&&this.canCellBeActive(u.row,u.cell)&&(!this.getEditorLock()?.isActive()||this.getEditorLock()?.commitCurrentEdit()))){this.scrollRowIntoView(u.row,!1);const i="slick-edit-preclick"===a.target?.className,r=this.columns[u.cell],o=!!(this._options.editable&&r?.editorClass&&this._options.suppressActiveCellChangeOnEdit);this.setActiveCellInternal(this.getCellNode(u.row,u.cell),null,i,o,a)}}handleContextMenu(e){const a=e.target.closest(".slick-cell");a&&(this.activeCellNode===a&&null!==this.currentEditor||this.triggerEvent(this.onContextMenu,{},e))}handleDblClick(e){const a=this.getCellFromEvent(e);!a||null!==this.currentEditor&&this.activeRow===a.row&&this.activeCell===a.cell||(this.triggerEvent(this.onDblClick,{row:a.row,cell:a.cell},e),!e.defaultPrevented&&this._options.editable&&this.gotoCell(a.row,a.cell,!0,e))}handleHeaderMouseEnter(e){const a=K.storage.get(e.target.closest(".slick-header-column"),"column");a&&this.triggerEvent(this.onHeaderMouseEnter,{column:a,grid:this},e)}handleHeaderMouseOver(e){const a=K.storage.get(e.target.closest(".slick-header-column"),"column");a&&this.triggerEvent(this.onHeaderMouseOver,{column:a,grid:this},e)}handleHeaderMouseLeave(e){const a=K.storage.get(e.target.closest(".slick-header-column"),"column");a&&this.triggerEvent(this.onHeaderMouseLeave,{column:a,grid:this},e)}handleHeaderMouseOut(e){const a=K.storage.get(e.target.closest(".slick-header-column"),"column");a&&this.triggerEvent(this.onHeaderMouseOut,{column:a,grid:this},e)}handleHeaderRowMouseEnter(e){const a=K.storage.get(e.target.closest(".slick-headerrow-column"),"column");a&&this.triggerEvent(this.onHeaderRowMouseEnter,{column:a,grid:this},e)}handleHeaderRowMouseOver(e){const a=K.storage.get(e.target.closest(".slick-headerrow-column"),"column");a&&this.triggerEvent(this.onHeaderRowMouseOver,{column:a,grid:this},e)}handleHeaderRowMouseLeave(e){const a=K.storage.get(e.target.closest(".slick-headerrow-column"),"column");a&&this.triggerEvent(this.onHeaderRowMouseLeave,{column:a,grid:this},e)}handleHeaderRowMouseOut(e){const a=K.storage.get(e.target.closest(".slick-headerrow-column"),"column");a&&this.triggerEvent(this.onHeaderRowMouseOut,{column:a,grid:this},e)}handleHeaderContextMenu(e){const a=e.target.closest(".slick-header-column"),u=a&&K.storage.get(a,"column");this.triggerEvent(this.onHeaderContextMenu,{column:u},e)}handleHeaderClick(e){if(this.columnResizeDragging)return;const a=e.target.closest(".slick-header-column"),u=a&&K.storage.get(a,"column");u&&this.triggerEvent(this.onHeaderClick,{column:u},e)}handleFooterContextMenu(e){const a=e.target.closest(".slick-footerrow-column"),u=a&&K.storage.get(a,"column");this.triggerEvent(this.onFooterContextMenu,{column:u},e)}handleFooterClick(e){const a=e.target.closest(".slick-footerrow-column"),u=a&&K.storage.get(a,"column");this.triggerEvent(this.onFooterClick,{column:u},e)}handleCellMouseOver(e){this.triggerEvent(this.onMouseEnter,{},e)}handleCellMouseOut(e){this.triggerEvent(this.onMouseLeave,{},e)}cellExists(e,a){return!(e<0||e>=this.getDataLength()||a<0||a>=this.columns.length)}getCellFromPoint(e,a){let u=this.getRowFromPosition(a),i=0,r=0;for(let o=0;o=this.actualFrozenRow?this.h=this.actualFrozenRow?this.frozenRowsHeight:0:0,a}getCellFromEvent(e){const a=e instanceof jt?e.getNativeEvent():e;if(!a)return null;const u=a.touches?a.touches[0]:a,i=a.target.closest(".slick-cell");if(!i)return null;let r=this.getRowFromNode(i.parentNode);if(this.hasFrozenRows){let d=0;const h=Du(K.parents(i,".grid-canvas")[0]);K.parents(i,".grid-canvas-bottom").length&&(d=this._options.frozenBottom?K.height(this._canvasTopL):this.frozenRowsHeight);const E=u.clientX-h.left,v=u.clientY-h.top+d+document.documentElement.scrollTop;r=this.getCellFromPoint(E,v).row}const o=this.getCellFromNode(i);return C3(r)&&C3(o)?{row:r,cell:o}:null}getCellNodeBox(e,a){if(!this.cellExists(e,a))return null;const u=this.getFrozenRowOffset(e),i=this.getRowTop(e)-u,r=i+this._options.rowHeight-1;let o=0;for(let h=0;h1?i-1:0)])}internalScrollColumnIntoView(e,a){const u=this.scrollLeft+K.width(this._viewportScrollContainerX)-(this.viewportHasVScroll&&this.scrollbarDimensions?.width||0);eu&&(this._viewportScrollContainerX.scrollLeft=Math.min(e,a-this._viewportScrollContainerX.clientWidth),this.handleScroll(),this.render())}scrollColumnIntoView(e){this.internalScrollColumnIntoView(this.columnPosLeft[e],this.columnPosRight[e])}setActiveCellInternal(e,a,u,i,r){if(Su(this.activeCellNode)&&(this.makeActiveCellNormal(),this.activeCellNode.classList.remove("active"),this.rowsCache[this.activeRow]?.rowNode?.forEach(o=>o.classList.remove("active"))),this.activeCellNode=e,Su(this.activeCellNode)){const o=Du(this.activeCellNode);let d=Math.floor(Du(K.parents(this.activeCellNode,".grid-canvas")[0]).top);const h=K.parents(this.activeCellNode,".grid-canvas-bottom").length;this.hasFrozenRows&&h&&(d-=this._options.frozenBottom?K.height(this._canvasTopL):this.frozenRowsHeight);const m=this.getCellFromPoint(o.left,Math.ceil(o.top)-d);this.activeRow=m.row,this.activeCell=this.activePosX=this.activeCell=this.activePosX=this.getCellFromNode(this.activeCellNode),!Su(a)&&this._options.autoEditNewRow&&(a=this.activeRow===this.getDataLength()||this._options.autoEdit),this._options.showCellSelection&&(this.activeCellNode.classList.add("active"),this.rowsCache[this.activeRow]?.rowNode?.forEach(E=>E.classList.add("active"))),this._options.editable&&a&&this.isCellPotentiallyEditable(this.activeRow,this.activeCell)&&(this._options.asyncEditorLoading?(clearTimeout(this.h_editorLoader),this.h_editorLoader=setTimeout(()=>{this.makeActiveCellEditable(void 0,u,r)},this._options.asyncEditorLoadDelay)):this.makeActiveCellEditable(void 0,u,r))}else this.activeRow=this.activeCell=null;i||this.triggerEvent(this.onActiveCellChanged,this.getActiveCell())}clearTextSelection(){if(document.selection?.empty)try{document.selection.empty()}catch{}else if(window.getSelection){const e=window.getSelection();e?.removeAllRanges&&e.removeAllRanges()}}isCellPotentiallyEditable(e,a){const u=this.getDataLength();return!(e=u||!this.columns[a]||this.columns[a].hidden||!this.getEditor(e,a))}makeActiveCellNormal(e=!1){if(this.currentEditor){if(this.triggerEvent(this.onBeforeCellEditorDestroy,{editor:this.currentEditor}),this.currentEditor.destroy(),this.currentEditor=null,this.activeCellNode){const a=this.getDataItem(this.activeRow);if(this.activeCellNode.classList.remove("editable"),this.activeCellNode.classList.remove("invalid"),a){const u=this.columns[this.activeCell],r=this.getFormatter(this.activeRow,u)(this.activeRow,this.activeCell,this.getDataItemValueForColumn(a,u),u,a,this);this.applyFormatResultToCellNode(r,this.activeCellNode),this.invalidatePostProcessingResults(this.activeRow)}e&&this.setFocus()}navigator.userAgent.toLowerCase().match(/msie/)&&this.clearTextSelection(),this.getEditorLock()?.deactivate(this.editController)}}editActiveCell(e,a,u){this.makeActiveCellEditable(e,a,u)}makeActiveCellEditable(e,a,u){if(!this.activeCellNode)return;if(!this._options.editable)throw new Error("SlickGrid makeActiveCellEditable : should never get called when grid options.editable is false");if(clearTimeout(this.h_editorLoader),!this.isCellPotentiallyEditable(this.activeRow,this.activeCell))return;const i=this.columns[this.activeCell],r=this.getDataItem(this.activeRow);if(!1===this.triggerEvent(this.onBeforeEditCell,{row:this.activeRow,cell:this.activeCell,item:r,column:i,target:"grid"}).getReturnValue())return void this.setFocus();this.getEditorLock()?.activate(this.editController),this.activeCellNode.classList.add("editable");const o=e||this.getEditor(this.activeRow,this.activeCell);if("function"==typeof o){!e&&!o.suppressClearOnEdit&&Ct(this.activeCellNode);let d=this.data?.getItemMetadata?.(this.activeRow);d=d?.columns;const h=d&&(d[i.id]||d[this.activeCell]),m={grid:this,gridPosition:this.absBox(this._container),position:this.absBox(this.activeCellNode),container:this.activeCellNode,column:i,columnMetaData:h,item:r||{},event:u,commitChanges:this.commitEditAndSetFocus.bind(this),cancelChanges:this.cancelEditAndSetFocus.bind(this)};this.currentEditor=new o(m),r&&this.currentEditor&&(this.currentEditor.loadValue(r),a&&"function"==typeof this.currentEditor?.preClick&&this.currentEditor.preClick()),this.serializedEditorValue=this.currentEditor?.serializeValue(),this.currentEditor?.position&&this.handleActiveCellPositionChange()}}commitEditAndSetFocus(){this.getEditorLock()?.commitCurrentEdit()&&(this.setFocus(),this._options.autoEdit&&!this._options.autoCommitEdit&&this.navigateDown())}cancelEditAndSetFocus(){this.getEditorLock()?.cancelCurrentEdit()&&this.setFocus()}absBox(e){const a={top:e.offsetTop,left:e.offsetLeft,bottom:0,right:0,width:e.offsetWidth,height:e.offsetWidth,visible:!0};a.bottom=a.top+a.height,a.right=a.left+a.width;let u=e.offsetParent;for(;(e=e.parentNode)!==document.body&&e&&e.parentNode;){const i=getComputedStyle(e);a.visible&&e.scrollHeight!==e.offsetHeight&&"visible"!==i.overflowY&&(a.visible=a.bottom>e.scrollTop&&a.tope.scrollLeft&&a.left0&&(e=a.getRangeAt(0))}return e}setTextSelection(e){if(window.getSelection&&e){const a=window.getSelection();a&&(a.removeAllRanges(),a.addRange(e))}}scrollRowIntoView(e,a){if(!this.hasFrozenRows||!this._options.frozenBottom&&e>this.actualFrozenRow-1||this._options.frozenBottom&&ethis.scrollTop+u+this.offset?(this.scrollTo(a?r:o),this.render()):i*this._options.rowHeight=r&&(i=r-1),i<0&&(i=0);let o=0,d=null;const h=this.activePosX;for(;o<=this.activePosX;)this.canCellBeActive(i,o)&&(d=o),o+=this.getColspan(i,o);null!==d?(this.setActiveCellInternal(this.getCellNode(i,d)),this.activePosX=h):this.resetActiveCell()}}navigatePageDown(){this.scrollPage(1)}navigatePageUp(){this.scrollPage(-1)}navigateTop(){this.navigateToRow(0)}navigateBottom(){return this.navigateToRow(this.getDataLength()-1)}navigateToRow(e){const a=this.getDataLength();if(!a)return!0;if(e<0?e=0:e>=a&&(e=a-1),this.scrollCellIntoView(e,0,!0),this._options.enableCellNavigation&&Su(this.activeRow)){let u=0,i=null;const r=this.activePosX;for(;u<=this.activePosX;)this.canCellBeActive(e,u)&&(i=u),u+=this.getColspan(e,u);null!==i?(this.setActiveCellInternal(this.getCellNode(e,i)),this.activePosX=r):this.resetActiveCell()}return!0}getColspan(e,a){const u=this.data?.getItemMetadata?.(e);if(!u||!u.columns)return 1;let r=(u.columns[this.columns[a].id]||u.columns[a])?.colspan;return r="*"===r?this.columns.length-a:r||1,r}findFirstFocusableCell(e){let a=0;for(;a=this.columns.length)return null;do{a+=this.getColspan(e,a)}while(a=a)return null;let o,r={row:e,cell:i,posX:i},d=!0;for(;d;){if(o=this.gotoRight(r.row,r.cell,r.posX),!o)return d=!1,null;if(o.cell>=a)return d=!1,r;r=o}}gotoDown(e,a,u){let i;const r=this.getDataLengthIncludingAddNew();let o=!0;for(;o;){if(++e>=r)return o=!1,null;for(i=a=0;a<=u;)i=a,a+=this.getColspan(e,a);if(this.canCellBeActive(e,i))return o=!1,{row:e,cell:i,posX:u}}}gotoUp(e,a,u){let i,r=!0;for(;r;){if(--e<0)return r=!1,null;for(i=a=0;a<=u;)i=a,a+=this.getColspan(e,a);if(this.canCellBeActive(e,i))return r=!1,{row:e,cell:i,posX:u}}}gotoNext(e,a,u){if(!C3(e)&&!C3(a)&&(e=a=u=0,this.canCellBeActive(e,a)))return{row:e,cell:a,posX:a};const i=this.gotoRight(e,a,u);if(i)return i;let r=null;const o=this.getDataLengthIncludingAddNew();for(e===o-1&&e--;++e=this.actualFrozenRow||this._options.frozenBottom&&r.rowa?this.rowsCache[e].cellNodesByColumnIdx[a]:null}catch{return this.rowsCache[e].cellNodesByColumnIdx[a]}}return null}setActiveCell(e,a,u,i,r){!this.initialized||!this._options.enableCellNavigation||e>this.getDataLength()||e<0||a>=this.columns.length||a<0||(this.scrollCellIntoView(e,a,!1),this.setActiveCellInternal(this.getCellNode(e,a),u,i,r))}setActiveRow(e,a,u){a??=0,!(!this.initialized||e>this.getDataLength()||e<0||a>=this.columns.length||a<0)&&(this.activeRow=e,u||this.scrollCellIntoView(e,a,!1))}canCellBeActive(e,a){if(!this._options.enableCellNavigation||e>=this.getDataLengthIncludingAddNew()||e<0||a>=this.columns.length||a<0||!this.columns[a]||this.columns[a].hidden)return!1;const u=this.data?.getItemMetadata?.(e);if(void 0!==u?.focusable)return!!u.focusable;const i=u?.columns;return void 0!==i?.[this.columns[a].id]?.focusable?!!i[this.columns[a].id].focusable:void 0!==i?.[a]?.focusable?!!i[a].focusable:!!this.columns[a].focusable}canCellBeSelected(e,a){if(e>=this.getDataLength()||e<0||a>=this.columns.length||a<0||!this.columns[a]||this.columns[a].hidden)return!1;const u=this.data?.getItemMetadata?.(e);if(void 0!==u?.selectable)return!!u.selectable;const i=u?.columns&&(u.columns[this.columns[a].id]||u.columns[a]);return void 0!==i?.selectable?!!i.selectable:!!this.columns[a].selectable}gotoCell(e,a,u,i){if(!this.initialized||!this.canCellBeActive(e,a)||!this.getEditorLock()?.commitCurrentEdit())return;this.scrollCellIntoView(e,a,!1);const r=this.getCellNode(e,a),o=this.columns[a],d=!!(this._options.editable&&o?.editorClass&&this._options.suppressActiveCellChangeOnEdit);this.setActiveCellInternal(r,u||e===this.getDataLength()||this._options.autoEdit,null,d,i),this.currentEditor||this.setFocus()}commitCurrentEdit(){const e=this,a=e.getDataItem(e.activeRow),u=e.columns[e.activeCell];if(e.currentEditor){if(e.currentEditor.isValueChanged()){const i=e.currentEditor.validate();if(i.valid){const r=e.activeRow,o=e.activeCell,d=e.currentEditor,h=e.currentEditor.serializeValue(),m=e.serializedEditorValue;if(e.activeRow{d.applyValue(a,h),e.updateRow(r),e.triggerEvent(e.onCellChange,{command:"execute",row:r,cell:o,item:a,column:u})},undo:()=>{d.applyValue(a,m),e.updateRow(r),e.triggerEvent(e.onCellChange,{command:"undo",row:r,cell:o,item:a,column:u})}};e._options.editCommandHandler?(e.makeActiveCellNormal(!0),e._options.editCommandHandler(a,u,E)):(E.execute(),e.makeActiveCellNormal(!0))}else{const E={};e.currentEditor.applyValue(E,e.currentEditor.serializeValue()),e.makeActiveCellNormal(!0),e.triggerEvent(e.onAddNewRow,{item:E,column:u})}return!e.getEditorLock()?.isActive()}return e.activeCellNode&&(e.activeCellNode.classList.remove("invalid"),K.width(e.activeCellNode),e.activeCellNode.classList.add("invalid")),e.triggerEvent(e.onValidationError,{editor:e.currentEditor,cellNode:e.activeCellNode,validationResults:i,row:e.activeRow,cell:e.activeCell,column:u}),e.currentEditor.focus(),!1}e.makeActiveCellNormal(!0)}return!0}cancelCurrentEdit(){return this.makeActiveCellNormal(),!0}rowsToRanges(e){const a=[],u=this.columns.length-1;for(let i=0;ithis._addonOptions?.maxToolTipLength&&(i=i.substring(0,this._addonOptions.maxToolTipLength-3)+"...")):i="",u.title=i),u=null}}handleHeaderMouseEnter(e,a){const u=a.column;let i;const r=e.target;if(r&&(i=r.closest(".slick-header-column"),i&&!u?.toolTip)){const o=r.clientWidth{this._addonOptions&&"function"==typeof this._addonOptions.onCopyCells&&this._addonOptions.onCopyCells(u,i)}),this._eventHandler.subscribe(this._cellExternalCopyManagerPlugin.onCopyCancelled,(u,i)=>{this._addonOptions&&"function"==typeof this._addonOptions.onCopyCancelled&&this._addonOptions.onCopyCancelled(u,i)}),this._eventHandler.subscribe(this._cellExternalCopyManagerPlugin.onPasteCells,(u,i)=>{this._addonOptions&&"function"==typeof this._addonOptions.onPasteCells&&this._addonOptions.onPasteCells(u,i)})}dispose(){this._eventHandler.unsubscribeAll(),this._bindingEventService.unbindAll(),this._cellSelectionModel?.dispose(),this._cellExternalCopyManagerPlugin?.dispose()}createUndoRedoBuffer(){let e=0;this._commandQueue=[],this._undoRedoBuffer={queueAndExecuteCommand:a=>{this._commandQueue[e]=a,e++,a.execute()},undo:()=>{if(0===e)return;e--;const a=this._commandQueue[e];a&&Gs.cancelCurrentEdit()&&a.undo()},redo:()=>{if(e>=this._commandQueue.length)return;const a=this._commandQueue[e];e++,a&&Gs.cancelCurrentEdit()&&a.execute()}}}getDefaultOptions(){let e=0;return{clipboardCommandHandler:a=>{this._undoRedoBuffer.queueAndExecuteCommand.call(this._undoRedoBuffer,a)},dataItemColumnValueExtractor:(a,u,i=0,r=0)=>{const o=this._grid.getActiveCell(),d=this._grid.getCellEditor()&&o?.row===i&&o?.cell===r;if(!this.gridOptions.editable||!u.editor||!d){const h=void 0!==u.exportWithFormatter?u.exportWithFormatter:this.gridOptions.textExportOptions?.exportWithFormatter;if(u.formatter&&h){const m=u.formatter(i,r,a[u.field],u,a,this._grid),E=y3(m)?m:m.html||m.text;if(u.sanitizeDataExport||this.gridOptions.textExportOptions?.sanitizeDataExport){return zu((E instanceof HTMLElement?E.innerHTML:E)??"")}return m}}return null},readOnlyMode:!1,includeHeaderWhenCopying:!1,newRowCreator:a=>{for(let u=0;u{};class vde{constructor(){this.pluginName="CellExternalCopyManager",this.onCopyCells=new ve("onCopyCells"),this.onCopyCancelled=new ve("onCopyCancelled"),this.onPasteCells=new ve("onPasteCells"),this.onBeforePasteCell=new ve("onBeforePasteCell"),this._bodyElement=document.body,this._copiedCellStyle="copied",this._copiedCellStyleLayerKey="copy-manager",this._copiedRanges=null,this._eventHandler=new Ot}get addonOptions(){return this._addonOptions}get eventHandler(){return this._eventHandler}init(e,a){this._grid=e,this._addonOptions={...this._addonOptions,...a},this._copiedCellStyleLayerKey=this._addonOptions.copiedCellStyleLayerKey||"copy-manager",this._copiedCellStyle=this._addonOptions.copiedCellStyle||"copied",this._bodyElement=this._addonOptions.bodyElement||document.body,this._onCopyInit=this._addonOptions.onCopyInit||void 0,this._onCopySuccess=this._addonOptions.onCopySuccess||void 0;const u=e.getPubSubService();u&&K.addSlickEventPubSubWhenDefined(u,this),this._eventHandler.subscribe(this._grid.onKeyDown,this.handleKeyDown.bind(this));const i=e.getSelectionModel();if(!i)throw new Error("Selection model is mandatory for this plugin. Please set a selection model on the grid before adding this plugin: grid.setSelectionModel(new SlickCellSelectionModel())");if(this._eventHandler.subscribe(i.onSelectedRangesChanged,()=>{this._grid.getEditorLock().isActive()||this._grid.focus()}),e&&"function"==typeof this._addonOptions?.onBeforePasteCell){const r=e?.getData();this._eventHandler.subscribe(this.onBeforePasteCell,(o,d)=>{const h=e.getColumns()[d.cell],m={row:d.row,cell:d.cell,dataView:r,grid:e,columnDef:h,dataContext:e.getDataItem(d.row)};return this._addonOptions.onBeforePasteCell?.(o,m)})}}dispose(){this._eventHandler.unsubscribeAll()}clearCopySelection(){this._grid.removeCellCssStyles(this._copiedCellStyleLayerKey)}getHeaderValueForColumn(e){if("function"==typeof this._addonOptions.headerColumnValueExtractor){const a=hn(this._addonOptions.headerColumnValueExtractor(e),"innerHTML");if(a)return zu(a)}return hn(e.name||"","innerHTML")}getDataItemValueForColumn(e,a,u,i,r){if("function"==typeof this._addonOptions.dataItemColumnValueExtractor){const d=this._addonOptions.dataItemColumnValueExtractor(e,a,u,i);if(d)return d instanceof HTMLElement?zu(d.innerHTML):d}let o="";if(a)if(a.editorClass){const d=document.createElement("p"),h=new a.editorClass({container:d,column:a,event:r,position:{top:0,left:0},gridPosition:{top:0,left:0},grid:this._grid,cancelChanges:I7,commitChanges:I7});h.loadValue(e),o=h.serializeValue(),h.destroy(),d.remove()}else o=e[a.field||""];return o}setDataItemValueForColumn(e,a,u){if(!a?.denyPaste){if(this._addonOptions.dataItemColumnValueSetter)return this._addonOptions.dataItemColumnValueSetter(e,a,u);if(a.editorClass){const i=document.createElement("div"),r=new a.editorClass({container:i,column:a,event:null,position:{top:0,left:0},gridPosition:{top:0,left:0},grid:this._grid,cancelChanges:I7,commitChanges:I7});r.loadValue(e);const o=r.validate(void 0,u);if(!o.valid){const d=this._grid.getActiveCell();this._grid.onValidationError.notify({editor:r,cellNode:this._grid.getActiveCellNode(),validationResults:o,row:d?.row,cell:d?.cell,column:a,grid:this._grid})}r.applyValue(e,u),r.destroy(),i.remove()}else e[a.field]=u}}setIncludeHeaderWhenCopying(e){this._addonOptions.includeHeaderWhenCopying=e}createTextBox(e){const a=T("textarea",{value:e,style:{position:"absolute",left:"-1000px",top:`${document.body.scrollTop}px`}},this._bodyElement);return a.select(),a}decodeTabularData(e,a){const u=e.getColumns(),r=a.value.split(/[\n\f\r]/);""===r[r.length-1]&&r.pop();let o=0;const d=[];this._bodyElement.removeChild(a);for(const M of r)d[o++]=""!==M?M.split("\t"):[""];const h=this._grid.getActiveCell(),m=this._grid.getSelectionModel()?.getSelectedRanges(),E=m?.length?m[0]:null;let v,k;if(E)v=E.fromRow,k=E.fromCell;else{if(!h)return;v=h.row,k=h.cell}let x=!1,f=d.length,C=d.length?d[0].length:0;1===d.length&&1===d[0].length&&E&&(x=!0,f=E.toRow-E.fromRow+1,C=E.toCell-E.fromCell+1);const A=this._grid.getData().length-v;let w=0;if(Athis._grid.getDataLength()&&"function"==typeof this._addonOptions.newRowCreator){const M=v+f-this._grid.getDataLength();this._addonOptions.newRowCreator(M)}const L={isClipboardCommand:!0,clippedRange:d,oldValues:[],cellExternalCopyManager:this,_options:this._addonOptions,setDataItemValueForColumn:this.setDataItemValueForColumn,markCopySelection:this.markCopySelection,oneCellToMultiple:x,activeRow:v,activeCell:k,destH:f,destW:C,maxDestY:this._grid.getDataLength(),maxDestX:this._grid.getColumns().length,h:0,w:0,execute:()=>{L.h=0;for(let j=0;j{for(let j=0;j1){const j=this._grid.getData();for(;w>1;w--)j.splice(j.length-1,1);this._grid.setData(j),this._grid.render()}}};this._addonOptions.clipboardCommandHandler?this._addonOptions.clipboardCommandHandler(L):L.execute()}handleKeyDown(e){let a;if(!this._grid.getEditorLock().isActive()||this._grid.getOptions().autoEdit){if("Escape"===e.key&&this._copiedRanges&&(e.preventDefault(),this.clearCopySelection(),this.onCopyCancelled.notify({ranges:this._copiedRanges}),"function"==typeof this._addonOptions.onCopyCancelled&&this._addonOptions.onCopyCancelled(e,{ranges:this._copiedRanges}),this._copiedRanges=null),("c"===e.key||"Insert"===e.key)&&(e.ctrlKey||e.metaKey)&&!e.shiftKey&&("function"==typeof this._onCopyInit&&this._onCopyInit.call(this),a=this._grid.getSelectionModel()?.getSelectedRanges()??[],0!==a.length)){this._copiedRanges=a,this.markCopySelection(a),this.onCopyCells.notify({ranges:a}),"function"==typeof this._addonOptions.onCopyCells&&this._addonOptions.onCopyCells(e,{ranges:a});const u=this._grid.getColumns();let i="";for(let r=0;r0&&!u[k].hidden&&v.push(this.getHeaderValueForColumn(u[k]));d.push(v.join("\t"))}for(let v=o.fromCell;v0&&!u[v].hidden&&m.push(this.getDataItemValueForColumn(E,u[v],h,v,e));d.push(m.join("\t"))}i+=d.join("\r\n")+"\r\n"}if(window.clipboardData)return window.clipboardData.setData("Text",i),!0;{const r=document.activeElement,o=this.createTextBox(i);if(o.focus(),setTimeout(()=>{this._bodyElement.removeChild(o),r?r.focus():console.log("No element to restore focus to after copy?")},this.addonOptions?.clipboardPasteDelay??100),"function"==typeof this._onCopySuccess){const d=1===a.length?a[0].toRow+1-a[0].fromRow:a.length;this._onCopySuccess(d)}return!1}}if(!this._addonOptions.readOnlyMode&&("v"===e.key&&(e.ctrlKey||e.metaKey)&&!e.shiftKey||"Insert"===e.key&&e.shiftKey&&!e.ctrlKey)){const u=this.createTextBox("");return setTimeout(()=>this.decodeTabularData(this._grid,u),this.addonOptions?.clipboardPasteDelay??100),!1}}}markCopySelection(e){this.clearCopySelection();const a=this._grid.getColumns(),u={};for(const i of e)for(let r=i.fromRow;r<=i.toRow;r++){u[r]={};for(let o=i.fromCell;o<=i.toCell&&othis.clearCopySelection(),this.addonOptions?.clearCopySelectionDelay||2e3)}}class R7{constructor(e,a,u){this.extensionUtility=e,this.pubSubService=a,this.sharedService=u,this._addonOptions={},this._camelPluginName="",this._gridUid="",this._menuCssPrefix="",this._menuPluginCssPrefix="",this._bindEventService=new wi,this._eventHandler=new Ot}get addonOptions(){return this._addonOptions}set addonOptions(e){this._addonOptions=e}get eventHandler(){return this._eventHandler}get grid(){return this.sharedService.slickGrid}get gridOptions(){return this.sharedService.gridOptions??{}}get gridUid(){return this._gridUid||(this.grid?.getUID()??"")}get gridUidSelector(){return this.gridUid?`.${this.gridUid}`:""}get menuCssClass(){return this._menuPluginCssPrefix||this._menuCssPrefix}get menuElement(){return this._menuElm||document.querySelector(`.${this.menuCssClass}${this.gridUidSelector}`)}dispose(){this._eventHandler?.unsubscribeAll(),this._bindEventService.unbindAll(),this.pubSubService.unsubscribeAll(),this._commandTitleElm?.remove(),this._optionTitleElm?.remove(),this.disposeAllMenus(),Ct(this._menuElm),this.menuElement?.remove(),this._menuElm?.remove()}disposeAllMenus(){this.disposeSubMenus(),this._bindEventService.unbindAll("parent-menu"),document.querySelectorAll(`.${this.menuCssClass}${this.gridUidSelector}`).forEach(e=>e.remove())}disposeSubMenus(){this._bindEventService.unbindAll("sub-menu"),document.querySelectorAll(`.${this.menuCssClass}.slick-submenu${this.gridUidSelector}`).forEach(e=>e.remove())}setOptions(e){this._addonOptions={...this._addonOptions,...e}}addSubMenuTitleWhenExists(e,a){if("divider"!==e&&e?.subMenuTitle){const u=document.createElement("div");u.className="slick-menu-title",u.textContent=e.subMenuTitle;const i=e.subMenuTitleCssClass;i&&u.classList.add(...Vt(i)),a.appendChild(u)}}populateCommandOrOptionItems(e,a,u,i,r,o,d){if(r&&i&&a)for(const h of i)this.populateSingleCommandOrOptionItem(e,a,u,h,r,o,d)}populateCommandOrOptionTitle(e,a,u,i){if(a){const r=i>0,o=this._menuElm?.querySelector(`.slick-${e}-header`)??T("div",{className:`slick-${e}-header`}),d=`${e}Title`;r||(a?.[d]?(Ct(o),this[`_${e}TitleElm`]=T("span",{className:"slick-menu-title",textContent:a[d]}),o.appendChild(this[`_${e}TitleElm`]),o.classList.add("with-title")):o.classList.add("no-title"),u.appendChild(o))}}populateSingleCommandOrOptionItem(e,a,u,i,r,o,d){let h=null;if(r&&i&&a){const m=r?.level||0,E="headerButtons"===this._camelPluginName?"":"-item",v=`${this._menuCssPrefix}${E}`;let k=!0,x=!0;if("object"==typeof i&&(k=this.extensionUtility.runOverrideFunctionWhenExists(i.itemVisibilityOverride,r),x=this.extensionUtility.runOverrideFunctionWhenExists(i.itemUsabilityOverride,r)),!k)return null;if("object"==typeof i&&i.itemUsabilityOverride&&(i.disabled=!x),h=T("li",{className:v,role:"menuitem"}),"object"==typeof i&&l7(i[e])&&(h.dataset[e]=i?.[e]),u&&u.appendChild(h),"object"==typeof i&&i.divider||"divider"===i)return h.classList.add(`${v}-divider`),h;if(i.disabled&&h.classList.add(`${v}-disabled`),(i.hidden||i.showOnHover)&&h.classList.add(`${v}-hidden`),i.cssClass&&h.classList.add(...Vt(i.cssClass)),i.tooltip&&(h.title=i.tooltip),"headerButtons"!==this._camelPluginName){const C=T("div",{className:`${this._menuCssPrefix}-icon`});h.appendChild(C),i.iconCssClass?C.classList.add(...Vt(i.iconCssClass)):!i.commandItems&&!i.optionItems&&(C.textContent="\u25e6");const A=T("span",{className:`${this._menuCssPrefix}-content`,textContent:"object"==typeof i&&i.title||""},h);i.textCssClass&&A.classList.add(...Vt(i.textCssClass))}const f=m>0?"sub-menu":"parent-menu";if(this._bindEventService.bind(h,"click",C=>o.call(this,C,e,i,m,r?.column),void 0,f),"mouseover"===this._addonOptions?.subMenuOpenByEvent&&"function"==typeof d&&this._bindEventService.bind(h,"mouseover",C=>d.call(this,C,e,i,m),void 0,f),i.commandItems||i.optionItems){const C=document.createElement("span");C.className="sub-item-chevron",this._addonOptions.subItemChevronClass?C.classList.add(...Vt(this._addonOptions.subItemChevronClass)):C.textContent="\u2b9e",h.classList.add("slick-submenu-item"),h.appendChild(C)}}return h}}class hG extends R7{constructor(e,a,u){super(e,a,u),this.extensionUtility=e,this.pubSubService=a,this.sharedService=u,this._currentCell=-1,this._currentRow=-1,this._lastMenuTypeClicked="",this._subMenuParentId=""}createParentMenu(e){this.menuElement?.remove(),this._menuElm=void 0;const a=this.grid.getCellFromEvent(e);if(a){this._currentCell=a.cell??0,this._currentRow=a.row??0;const u=this._addonOptions?.commandItems||[],i=this._addonOptions?.optionItems||[],r={cell:this._currentCell,row:this._currentRow,grid:this.grid};if(this.closeMenu(e,r),"function"==typeof e.stopPropagation&&(this.pubSubService.publish(`on${wo(this._camelPluginName)}BeforeMenuShow`,r),"function"==typeof this.addonOptions?.onBeforeMenuShow&&!1===this.addonOptions.onBeforeMenuShow(e,r))||(this._menuElm=this.createMenu(u,i),this._menuElm&&(this._menuElm.style.top=`${(e.pageY||0)+5}px`,this._menuElm.style.left=`${e.pageX}px`,this._menuElm.style.display="block",document.body.appendChild(this._menuElm)),this.pubSubService.publish(`on${wo(this._camelPluginName)}AfterMenuShow`,r),"function"==typeof this.addonOptions?.onAfterMenuShow&&!1===this.addonOptions.onAfterMenuShow(e,r)))return}return this._menuElm}createMenu(e,a,u=0,i){const r=this.grid.getColumns()[this._currentCell],o=this.grid.getDataItem(this._currentRow),d=i?.command||i?.option;let h=1===u&&d?String(d).replace(/\s/g,""):"";h&&(this._subMenuParentId=h),u>1&&(h=this._subMenuParentId);let m=!0,E=!0;if("contextMenu"===this._camelPluginName){if(m=this.checkIsColumnAllowed(this._addonOptions?.optionShownOverColumnIds??[],r.id),E=this.checkIsColumnAllowed(this._addonOptions?.commandShownOverColumnIds??[],r.id),!(r&&(E&&e.length||m&&a.length)))return void this.hideMenu()}else if(!r||!r.cellMenu||!e.length&&!a.length)return;const v=`${this.menuCssClass} slick-menu-level-${u} ${this.gridUid}`,k=document.body.querySelector(`.${this.menuCssClass}.slick-menu-level-${u}${this.gridUidSelector}`);if(k){if(k.dataset.subMenuParent===h)return k;this.disposeSubMenus()}const x=document.createElement("div");x.className=v,u>0&&(x.classList.add("slick-submenu"),this.gridOptions?.darkMode&&x.classList.add("slick-dark-mode"),h&&(x.dataset.subMenuParent=h));const f=isNaN(this.addonOptions.maxHeight)?this.addonOptions.maxHeight:`${this.addonOptions.maxHeight??0}px`,C=isNaN(this.addonOptions.maxWidth)?this.addonOptions.maxWidth:`${this.addonOptions.maxWidth??0}px`;f&&(x.style.maxHeight=f),C&&(x.style.maxWidth=C),this.addonOptions?.width&&(x.style.width=mc(this.addonOptions?.width));const A=T("button",{ariaLabel:"Close",className:"close",type:"button",textContent:"\xd7",dataset:{dismiss:this._menuCssPrefix}});if(!this.addonOptions.hideOptionSection&&m&&a.length>0){const w=T("div",{className:`${this._menuCssPrefix}-option-list`,role:"menu"},x);this.populateCommandOrOptionTitle("option",this.addonOptions,w,u),!this.addonOptions.hideCloseButton&&u<1&&this.populateCommandOrOptionCloseBtn("option",A,w),i&&u>0&&this.addSubMenuTitleWhenExists(i,w),this.populateCommandOrOptionItems("option",this.addonOptions,w,a,{cell:this._currentCell,row:this._currentRow,column:r,dataContext:o,grid:this.grid,level:u},this.handleMenuItemCommandClick,this.handleMenuItemMouseOver)}if(!this.addonOptions.hideCommandSection&&E&&e.length>0){const w=T("div",{className:`${this._menuCssPrefix}-command-list`,role:"menu"},x);this.populateCommandOrOptionTitle("command",this.addonOptions,w,u),!this.addonOptions.hideCloseButton&&u<1&&(!m||0===a.length||this.addonOptions.hideOptionSection)&&this.populateCommandOrOptionCloseBtn("command",A,w),i&&u>0&&this.addSubMenuTitleWhenExists(i,w),this.populateCommandOrOptionItems("command",this.addonOptions,w,e,{cell:this._currentCell,row:this._currentRow,column:r,dataContext:o,grid:this.grid,level:u},this.handleMenuItemCommandClick,this.handleMenuItemMouseOver)}return u++,x}closeMenu(e,a){if(this.menuElement){if("function"==typeof this.addonOptions?.onBeforeMenuClose&&!1===this.addonOptions.onBeforeMenuClose(e,a))return;this.hideMenu()}}hideMenu(){this.menuElement?.remove(),this._menuElm=null,this.disposeSubMenus()}checkIsColumnAllowed(e,a){return!(e?.length>0)||e.findIndex(u=>u===a)>=0}handleBodyMouseDown(e){if(this.menuElement){let a=!1;const u=e.target.closest(`.${this.menuCssClass}`);(this.menuElement.contains(e.target)||u)&&(a=!0),(this.menuElement!==e.target&&!a&&!e.defaultPrevented||"close"===e.target.className&&u)&&this.closeMenu(e,{cell:this._currentCell,row:this._currentRow,grid:this.grid})}}handleCloseButtonClicked(e){e.defaultPrevented||this.closeMenu(e,{cell:0,row:0,grid:this.grid})}handleMenuItemMouseOver(e,a,u,i=0){void 0!==u?.[a]&&"divider"!==u&&!u.disabled&&!u.divider&&(u.commandItems||u.optionItems?(this.repositionSubMenu(u,a,i,e),this._lastMenuTypeClicked=a):0===i&&this.disposeSubMenus())}handleMenuItemCommandClick(e,a,u,i=0){if(void 0!==u?.[a]&&"divider"!==u&&!u.disabled&&!u.divider&&void 0!==this._currentCell&&void 0!==this._currentRow){if("option"===a&&!this.grid.getEditorLock().commitCurrentEdit())return;const r=this._currentCell,o=this._currentRow,d=this.grid.getColumns()[this._currentCell],h=this.grid.getDataItem(this._currentRow),m=void 0!==u[a]?u[a]:"";if(void 0===m||u[`${a}Items`])(u.commandItems||u.optionItems)&&this.repositionSubMenu(u,a,i,e);else{const E={cell:this._currentCell,row:this._currentRow,grid:this.grid,[a]:m,item:u,column:d,dataContext:h},v="command"===a?"onCommand":"onOptionSelected",k=`${this._camelPluginName}:${v}`;this.pubSubService.publish(k,E),"function"==typeof this._addonOptions?.[v]&&this._addonOptions[v](e,E),"function"==typeof u.action&&u.action.call(this,e,E),e.defaultPrevented||this.closeMenu(e,{cell:r,row:o,grid:this.grid})}this._lastMenuTypeClicked=a}}populateCommandOrOptionCloseBtn(e,a,u){this._bindEventService.bind(a,"click",r=>this.handleCloseButtonClicked(r),void 0,"parent-menu");const i=u.querySelector(`.slick-${e}-header`)??T("div",{className:`slick-${e}-header`});i?.appendChild(a),u.appendChild(i),i.classList.add("with-close")}repositionSubMenu(e,a,u,i){(i.target.classList.contains("slick-cell")||this._lastMenuTypeClicked!==a)&&this.disposeSubMenus();const r=this.createMenu(e?.commandItems||[],e?.optionItems||[],u+1,e);r&&(r.style.display="block",document.body.appendChild(r),this.repositionMenu(i,r))}repositionMenu(e,a){const u=a?.classList.contains("slick-submenu"),i=u?e.target.closest(`.${this._menuCssPrefix}-item`):e.target.closest(".slick-cell");if(a&&i){a.style.top="0px",a.style.left="0px";const r=e?.touches?.[0]??e,o=Du(i);let d=i&&"cellMenu"===this._camelPluginName?o?.left??0:r.pageX,h=i&&"cellMenu"===this._camelPluginName?o?.top??0:r.pageY;u&&"contextMenu"===this._camelPluginName&&(d=o?.left??0,h=o?.top??0);const m=i.offsetWidth||0,E=a?.offsetHeight||0,v=a?.offsetWidth||this._addonOptions.width||0,k=this.gridOptions.rowHeight||0,x=Number(this._addonOptions.autoAdjustDropOffset||0),f=Number(this._addonOptions.autoAlignSideOffset||0);if(this._addonOptions.autoAdjustDrop||this._addonOptions.dropDirection){const{bottom:C,top:A}=f2(i),w=C+x-k;"top"==(ww?"top":"bottom")||"top"===this._addonOptions.dropDirection?(a.classList.remove("dropdown"),a.classList.add("dropup"),h-=u?E-x-i.clientHeight:E-x):(a.classList.remove("dropup"),a.classList.add("dropdown"),h+=x,"cellMenu"===this._camelPluginName&&(h+=u?x:k+x))}if(this._addonOptions.autoAlignSide||"left"===this._addonOptions.dropSide){const C=this.grid.getGridPosition();let A=d+Number(v);u&&(A+=i.clientWidth);const w=document.documentElement.clientWidth;"left"==(A>=C.width||A>=w?"left":"right")||!u&&"left"===this._addonOptions.dropSide?(a.classList.remove("dropright"),a.classList.add("dropleft"),"cellMenu"!==this._camelPluginName||u?d-=Number(v)-f:d-=Number(v)-m-f):(a.classList.remove("dropleft"),a.classList.add("dropright"),d+=u?f+i.offsetWidth:f)}a.style.top=`${h}px`,a.style.left=`${d}px`}}}class bde extends hG{constructor(e,a,u){super(e,a,u),this.extensionUtility=e,this.pubSubService=a,this.sharedService=u,this.pluginName="CellMenu",this._defaults={autoAdjustDrop:!0,autoAlignSide:!0,autoAdjustDropOffset:0,autoAlignSideOffset:0,hideMenuOnScroll:!0,subMenuOpenByEvent:"mouseover"},this._camelPluginName="cellMenu",this._menuCssPrefix="slick-menu",this._menuPluginCssPrefix="slick-cell-menu",this.init(u.gridOptions.cellMenu)}init(e){this._addonOptions={...this._defaults,...e},this.sortMenuItems(this.sharedService.allColumns),this._eventHandler.subscribe(this.grid.onClick,this.handleCellClick.bind(this)),this._addonOptions.hideMenuOnScroll&&this._eventHandler.subscribe(this.grid.onScroll,this.closeMenu.bind(this))}translateCellMenu(){const e=this.sharedService?.gridOptions,a=this.sharedService.allColumns;e?.enableTranslate&&Array.isArray(a)&&a.forEach(u=>{if(u?.cellMenu&&(Array.isArray(u.cellMenu.commandItems)||Array.isArray(u.cellMenu.optionItems))){const i=u.cellMenu.commandItems||[],r=u.cellMenu.optionItems||[];u.cellMenu.commandTitleKey&&(u.cellMenu.commandTitle=this.extensionUtility.translateWhenEnabledAndServiceExist(u.cellMenu.commandTitleKey,"TEXT_COMMANDS")||u.cellMenu.commandTitle),u.cellMenu.optionTitleKey&&(u.cellMenu.optionTitle=this.extensionUtility.translateWhenEnabledAndServiceExist(u.cellMenu.optionTitleKey,"TEXT_COMMANDS")||u.cellMenu.optionTitle),this.extensionUtility.translateMenuItemsFromTitleKey(i,"commandItems"),this.extensionUtility.translateMenuItemsFromTitleKey(r,"optionItems")}})}handleCellClick(e,a){this.disposeAllMenus();const u=this.grid.getCellFromEvent(e);if(u){const i=this.grid.getDataItem(u.row),r=this.grid.getColumns()[u.cell];r?.cellMenu&&e.preventDefault(),this._addonOptions={...this._addonOptions,...r.cellMenu};const o=a||{};if(o.column=r,o.dataContext=i,o.grid=this.grid,!this.extensionUtility.runOverrideFunctionWhenExists(this._addonOptions.menuUsabilityOverride,o))return;this._menuElm=this.createParentMenu(e),this._menuElm&&(this.repositionMenu(e,this._menuElm),this._menuElm.ariaExpanded="true",this._menuElm.style.display="block",this.gridOptions.darkMode&&this._menuElm.classList.add("slick-dark-mode")),this._bindEventService.bind(document.body,"mousedown",this.handleBodyMouseDown.bind(this))}}sortMenuItems(e){e.forEach(a=>{a?.cellMenu?.commandItems&&this.extensionUtility.sortItems(a.cellMenu.commandItems||[],"positionOrder"),a?.cellMenu?.optionItems&&this.extensionUtility.sortItems(a.cellMenu.optionItems||[],"positionOrder")})}}class kde{constructor(e,a){this.grid=e,this.pluginName="CellRangeDecorator",this._defaults={selectionCssClass:"slick-range-decorator",selectionCss:{border:"2px dashed red",zIndex:"9999"},offset:{top:-1,left:-1,height:-2,width:-2}},this._options=f3(this._defaults,a)}get addonOptions(){return this._options}get addonElement(){return this._elem}destroy(){this.hide()}init(){}hide(){this._elem?.remove(),this._elem=null}show(e){this._elem||(this._elem=T("div",{className:this._options.selectionCssClass}),Object.keys(this._options.selectionCss).forEach(i=>{this._elem.style[i]=this._options.selectionCss[i]}),this._elem.style.position="absolute",this.grid.getActiveCanvasNode()?.appendChild(this._elem));const a=this.grid.getCellNodeBox(e.fromRow,e.fromCell),u=this.grid.getCellNodeBox(e.toRow,e.toCell);return a&&u&&this._options?.offset&&(this._elem.style.top=`${a.top+this._options.offset.top}px`,this._elem.style.left=`${a.left+this._options.offset.left}px`,this._elem.style.height=`${u.bottom-a.top+this._options.offset.height}px`,this._elem.style.width=`${u.right-a.left+this._options.offset.width}px`),this._elem}}class mG{constructor(e){this.pluginName="CellRangeSelector",this.onBeforeCellRangeSelected=new ve("onBeforeCellRangeSelected"),this.onCellRangeSelecting=new ve("onCellRangeSelecting"),this.onCellRangeSelected=new ve("onCellRangeSelected"),this._currentlySelectedRange=null,this._canvas=null,this._dragging=!1,this._gridUid="",this._columnOffset=0,this._rowOffset=0,this._isRightCanvas=!1,this._isBottomCanvas=!1,this._xDelayForNextCell=0,this._yDelayForNextCell=0,this._viewportHeight=0,this._viewportWidth=0,this._isRowMoveRegistered=!1,this._scrollLeft=0,this._scrollTop=0,this._defaults={autoScroll:!0,minIntervalToShowNextCell:30,maxIntervalToShowNextCell:600,accelerateInterval:5,selectionCss:{border:"2px dashed blue"}},this._eventHandler=new Ot,this._options=f3(this._defaults,e)}get addonOptions(){return this._options}get eventHandler(){return this._eventHandler}get gridUid(){return this._gridUid||(this._grid?.getUID()??"")}get gridUidSelector(){return this.gridUid?`.${this.gridUid}`:""}init(e){this._grid=e,this._decorator=this._options.cellDecorator||new kde(e,this._options),this._canvas=e.getCanvasNode(),this._gridOptions=e.getOptions(),this._gridUid=e.getUID();const a=e.getPubSubService();a&&K.addSlickEventPubSubWhenDefined(a,this),this._eventHandler.subscribe(this._grid.onDrag,this.handleDrag.bind(this)).subscribe(this._grid.onDragInit,this.handleDragInit.bind(this)).subscribe(this._grid.onDragStart,this.handleDragStart.bind(this)).subscribe(this._grid.onDragEnd,this.handleDragEnd.bind(this)).subscribe(this._grid.onScroll,this.handleScroll.bind(this))}destroy(){this.dispose()}dispose(){this._eventHandler?.unsubscribeAll(),Ct(this._activeCanvas),Ct(this._canvas),this._decorator?.destroy(),this.stopIntervalTimer()}getCellDecorator(){return this._decorator}getCurrentRange(){return this._currentlySelectedRange}getMouseOffsetViewport(e,a){const u=e?.touches?.[0]??e,i=this._activeViewport.scrollLeft,r=this._activeViewport.scrollTop,o=i+this._viewportWidth,d=r+this._viewportHeight,h=Du(this._activeViewport),m=h?.left??0,E=h?.top??0,v=m+this._viewportWidth,k=E+this._viewportHeight,x={e,dd:a,viewport:{left:i,top:r,right:o,bottom:d,offset:{left:m,top:E,right:v,bottom:k}},offset:{x:0,y:0},isOutsideViewport:!1};return u.pageXv&&(x.offset.x=u.pageX-v),u.pageYk&&(x.offset.y=k-u.pageY),x.isOutsideViewport=!!x.offset.x||!!x.offset.y,x}stopIntervalTimer(){this._autoScrollTimerId&&(clearInterval(this._autoScrollTimerId),this._autoScrollTimerId=void 0)}handleDrag(e,a){if(!this._dragging&&!this._gridOptions.enableRowMoveManager)return;this._gridOptions.enableRowMoveManager||e.stopImmediatePropagation();const u=e.getNativeEvent();if(this.addonOptions.autoScroll&&(this._draggingMouseOffset=this.getMouseOffsetViewport(u,a),this._draggingMouseOffset.isOutsideViewport))return this.handleDragOutsideViewport();this.stopIntervalTimer(),this.handleDragTo(u,a)}handleDragOutsideViewport(){if(this._xDelayForNextCell=this.addonOptions.maxIntervalToShowNextCell-Math.abs(this._draggingMouseOffset.offset.x)*this.addonOptions.accelerateInterval,this._yDelayForNextCell=this.addonOptions.maxIntervalToShowNextCell-Math.abs(this._draggingMouseOffset.offset.y)*this.addonOptions.accelerateInterval,!this._autoScrollTimerId){let e=0,a=0;this._autoScrollTimerId=setInterval(()=>{let u=!1,i=!1;this._draggingMouseOffset.offset.x?(e+=this.addonOptions.minIntervalToShowNextCell,u=e>=this._xDelayForNextCell):e=0,this._draggingMouseOffset.offset.y?(a+=this.addonOptions.minIntervalToShowNextCell,i=a>=this._yDelayForNextCell):a=0,(u||i)&&(u&&(e=0),i&&(a=0),this.handleDragToNewPosition(u,i))},this.addonOptions.minIntervalToShowNextCell)}}handleDragToNewPosition(e,a){let u=this._draggingMouseOffset.e.pageX,i=this._draggingMouseOffset.e.pageY;const r=this._draggingMouseOffset.offset.x,o=this._draggingMouseOffset.offset.y,d=this._draggingMouseOffset.viewport.offset;e&&r&&(u=r>0?d.right+this._moveDistanceForOneCell.x:d.left-this._moveDistanceForOneCell.x),a&&o&&(i=o>0?d.top-this._moveDistanceForOneCell.y:d.bottom+this._moveDistanceForOneCell.y),this.handleDragTo({pageX:u,pageY:i},this._draggingMouseOffset.dd)}handleDragTo(e,a){const u=e?.touches?.[0]??e,i=this._grid.getCellFromPoint(u.pageX-(Du(this._activeCanvas)?.left??0)+this._columnOffset,u.pageY-(Du(this._activeCanvas)?.top??0)+this._rowOffset);if(void 0!==i){if(this._gridOptions.frozenColumn>=0&&(!this._isRightCanvas&&i.cell>this._gridOptions.frozenColumn||this._isRightCanvas&&i.cell<=this._gridOptions.frozenColumn)||this._gridOptions.frozenRow>=0&&(!this._isBottomCanvas&&i.row>=this._gridOptions.frozenRow||this._isBottomCanvas&&i.rowo.right||r.topo.bottom)&&this._grid.scrollCellIntoView(i.row,i.cell)}}if(!this._grid.canCellBeSelected(i.row,i.cell))return;if(a?.range){a.range.end=i;const r=new al(a.range.start.row??0,a.range.start.cell??0,i.row,i.cell);this._decorator.show(r),this.onCellRangeSelecting.notify({range:r})}}}handleDragEnd(e,a){this._decorator.hide(),this._dragging&&(this._dragging=!1,e.stopImmediatePropagation(),this.stopIntervalTimer(),this.onCellRangeSelected.notify({range:new al(a.range.start.row??0,a.range.start.cell??0,a.range.end.row,a.range.end.cell)}))}handleDragInit(e){this._activeCanvas=this._grid.getActiveCanvasNode(e),this._activeViewport=this._grid.getActiveViewportNode(e);const a=this._grid.getDisplayedScrollbarDimensions();if(this._viewportWidth=this._activeViewport.offsetWidth-a.width,this._viewportHeight=this._activeViewport.offsetHeight-a.height,this._moveDistanceForOneCell={x:this._grid.getAbsoluteColumnMinWidth()/2,y:this._gridOptions.rowHeight/2},this._rowOffset=0,this._columnOffset=0,this._isBottomCanvas=this._activeCanvas.classList.contains("grid-canvas-bottom"),this._gridOptions.frozenRow>-1&&this._isBottomCanvas){const r=`${this.gridUidSelector} .grid-canvas-${this._gridOptions.frozenBottom?"bottom":"top"}`;this._rowOffset=document.querySelector(r)?.clientHeight??0}this._isRightCanvas=this._activeCanvas.classList.contains("grid-canvas-right"),this._gridOptions.frozenColumn>-1&&this._isRightCanvas&&(this._columnOffset=document.querySelector(`${this.gridUidSelector} .grid-canvas-left`)?.clientWidth??0);const u=this._grid.getCellFromEvent(e),i=this._grid.getActiveCell();(!this._grid.getEditorLock().isActive()||!i||!u||i.row!==u.row||i.cell!==u.cell)&&(e.stopImmediatePropagation(),e.preventDefault())}handleDragStart(e,a){const u=this._grid.getCellFromEvent(e);if(u&&!1!==this.onBeforeCellRangeSelected.notify(u).getReturnValue()&&this._grid.canCellBeSelected(u.row,u.cell)&&(this._dragging=!0,e.stopImmediatePropagation()),!this._dragging)return;this._grid.focus();const i=Du(this._canvas);let r=a.startX-(i?.left??0);this._gridOptions.frozenColumn>=0&&this._isRightCanvas&&(r+=this._scrollLeft);let o=a.startY-(i?.top??0);this._gridOptions.frozenRow>=0&&this._isBottomCanvas&&(o+=this._scrollTop);const d=this._grid.getCellFromPoint(r,o);return a.range={start:d,end:{}},this._currentlySelectedRange=a.range,this._decorator.show(new al(d.row,d.cell))}handleScroll(e,a){this._scrollTop=a.scrollTop,this._scrollLeft=a.scrollLeft}}class xde{constructor(e){this.onSelectedRangesChanged=new ve("onSelectedRangesChanged"),this.pluginName="CellSelectionModel",this._cachedPageRowCount=0,this._prevKeyDown="",this._ranges=[],this._defaults={selectActiveCell:!0},this._eventHandler=new Ot,void 0===e||void 0===e.cellRangeSelector?this._selector=new mG({selectionCss:{border:"2px solid black"}}):this._selector=e.cellRangeSelector,this._addonOptions=e}get addonOptions(){return this._addonOptions}get cellRangeSelector(){return this._selector}get eventHandler(){return this._eventHandler}init(e){this._grid=e,e.hasDataView()&&(this._dataView=e.getData()),this._addonOptions={...this._defaults,...this._addonOptions};const a=e.getPubSubService();a&&this.onSelectedRangesChanged.setPubSubService(a),this._eventHandler.subscribe(this._grid.onActiveCellChanged,this.handleActiveCellChange.bind(this)).subscribe(this._grid.onKeyDown,this.handleKeyDown.bind(this)).subscribe(this._selector.onBeforeCellRangeSelected,this.handleBeforeCellRangeSelected.bind(this)).subscribe(this._selector.onCellRangeSelected,this.handleCellRangeSelected.bind(this)),e.registerPlugin(this._selector)}destroy(){this.dispose()}dispose(){this._selector&&(this._selector.onBeforeCellRangeSelected.unsubscribe(this.handleBeforeCellRangeSelected.bind(this)),this._selector.onCellRangeSelected.unsubscribe(this.handleCellRangeSelected.bind(this))),this._eventHandler.unsubscribeAll(),this._grid?.unregisterPlugin(this._selector),this._selector?.dispose()}getSelectedRanges(){return this._ranges}rangesAreEqual(e,a){let u=e.length!==a.length;if(!u)for(let i=0;ia===e)}handleKeyDown(e){let a,u;const i=this._grid.getColumns().length,r=this._grid.getActiveCell();let o=0;if(o=this._dataView&&"getPagingInfo"in this._dataView?this._dataView?.getPagingInfo().pageSize||this._dataView.getLength():this._grid.getDataLength(),r&&(e.shiftKey||e.ctrlKey)&&!e.altKey&&this.isKeyAllowed(e.key)&&(a=this.getSelectedRanges().slice(),a.length||a.push(new al(r.row,r.cell)),u=a.pop(),"function"==typeof u?.contains)){u.contains(r.row,r.cell)||(u=new al(r.row,r.cell));let d=u.toRow-u.fromRow,h=u.toCell-u.fromCell;const m=r.row===u.fromRow?1:-1,E=r.cell===u.fromCell?1:-1,v=e.key.startsWith("Arrow");let k,x=0;v&&!e.ctrlKey?("ArrowLeft"===e.key?h-=E:"ArrowRight"===e.key?h+=E:"ArrowUp"===e.key?d-=m:"ArrowDown"===e.key&&(d+=m),x=r.row+m*d):(this._cachedPageRowCount<1&&(this._cachedPageRowCount=this._grid.getViewportRowCount()),void 0===this._prevSelectedRow&&(this._prevSelectedRow=r.row),e.shiftKey&&!e.ctrlKey&&"Home"===e.key?(k=0,x=r.row):e.shiftKey&&!e.ctrlKey&&"End"===e.key?(k=i-1,x=r.row):e.ctrlKey&&e.shiftKey&&"Home"===e.key?(k=0,x=0):e.ctrlKey&&e.shiftKey&&"End"===e.key?(k=i-1,x=o-1):"PageUp"===e.key?(this._prevSelectedRow>=0&&(x=this._prevSelectedRow-this._cachedPageRowCount),x<0&&(x=0)):"PageDown"===e.key&&(this._prevSelectedRow<=o-1&&(x=this._prevSelectedRow+this._cachedPageRowCount),x>o-1&&(x=o-1)),this._prevSelectedRow=x),k??=r.cell+E*h;const f=new al(r.row,r.cell,x,k);if(this.removeInvalidRanges([f]).length){a.push(f);const C=m>0?f.toRow:f.fromRow,A=E>0?f.toCell:f.fromCell;v?(this._grid.scrollRowIntoView(C),this._grid.scrollCellIntoView(C,A,!1)):(this._grid.scrollRowIntoView(x),this._grid.scrollCellIntoView(x,A,!1))}else a.push(u);this.setSelectedRanges(a),e.preventDefault(),e.stopPropagation(),this._prevKeyDown=e.key}}}class H7{constructor(e){this.pluginName="RowSelectionModel",this.onSelectedRangesChanged=new ve("onSelectedRangesChanged"),this._inHandler=!1,this._ranges=[],this._defaults={autoScrollWhenDrag:!0,cellRangeSelector:void 0,dragToSelect:!1,selectActiveRow:!0},this._eventHandler=new Ot,this._options={...this._defaults,...e}}get addonOptions(){return this._options}get eventHandler(){return this._eventHandler}get gridOptions(){return this._grid?.getOptions()}init(e){this._grid=e,this._options={...this._defaults,...this._options},this._selector=this.addonOptions.cellRangeSelector;const a=e.getPubSubService();a&&this.onSelectedRangesChanged.setPubSubService(a),!this._selector&&this._options.dragToSelect&&(this._selector=new mG({selectionCss:{border:"none"},autoScroll:this._options.autoScrollWhenDrag}),this.addonOptions.cellRangeSelector=this._selector),this._eventHandler.subscribe(this._grid.onActiveCellChanged,this.handleActiveCellChange.bind(this)).subscribe(this._grid.onClick,this.handleClick.bind(this)).subscribe(this._grid.onKeyDown,this.handleKeyDown.bind(this)),this._selector&&(this._grid.registerPlugin(this._selector),this._selector.onCellRangeSelecting.subscribe(this.handleCellRangeSelected.bind(this)),this._selector.onCellRangeSelected.subscribe(this.handleCellRangeSelected.bind(this)),this._selector.onBeforeCellRangeSelected.subscribe(this.handleBeforeCellRangeSelected.bind(this)))}destroy(){this.dispose()}dispose(){this._eventHandler.unsubscribeAll(),this.disposeSelector()}disposeSelector(){this._selector&&(this._selector.onCellRangeSelecting.unsubscribe(this.handleCellRangeSelected.bind(this)),this._selector.onCellRangeSelected.unsubscribe(this.handleCellRangeSelected.bind(this)),this._selector.onBeforeCellRangeSelected.unsubscribe(this.handleBeforeCellRangeSelected.bind(this)),this._grid.unregisterPlugin(this._selector),this._selector?.destroy(),this._selector?.dispose())}getCellRangeSelector(){return this._selector}getSelectedRanges(){return this._ranges}getSelectedRows(){return this.rangesToRows(this._ranges)}refreshSelections(){this.setSelectedRows(this.getSelectedRows())}setSelectedRows(e){this.setSelectedRanges(this.rowsToRanges(e),"SlickRowSelectionModel.setSelectedRows")}setSelectedRanges(e,a="SlickRowSelectionModel.setSelectedRanges"){if(!(this._ranges&&0!==this._ranges.length||e&&0!==e.length))return;this._ranges=e;const u=new jt(new CustomEvent("click",{detail:{caller:a}}),this._ranges);this.onSelectedRangesChanged.notify(this._ranges,u)}getRowsRange(e,a){let u;const i=[];for(u=e;u<=a;u++)i.push(u);for(u=a;uo!==a.row),this._grid.setActiveCell(a.row,a.cell);else if(u.length&&e.shiftKey){const o=u.pop(),d=Math.min(a.row,o),h=Math.max(a.row,o);u=[];for(let m=d;m<=h;m++)m!==o&&u.push(m);u.push(o),this._grid.setActiveCell(a.row,a.cell)}const r=this.rowsToRanges(u);return this.setSelectedRanges(r),e.stopImmediatePropagation(),!0}handleKeyDown(e){const a=this._grid.getActiveCell();if(this.gridOptions.multiSelect&&a&&e.shiftKey&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&("ArrowUp"===e.key||"ArrowDown"===e.key)){let u=this.getSelectedRows();u.sort((d,h)=>d-h),u.length||(u=[a.row]);let i,r=u[0],o=u[u.length-1];if(i="ArrowDown"===e.key?a.row=0&&ia.push(new al(i,0,i,u))),a}}const pG="mdi-icon-check",EG="mdi-icon-uncheck";class gG{constructor(e,a){this.pubSubService=e,this.pluginName="CheckboxSelectColumn",this._defaults={columnId:"_checkbox_selector",cssClass:null,field:"_checkbox_selector",hideSelectAllCheckbox:!1,name:"",toolTip:"Select/Deselect All",width:30,reorderable:!1,applySelectOnAllPages:!0,hideInColumnTitleRow:!1,hideInFilterHeaderRow:!0},this._addonOptions=this._defaults,this._checkboxColumnCellIndex=null,this._isSelectAllChecked=!1,this._isUsingDataView=!1,this._selectedRowsLookup={},this._selectAll_UID=this.createUID(),this._bindEventService=new wi,this._eventHandler=new Ot,this._addonOptions={...this._defaults,...a}}get addonOptions(){return this._addonOptions}get headerRowNode(){return this._headerRowNode}get gridOptions(){return this._grid?.getOptions()??{}}get selectAllUid(){return this._selectAll_UID}set selectedRowsLookup(e){this._selectedRowsLookup=e}init(e){this._grid=e,this._isUsingDataView=!Array.isArray(e.getData()),this._isUsingDataView&&(this._dataView=e.getData()),this.gridOptions.backendServiceApi&&(this._addonOptions.applySelectOnAllPages=!1),this._eventHandler.subscribe(e.onSelectedRowsChanged,this.handleSelectedRowsChanged.bind(this)).subscribe(e.onClick,this.handleClick.bind(this)).subscribe(e.onKeyDown,this.handleKeyDown.bind(this)),this._isUsingDataView&&this._dataView&&(this._eventHandler.subscribe(e.onAfterSetColumns,this.handleDataViewSelectedIdsChanged.bind(this)),this._addonOptions.applySelectOnAllPages&&this._eventHandler.subscribe(this._dataView.onSelectedRowIdsChanged,this.handleDataViewSelectedIdsChanged.bind(this)).subscribe(this._dataView.onPagingInfoChanged,this.handleDataViewSelectedIdsChanged.bind(this))),this._addonOptions.hideInFilterHeaderRow||this.addCheckboxToFilterHeaderRow(e),this._addonOptions.hideInColumnTitleRow||this._eventHandler.subscribe(this._grid.onHeaderClick,this.handleHeaderClick.bind(this)),(!this._rowSelectionModel||!this._grid.getSelectionModel())&&(this._rowSelectionModel=new H7(this.gridOptions.rowSelectionOptions),this._grid.setSelectionModel(this._rowSelectionModel)),this.gridOptions.preselectedRows&&this._rowSelectionModel&&this._grid.getSelectionModel()&&setTimeout(()=>this.selectRows(this.gridOptions.preselectedRows||[])),"function"==typeof this._addonOptions.selectableOverride&&this.selectableOverride(this._addonOptions.selectableOverride)}dispose(){this._bindEventService.unbindAll(),this._eventHandler.unsubscribeAll()}create(e,a){if(this._addonOptions={...this._defaults,...a.checkboxSelector},Array.isArray(e)&&a){const u=this.getColumnDefinition();if(!e.some(i=>i.id===u.id)){const i=a?.checkboxSelector?.columnIndexPosition??0;i>0?e.splice(i,0,u):e.unshift(u),this.pubSubService.publish("onPluginColumnsChanged",{columns:e,pluginName:this.pluginName})}}return this}getOptions(){return this._addonOptions}setOptions(e){if(this._addonOptions={...this._addonOptions,...e},this._addonOptions.hideSelectAllCheckbox)this.hideSelectAllFromColumnHeaderTitleRow(),this.hideSelectAllFromColumnHeaderFilterRow();else if(this._addonOptions.hideInColumnTitleRow?(this.hideSelectAllFromColumnHeaderTitleRow(),this._addonOptions.name&&this._grid.updateColumnHeader(this._addonOptions.columnId||"",this._addonOptions.name,"")):(this.renderSelectAllCheckbox(this._isSelectAllChecked),this._eventHandler.subscribe(this._grid.onHeaderClick,this.handleHeaderClick.bind(this))),this._addonOptions.hideInFilterHeaderRow)this.hideSelectAllFromColumnHeaderFilterRow();else{const a=this.headerRowNode?.querySelector("#filter-checkbox-selectall-container");if(a){a.style.display="flex",a.ariaChecked=String(this._isSelectAllChecked);const u=a.querySelector('input[type="checkbox"]');u&&(u.ariaChecked=String(this._isSelectAllChecked),u.checked=this._isSelectAllChecked)}}}deSelectRows(e){const a=[];for(const u of e)this._selectedRowsLookup[u]&&(a[a.length]=u);this._grid.setSelectedRows(this._grid.getSelectedRows().filter(u=>a.indexOf(u)<0),"SlickCheckboxSelectColumn.deSelectRows")}selectRows(e){const a=[];for(const i of e)this._selectedRowsLookup[i]&&(a[a.length]=i);const u=this._grid.getSelectedRows()?.concat(a);this._grid.setSelectedRows(u)}createCheckboxElement(e,a=!1){const u=new DocumentFragment,i=T("label",{className:"checkbox-selector-label",htmlFor:e}),r=T("div",{className:"icon-checkbox-container"});return r.appendChild(T("input",{id:e,type:"checkbox",checked:a,ariaChecked:String(a)})),r.appendChild(T("div",{className:`mdi ${a?pG:EG}`})),i.appendChild(r),u.appendChild(i),u}getColumnDefinition(){const e=String(this._addonOptions?.columnId??this._defaults.columnId);return{id:e,name:this._addonOptions.hideSelectAllCheckbox||this._addonOptions.hideInColumnTitleRow?this._addonOptions.name||"":this.createCheckboxElement(`header-selector${this._selectAll_UID}`),toolTip:this._addonOptions.hideSelectAllCheckbox||this._addonOptions.hideInColumnTitleRow?"":this._addonOptions.toolTip,field:e,cssClass:this._addonOptions.cssClass,excludeFromExport:!0,excludeFromColumnPicker:!0,excludeFromGridMenu:!0,excludeFromQuery:!0,excludeFromHeaderMenu:!0,hideSelectAllCheckbox:this._addonOptions.hideSelectAllCheckbox,resizable:!1,reorderable:this._addonOptions.reorderable,sortable:!1,width:this._addonOptions.width||30,maxWidth:this._addonOptions.width||30,formatter:this.checkboxSelectionFormatter.bind(this)}}hideSelectAllFromColumnHeaderTitleRow(){this._grid.updateColumnHeader(this._addonOptions.columnId||"",this._addonOptions.name||"","")}hideSelectAllFromColumnHeaderFilterRow(){const e=this.headerRowNode?.querySelector("#filter-checkbox-selectall-container");e&&(e.style.display="none")}toggleRowSelection(e){this.toggleRowSelectionWithEvent(null,e)}toggleRowSelectionWithEvent(e,a){const u=this._grid.getDataItem(a);if(!this.checkSelectableOverride(a,u,this._grid))return;const i=this._grid.getSelectedRows();"function"==typeof this._addonOptions.onRowToggleStart&&this._addonOptions.onRowToggleStart(e,{row:a,previousSelectedRows:i});const r=this._selectedRowsLookup[a]?this._grid.getSelectedRows().filter(o=>o!==a):this._grid.getSelectedRows().concat(a);this._grid.setSelectedRows(r,"click.toggle"),this._grid.setActiveCell(a,this.getCheckboxColumnCellIndex()),this._addonOptions.onRowToggleEnd&&this._addonOptions.onRowToggleEnd(e,{row:a,previousSelectedRows:i})}selectableOverride(e){this._selectableOverride=e}addCheckboxToFilterHeaderRow(e){this._eventHandler.subscribe(e.onHeaderRowCellRendered,(a,u)=>{if(u.column.field===(this._addonOptions.field||"_checkbox_selector")){Ct(u.node);const i=`header-filter-selector${this._selectAll_UID}`,r=T("label",{id:"filter-checkbox-selectall-container",htmlFor:i}),o=T("div",{className:"icon-checkbox-container"});o.appendChild(T("input",{id:i,type:"checkbox",ariaChecked:"false"})),o.appendChild(T("div",{className:"mdi mdi-icon-uncheck"})),r.appendChild(o),u.node.appendChild(r),this._headerRowNode=u.node,this._headerRowNode.classList.add("checkbox-header"),this._bindEventService.bind(r,"click",d=>this.handleHeaderClick(d,u))}})}checkboxSelectionFormatter(e,a,u,i,r,o){if(r&&this.checkSelectableOverride(e,r,o)){const d=this.createUID()+e;return this.createCheckboxElement(`selector${d}`,!!this._selectedRowsLookup[e])}return null}checkSelectableOverride(e,a,u){return"function"!=typeof this._selectableOverride||this._selectableOverride(e,a,u)}createUID(){return Math.round(1e7*Math.random())}getCheckboxColumnCellIndex(){if(null===this._checkboxColumnCellIndex){this._checkboxColumnCellIndex=0;const e=this._grid.getColumns();for(let a=0;a0)for(let i=0;im[o]===d)>=0&&!this.checkSelectableOverride(i,r,this._grid)&&u++}if(this._isSelectAllChecked=e.length+u>=a.length,!this._addonOptions.hideInColumnTitleRow&&!this._addonOptions.hideSelectAllCheckbox&&this.renderSelectAllCheckbox(this._isSelectAllChecked),!this._addonOptions.hideInFilterHeaderRow){const i=this.headerRowNode?.querySelector(`#header-filter-selector${this._selectAll_UID}`),r=this.headerRowNode?.querySelector(".icon-checkbox-container .mdi");i&&(i.ariaChecked=String(this._isSelectAllChecked),i.checked=this._isSelectAllChecked),r&&(r.className=`mdi ${this._isSelectAllChecked?pG:EG}`)}}handleClick(e,a){if(this._grid.getColumns()[a.cell].id===this._addonOptions.columnId&&"checkbox"===e.target.type){if(e.target.ariaChecked=String(e.target.checked),this._grid.getEditorLock().isActive()&&!this._grid.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();this.toggleRowSelectionWithEvent(e,a.row),e.stopPropagation(),e.stopImmediatePropagation()}}handleHeaderClick(e,a){if(a.column.id===this._addonOptions.columnId&&"checkbox"===e.target.type){if(e.target.ariaChecked=String(e.target.checked),this._grid.getEditorLock().isActive()&&!this._grid.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();let u=e.target.checked;const i=u?"click.selectAll":"click.unselectAll",r=this._grid.getSelectedRows();this._addonOptions.onSelectAllToggleStart&&this._addonOptions.onSelectAllToggleStart(e,{previousSelectedRows:r,caller:i});let o=[];if(u){const d=[];for(let h=0;h{void 0!==h&&this._grid.invalidateRow(+h)}),this._selectedRowsLookup=a,this._grid.render(),this._isSelectAllChecked=(e?.length??0)+o>=this._grid.getDataLength(),!(this._isUsingDataView&&this._addonOptions.applySelectOnAllPages||(!this._addonOptions.hideInColumnTitleRow&&!this._addonOptions.hideSelectAllCheckbox&&this.renderSelectAllCheckbox(this._isSelectAllChecked),this._addonOptions.hideInFilterHeaderRow))){const h=this.headerRowNode?.querySelector(`#header-filter-selector${this._selectAll_UID}`);h&&(h.ariaChecked=String(this._isSelectAllChecked),h.checked=this._isSelectAllChecked)}if(d.length>0){for(const h of d){const m=e.indexOf(h);e.splice(m,1)}this._grid.setSelectedRows(e,"click.toggle")}}renderSelectAllCheckbox(e){this._grid.updateColumnHeader(this._addonOptions.columnId||"",this.createCheckboxElement(`header-selector${this._selectAll_UID}`,!!e),this._addonOptions.toolTip)?.classList.add("header-checkbox-selectall")}}class vG extends R7{constructor(e,a,u,i,r){super(e,u,i),this.extensionUtility=e,this.filterService=a,this.pubSubService=u,this.sharedService=i,this.sortService=r,this.onAfterMenuShow=new ve("onAfterMenuShow"),this.onBeforeMenuShow=new ve("onBeforeMenuShow"),this.onMenuClose=new ve("onMenuClose"),this.onCommand=new ve("onCommand"),this.onColumnsChanged=new ve("onColumnsChanged"),this._areVisibleColumnDifferent=!1,this._columns=[],this._columnCheckboxes=[],this._commandMenuElm=null,this._headerElm=null,this._isMenuOpen=!1,this._subMenuParentId="",this._defaults={dropSide:"left",showButton:!0,hideForceFitButton:!1,hideSyncResizeButton:!1,forceFitTitle:"Force fit columns",marginBottom:15,menuWidth:18,minHeight:250,contentMinWidth:0,resizeOnShowHeaderRow:!1,syncResizeTitle:"Synchronous resize",subMenuOpenByEvent:"mouseover",headerColumnValueExtractor:o=>hn(o.name||"","innerHTML")},this._menuCssPrefix="slick-menu",this._menuPluginCssPrefix="slick-grid-menu",this._camelPluginName="gridMenu",this._columns=this.sharedService.allColumns??[],this._gridUid=this.grid?.getUID()??"",this.initEventHandlers(),this.init()}get addonOptions(){return this._addonOptions||{}}get columns(){return this._columns}set columns(e){this._columns=e}get gridOptions(){return this.grid?.getOptions()||{}}get gridUidSelector(){return this.gridUid?`.${this.gridUid}`:""}initEventHandlers(){this._eventHandler.subscribe(this.grid.onColumnsReordered,V7.bind(this)),this._eventHandler.subscribe(this.grid.onClick,e=>this.hideMenu(e)),this._eventHandler.subscribe(this.grid.onBeforeDestroy,this.dispose.bind(this)),this._eventHandler.subscribe(this.grid.onSetOptions,(e,a)=>{if(a&&a.optionsBefore&&a.optionsAfter){const u=a.optionsBefore.frozenColumn>=0&&-1===a.optionsAfter.frozenColumn,i=-1===a.optionsBefore.frozenColumn&&a.optionsAfter.frozenColumn>=0;(u||i)&&this.recreateGridMenu()}})}init(){this._gridUid=this.grid.getUID()??"",K.addSlickEventPubSubWhenDefined(this.pubSubService,this),this._userOriginalGridMenu={...this.sharedService.gridOptions.gridMenu},this._addonOptions={...this._defaults,...this.getDefaultGridMenuOptions(),...this.sharedService.gridOptions.gridMenu},this.sharedService.gridOptions.gridMenu=this._addonOptions;const e=this._userOriginalGridMenu.commandItems,a=this._userOriginalGridMenu&&Array.isArray(e)?e:[];this._addonOptions.commandItems=[...a,...this.addGridMenuCustomCommands(a)],this.extensionUtility.translateMenuItemsFromTitleKey(this._addonOptions.commandItems||[],"commandItems"),this.extensionUtility.sortItems(this._addonOptions.commandItems,"positionOrder"),this.createGridMenu()}dispose(){this.deleteMenu(),super.dispose()}deleteMenu(){this._bindEventService.unbindAll(),this._menuElm?.remove(),this._menuElm=null,this._gridMenuButtonElm?.remove(),this._headerElm&&(this._headerElm.style.width="100%")}createColumnPickerContainer(){this._menuElm&&(DG.call(this,this._menuElm),this._listElm=T("div",{className:"slick-column-picker-list",role:"menu"}),this._bindEventService.bind(this._menuElm,"click",fG.bind(this),void 0,"parent-menu"))}createGridMenu(){const e=this._gridUid?`.${this._gridUid}`:"",a=this._addonOptions?.menuWidth||this._defaults.menuWidth,u=this.gridOptions.hasOwnProperty("frozenColumn")&&this.gridOptions.frozenColumn>=0?"right":"left",i=this.grid.getContainerNode();if(this._headerElm=i.querySelector(`.slick-header-${u}`),this._headerElm&&this._addonOptions){if(this._headerElm.style.width=`calc(100% - ${a}px)`,(this._addonOptions.resizeOnShowHeaderRow??this._defaults.resizeOnShowHeaderRow)&&this.gridOptions.showHeaderRow){const d=i.querySelector(`${e} .slick-headerrow`);d&&(d.style.width=`calc(100% - ${a}px)`)}if(this._addonOptions.showButton??this._defaults.showButton){this._gridMenuButtonElm=T("button",{className:"slick-grid-menu-button",ariaLabel:"Grid Menu"}),this._addonOptions?.iconCssClass&&this._gridMenuButtonElm.classList.add(...Vt(this._addonOptions.iconCssClass));const d="preheader"===this._addonOptions.iconButtonContainer?"firstChild":"lastChild";this._headerElm.parentElement.insertBefore(this._gridMenuButtonElm,this._headerElm.parentElement[d]),this._bindEventService.bind(this._gridMenuButtonElm,"click",this.showGridMenu.bind(this))}this.sharedService.gridOptions.gridMenu={...this._defaults,...this._addonOptions},this.translateTitleLabels(this._addonOptions),this.translateTitleLabels(this.sharedService.gridOptions.gridMenu),this._bindEventService.bind(document.body,"mousedown",this.handleBodyMouseDown.bind(this)),this._bindEventService.bind(document.body,"beforeunload",this.dispose.bind(this))}}createCommandMenu(e,a=0,u){const i=u?.command;let r=1===a&&i?i.replace(/\s/g,""):"";r&&(this._subMenuParentId=r),a>1&&(r=this._subMenuParentId);const o=`${this.menuCssClass} slick-menu-level-${a} ${this._gridUid}`,d=document.body.querySelector(`.${this.menuCssClass}.slick-menu-level-${a}${this.gridUidSelector}`);if(d){if(d.dataset.subMenuParent===r)return d;this.disposeSubMenus()}const h=T("div",{role:"menu",className:o,ariaLabel:a>1?"SubMenu":"Grid Menu"});a>0&&(h.classList.add("slick-submenu"),r&&(h.dataset.subMenuParent=r));const m={grid:this.grid,menu:this._menuElm,columns:this.columns,allColumns:this.getAllColumns(),visibleColumns:this.getVisibleColumns(),level:a};return this._commandMenuElm=this.recreateCommandList(e,h,m,u),a++,h}getAllColumns(){return this._columns}getVisibleColumns(){return this.grid.getColumns()}hideMenu(e){const a={grid:this.grid,menu:this._menuElm,allColumns:this.columns,visibleColumns:this.getVisibleColumns()};if(this.pubSubService.publish("onGridMenuMenuClose",a),("function"!=typeof this._addonOptions?.onMenuClose||!1!==this._addonOptions.onMenuClose(e,a))&&!1!==this.onMenuClose.notify(a,null,this).getReturnValue()){if(this._isMenuOpen=!1,"function"==typeof this.grid?.autosizeColumns){const u=this.grid.getUID()||"";this._areVisibleColumnDifferent&&u&&null!==document.querySelector(`.${u}`)&&(this.gridOptions.enableAutoSizeColumns&&this.grid.autosizeColumns(),this._areVisibleColumnDifferent=!1)}this.disposeSubMenus(),this._menuElm?.remove(),this._menuElm=null}}recreateGridMenu(){this.deleteMenu(),this.init()}repositionMenu(e,a,u,i){const r=e?.touches?.[0]??e,o=a.classList.contains("slick-submenu"),d=o?e.target.closest(".slick-menu-item"):r.target;if(d){const h=u||this._gridMenuButtonElm,m=Du(u),E=Du(d),v=i??this._addonOptions,k=getComputedStyle(h),x=parseInt(k?.width??this._defaults?.menuWidth,10),f=a?.offsetWidth??0,C=v?.contentMinWidth??this._defaults.contentMinWidth??0,A=(C>f?C:f)||0,w=m?.top??0,z=m?.right??0;let L,M;if(o?(M=E?.top??0,L=E?.left??0):(M=w+h.offsetHeight,L="right"===v?.dropSide?z-x:z-A),o){const ne=a?.clientHeight||0,{bottom:Ne,top:Ie}=f2(d);"top"==(NeNe?"top":"bottom")?(a.classList.remove("dropdown"),a.classList.add("dropup"),M-=ne-d.clientHeight):(a.classList.remove("dropup"),a.classList.add("dropdown"))}const j=this.grid.getGridPosition();let $=L+Number(f);o&&($+=d.clientWidth);const oe=document.documentElement.clientWidth;"left"==($>=j.width||$>=oe?"left":"right")||!o&&"left"===v?.dropSide?(a.classList.remove("dropright"),a.classList.add("dropleft"),o&&(L-=Number(f))):(a.classList.remove("dropleft"),a.classList.add("dropright"),o&&(L+=d.offsetWidth)),a.style.top=`${M}px`,a.style.left=`${L}px`,C>0&&(a.style.minWidth=`${C}px`),a.style.opacity="1",a.style.display="block"}}openGridMenu(){const e=new MouseEvent("click",{bubbles:!0,cancelable:!0,composed:!1});Object.defineProperty(e,"target",{writable:!0,configurable:!0,value:T("button",{className:"slick-grid-menu-button"})}),this.showGridMenu(e)}showGridMenu(e,a){const u=e?.touches?.[0]??e;if(e.preventDefault(),Ct(this._menuElm),this._menuElm?.remove(),this._addonOptions){const i={grid:this.grid,menu:this._menuElm,columns:this.columns,allColumns:this.getAllColumns(),visibleColumns:this.getVisibleColumns()},r={...this._addonOptions,...a};if(r&&!this.extensionUtility.runOverrideFunctionWhenExists(r.menuUsabilityOverride,i)||"function"==typeof e.stopPropagation&&(this.pubSubService.publish("onGridMenuBeforeMenuShow",i),"function"==typeof r?.onBeforeMenuShow&&!1===r.onBeforeMenuShow(e,i)||!1===this.onBeforeMenuShow.notify(i,null,this).getReturnValue()))return;this._menuElm=this.createCommandMenu(this._addonOptions?.commandItems??[]),this.createColumnPickerContainer(),V7.call(this),this._columnCheckboxes=[],yG.call(this,r),document.body.appendChild(this._menuElm),this.gridOptions.darkMode&&this._menuElm.classList.add("slick-dark-mode"),this._menuElm.style.opacity="0";const o=(void 0!==r?.marginBottom?r.marginBottom:this._defaults.marginBottom)||0;this._menuElm.style.minHeight=mc(r?.minHeight,""),void 0!==r?.height?this._menuElm.style.height=mc(r.height,""):this._menuElm.style.maxHeight=mc(r?.maxHeight,window.innerHeight-u.clientY-o+"px");let d="BUTTON"===e.target.nodeName?e.target:e.target.querySelector("button");d||(d=e.target.parentElement),this._menuElm.ariaExpanded="true",this._menuElm.appendChild(this._listElm),this.repositionMenu(e,this._menuElm,d,r),this._isMenuOpen=!0,this.pubSubService.publish("onGridMenuAfterMenuShow",i),"function"==typeof r?.onAfterMenuShow&&r.onAfterMenuShow(e,i),this.onAfterMenuShow.notify(i,null,this)}}translateGridMenu(){if(this.sharedService.gridOptions.gridMenu){this.sharedService.gridOptions.gridMenu.commandItems=[],this.sharedService.gridOptions.gridMenu.commandTitle="",this.sharedService.gridOptions.gridMenu.columnTitle="",this.sharedService.gridOptions.gridMenu.forceFitTitle="",this.sharedService.gridOptions.gridMenu.syncResizeTitle="";const e=this._userOriginalGridMenu&&Array.isArray(this._userOriginalGridMenu.commandItems)?this._userOriginalGridMenu.commandItems:[];this.sharedService.gridOptions.gridMenu.commandItems=[...e,...this.addGridMenuCustomCommands(e)],this.extensionUtility.translateMenuItemsFromTitleKey(this._addonOptions?.commandItems||[],"commandItems"),this.extensionUtility.sortItems(this.sharedService.gridOptions.gridMenu.commandItems,"positionOrder"),this.translateTitleLabels(this.sharedService.gridOptions.gridMenu),this.translateTitleLabels(this._addonOptions),this.extensionUtility.translateItems(this._columns,"nameKey","name")}}translateTitleLabels(e){e&&(e.commandTitle=this.extensionUtility.getPickerTitleOutputString("commandTitle","gridMenu"),e.columnTitle=this.extensionUtility.getPickerTitleOutputString("columnTitle","gridMenu"),e.forceFitTitle=this.extensionUtility.getPickerTitleOutputString("forceFitTitle","gridMenu"),e.syncResizeTitle=this.extensionUtility.getPickerTitleOutputString("syncResizeTitle","gridMenu"))}addGridMenuCustomCommands(e){const a=this.gridOptions.backendServiceApi||null,u=[],r=Gl(this.gridOptions),o=this._addonOptions?.commandLabels;if(this._addonOptions&&this.gridOptions){if(!this._addonOptions.hideClearFrozenColumnsCommand){const h="clear-pinning";e.some(m=>"divider"!==m&&m.hasOwnProperty("command")&&m.command===h)||u.push({iconCssClass:this._addonOptions.iconClearFrozenColumnsCommand||"mdi mdi-pin-off-outline",titleKey:`${r}${o?.clearFrozenColumnsCommandKey??"CLEAR_PINNING"}`,disabled:!1,command:h,positionOrder:52})}if(this.gridOptions.enableFiltering&&!this.sharedService.hideHeaderRowAfterPageLoad){if(!this._addonOptions.hideClearAllFiltersCommand){const h="clear-filter";e.some(m=>"divider"!==m&&m.hasOwnProperty("command")&&m.command===h)||u.push({iconCssClass:this._addonOptions.iconClearAllFiltersCommand||"mdi mdi-filter-remove-outline",titleKey:`${r}${o?.clearAllFiltersCommandKey??"CLEAR_ALL_FILTERS"}`,disabled:!1,command:h,positionOrder:50})}if(!this._addonOptions.hideToggleFilterCommand){const h="toggle-filter";e.some(m=>"divider"!==m&&m.hasOwnProperty("command")&&m.command===h)||u.push({iconCssClass:this._addonOptions.iconToggleFilterCommand||"mdi mdi-flip-vertical",titleKey:`${r}${o?.toggleFilterCommandKey??"TOGGLE_FILTER_ROW"}`,disabled:!1,command:h,positionOrder:53})}if(a&&!this._addonOptions.hideRefreshDatasetCommand){const h="refresh-dataset";e.some(m=>"divider"!==m&&m.hasOwnProperty("command")&&m.command===h)||u.push({iconCssClass:this._addonOptions.iconRefreshDatasetCommand||"mdi mdi-sync",titleKey:`${r}${o?.refreshDatasetCommandKey??"REFRESH_DATASET"}`,disabled:!1,command:h,positionOrder:58})}}if(!this._addonOptions.hideToggleDarkModeCommand){const h="toggle-dark-mode";e.some(m=>"divider"!==m&&m.hasOwnProperty("command")&&m.command===h)||u.push({iconCssClass:this._addonOptions.iconToggleDarkModeCommand||"mdi mdi-brightness-4",titleKey:`${r}${o?.toggleDarkModeCommandKey??"TOGGLE_DARK_MODE"}`,disabled:!1,command:h,positionOrder:54})}if(this.gridOptions.showPreHeaderPanel&&!this._addonOptions.hideTogglePreHeaderCommand){const h="toggle-preheader";e.some(m=>"divider"!==m&&m.hasOwnProperty("command")&&m.command===h)||u.push({iconCssClass:this._addonOptions.iconTogglePreHeaderCommand||"mdi mdi-flip-vertical",titleKey:`${r}${o?.togglePreHeaderCommandKey??"TOGGLE_PRE_HEADER_ROW"}`,disabled:!1,command:h,positionOrder:53})}if(this.gridOptions.enableSorting&&!this._addonOptions.hideClearAllSortingCommand){const h="clear-sorting";e.some(m=>"divider"!==m&&m.hasOwnProperty("command")&&m.command===h)||u.push({iconCssClass:this._addonOptions.iconClearAllSortingCommand||"mdi mdi-sort-variant-off",titleKey:`${r}${o?.clearAllSortingCommandKey??"CLEAR_ALL_SORTING"}`,disabled:!1,command:h,positionOrder:51})}if(this.gridOptions.enableTextExport&&!this._addonOptions.hideExportCsvCommand){const h="export-csv";e.some(m=>"divider"!==m&&m.hasOwnProperty("command")&&m.command===h)||u.push({iconCssClass:this._addonOptions.iconExportCsvCommand||"mdi mdi-download",titleKey:`${r}${o?.exportCsvCommandKey??"EXPORT_TO_CSV"}`,disabled:!1,command:h,positionOrder:55})}if(this.gridOptions.enableExcelExport&&!this._addonOptions.hideExportExcelCommand){const h="export-excel";e.some(m=>"divider"!==m&&m.hasOwnProperty("command")&&m.command===h)||u.push({iconCssClass:this._addonOptions.iconExportExcelCommand||"mdi mdi-file-excel-outline text-success",titleKey:`${r}${o?.exportExcelCommandKey??"EXPORT_TO_EXCEL"}`,disabled:!1,command:h,positionOrder:56})}if(this.gridOptions.enableTextExport&&!this._addonOptions.hideExportTextDelimitedCommand){const h="export-text-delimited";e.some(m=>"divider"!==m&&m.hasOwnProperty("command")&&m.command===h)||u.push({iconCssClass:this._addonOptions.iconExportTextDelimitedCommand||"mdi mdi-download",titleKey:`${r}${o?.exportTextDelimitedCommandKey??"EXPORT_TO_TAB_DELIMITED"}`,disabled:!1,command:h,positionOrder:57})}const d=this._addonOptions?.commandItems||[];(Array.isArray(u)&&u.length>0||Array.isArray(d)&&d.length>0)&&(this._addonOptions.commandTitle=this._addonOptions.commandTitle||this.extensionUtility.getPickerTitleOutputString("commandTitle","gridMenu"))}return u}executeGridMenuInternalCustomCommands(e,a){const u=this.sharedService?.externalRegisteredResources||[];if(a?.command)switch(a.command){case"clear-pinning":const i=[...this.sharedService.visibleColumns],r={frozenColumn:-1,frozenRow:-1,frozenBottom:!1,enableMouseWheelScrollHandler:!1};this.grid.setOptions(r),this.sharedService.gridOptions.frozenColumn=r.frozenColumn,this.sharedService.gridOptions.frozenRow=r.frozenRow,this.sharedService.gridOptions.frozenBottom=r.frozenBottom,this.sharedService.gridOptions.enableMouseWheelScrollHandler=r.enableMouseWheelScrollHandler,Array.isArray(i)&&this.grid.setColumns(i),this.gridOptions.enableAutoSizeColumns&&this.grid.autosizeColumns(),this.pubSubService.publish("onGridMenuClearAllPinning");break;case"clear-filter":this.filterService.clearFilters(),this.sharedService.dataView.refresh(),this.pubSubService.publish("onGridMenuClearAllFilters");break;case"clear-sorting":this.sortService.clearSorting(),this.sharedService.dataView.refresh(),this.pubSubService.publish("onGridMenuClearAllSorting");break;case"export-csv":const d=u.find(x=>"TextExportService"===x.className);d?.exportToFile?d.exportToFile({delimiter:Qr.comma,format:ft.csv}):console.error("[Slickgrid-Universal] You must register the TextExportService to properly use Export to File in the Grid Menu. Example:: this.gridOptions = { enableTextExport: true, externalResources: [new TextExportService()] };");break;case"export-excel":const h=u.find(x=>"ExcelExportService"===x.className);h?.exportToExcel?h.exportToExcel():console.error("[Slickgrid-Universal] You must register the ExcelExportService to properly use Export to Excel in the Grid Menu. Example:: this.gridOptions = { enableExcelExport: true, externalResources: [new ExcelExportService()] };");break;case"export-text-delimited":const m=u.find(x=>"TextExportService"===x.className);m?.exportToFile?m.exportToFile({delimiter:Qr.tab,format:ft.txt}):console.error("[Slickgrid-Universal] You must register the TextExportService to properly use Export to File in the Grid Menu. Example:: this.gridOptions = { enableTextExport: true, externalResources: [new TextExportService()] };");break;case"toggle-dark-mode":const E=this.sharedService.gridOptions.darkMode;this.grid.setOptions({darkMode:!E}),this.sharedService.gridOptions.darkMode=!E;break;case"toggle-filter":let v=this.gridOptions?.showHeaderRow??!1;v=!v,this.grid.setHeaderRowVisibility(v),!0===v&&(this.grid.setColumns(this.sharedService.columnDefinitions),this.grid.scrollColumnIntoView(0));break;case"toggle-preheader":const k=this.gridOptions?.showPreHeaderPanel??!1;this.grid.setPreHeaderPanelVisibility(!k);break;case"refresh-dataset":this.extensionUtility.refreshBackendDataset()}}getDefaultGridMenuOptions(){return{commandTitle:void 0,columnTitle:this.extensionUtility.getPickerTitleOutputString("columnTitle","gridMenu"),forceFitTitle:this.extensionUtility.getPickerTitleOutputString("forceFitTitle","gridMenu"),syncResizeTitle:this.extensionUtility.getPickerTitleOutputString("syncResizeTitle","gridMenu"),iconCssClass:"mdi mdi-menu",menuWidth:18,commandItems:[],hideClearAllFiltersCommand:!1,hideRefreshDatasetCommand:!1,hideToggleFilterCommand:!1}}handleBodyMouseDown(e){if(this.menuElement){let a=!1;const u=e.target.closest(`.${this.menuCssClass}`);(this.menuElement.contains(e.target)||u)&&(a=!0),(this._isMenuOpen&&this.menuElement!==e.target&&!a&&!e.defaultPrevented||"close"===e.target.className&&u)&&this.hideMenu(e)}}handleMenuItemCommandClick(e,a,u,i=0){if("divider"!==u&&!u.disabled&&!u.divider)if(u.command&&!u.commandItems){const o={grid:this.grid,command:u.command,item:u,allColumns:this.columns,visibleColumns:this.getVisibleColumns()};this.executeGridMenuInternalCustomCommands(e,o),this.pubSubService.publish("onGridMenuCommand",o),"function"==typeof this._addonOptions?.onCommand&&this._addonOptions.onCommand(e,o),this.onCommand.notify(o,null,this),"function"==typeof u.action&&u.action.call(this,e,o),!this._addonOptions?.leaveOpen&&!e.defaultPrevented&&this.hideMenu(e),e.preventDefault(),e.stopPropagation()}else u.commandItems&&this.repositionSubMenu(e,u,i)}handleMenuItemMouseOver(e,a,u,i=0){"divider"!==u&&!u.disabled&&!u.divider&&(u.commandItems?this.repositionSubMenu(e,u,i):0===i&&this.disposeSubMenus())}recreateCommandList(e,a,u,i){const r=u.level||0;if(e.length>0){const o=T("div",{className:`${this._menuCssPrefix}-command-list`,role:"menu"},a);if(0===r){this.populateCommandOrOptionTitle("command",this.addonOptions,o,r);const d=a.querySelector(".slick-command-header")??T("div",{className:"slick-command-header"});d.classList.add("with-close"),xG.call(this,d),o.appendChild(d)}return i&&r>0&&this.addSubMenuTitleWhenExists(i,o),this.populateCommandOrOptionItems("command",this._addonOptions,o,e,u,this.handleMenuItemCommandClick,this.handleMenuItemMouseOver),o}return null}repositionSubMenu(e,a,u){const i=a?.commandItems||[],r=this.createCommandMenu(i,u+1,a);r.style.display="block",document.body.appendChild(r),this.repositionMenu(e,r)}}const bG="mdi-icon-picker-check",kG="mdi-icon-picker-uncheck";function xG(t){const a=T("button",{type:"button",className:"close",ariaLabel:"Close",textContent:"\xd7",dataset:{dismiss:this instanceof VM?"slick-column-picker":"slick-grid-menu"}});t.appendChild(a)}function DG(t){const e=this;e.addonOptions?.columnTitle&&(e._columnTitleElm=T("div",{className:"slick-menu-title",textContent:e.addonOptions?.columnTitle??e._defaults.columnTitle},t))}function fG(t){const e=this,a=e instanceof VM?"columnPicker":"gridMenu",i=t.target?.closest(".icon-checkbox-container")?.querySelector(".mdi"),r=!!t.target.checked;if(t.target.ariaChecked=String(r),CG(i,r),"autoresize"===t.target.dataset.option){const o=e.getVisibleColumns();return e.grid.setOptions({forceFitColumns:r}),void e.grid.setColumns(o)}if("syncresize"!==t.target.dataset.option){if("checkbox"===t.target.type){e._areVisibleColumnDifferent=!0;const o=t.target.dataset.columnid||"",d=[];if(e._columnCheckboxes.forEach((E,v)=>{E.checked&&d.push(e.columns[v])}),!d.length)return t.target.checked=!0,void CG(i,!0);if(e.grid.setColumns(d),(!e.sharedService.visibleColumns||Array.isArray(d)&&d.length!==e.sharedService.visibleColumns.length)&&(e.sharedService.visibleColumns=d),e.gridOptions.enableRowSelection&&r){const E=e.grid.getSelectedRows();e.grid.setSelectedRows(E)}const h=e.gridOptions.frozenColumn??-1;h>=0&&e.extensionUtility.readjustFrozenColumnIndexWhenNeeded(h,e.columns,d);const m={columnId:o,showing:r,allColumns:e.columns,visibleColumns:d,columns:d,grid:e.grid};e.pubSubService.publish(`on${wo(a)}ColumnsChanged`,m),"function"==typeof e.addonOptions?.onColumnsChanged&&e.addonOptions.onColumnsChanged(t,m),e.onColumnsChanged.notify(m,null,e)}}else e.grid.setOptions({syncColumnCellResize:r})}function CG(t,e=!1){t&&(t.className=`mdi ${e?bG:kG}`)}function HM(t,e,a,u=!1){const i=T("label",{className:"checkbox-picker-label",htmlFor:e}),r=T("div",{className:"icon-checkbox-container"}),o=T("input",{id:e,type:"checkbox",dataset:a}),d=T("div",{className:`mdi ${u?bG:kG}`}),h=T("span",{className:"checkbox-label"});return r.appendChild(o),r.appendChild(d),i.appendChild(r),i.appendChild(h),t.appendChild(i),u&&(o.ariaChecked="true",o.checked=!0),{inputElm:o,labelElm:i,labelSpanElm:h}}function yG(t){const e=this,a=e instanceof vG?"gridmenu-":"";for(const u of e.columns){const i=u.id,r=document.createElement("li");u.excludeFromColumnPicker&&(r.className="hidden");const o=`${e._gridUid}-${a}colpicker-${i}`,d=e.grid.getColumnIndex(i)>=0,{inputElm:h,labelElm:m,labelSpanElm:E}=HM(r,o,{columnid:`${i}`},d);e._columnCheckboxes.push(h);const k=("function"==typeof t?.headerColumnValueExtractor?t.headerColumnValueExtractor:e._defaults.headerColumnValueExtractor)(u,e.gridOptions);this.grid.applyHtmlCode(E,k),r.appendChild(m),e._listElm.appendChild(r)}if((!t.hideForceFitButton||!t.hideSyncResizeButton)&&e._listElm.appendChild(document.createElement("hr")),!t?.hideForceFitButton){const u=document.createElement("li"),i=`${e._gridUid}-${a}colpicker-forcefit`,{labelSpanElm:r}=HM(u,i,{option:"autoresize"},e.gridOptions.forceFitColumns);r.textContent=t?.forceFitTitle??"",e._listElm.appendChild(u)}if(!t?.hideSyncResizeButton){const u=document.createElement("li"),i=`${e._gridUid}-${a}colpicker-syncresize`,{labelSpanElm:r}=HM(u,i,{option:"syncresize"},e.gridOptions.forceFitColumns);r.textContent=t?.syncResizeTitle??"",e._listElm.appendChild(u)}}function V7(){const t=this,e=t.grid.getColumns().slice(0),a=new Array(t.columns.length);for(let u=0;uhn(i.name||"","innerHTML")},this._bindEventService=new wi,this._eventHandler=new Ot,this._columns=this.sharedService.allColumns??[],this._gridUid=this.grid?.getUID?.()??"",this.init()}get addonOptions(){return this.gridOptions.columnPicker||{}}get eventHandler(){return this._eventHandler}get columns(){return this._columns}set columns(e){this._columns=e}get gridOptions(){return this.sharedService.gridOptions??{}}get grid(){return this.sharedService.slickGrid}get menuElement(){return this._menuElm}init(){this._gridUid=this.grid.getUID()??"",this.gridOptions.columnPicker={...this._defaults,...this.gridOptions.columnPicker},this.onColumnsChanged.setPubSubService(this.pubSubService),this.addonOptions.columnTitle=this.extensionUtility.getPickerTitleOutputString("columnTitle","columnPicker"),this.addonOptions.forceFitTitle=this.extensionUtility.getPickerTitleOutputString("forceFitTitle","columnPicker"),this.addonOptions.syncResizeTitle=this.extensionUtility.getPickerTitleOutputString("syncResizeTitle","columnPicker"),this._eventHandler.subscribe(this.grid.onHeaderContextMenu,this.handleHeaderContextMenu.bind(this)),this._eventHandler.subscribe(this.grid.onColumnsReordered,V7.bind(this)),this._eventHandler.subscribe(this.grid.onClick,this.disposeMenu.bind(this)),this._bindEventService.bind(document.body,"mousedown",this.handleBodyMouseDown.bind(this),void 0,"body"),this._bindEventService.bind(document.body,"beforeunload",this.dispose.bind(this),void 0,"body")}dispose(){this._eventHandler.unsubscribeAll(),this._bindEventService.unbindAll(),this.disposeMenu()}disposeMenu(){this._bindEventService.unbindAll("parent-menu"),this._listElm?.remove(),this._menuElm?.remove(),this._menuElm=null}createPickerMenu(){const e=T("div",{ariaExpanded:"true",className:`slick-column-picker ${this._gridUid}`,role:"menu"});return V7.call(this),DG.call(this,e),xG.call(this,e),this._listElm=T("div",{className:"slick-column-picker-list",role:"menu"}),this._bindEventService.bind(e,"click",fG.bind(this),void 0,"parent-menu"),document.body.appendChild(e),e}getAllColumns(){return this._columns}getVisibleColumns(){return this.grid.getColumns()}translateColumnPicker(){this.addonOptions&&(this.addonOptions.columnTitle="",this.addonOptions.forceFitTitle="",this.addonOptions.syncResizeTitle="",this.addonOptions.columnTitle=this.extensionUtility.getPickerTitleOutputString("columnTitle","columnPicker"),this.addonOptions.forceFitTitle=this.extensionUtility.getPickerTitleOutputString("forceFitTitle","columnPicker"),this.addonOptions.syncResizeTitle=this.extensionUtility.getPickerTitleOutputString("syncResizeTitle","columnPicker")),this.extensionUtility.translateItems(this._columns,"nameKey","name"),this.translateTitleLabels(this.addonOptions)}handleBodyMouseDown(e){(this._menuElm!==e.target&&!this._menuElm?.contains(e.target)||"close"===e.target.className&&e.target.closest(".slick-column-picker"))&&this.disposeMenu()}handleHeaderContextMenu(e){e.preventDefault(),Ct(this._listElm),this._columnCheckboxes=[],this._menuElm=this.createPickerMenu(),this.gridOptions.darkMode&&this._menuElm.classList.add("slick-dark-mode"),yG.call(this,this.addonOptions),document.body.appendChild(this._menuElm),this.repositionMenu(e)}repositionMenu(e){const a=e?.touches?.[0]??e;this._menuElm&&(this._menuElm.style.top=a.pageY-10+"px",this._menuElm.style.left=a.pageX-10+"px",this._menuElm.style.minHeight=mc(this.addonOptions.minHeight,""),this._menuElm.style.maxHeight=mc(this.addonOptions.maxHeight,window.innerHeight-a.clientY+"px"),this._menuElm.style.display="block",this._menuElm.ariaExpanded="true",this._menuElm.appendChild(this._listElm))}translateTitleLabels(e){e&&(e.columnTitle=this.extensionUtility.getPickerTitleOutputString("columnTitle","gridMenu"))}}const j7=(t,e,a,u,i,r)=>{const o=u.params||{};if(!o.formatters||!Array.isArray(o.formatters))throw new Error('[Slickgrid-Universal] The multiple formatter requires the "formatters" to be provided as a column params.\n For example: this.columnDefinitions = [{ id: title, field: title, formatter: Formatters.multiple, params: { formatters: [Formatters.lowercase, Formatters.uppercase] }');const d=o.formatters;let h=a;return d.forEach((m,E)=>{if("function"!=typeof m)throw new Error(`[Slickgrid-Universal] the "params.formatters" at index(${E}) to be used by "Formatters.multiple" is invalid, please verify all formatter functions.`);h=m.call(void 0,t,e,h,u,i,r)}),h};function ju(t,e,a,u){let i,r,o="",d="";switch(a){case"currency":i=ae.DEFAULT_FORMATTER_CURRENCY_MIN_DECIMAL,r=ae.DEFAULT_FORMATTER_CURRENCY_MAX_DECIMAL;break;case"decimal":i=ae.DEFAULT_FORMATTER_NUMBER_MIN_DECIMAL,r=ae.DEFAULT_FORMATTER_NUMBER_MAX_DECIMAL;break;case"percent":i=ae.DEFAULT_FORMATTER_PERCENT_MIN_DECIMAL,r=ae.DEFAULT_FORMATTER_PERCENT_MAX_DECIMAL}const h=e&&"function"==typeof e.getOptions?e.getOptions():{},m=Us("minDecimal",t,h,i),E=Us("maxDecimal",t,h,r),v=Us("decimalSeparator",t,h,ae.DEFAULT_NUMBER_DECIMAL_SEPARATOR),k=Us("thousandSeparator",t,h,ae.DEFAULT_NUMBER_THOUSAND_SEPARATOR),x=Us("displayNegativeNumberWithParentheses",t,h,ae.DEFAULT_NEGATIVE_NUMBER_WRAPPED_IN_BRAQUET),f=Us("currencyPrefix",t,h,""),C=Us("currencySuffix",t,h,"");return"cell"===u&&(o=Us("numberPrefix",t,h,""),d=Us("numberSuffix",t,h,"")),{minDecimal:m,maxDecimal:E,decimalSeparator:v,thousandSeparator:k,wrapNegativeNumber:x,currencyPrefix:f,currencySuffix:C,numberPrefix:o,numberSuffix:d}}function Us(t,e,a,u){const i=e&&e.params;return i&&i.hasOwnProperty(t)?i[t]:a?.formatterOptions?.hasOwnProperty(t)?a.formatterOptions[t]:u}function Ou(t,e){const a=el(t,!0);return(u,i,r,o,d,h)=>{const E=(h&&"function"==typeof h.getOptions?h.getOptions():{})?.formatterOptions?.dateSeparator??e,k=el(o?.type??F.date,!0),x=o?.params?.parseDateAsUtc??!1,f=Ec(r,k);let C=r;if(f){let A=r;x&&(A=function r0e(t){return Xj(t,c7(t,"utc"))}(f)),C=ai(A,a,"en-US")}if(C&&E!==e){const A=new RegExp(e,"ig");C=C.replace(A,E)}return C}}function jM(t,e,a,u,i,r){let d,o=!1;a?.hasOwnProperty("exportWithFormatter")?o=!!a.exportWithFormatter:r?.hasOwnProperty("exportWithFormatter")&&(o=!!r.exportWithFormatter),u&&a.exportCustomFormatter?d=a.exportCustomFormatter:o&&a.formatter&&(d=a.formatter);const h=O7(d,t,e,a,u,i);return r?.sanitizeDataExport&&"string"==typeof h?zu(h):h}function O7(t,e,a,u,i,r){let o="",h=u.field||u.id||"";if("string"==typeof u.field&&u.field.indexOf(".")>0){const E=u.field.split(".");h=E.length>0?E[0]:u.field}const m=i?.hasOwnProperty(h)?i[h]:null;if("function"==typeof t){const E=t(e,a,m,u,i,r);o=hn(y3(E)?E:E.html||E.text)}else o=i?.hasOwnProperty(h)?m:"";return null==o&&(o=""),"object"==typeof o&&!(o instanceof Date)&&0===Object.entries(o).length&&(o=""),o}class fde extends hG{constructor(e,a,u,i){super(e,a,u),this.extensionUtility=e,this.pubSubService=a,this.sharedService=u,this.treeDataService=i,this._defaults={autoAdjustDrop:!0,autoAlignSide:!0,autoAdjustDropOffset:0,autoAlignSideOffset:0,hideMenuOnScroll:!1,optionShownOverColumnIds:[],commandShownOverColumnIds:[],subMenuOpenByEvent:"mouseover"},this.pluginName="ContextMenu",this._camelPluginName="contextMenu",this._menuCssPrefix="slick-menu",this._menuPluginCssPrefix="slick-context-menu",this.init(u.gridOptions.contextMenu)}init(e){this._addonOptions={...this._defaults,...e};const a=this._addonOptions&&Array.isArray(this._addonOptions.commandItems)?this._addonOptions.commandItems:[];this._addonOptions.commandItems=[...a,...this.addMenuCustomCommands(a)],this._addonOptions={...this._addonOptions},this.sharedService.gridOptions.contextMenu=this._addonOptions,this.sortMenuItems(),this._eventHandler.subscribe(this.grid.onContextMenu,this.handleOnContextMenu.bind(this)),this._eventHandler.subscribe(this.grid.onClick,this.hideMenu.bind(this)),this._addonOptions.hideMenuOnScroll&&this._eventHandler.subscribe(this.grid.onScroll,this.closeMenu.bind(this))}translateContextMenu(){const e=this.sharedService?.gridOptions??{},a=this.sharedService.gridOptions.contextMenu;if(a&&e?.enableTranslate){const u=a.commandItems||[],i=a.optionItems||[];a.commandTitleKey&&(a.commandTitle=this.extensionUtility.translateWhenEnabledAndServiceExist(a.commandTitleKey,"TEXT_COMMANDS")||a.commandTitle),a.optionTitleKey&&(a.optionTitle=this.extensionUtility.translateWhenEnabledAndServiceExist(a.optionTitleKey,"TEXT_COMMANDS")||a.optionTitle),this.extensionUtility.translateMenuItemsFromTitleKey(u,"commandItems"),this.extensionUtility.translateMenuItemsFromTitleKey(i,"optionItems")}}handleOnContextMenu(e,a){this.disposeAllMenus();const u=this.grid.getCellFromEvent(e);if(u){const i=this.grid.getDataItem(u.row),r=this.grid.getColumns()[u.cell],o=a||{};if(o.cell=u.cell,o.row=u.row,o.column=r,o.dataContext=i,o.grid=this.grid,!this.extensionUtility.runOverrideFunctionWhenExists(this._addonOptions.menuUsabilityOverride,o))return;this._menuElm=this.createParentMenu(e),this._menuElm&&e.preventDefault(),this._menuElm&&this.gridOptions.darkMode&&this._menuElm.classList.add("slick-dark-mode"),this._menuElm&&(this.repositionMenu(e,this._menuElm),this._menuElm.ariaExpanded="true",this._menuElm.style.display="block"),this._bindEventService.bind(document.body,"mousedown",this.handleBodyMouseDown.bind(this))}}addMenuCustomCommands(e){const a=[],u=this.sharedService&&this.sharedService.gridOptions||{},i=u?.contextMenu,r=this.sharedService?.dataView,o=Gl(u);if(i&&!i.hideCopyCellValueCommand){const d="copy";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||a.push({iconCssClass:i.iconCopyCellValueCommand||"mdi mdi-content-copy",titleKey:`${o}COPY`,disabled:!1,command:d,positionOrder:50,action:(h,m)=>{this.copyToClipboard(m)},itemUsabilityOverride:h=>{const m=h?.column,E=h?.dataContext;if("function"==typeof m.queryFieldNameGetterFn){const v=b2(m,E,"");if(""!==v&&void 0!==v)return!0}else if(m&&E.hasOwnProperty(m.field))return""!==E[m.field]&&null!==E[m.field]&&void 0!==E[m.field];return!1}})}if(u?.enableTextExport&&i&&!i.hideExportCsvCommand){const d="export-csv";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||a.push({iconCssClass:i.iconExportCsvCommand||"mdi mdi-download",titleKey:`${o}EXPORT_TO_CSV`,disabled:!1,command:d,positionOrder:51,action:()=>{const m=(this.sharedService?.externalRegisteredResources||[]).find(E=>"TextExportService"===E.className);if(!m?.exportToFile)throw new Error("[Slickgrid-Universal] You must register the TextExportService to properly use Export to File in the Context Menu. Example:: this.gridOptions = { enableTextExport: true, externalResources: [new TextExportService()] };");m.exportToFile({delimiter:Qr.comma,format:ft.csv})}})}if(u&&u.enableExcelExport&&i&&!i.hideExportExcelCommand){const d="export-excel";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||a.push({iconCssClass:i.iconExportExcelCommand||"mdi mdi-file-excel-outline text-success",titleKey:`${o}EXPORT_TO_EXCEL`,disabled:!1,command:d,positionOrder:52,action:()=>{const m=(this.sharedService?.externalRegisteredResources||[]).find(E=>"ExcelExportService"===E.className);if(!m?.exportToExcel)throw new Error("[Slickgrid-Universal] You must register the ExcelExportService to properly use Export to Excel in the Context Menu. Example:: this.gridOptions = { enableExcelExport: true, externalResources: [new ExcelExportService()] };");m.exportToExcel()}})}if(u?.enableTextExport&&i&&!i.hideExportTextDelimitedCommand){const d="export-text-delimited";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||a.push({iconCssClass:i.iconExportTextDelimitedCommand||"mdi mdi-download",titleKey:`${o}EXPORT_TO_TAB_DELIMITED`,disabled:!1,command:d,positionOrder:53,action:()=>{const m=(this.sharedService?.externalRegisteredResources||[]).find(E=>"TextExportService"===E.className);if(!m?.exportToFile)throw new Error("[Slickgrid-Universal] You must register the TextExportService to properly use Export to File in the Context Menu. Example:: this.gridOptions = { enableTextExport: true, externalResources: [new TextExportService()] };");m.exportToFile({delimiter:Qr.tab,format:ft.txt})}})}if(u&&(u.enableGrouping||u.enableDraggableGrouping||u.enableTreeData)){if(i&&!i.hideCopyCellValueCommand&&a.push({divider:!0,command:"",positionOrder:54}),u&&!u.enableTreeData&&i&&!i.hideClearAllGrouping){const d="clear-grouping";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||a.push({iconCssClass:i.iconClearGroupingCommand||"mdi mdi-close",titleKey:`${o}CLEAR_ALL_GROUPING`,disabled:!1,command:d,positionOrder:55,action:()=>{r.setGrouping([]),this.pubSubService.publish("onContextMenuClearGrouping")},itemUsabilityOverride:()=>{const h=r&&r.getGrouping&&r.getGrouping();return Array.isArray(h)&&h.length>0}})}if(u&&i&&!i.hideCollapseAllGroups){const d="collapse-all-groups";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||a.push({iconCssClass:i.iconCollapseAllGroupsCommand||"mdi mdi-arrow-collapse",titleKey:`${o}COLLAPSE_ALL_GROUPS`,disabled:!1,command:d,positionOrder:56,action:()=>{u.enableTreeData?this.treeDataService.toggleTreeDataCollapse(!0):r.collapseAllGroups(),this.pubSubService.publish("onContextMenuCollapseAllGroups")},itemUsabilityOverride:()=>{if(u.enableTreeData)return!0;const h=r&&r.getGrouping&&r.getGrouping();return Array.isArray(h)&&h.length>0}})}if(u&&i&&!i.hideExpandAllGroups){const d="expand-all-groups";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||a.push({iconCssClass:i.iconExpandAllGroupsCommand||"mdi mdi-arrow-expand",titleKey:`${o}EXPAND_ALL_GROUPS`,disabled:!1,command:d,positionOrder:57,action:()=>{u.enableTreeData?this.treeDataService.toggleTreeDataCollapse(!1):r.expandAllGroups(),this.pubSubService.publish("onContextMenuExpandAllGroups")},itemUsabilityOverride:()=>{if(u.enableTreeData)return!0;const h=r&&r.getGrouping&&r.getGrouping();return Array.isArray(h)&&h.length>0}})}}return this.extensionUtility.translateMenuItemsFromTitleKey(a),a}copyToClipboard(e){try{if(e&&e.grid&&e.command){const a=this.sharedService?.gridOptions??{},u=e?.cell??0,i=e?.row??0,r=e?.column,o=e?.dataContext,d=this.sharedService?.slickGrid;let m=jM(i,u,r,o,d,a&&(a.excelExportOptions||a.textExportOptions));"function"==typeof r.queryFieldNameGetterFn&&(m=b2(r,o,""));let E=m;"string"==typeof m&&(E=m.replace(/^([\xb7|\u2b9e|\u2b9f]\s*)|([\xb7|\u2b9e|\u2b9f])\s*/gi,"").replace(/[\u00b7|\u034f]/gi,"").trim());const v=document.createElement("textarea");v&&document.body&&(v.style.position="absolute",v.style.opacity="0",v.value=E,document.body.appendChild(v),v.select(),document.execCommand("copy",!1,E)&&v.remove())}}catch{}}sortMenuItems(){const e=this.sharedService?.gridOptions?.contextMenu;e&&(this.extensionUtility.sortItems(e.commandItems||[],"positionOrder"),this.extensionUtility.sortItems(e.optionItems||[],"positionOrder"))}}class Cde{constructor(e,a,u){this.extensionUtility=e,this.pubSubService=a,this.sharedService=u,this.columnsGroupBy=[],this.pluginName="DraggableGrouping",this._gridColumns=[],this._gridUid="",this._reorderedColumns=[],this._subscriptions=[],this._defaults={dropPlaceHolderText:"Drop a column header here to group by the column",hideGroupSortIcons:!1,hideToggleAllButton:!1,toggleAllButtonText:"",toggleAllPlaceholderText:"Toggle all Groups"},this._bindingEventService=new wi,this._eventHandler=new Ot,this.onGroupChanged=new ve("onGroupChanged")}get addonOptions(){return this._addonOptions}get dataView(){return this.grid?.getData()??{}}get dropboxElement(){return this._dropzoneElm}get droppableInstance(){return this._droppableInstance}get sortableLeftInstance(){return this._sortableLeftInstance}get sortableRightInstance(){return this._sortableRightInstance}get eventHandler(){return this._eventHandler}get grid(){return this._grid??this.sharedService.slickGrid??{}}get gridOptions(){return this.sharedService.gridOptions??{}}get gridUid(){return this._gridUid||(this.grid?.getUID()??"")}get gridContainer(){return this.grid.getContainerNode()}init(e,a){if(this._addonOptions={...this._defaults,...a},this._grid=e,e){if(this._gridUid=e.getUID(),this._gridColumns=e.getColumns(),this._dropzoneElm=e.getPreHeaderPanel(),this._dropzoneElm.classList.add("slick-dropzone"),this.onGroupChanged.setPubSubService(this.pubSubService),!this._addonOptions.hideToggleAllButton){this._groupToggler=T("div",{className:"slick-group-toggle-all",title:this._addonOptions.toggleAllPlaceholderText??"",style:{display:"none"}});const u=T("span",{className:"slick-group-toggle-all-icon"},this._groupToggler);this.gridOptions.enableTranslate&&this._addonOptions.toggleAllButtonTextKey&&(this._addonOptions.toggleAllButtonText=this.extensionUtility.translateWhenEnabledAndServiceExist(this._addonOptions.toggleAllButtonTextKey,"TEXT_TOGGLE_ALL_GROUPS")),this.gridOptions.enableTranslate&&this._addonOptions.toggleAllPlaceholderTextKey&&(this._addonOptions.toggleAllPlaceholderText=this.extensionUtility.translateWhenEnabledAndServiceExist(this._addonOptions.toggleAllPlaceholderTextKey,"TEXT_TOGGLE_ALL_GROUPS")),this._groupToggler.title=this._addonOptions.toggleAllPlaceholderText??"",this._addonOptions.toggleAllButtonText&&this._groupToggler.appendChild(T("span",{className:"slick-group-toggle-all-text",textContent:this._addonOptions.toggleAllButtonText||""})),this._dropzoneElm.appendChild(this._groupToggler),this._subscriptions.push(this.pubSubService.subscribe("onContextMenuCollapseAllGroups",()=>this.toggleGroupToggler(u,!0,!1)),this.pubSubService.subscribe("onContextMenuExpandAllGroups",()=>this.toggleGroupToggler(u,!1,!1)))}this._dropzonePlaceholderElm=T("div",{className:"slick-draggable-dropzone-placeholder"},this._dropzoneElm),this.gridOptions.enableTranslate&&this._addonOptions?.dropPlaceHolderTextKey&&(this._addonOptions.dropPlaceHolderText=this.extensionUtility.translateWhenEnabledAndServiceExist(this._addonOptions.dropPlaceHolderTextKey,"TEXT_TOGGLE_ALL_GROUPS")),this._dropzonePlaceholderElm.textContent=this._addonOptions?.dropPlaceHolderText??this._defaults.dropPlaceHolderText??"",this.setupColumnDropbox(),this._eventHandler.subscribe(e.onHeaderCellRendered,(u,i)=>{const r=i.node;if(!Yz(i.column?.grouping)&&r&&(r.style.cursor="pointer",this._addonOptions.groupIconCssClass)){const o=T("span",{className:"slick-column-groupable"},r);this._addonOptions.groupIconCssClass&&o.classList.add(...Vt(this._addonOptions.groupIconCssClass))}}),this._subscriptions.push(this.pubSubService.subscribe("onContextMenuClearGrouping",()=>this.clearDroppedGroups()));for(const u of this._gridColumns){const i=u.field;e.updateColumnHeader(i)}}return this}dispose(){this.destroySortableInstances(),this._droppableInstance?.el&&this._droppableInstance?.destroy(),this.onGroupChanged.unsubscribe(),this._eventHandler.unsubscribeAll(),this.pubSubService.unsubscribeAll(this._subscriptions),this._bindingEventService.unbindAll(),Ct(this.gridContainer.querySelector(`.${this.gridUid} .slick-preheader-panel`))}clearDroppedGroups(){this.columnsGroupBy=[],this.updateGroupBy("clear-all");const e=this._dropzoneElm.querySelectorAll(".slick-dropped-grouping");for(const a of Array.from(e))this._dropzoneElm.querySelector(".slick-groupby-remove")?.remove(),a?.remove();this._dropzonePlaceholderElm.style.display="inline-block",this._groupToggler&&(this._groupToggler.style.display="none")}destroySortableInstances(){this._sortableLeftInstance?.el&&this._sortableLeftInstance?.destroy(),this._sortableRightInstance?.el&&this._sortableRightInstance?.destroy()}setAddonOptions(e){this._addonOptions={...this._addonOptions,...e}}setColumns(e){this._gridColumns=e}setDroppedGroups(e){this._dropzonePlaceholderElm.style.display="none";const a=Array.isArray(e)?e:[e];for(const u of a){const i=this.grid.getHeaderColumn(u);this.handleGroupByDrop(this._dropzoneElm,i)}}setupColumnReorder(e,a,u,i,r,o,d,h,m){this.destroySortableInstances();const E=e.getPreHeaderPanel(),v=E.querySelector(".slick-draggable-dropzone-placeholder"),k=E.querySelector(".slick-group-toggle-all"),x={animation:50,chosenClass:"slick-header-column-active",ghostClass:"slick-sortable-placeholder",draggable:".slick-header-column",dataIdAttr:"data-id",group:{name:"shared",pull:"clone",put:!1},revertClone:!0,onStart:()=>{v&&(v.style.display="inline-block"),E.querySelectorAll(".slick-dropped-grouping").forEach(C=>C.style.display="none"),k&&(k.style.display="none")},onEnd:f=>{E?.classList.remove("slick-dropzone-hover"),v?.parentElement?.classList.remove("slick-dropzone-placeholder-hover");const C=E.querySelectorAll(".slick-dropped-grouping");if(C.forEach(L=>L.style.display="flex"),C.length&&(v&&(v.style.display="none"),k&&(k.style.display="inline-flex")),!e.getEditorLock().commitCurrentEdit())return;const A=this.sortableLeftInstance?.toArray()??[];if(a.length>1){const L=this._sortableRightInstance?.toArray()??[];for(const M of L)A.push(M)}const w=[],z=e.getColumns();for(const L of A)w.push(z[d.call(e,L)]);i.call(e,w),m.call(e,e.onColumnsReordered,{grid:e}),f.stopPropagation(),r.call(e)}};return this._sortableLeftInstance=Rh.create(this.gridContainer.querySelector(`.${e.getUID()} .slick-header-columns.slick-header-columns-left`),x),this._sortableRightInstance=Rh.create(this.gridContainer.querySelector(`.${e.getUID()} .slick-header-columns.slick-header-columns-right`),x),{sortableLeftInstance:this._sortableLeftInstance,sortableRightInstance:this._sortableRightInstance}}addColumnGroupBy(e){this.columnsGroupBy.push(e),this.updateGroupBy("add-group")}addGroupByRemoveClickHandler(e,a,u,i){this._bindingEventService.bind(a,"click",()=>{const r=this._bindingEventService.boundedEvents.filter(o=>o.element===a);for(const o of r)this._bindingEventService.unbind(o.element,"click",o.listener);this.removeGroupBy(e,u,i)})}addGroupSortClickHandler(e,a){const{grouping:u,type:i}=e;this._bindingEventService.bind(a,"click",()=>{if(this.toggleGroupAll(e,!1),u){const r=u.sortAsc?eu.desc:eu.asc;u.comparer=(o,d)=>yv(i||"text",o.value,d.value,r,e,this.gridOptions),this.getGroupBySortIcon(a,!u.sortAsc),this.updateGroupBy("sort-group"),u.sortAsc=!u.sortAsc,this.grid.invalidate()}})}getGroupBySortIcon(e,a=!0){a?this._addonOptions.sortAscIconCssClass?(e.classList.remove(...Vt(this._addonOptions.sortDescIconCssClass)),e.classList.add(...Vt(this._addonOptions.sortAscIconCssClass))):(e.classList.add("slick-groupby-sort-asc-icon"),e.classList.remove("slick-groupby-sort-desc-icon")):this._addonOptions.sortDescIconCssClass?(e.classList.remove(...Vt(this._addonOptions.sortAscIconCssClass)),e.classList.add(...Vt(this._addonOptions.sortDescIconCssClass))):this._addonOptions.sortDescIconCssClass||(e.classList.add("slick-groupby-sort-desc-icon"),e.classList.remove("slick-groupby-sort-asc-icon"))}handleGroupByDrop(e,a){const u=a.getAttribute("data-id")?.replace(this._gridUid,"");let i=!0;for(const r of this.columnsGroupBy)r.id===u&&(i=!1);if(i){for(const r of this._gridColumns)if(r.id===u&&r.grouping&&!Yz(r.grouping)){const o=a.querySelector(".slick-column-name"),d=T("div",{id:`${this._gridUid}_${r.id}_entry`,className:"slick-dropped-grouping",dataset:{id:`${r.id}`}});T("div",{className:"slick-dropped-grouping-title",style:{display:"inline-flex"},textContent:o?o.textContent:a.textContent},d);const h=T("div",{className:"slick-groupby-remove"});let m;this._addonOptions.deleteIconCssClass&&h.classList.add(...Vt(this._addonOptions.deleteIconCssClass)),this._addonOptions.deleteIconCssClass||h.classList.add("slick-groupby-remove-icon"),!0!==this._addonOptions?.hideGroupSortIcons&&r.sortable&&(void 0===r.grouping?.sortAsc&&(r.grouping.sortAsc=!0),m=T("div",{className:"slick-groupby-sort"},d),this.getGroupBySortIcon(m,r.grouping.sortAsc)),d.appendChild(h),d.appendChild(document.createElement("div")),e.appendChild(d),this._groupToggler&&0===this.columnsGroupBy.length&&this.toggleGroupAll(r),this.addColumnGroupBy(r),this.addGroupByRemoveClickHandler(r.id,h,a,d),m&&this.addGroupSortClickHandler(r,m)}this._groupToggler&&this.columnsGroupBy.length>0&&(this._groupToggler.style.display="inline-flex")}}toggleGroupAll({grouping:e},a){const u=this._groupToggler?.querySelector(".slick-group-toggle-all-icon");!0===a||e?.collapsed?(u?.classList.add("collapsed"),u?.classList.remove("expanded")):(u?.classList.add("expanded"),u?.classList.remove("collapsed"))}removeFromArray(e,a){if(Array.isArray(e)){const u=e.findIndex(i=>i.id===a.id);u>=0&&e.splice(u,1)}return e}removeGroupBy(e,a,u){u.remove();const i=[];this._gridColumns.forEach(r=>i[r.id]=r),this.removeFromArray(this.columnsGroupBy,i[e]),0===this.columnsGroupBy.length&&(this._dropzonePlaceholderElm.style.display="inline-block",this._groupToggler&&(this._groupToggler.style.display="none")),this.updateGroupBy("remove-group")}addDragOverDropzoneListeners(){const e=this._dropzoneElm.querySelector(".slick-draggable-dropzone-placeholder");e&&this._dropzoneElm&&(this._bindingEventService.bind(e,"dragover",a=>a.preventDefault()),this._bindingEventService.bind(e,"dragenter",()=>this._dropzoneElm.classList.add("slick-dropzone-hover")),this._bindingEventService.bind(e,"dragleave",()=>this._dropzoneElm.classList.remove("slick-dropzone-hover")))}setupColumnDropbox(){const e=this._dropzoneElm;this._droppableInstance=Rh.create(e,{group:"shared",ghostClass:"slick-droppable-sortitem-hover",draggable:".slick-dropped-grouping",dragoverBubble:!0,onAdd:a=>{const u=a.item;u.getAttribute("id")?.replace(this._gridUid,"")&&this.handleGroupByDrop(e,Rh.utils.clone(a.item)),u.parentNode?.removeChild(u)},onUpdate:()=>{const a=this._droppableInstance?.toArray()??[],u=[];for(const i of a)for(const r of this.columnsGroupBy)if(r.id===i){u.push(r);break}this.columnsGroupBy=u,this.updateGroupBy("sort-group")}}),this.addDragOverDropzoneListeners(),this._groupToggler&&this._bindingEventService.bind(this._groupToggler,"click",a=>{const u=a.target.classList.contains("slick-group-toggle-all-icon")?a.target:a.currentTarget.querySelector(".slick-group-toggle-all-icon");this.toggleGroupToggler(u,u?.classList.contains("expanded"))})}toggleGroupToggler(e,a=!0,u=!0){e&&(!0===a?(e.classList.add("collapsed"),e.classList.remove("expanded"),u&&this.dataView.collapseAllGroups()):(e.classList.remove("collapsed"),e.classList.add("expanded"),u&&this.dataView.expandAllGroups()))}updateGroupBy(e){if(0===this.columnsGroupBy.length)return this.dataView.setGrouping([]),this._dropzonePlaceholderElm.style.display="inline-block",void this.triggerOnGroupChangedEvent({caller:e,groupColumns:[]});const a=[];this.columnsGroupBy.forEach(u=>a.push(u.grouping)),this.dataView.setGrouping(a),this._dropzonePlaceholderElm.style.display="none",this.triggerOnGroupChangedEvent({caller:e,groupColumns:a})}triggerOnGroupChangedEvent(e){this._addonOptions&&"function"==typeof this._addonOptions.onGroupChanged&&this._addonOptions.onGroupChanged(new jt,e),this.onGroupChanged.notify(e)}}class yde extends R7{constructor(e,a,u){super(e,a,u),this.extensionUtility=e,this.pubSubService=a,this.sharedService=u,this._buttonElms=[],this._defaults={buttonCssClass:"slick-header-button"},this.pluginName="HeaderButtons",this._menuCssPrefix="slick-header-button",this._camelPluginName="headerButtons",this._bindEventService=new wi,this._eventHandler=new Ot,this.init(u.gridOptions.headerButton)}get addonOptions(){return this._addonOptions}set addonOptions(e){this._addonOptions=e}get eventHandler(){return this._eventHandler}get grid(){return this.sharedService.slickGrid}init(e){this._addonOptions={...this._defaults,...e},this._eventHandler.subscribe(this.grid.onHeaderCellRendered,this.handleHeaderCellRendered.bind(this)),this._eventHandler.subscribe(this.grid.onBeforeHeaderCellDestroy,this.handleBeforeHeaderCellDestroy.bind(this)),this.grid.setColumns(this.grid.getColumns())}dispose(){super.dispose(),this._buttonElms.forEach(e=>e.remove())}handleHeaderCellRendered(e,a){const u=a.column;if(u.header?.buttons&&Array.isArray(u.header.buttons)){let i=u.header.buttons.length;for(;i--;){const r=u.header.buttons[i],o=this.populateSingleCommandOrOptionItem("command",this.addonOptions,null,r,a,this.handleButtonClick.bind(this));o&&r.handler&&!r.disabled&&this._bindEventService.bind(o,"click",d=>r.handler.call(this,d)),o&&(this._buttonElms.push(o),a.node.appendChild(o))}}}handleBeforeHeaderCellDestroy(e,a){if(a.column.header?.buttons&&this._addonOptions?.buttonCssClass){const i=(this._addonOptions?.buttonCssClass||"").replace(/(\s+)/g,".");i&&a.node.querySelectorAll(`.${i}`).forEach(r=>r.remove())}}handleButtonClick(e,a,u,i,r){if(u.command&&!u.disabled){const o=u.command||"",d={grid:this.grid,column:r,button:u};o&&(d.command=o),"function"==typeof u.action&&!u.disabled&&u.action.call(this,e,d),null!==o&&!u.disabled&&this._addonOptions?.onCommand&&(this.pubSubService.publish("onHeaderButtonCommand",d),this._addonOptions.onCommand(e,d),r?.id&&this.grid.updateColumnHeader(r.id))}e.preventDefault(),e.stopPropagation()}}class _de extends R7{constructor(e,a,u,i,r){super(e,u,i),this.extensionUtility=e,this.filterService=a,this.pubSubService=u,this.sharedService=i,this.sortService=r,this._subMenuParentId="",this._defaults={autoAlign:!0,autoAlignOffset:0,buttonCssClass:null,buttonImage:null,minWidth:100,hideColumnHideCommand:!1,hideSortCommands:!1,title:"",subMenuOpenByEvent:"mouseover"},this.pluginName="HeaderMenu",this._menuCssPrefix="slick-menu",this._menuPluginCssPrefix="slick-header-menu",this._camelPluginName="headerMenu",this.sharedService.gridOptions.headerMenu=this.addHeaderMenuCustomCommands(this.sharedService.columnDefinitions),this.init(i.gridOptions.headerMenu)}init(e){this._addonOptions={...this._defaults,...e},this._eventHandler.subscribe(this.grid.onBeforeSetColumns,(a,u)=>{this.sharedService.gridOptions.headerMenu=this.addHeaderMenuCustomCommands(u.newColumns)}),this._eventHandler.subscribe(this.grid.onHeaderCellRendered,this.handleHeaderCellRendered.bind(this)),this._eventHandler.subscribe(this.grid.onBeforeHeaderCellDestroy,this.handleBeforeHeaderCellDestroy.bind(this)),this._eventHandler.subscribe(this.grid.onClick,this.hideMenu.bind(this)),this.grid.setColumns(this.grid.getColumns()),this._bindEventService.bind(document.body,"mousedown",this.handleBodyMouseDown.bind(this))}dispose(){super.dispose(),this._menuElm=this._menuElm||document.body.querySelector(`.slick-header-menu${this.gridUidSelector}`),this._menuElm?.remove(),this._activeHeaderColumnElm=void 0}hideColumn(e){if(this.sharedService?.slickGrid?.getColumnIndex){const a=this.sharedService.slickGrid.getColumnIndex(e.id),u=this.sharedService.slickGrid.getColumns(),i=this.sharedService.gridOptions.frozenColumn??-1;i>=0&&i>=a&&(this.sharedService.gridOptions.frozenColumn=i-1,this.sharedService.slickGrid.setOptions({frozenColumn:this.sharedService.gridOptions.frozenColumn}));const r=$z(u,a);this.sharedService.visibleColumns=r,this.sharedService.slickGrid.setColumns(r),this.pubSubService.publish("onHeaderMenuHideColumns",{columns:r,hiddenColumn:e})}}hideMenu(){this.disposeSubMenus(),this._menuElm?.remove(),this._menuElm=void 0}repositionSubMenu(e,a,u,i){const r=this.createCommandMenu(a.commandItems||[],i,u+1,a);document.body.appendChild(r),this.repositionMenu(e,r)}repositionMenu(e,a){const u=e.target,i=a.classList.contains("slick-submenu"),r=i?e.target.closest(".slick-menu-item"):u,o=Dj(this.sharedService.gridContainerElement,u),d=this.grid.getGridPosition(),h=a.offsetWidth,m=Du(r);let E=i?m?.left??0:o?.left??0,v=i?m?.top??0:(o?.top??0)+(this.addonOptions?.menuOffsetTop??0)+u.clientHeight;if(i){const k=a?.clientHeight||0,{bottom:x,top:f}=f2(r);"top"==(xx?"top":"bottom")?(a.classList.remove("dropdown"),a.classList.add("dropup"),v-=k-r.clientHeight):(a.classList.remove("dropup"),a.classList.add("dropdown"))}if(i&&r){const k=E+Number(h)+r.clientWidth,x=document.documentElement.clientWidth;"left"==(k>=d.width||k>=x?"left":"right")?(a.classList.remove("dropright"),a.classList.add("dropleft"),E-=h):(a.classList.remove("dropleft"),a.classList.add("dropright"),E+=r.offsetWidth)}else E=o?.left??0,this.addonOptions.autoAlign&&d?.width&&E+(a.clientWidth??0)>=d.width&&(E=E+u.clientWidth-a.clientWidth+(this.addonOptions?.autoAlignOffset||0));a.style.top=`${v}px`,a.style.left=`${E}px`}translateHeaderMenu(){this.sharedService.gridOptions?.headerMenu&&this.resetHeaderMenuTranslations(this.sharedService.visibleColumns)}handleHeaderCellRendered(e,a){const i=a.column.header?.menu;if(i&&a.node){if(!this.extensionUtility.runOverrideFunctionWhenExists(this.addonOptions.menuUsabilityOverride,a))return;const r=T("div",{className:"slick-header-menu-button",ariaLabel:"Header Menu"},a.node);this.addonOptions.buttonCssClass&&r.classList.add(...Vt(this.addonOptions.buttonCssClass)),this.addonOptions.tooltip&&(r.title=this.addonOptions.tooltip),this._bindEventService.bind(r,"click",o=>{this.disposeAllMenus(),this.createParentMenu(o,a.column,i)})}}handleBeforeHeaderCellDestroy(e,a){a.column.header?.menu&&a.node.querySelectorAll(".slick-header-menu-button").forEach(i=>i.remove())}handleBodyMouseDown(e){if(this.menuElement){let a=!1;const u=e.target.closest(`.${this.menuCssClass}`);(this.menuElement.contains(e.target)||u)&&(a=!0),(this._menuElm!==e.target&&!a&&!e.defaultPrevented||"close"===e.target.className&&u)&&this.hideMenu()}}handleMenuItemCommandClick(e,a,u,i=0,r){if("divider"!==u&&!u.disabled&&!u.divider)if(u.command&&!u.commandItems){const d={grid:this.grid,command:u.command,column:r,item:u};this.executeHeaderMenuInternalCommands(e,d),this.pubSubService.publish("onHeaderMenuCommand",d),"function"==typeof this.addonOptions?.onCommand&&this.addonOptions.onCommand(e,d),"function"==typeof u.action&&u.action.call(this,e,d),e.defaultPrevented||this.hideMenu(),e.preventDefault(),e.stopPropagation()}else u.commandItems&&this.repositionSubMenu(e,u,i,r)}handleMenuItemMouseOver(e,a,u,i=0,r){"divider"!==u&&!u.disabled&&!u.divider&&(u.commandItems?this.repositionSubMenu(e,u,i,r):0===i&&this.disposeSubMenus())}addHeaderMenuCustomCommands(e){const a=this.sharedService.gridOptions,u=a.headerMenu||{},i=Gl(a);return Array.isArray(e)&&a.enableHeaderMenu&&e.forEach(r=>{if(r&&!r.excludeFromHeaderMenu){r.header?r.header.menu||(r.header.menu={commandItems:[]}):r.header={menu:{commandItems:[]}};const o=r?.header?.menu?.commandItems??[];let d=!1;u&&!u.hideFreezeColumnsCommand&&(d=!0,o.some(h=>"divider"!==h&&"freeze-columns"===h?.command)||o.push({iconCssClass:u.iconFreezeColumns||"mdi mdi-pin-outline",titleKey:`${i}FREEZE_COLUMNS`,command:"freeze-columns",positionOrder:47})),u&&!u.hideColumnResizeByContentCommand&&this.sharedService.gridOptions.enableColumnResizeOnDoubleClick&&(d=!0,o.some(h=>"divider"!==h&&"column-resize-by-content"===h?.command)||o.push({iconCssClass:u.iconColumnResizeByContentCommand||"mdi mdi-arrow-expand-horizontal",titleKey:`${i}COLUMN_RESIZE_BY_CONTENT`,command:"column-resize-by-content",positionOrder:48})),d&&!o.some(h=>"divider"!==h&&49===h.positionOrder)&&o.push({divider:!0,command:"",positionOrder:49}),a.enableSorting&&r.sortable&&u&&!u.hideSortCommands&&(o.some(h=>"divider"!==h&&"sort-asc"===h?.command)||o.push({iconCssClass:u.iconSortAscCommand||"mdi mdi-sort-ascending",titleKey:`${i}SORT_ASCENDING`,command:"sort-asc",positionOrder:50}),o.some(h=>"divider"!==h&&"sort-desc"===h?.command)||o.push({iconCssClass:u.iconSortDescCommand||"mdi mdi-sort-descending",titleKey:`${i}SORT_DESCENDING`,command:"sort-desc",positionOrder:51}),o.some(h=>"divider"!==h&&52===h.positionOrder)||o.push({divider:!0,command:"",positionOrder:52}),!u.hideClearSortCommand&&!o.some(h=>"divider"!==h&&"clear-sort"===h?.command)&&o.push({iconCssClass:u.iconClearSortCommand||"mdi mdi-sort-variant-off",titleKey:`${i}REMOVE_SORT`,command:"clear-sort",positionOrder:54})),a.enableFiltering&&r.filterable&&u&&!u.hideFilterCommand&&!u.hideClearFilterCommand&&!o.some(h=>"divider"!==h&&"clear-filter"===h?.command)&&o.push({iconCssClass:u.iconClearFilterCommand||"mdi mdi-filter-remove-outline",titleKey:`${i}REMOVE_FILTER`,command:"clear-filter",positionOrder:53}),u&&!u.hideColumnHideCommand&&!o.some(h=>"divider"!==h&&"hide-column"===h?.command)&&o.push({iconCssClass:u.iconColumnHideCommand||"mdi mdi-close",titleKey:`${i}HIDE_COLUMN`,command:"hide-column",positionOrder:55}),this.extensionUtility.translateMenuItemsFromTitleKey(o),this.extensionUtility.sortItems(o,"positionOrder")}}),u}clearColumnFilter(e,a){a?.column&&this.filterService.clearFilterByColumnId(e,a.column.id)}clearColumnSort(e,a){a?.column&&this.sharedService&&this.sortService.clearSortByColumnId(e,a.column.id)}executeHeaderMenuInternalCommands(e,a){if(a?.command)switch(a.command){case"hide-column":this.hideColumn(a.column),this.sharedService.gridOptions?.enableAutoSizeColumns&&this.sharedService.slickGrid.autosizeColumns();break;case"clear-filter":this.clearColumnFilter(e,a);break;case"clear-sort":this.clearColumnSort(e,a);break;case"column-resize-by-content":this.pubSubService.publish("onHeaderMenuColumnResizeByContent",{columnId:a.column.id});break;case"freeze-columns":const u=[...this.sharedService.visibleColumns],r={frozenColumn:u.findIndex(m=>m.id===a.column.id),enableMouseWheelScrollHandler:!0},o=this.sharedService.slickGrid.getColumns();this.sharedService.slickGrid.setOptions(r,!1,!0),this.sharedService.gridOptions.frozenColumn=r.frozenColumn,this.sharedService.gridOptions.enableMouseWheelScrollHandler=r.enableMouseWheelScrollHandler,this.sharedService.frozenVisibleColumnId=a.column.id,this.sharedService.hasColumnsReordered||Array.isArray(u)&&Array.isArray(this.sharedService.allColumns)&&u.length!==this.sharedService.allColumns.length?this.sharedService.slickGrid.setColumns(u):this.sharedService.slickGrid.setColumns(o),this.sharedService.slickGrid.getOptions().enableAutoSizeColumns&&this.sharedService.slickGrid.autosizeColumns();break;case"sort-asc":case"sort-desc":const h="sort-asc"===a.command;this.sortColumn(e,a,h)}}createParentMenu(e,a,u){const i={grid:this.grid,column:a,menu:u};"function"==typeof e.stopPropagation&&(this.pubSubService.publish("onHeaderMenuBeforeMenuShow",i),"function"==typeof this.addonOptions?.onBeforeMenuShow&&!1===this.addonOptions?.onBeforeMenuShow(e,i))||(this._menuElm=this.createCommandMenu(u.commandItems,a),this.grid.getContainerNode()?.appendChild(this._menuElm),this.repositionMenu(e,this._menuElm),this.pubSubService.publish("onHeaderMenuAfterMenuShow",i),("function"!=typeof this.addonOptions?.onAfterMenuShow||!1!==this.addonOptions?.onAfterMenuShow(e,i))&&(e.preventDefault(),e.stopPropagation()))}createCommandMenu(e,a,u=0,i){const r=i?.command;let o=1===u&&r?r.replace(/\s/g,""):"";o&&(this._subMenuParentId=o),u>1&&(o=this._subMenuParentId);const d=`${this.menuCssClass} slick-menu-level-${u} ${this.gridUid}`,h=document.body.querySelector(`.${this.menuCssClass}.slick-menu-level-${u}${this.gridUidSelector}`);if(h){if(h.dataset.subMenuParent===o)return h;this.disposeSubMenus()}const m=T("div",{ariaExpanded:"true",ariaLabel:u>1?"SubMenu":"Header Menu",role:"menu",className:d,style:{minWidth:`${this.addonOptions.minWidth}px`}});u>0&&(m.classList.add("slick-submenu"),o&&(m.dataset.subMenuParent=o));const E=T("div",{className:`${this._menuCssPrefix}-command-list`,role:"menu"},m),v={grid:this.grid,column:a,level:u,menu:{commandItems:e}};return i&&u>0&&this.addSubMenuTitleWhenExists(i,E),this.populateCommandOrOptionItems("command",this.addonOptions,E,e,v,this.handleMenuItemCommandClick,this.handleMenuItemMouseOver),u++,m}resetHeaderMenuTranslations(e){e.forEach(a=>{if(a?.header?.menu?.commandItems&&!a.excludeFromHeaderMenu){const u=a.header.menu.commandItems||[];this.extensionUtility.translateMenuItemsFromTitleKey(u)}})}sortColumn(e,a,u=!0){if(a?.column){const i=a.column,r=this.sharedService.gridOptions.multiColumnSort?this.sortService.getCurrentColumnSorts(i.id+""):[];let o=wu.local;r.push({columnId:i.id,sortCol:i,sortAsc:u}),this.sharedService.gridOptions.backendServiceApi?(this.sortService.onBackendSortChanged(e,{multiColumnSort:!0,sortCols:r,grid:this.sharedService.slickGrid}),o=wu.remote):this.sharedService.dataView?(this.sortService.onLocalSortChanged(this.sharedService.slickGrid,r),o=wu.local):a.grid.onSort.notify(r);const d=r.map(h=>({columnId:h?.sortCol?.id??"",sortAsc:h?.sortAsc??!0}));if(this.sharedService.slickGrid.setSortColumns(d),o){const h=[];d.forEach(m=>{h.push({columnId:`${m.columnId}`,direction:m.sortAsc?"ASC":"DESC"})}),this.sortService.emitSortChanged(o,h)}}}}const G7="slick-rbe-editmode",_G="slick-rbe-unsaved-highlight",OM="action-btns--delete",GM="action-btns--edit",KM="action-btns--update",WM="action-btns--cancel";class FG{constructor(e,a,u){this.extensionUtility=e,this.pubSubService=a,this.pluginName="RowBasedEdit",this._defaults={actionsColumnLabel:"Actions",allowMultipleRows:!1,columnId:"_slick_rowbasededit_action",columnIndexPosition:-1,reorderable:!1},this._editedRows=new Map,this._currentLang="en",this._translations={},this.onBeforeEditCellHandler=(i,r)=>this._editedRows.has(r.item?.[this.gridOptions.datasetIdPropertyName??"id"]),this._eventHandler=new Ot,this._addonOptions=u}get addonOptions(){return this._addonOptions}get gridOptions(){return this._grid.getOptions()||{}}get eventHandler(){return this._eventHandler}init(e,a){this._grid=e,this._gridService=a,this._addonOptions={...this._defaults,...this.addonOptions};const u=this._grid.getData();if(this._eventHandler.subscribe(this._grid.onBeforeEditCell,this.onBeforeEditCellHandler),this.checkOptionsRequirements(this.gridOptions),this.gridOptions.autoEdit||(this._grid.setOptions({autoEdit:!0}),console.warn('[Slickgrid-Universal] The Row Based Edit Plugin works best with the gridOption "autoEdit" enabled, the option has now been set automatically for you.')),this._existingEditCommandHandler=this.gridOptions.editCommandHandler,this._grid.setOptions({editCommandHandler:this.rowBasedEditCommandHandler.bind(this)}),!0===this.gridOptions.enableExcelCopyBuffer){const r=this.gridOptions.excelCopyBufferOptions?.onBeforePasteCell;this._grid.setOptions({excelCopyBufferOptions:{...this.gridOptions.excelCopyBufferOptions,onBeforePasteCell:(o,d)=>{let h=!0;if(r&&(h=r(o,d),!1===h))return!1;const m=u.getItem(d.row),E=this.gridOptions.datasetIdPropertyName??"id";return!(!this._editedRows.has(m[E])||!0!==h)}}})}const i=u.getItemMetadata;u.getItemMetadata=this.updateItemMetadata(i?.bind?.(u)),this._eventHandler.subscribe(this._grid.onSetOptions,this.optionsUpdatedHandler.bind(this)),this._eventHandler.subscribe(u.onRowsOrCountChanged,this.handleAllRowRerender.bind(this)),this.translate()}destroy(){this.dispose()}dispose(){this._eventHandler?.unsubscribeAll(),this.pubSubService?.unsubscribeAll()}create(e,a){if(this._addonOptions={...this._defaults,...a.rowBasedEditOptions},Array.isArray(e)&&a){const u=this.getColumnDefinition();if(!e.some(i=>i.id===u.id)){const i=a?.rowBasedEditOptions?.columnIndexPosition??-1;-1===i?e.push(u):i>0&&ivoid 0!==v.editor),d=[],h=this.gridOptions.datasetIdPropertyName??"id";i.forEach((v,k)=>{const x=i[k],f=r[k];if(x!==f||""===f){const C=Array.isArray(u.prevSerializedValue)?o?.[k]:a;if(!C)return;this._grid.invalidate(),u.execute(),this.renderUnsavedCellStyling(e[h],C),d.push(C)}});const m=this._editedRows.get(e[h]),E=[...m?.editCommands||[]];d.length>0&&E.push(u),this._editedRows.set(e[h],{columns:[...m?.columns||[],...d],editCommands:E,cssStyleKeys:m?.cssStyleKeys||[]})}translate(e=!1){return this._currentLang=this.extensionUtility.translaterService?.getCurrentLanguage()??"en",(!this._translations[this._currentLang]||e)&&(this._translations[this._currentLang]={btnUpdateTitle:this.getTitleOrDefault("updateButtonTitle","Update the row"),btnEditTitle:this.getTitleOrDefault("editButtonTitle","Edit the Row"),btnDeleteTitle:this.getTitleOrDefault("deleteButtonTitle","Delete the Row"),btnCancelTitle:this.getTitleOrDefault("cancelButtonTitle","Cancel changes of the Row")}),this._translations[this._currentLang]}checkOptionsRequirements(e){if(!e?.enableCellNavigation)throw new Error("[Slickgrid-Universal] Row Based Edit Plugin requires the gridOption cell navigation (enableCellNavigation = true)");if(!e?.editable)throw new Error("[Slickgrid-Universal] Row Based Edit Plugin requires the gridOption editable (editable = true)")}undoRowEdit(e){const a=this.gridOptions.datasetIdPropertyName??"id",u=this._editedRows.get(e[a]),i=this._grid.getData().getRowByItem(e);if(void 0!==i&&u?.editCommands&&u.editCommands.length||Gs.cancelCurrentEdit()){for(;u.editCommands.length>0;){const r=u.editCommands.pop();r&&r.undo()}u.columns.forEach(r=>{this.removeUnsavedStylingFromCell(r,i)}),u.columns=[],this._grid.invalidate()}}renderUnsavedCellStyling(e,a){if(a){const u=this._grid.getData()?.getRowById(e);if(void 0!==u&&u>=0){const i={[u]:{[a.id]:"slick-rbe-unsaved-cell"}},r=`${_G}_${[a.id]}${u}`;this._grid.setCellCssStyles(r,i),this._editedRows.get(e)?.cssStyleKeys.push(r)}}}handleAllRowRerender(e,a){this._editedRows.forEach((u,i)=>{u.cssStyleKeys.forEach(r=>{this._grid.removeCellCssStyles(r)}),u.cssStyleKeys=[],u.columns.forEach(r=>{this.renderUnsavedCellStyling(i,r)})})}removeUnsavedStylingFromCell(e,a){const u=`${_G}_${[e.id]}${a}`;this._grid.removeCellCssStyles(u)}removeUnsavedStylingFromRow(e){this._grid.getColumns().forEach(a=>{this.removeUnsavedStylingFromCell(a,e)})}optionsUpdatedHandler(e,a){this._addonOptions={...this._defaults,...a.optionsAfter.rowBasedEditOptions}}onCellClickHandler(e,a){var u=this;return Au(function*(){const i=a.dataContext,r=e.target,o=u.gridOptions.datasetIdPropertyName??"id",d=u._editedRows.get(i[o]);if((r.classList.contains(OM)||r.parentElement?.classList.contains(OM))&&u._gridService){if(u._addonOptions?.actionButtons?.deleteButtonPrompt&&!window.confirm(u._addonOptions.actionButtons.deleteButtonPrompt))return;u.toggleEditmode(i,!1),u._gridService.deleteItem(i)}else if(r.classList.contains(GM)||r.parentElement?.classList.contains(GM)){if(!u._addonOptions?.allowMultipleRows&&u._editedRows.size>0)return;"function"==typeof u._addonOptions?.onBeforeEditMode&&u._addonOptions.onBeforeEditMode(a),u.toggleEditmode(i,!0)}else if(r.classList.contains(KM)||r.parentElement?.classList.contains(KM)){if(u._addonOptions?.actionButtons?.updateButtonPrompt&&(d?.editCommands.length||0)>0&&!window.confirm(u._addonOptions.actionButtons.updateButtonPrompt)||(u._grid.getCellEditor()&&u._grid.getActiveCell()?.row===a.row&&u._grid.getEditController()?.commitCurrentEdit(),u._addonOptions?.onBeforeRowUpdated&&!0!==(yield u._addonOptions.onBeforeRowUpdated(a))))return;u.removeUnsavedStylingFromRow(a.row),u.toggleEditmode(i,!1)}else if(r.classList.contains(WM)||r.parentElement?.classList.contains(WM)){if(u._addonOptions?.actionButtons?.cancelButtonPrompt&&(d?.editCommands.length||0)>0&&!window.confirm(u._addonOptions.actionButtons.cancelButtonPrompt))return;u.undoRowEdit(i),u.toggleEditmode(i,!1)}})()}actionColumnFormatter(e,a,u,i,r){const o=this.gridOptions,d=this._editedRows.has(r?.[o.datasetIdPropertyName??"id"]),h=this._translations[this._currentLang]??this.translate(),m=document.createDocumentFragment();return m.appendChild(T("span",{className:`${o.rowBasedEditOptions?.actionButtons?.editButtonClassName||"button-style padding-1px mr-2"} action-btns `+GM,title:h.btnEditTitle,style:{display:d?"none":""}})).appendChild(T("span",{className:o.rowBasedEditOptions?.actionButtons?.iconEditButtonClassName||"mdi mdi-table-edit text-color-primary"})),m.appendChild(T("span",{className:`${o.rowBasedEditOptions?.actionButtons?.deleteButtonClassName||"button-style padding-1px"} action-btns `+OM,title:h.btnDeleteTitle,style:{display:d?"none":""}})).appendChild(T("span",{className:o.rowBasedEditOptions?.actionButtons?.iconDeleteButtonClassName||"mdi mdi-close text-color-danger"})),m.appendChild(T("span",{className:`${o.rowBasedEditOptions?.actionButtons?.updateButtonClassName||"button-style padding-1px mr-2"} action-btns `+KM,title:h.btnUpdateTitle,style:{display:d?"":"none"}})).appendChild(T("span",{className:o.rowBasedEditOptions?.actionButtons?.iconUpdateButtonClassName||"mdi mdi-check-bold text-color-success"})),m.appendChild(T("span",{className:`${o.rowBasedEditOptions?.actionButtons?.cancelButtonClassName||"button-style padding-1px"} action-btns `+WM,title:h.btnCancelTitle,style:{display:d?"":"none"}})).appendChild(T("span",{className:o.rowBasedEditOptions?.actionButtons?.iconCancelButtonClassName||"mdi mdi-cancel text-color-danger"})),m}toggleEditmode(e,a){const u=this.gridOptions.datasetIdPropertyName??"id";a?this._editedRows.set(e[u],{columns:[],editCommands:[],cssStyleKeys:[]}):this._editedRows.delete(e[u]),this._grid.invalidate()}updateItemMetadata(e){return a=>{const u=this._grid.getData().getItem(a);let i={cssClasses:""};if("function"==typeof e){const r=e(a);r&&(i=r)}if(i&&u){const r=this.gridOptions.datasetIdPropertyName??"id";this._editedRows.has(u[r])&&!i.cssClasses.includes(G7)?i.cssClasses=(i.cssClasses||"")+" "+G7:!this._editedRows.has(u[r])&&i.cssClasses.includes(G7)&&(i.cssClasses=i.cssClasses.replace(G7,""))}return i}}getTitleOrDefault(e,a){const u=this.gridOptions.rowBasedEditOptions?.actionButtons;return u?.[e+"Key"]&&this.extensionUtility.translaterService?.translate?.(u?.[e+"Key"]||"")||u?.[e]||a}}class AG{constructor(e){this.pubSubService=e,this.onBeforeMoveRows=new ve("onBeforeMoveRows"),this.onMoveRows=new ve("onMoveRows"),this.pluginName="RowMoveManager",this._dragging=!1,this._defaults={autoScroll:!0,columnId:"_move",cssClass:"slick-row-move-column",cancelEditOnDrag:!1,disableRowSelection:!1,hideRowMoveShadow:!0,reorderable:!1,rowMoveShadowMarginTop:0,rowMoveShadowMarginLeft:0,rowMoveShadowOpacity:.9,rowMoveShadowScale:.75,singleRowMove:!1,width:40},this._eventHandler=new Ot}get addonOptions(){return this._addonOptions}get eventHandler(){return this._eventHandler}get gridOptions(){return this._grid?.getOptions()??{}}init(e,a){this._addonOptions={...this._defaults,...a},this._grid=e,this._canvas=this._grid.getCanvasNode(),K.addSlickEventPubSubWhenDefined(this.pubSubService,this),"function"==typeof this._addonOptions?.usabilityOverride&&this.usabilityOverride(this._addonOptions.usabilityOverride),this._eventHandler.subscribe(this._grid.onDragInit,this.handleDragInit.bind(this)).subscribe(this._grid.onDragStart,this.handleDragStart.bind(this)).subscribe(this._grid.onDrag,this.handleDrag.bind(this)).subscribe(this._grid.onDragEnd,this.handleDragEnd.bind(this))}dispose(){this._eventHandler?.unsubscribeAll()}create(e,a){if(this._addonOptions={...this._defaults,...a.rowMoveManager},Array.isArray(e)&&a){const u=this.getColumnDefinition();if(!e.some(i=>i.id===u.id)){const r=Array.isArray(e)&&e.find(d=>"selectAndMove"===d?.behavior)||u,o=a?.rowMoveManager?.columnIndexPosition??0;o>0?e.splice(o,0,r):e.unshift(r),this.pubSubService.publish("onPluginColumnsChanged",{columns:e,pluginName:this.pluginName})}}return this}getColumnDefinition(){const e=String(this._addonOptions?.columnId??this._defaults.columnId);return{id:e,name:"",behavior:"selectAndMove",excludeFromExport:!0,excludeFromColumnPicker:!0,excludeFromGridMenu:!0,excludeFromQuery:!0,excludeFromHeaderMenu:!0,field:e,reorderable:this._addonOptions.reorderable,resizable:!1,width:this._addonOptions.width||40,formatter:this.moveIconFormatter.bind(this)}}usabilityOverride(e){this._usabilityOverride=e}setOptions(e){this._addonOptions={...this._addonOptions,...e}}handleDragInit(e){e.stopImmediatePropagation()}handleDragEnd(e,a){if(this._dragging&&(this._dragging=!1,e.stopImmediatePropagation(),a.guide?.remove(),a.selectionProxy?.remove(),a.clonedSlickRow?.remove(),a.canMove)){const u={grid:this._grid,rows:a.selectedRows,insertBefore:a.insertBefore};"function"==typeof this._addonOptions.onMoveRows&&this._addonOptions.onMoveRows(e instanceof jt?e.getNativeEvent():e,u),this.onMoveRows.notify(u)}}handleDrag(e,a){if(this._dragging){e.stopImmediatePropagation();const u=e.getNativeEvent(),r=(u?.touches?.[0]??u).pageY-(Du(this._canvas)?.top??0);a.selectionProxy.style.top=r-5+"px",a.selectionProxy.style.display="block",a.clonedSlickRow&&(a.clonedSlickRow.style.top=r-6+"px",a.clonedSlickRow.style.display="block");const o=Math.max(0,Math.min(Math.round(r/(this.gridOptions.rowHeight||0)),this._grid.getDataLength()));if(o!==a.insertBefore){const d={grid:this._grid,rows:a.selectedRows,insertBefore:o};if(!1===this._addonOptions?.onBeforeMoveRows?.(u,d)||!1===this.onBeforeMoveRows.notify(d).getReturnValue()?a.canMove=!1:a.canMove=!0,this._usabilityOverride&&a.canMove){const h=this._grid.getDataItem(o);a.canMove=this.checkUsabilityOverride(o,h,this._grid)}a.canMove?a.guide.style.top=o*(this.gridOptions.rowHeight||0)+"px":a.guide.style.top="-1000px",a.insertBefore=o}}}handleDragStart(e,a){const u=this._grid.getCellFromEvent(e)||{cell:-1,row:-1},i=u.row,r=this._grid.getDataItem(i);if(this.checkUsabilityOverride(i,r,this._grid)){if(this._addonOptions.cancelEditOnDrag&&this._grid.getEditorLock().isActive()&&this._grid.getEditorLock().cancelCurrentEdit(),this._grid.getEditorLock().isActive()||!/move|selectAndMove/.test(this._grid.getColumns()[u.cell].behavior||""))return!1;if(this._dragging=!0,e.stopImmediatePropagation(),!this.addonOptions.hideRowMoveShadow){const h=this._grid.getCellNode(u.row,u.cell)?.closest(".slick-row");h&&(a.clonedSlickRow=h.cloneNode(!0),a.clonedSlickRow.classList.add("slick-reorder-shadow-row"),a.clonedSlickRow.style.display="none",a.clonedSlickRow.style.marginLeft=mc(this._addonOptions?.rowMoveShadowMarginLeft,"0px"),a.clonedSlickRow.style.marginTop=mc(this._addonOptions?.rowMoveShadowMarginTop,"0px"),a.clonedSlickRow.style.opacity=`${this._addonOptions?.rowMoveShadowOpacity??.95}`,a.clonedSlickRow.style.transform=`scale(${this.addonOptions?.rowMoveShadowScale??.75})`,this._canvas.appendChild(a.clonedSlickRow))}let o=this._addonOptions.singleRowMove?[u.row]:this._grid.getSelectedRows();(0===o.length||!o.some(h=>h===u.row))&&(o=[u.row],this._addonOptions.disableRowSelection||this._grid.setSelectedRows(o));const d=this.gridOptions.rowHeight;a.selectedRows=o,a.selectionProxy=T("div",{className:"slick-reorder-proxy",style:{display:"none",position:"absolute",zIndex:"99999",width:`${this._canvas.clientWidth}px`,height:d*o.length+"px"}},this._canvas),a.guide=T("div",{className:"slick-reorder-guide",style:{position:"absolute",zIndex:"99999",width:`${this._canvas.clientWidth}px`,top:"-1000px"}},this._canvas),a.insertBefore=-1}}checkUsabilityOverride(e,a,u){return"function"!=typeof this._usabilityOverride||this._usabilityOverride(e,a,u)}moveIconFormatter(e,a,u,i,r,o){return this.checkUsabilityOverride(e,r,o)?{addClasses:"cell-reorder dnd",html:T("div",{className:this._addonOptions.cssClass||""})}:""}}class Ade{get extensionList(){return this._extensionList}get gridOptions(){return this.sharedService.gridOptions||{}}constructor(e,a,u,i,r,o,d,h){this.extensionUtility=e,this.filterService=a,this.pubSubService=u,this.sharedService=i,this.sortService=r,this.treeDataService=o,this.translaterService=d,this.lazyGridService=h,this._extensionCreatedList={},this._extensionList={}}dispose(){if(this.sharedService.visibleColumns=[],"object"==typeof this._extensionList){const e=Object.keys(this._extensionList);e.forEach(a=>{if(this._extensionList.hasOwnProperty(a)){const u=this._extensionList[a];"function"==typeof u?.instance?.dispose&&u.instance.dispose()}}),e.forEach(a=>{delete this._extensionList[a]})}this._cellMenuPlugin=null,this._cellExcelCopyManagerPlugin=null,this._checkboxSelectColumn=null,this._contextMenuPlugin=null,this._columnPickerControl=null,this._draggleGroupingPlugin=null,this._gridMenuControl=null,this._groupItemMetadataProviderService=null,this._headerMenuPlugin=null,this._rowMoveManagerPlugin=null,this._rowSelectionModel=null,this._extensionCreatedList=null,this._extensionList={}}addExtensionToList(e,a){this._extensionList[e]=a}getAllColumns(){return this.sharedService.allColumns||[]}getVisibleColumns(){return this.sharedService.visibleColumns||[]}getCreatedExtensionByName(e){if(this._extensionCreatedList?.hasOwnProperty(e))return this._extensionCreatedList[e]}getExtensionByName(e){return this._extensionList?.[e]}getExtensionInstanceByName(e){return this.getExtensionByName(e)?.instance}autoResizeColumns(){this.sharedService.slickGrid.autosizeColumns()}bindDifferentExtensions(){if(this.gridOptions){if(this.gridOptions.enableTranslate&&this.translateItems(this.sharedService.allColumns,"nameKey","name"),this.gridOptions.enableRowBasedEdit){this._rowBasedEdit=this._rowBasedEdit||new FG(this.extensionUtility,this.pubSubService,this.gridOptions.rowBasedEditOptions);const e=this.lazyGridService?.();if(!e)throw new Error("[Slickgrid-Universal] the RowBasedEdit Plugin requires a GridService to be configured and available");this._rowBasedEdit.init(this.sharedService.slickGrid,e),this.gridOptions.rowBasedEditOptions?.onExtensionRegistered&&this.gridOptions.rowBasedEditOptions.onExtensionRegistered(this._rowBasedEdit),this._extensionList[oa.rowBasedEdit]={name:oa.rowBasedEdit,instance:this._rowBasedEdit}}if(this.gridOptions.enableAutoTooltip){const e=new pde(this.gridOptions?.autoTooltipOptions);this.sharedService.slickGrid.registerPlugin(e),this._extensionList[oa.autoTooltip]={name:oa.autoTooltip,instance:e}}if(this.gridOptions.enableExcelCopyBuffer&&(this._cellExcelCopyManagerPlugin=new Ede,this._cellExcelCopyManagerPlugin.init(this.sharedService.slickGrid,this.sharedService.gridOptions.excelCopyBufferOptions),this.gridOptions.excelCopyBufferOptions?.onExtensionRegistered&&this.gridOptions.excelCopyBufferOptions.onExtensionRegistered(this._cellExcelCopyManagerPlugin),this._extensionList[oa.cellExternalCopyManager]={name:oa.cellExternalCopyManager,instance:this._cellExcelCopyManagerPlugin}),this.gridOptions.enableCellMenu&&(this._cellMenuPlugin=new bde(this.extensionUtility,this.pubSubService,this.sharedService),this.gridOptions.cellMenu?.onExtensionRegistered&&this.gridOptions.cellMenu.onExtensionRegistered(this._cellMenuPlugin),this._extensionList[oa.cellMenu]={name:oa.cellMenu,instance:this._cellMenuPlugin}),!this._rowSelectionModel&&(this.gridOptions.enableRowSelection||this.gridOptions.enableCheckboxSelector||this.gridOptions.enableRowDetailView||this.gridOptions.enableRowMoveManager)){if(!this._rowSelectionModel||!this.sharedService.slickGrid.getSelectionModel()){const e=this.gridOptions.rowSelectionOptions??{};this.gridOptions.enableRowMoveManager&&!1!==this.gridOptions.rowMoveManager?.dragToSelect&&(e.dragToSelect=!0),this._rowSelectionModel=new H7(e),this.sharedService.slickGrid.setSelectionModel(this._rowSelectionModel)}this._extensionList[oa.rowSelection]={name:oa.rowSelection,instance:this._rowSelectionModel}}if(this.gridOptions.enableCheckboxSelector){this._checkboxSelectColumn=this._checkboxSelectColumn||new gG(this.pubSubService,this.gridOptions.checkboxSelector),this._checkboxSelectColumn.init(this.sharedService.slickGrid);const a=this.getCreatedExtensionByName(oa.checkboxSelector)?.instance;a&&(this.gridOptions.checkboxSelector?.onExtensionRegistered&&this.gridOptions.checkboxSelector.onExtensionRegistered(a),this._extensionList[oa.checkboxSelector]={name:oa.checkboxSelector,instance:this._checkboxSelectColumn})}if(this.gridOptions.enableColumnPicker&&(this._columnPickerControl=new VM(this.extensionUtility,this.pubSubService,this.sharedService),this.gridOptions.columnPicker?.onExtensionRegistered&&this.gridOptions.columnPicker.onExtensionRegistered(this._columnPickerControl),this._extensionList[oa.columnPicker]={name:oa.columnPicker,instance:this._columnPickerControl}),this.gridOptions.enableContextMenu&&(this._contextMenuPlugin=new fde(this.extensionUtility,this.pubSubService,this.sharedService,this.treeDataService),this.gridOptions.contextMenu?.onExtensionRegistered&&this.gridOptions.contextMenu.onExtensionRegistered(this._contextMenuPlugin),this._extensionList[oa.contextMenu]={name:oa.contextMenu,instance:this._contextMenuPlugin}),this.gridOptions.enableDraggableGrouping&&(this._draggleGroupingPlugin&&(this._draggleGroupingPlugin.init(this.sharedService.slickGrid,this.gridOptions.draggableGrouping),this.gridOptions.draggableGrouping?.onExtensionRegistered&&this.gridOptions.draggableGrouping.onExtensionRegistered(this._draggleGroupingPlugin),this._extensionList[oa.contextMenu]={name:oa.contextMenu,instance:this._draggleGroupingPlugin}),this._extensionList[oa.draggableGrouping]={name:oa.draggableGrouping,instance:this._draggleGroupingPlugin}),this.gridOptions.enableGridMenu&&(this._gridMenuControl=new vG(this.extensionUtility,this.filterService,this.pubSubService,this.sharedService,this.sortService),this.gridOptions.gridMenu?.onExtensionRegistered&&this.gridOptions.gridMenu.onExtensionRegistered(this._gridMenuControl),this._extensionList[oa.gridMenu]={name:oa.gridMenu,instance:this._gridMenuControl}),this.gridOptions.enableHeaderButton){const e=new yde(this.extensionUtility,this.pubSubService,this.sharedService);this.gridOptions.headerButton?.onExtensionRegistered&&this.gridOptions.headerButton.onExtensionRegistered(e),this._extensionList[oa.headerButton]={name:oa.headerButton,instance:e}}this.gridOptions.enableHeaderMenu&&(this._headerMenuPlugin=new _de(this.extensionUtility,this.filterService,this.pubSubService,this.sharedService,this.sortService),this.gridOptions.headerMenu?.onExtensionRegistered&&this.gridOptions.headerMenu.onExtensionRegistered(this._headerMenuPlugin),this._extensionList[oa.headerMenu]={name:oa.headerMenu,instance:this._headerMenuPlugin}),this.gridOptions.enableRowMoveManager&&(this._rowMoveManagerPlugin=this._rowMoveManagerPlugin||new AG(this.pubSubService),this._rowMoveManagerPlugin.init(this.sharedService.slickGrid,this.gridOptions.rowMoveManager),this.getCreatedExtensionByName(oa.rowMoveManager)?.instance&&(this._extensionList[oa.rowMoveManager]={name:oa.rowMoveManager,instance:this._rowMoveManagerPlugin}))}}createExtensionsBeforeGridCreation(e,a){const u=[];a.enableCheckboxSelector&&(this.getCreatedExtensionByName(oa.checkboxSelector)||(this._checkboxSelectColumn=new gG(this.pubSubService,this.sharedService.gridOptions.checkboxSelector),u.push({name:oa.checkboxSelector,extension:this._checkboxSelectColumn,columnIndexPosition:a?.checkboxSelector?.columnIndexPosition??u.length}))),a.enableRowMoveManager&&(this.getCreatedExtensionByName(oa.rowMoveManager)||(this._rowMoveManagerPlugin=new AG(this.pubSubService),u.push({name:oa.rowMoveManager,extension:this._rowMoveManagerPlugin,columnIndexPosition:a?.rowMoveManager?.columnIndexPosition??u.length}))),a.enableRowBasedEdit&&(this.getCreatedExtensionByName(oa.rowBasedEdit)||(this._rowBasedEdit=new FG(this.extensionUtility,this.pubSubService),u.push({name:oa.rowBasedEdit,extension:this._rowBasedEdit,columnIndexPosition:a?.rowMoveManager?.columnIndexPosition??u.length}))),this.createExtensionByTheirColumnIndex(u,e,a),a.enableDraggableGrouping&&(this.getCreatedExtensionByName(oa.draggableGrouping)||(this._draggleGroupingPlugin=new Cde(this.extensionUtility,this.pubSubService,this.sharedService),this._draggleGroupingPlugin&&(a.enableColumnReorder=this._draggleGroupingPlugin.setupColumnReorder.bind(this._draggleGroupingPlugin),this._extensionCreatedList[oa.draggableGrouping]={name:oa.draggableGrouping,instance:this._draggleGroupingPlugin})))}hideColumn(e){if("function"==typeof this.sharedService?.slickGrid?.getColumns){const a=this.sharedService.slickGrid.getColumnIndex(e.id);this.sharedService.visibleColumns=this.removeColumnByIndex(this.sharedService.slickGrid.getColumns(),a),this.sharedService.slickGrid.setColumns(this.sharedService.visibleColumns)}}refreshBackendDataset(e){this.extensionUtility.refreshBackendDataset(e)}removeColumnByIndex(e,a){return Array.isArray(e)?e.filter((u,i)=>a!==i):e}translateAllExtensions(e){this.translateCellMenu(),this.translateContextMenu(),this.translateHeaderMenu(),this.translateRowEditPlugin(),this.translateColumnHeaders(e)}translateCellMenu(){this._cellMenuPlugin?.translateCellMenu()}translateColumnPicker(){this._columnPickerControl?.translateColumnPicker()}translateContextMenu(){this._contextMenuPlugin?.translateContextMenu()}translateGridMenu(){this._gridMenuControl?.translateGridMenu()}translateHeaderMenu(){this._headerMenuPlugin?.translateHeaderMenu()}translateRowEditPlugin(){this._rowBasedEdit?.translate()}translateColumnHeaders(e,a){if(this.sharedService&&this.gridOptions&&this.gridOptions.enableTranslate&&(!this.translaterService||!this.translaterService.translate))throw new Error('[Slickgrid-Universal] requires a Translate Service to be installed and configured when the grid option "enableTranslate" is enabled.');e&&this.translaterService?.use&&this.translaterService.getCurrentLanguage()!==e&&this.translaterService.use(e);let u=a;u||(u=this.sharedService.columnDefinitions),this.translateItems(u,"nameKey","name"),this.translateItems(this.sharedService.allColumns,"nameKey","name"),this.translateItems(this.sharedService.allColumns,"columnGroupKey","columnGroup"),this.renderColumnHeaders(u,Array.isArray(a))}renderColumnHeaders(e,a=!1){let u=e;u||(u=this.sharedService.columnDefinitions),Array.isArray(u)&&this.sharedService.slickGrid?.setColumns&&((u.length>this.sharedService.allColumns.length||a)&&(this.sharedService.allColumns=u),this.sharedService.slickGrid.setColumns(u)),this.gridOptions.enableColumnPicker&&this._columnPickerControl&&(this._columnPickerControl.columns=this.sharedService.allColumns,this._columnPickerControl.translateColumnPicker()),this.gridOptions.enableGridMenu&&this._gridMenuControl&&(this._gridMenuControl.columns=this.sharedService.allColumns??[],this._gridMenuControl.recreateGridMenu(),this._gridMenuControl.translateGridMenu())}createExtensionByTheirColumnIndex(e,a,u){e.sort((i,r)=>i.columnIndexPosition-r.columnIndexPosition),e.forEach(i=>{const r=i.extension.create(a,u);r&&(this._extensionCreatedList[i.name]={name:i.name,instance:r})})}translateItems(e,a,u){if(this.gridOptions?.enableTranslate&&!this.translaterService?.translate)throw new Error('[Slickgrid-Universal] requires a Translate Service to be installed and configured when the grid option "enableTranslate" is enabled.');this.extensionUtility.translateItems(e,a,u)}}var wG=Object.prototype.hasOwnProperty;function Js(t,e){var a,u;if(t===e)return!0;if(t&&e&&(a=t.constructor)===e.constructor){if(a===Date)return t.getTime()===e.getTime();if(a===RegExp)return t.toString()===e.toString();if(a===Array){if((u=t.length)===e.length)for(;u--&&Js(t[u],e[u]););return-1===u}if(!a||"object"==typeof t){for(a in u=0,t)if(wG.call(t,a)&&++u&&!wG.call(e,a)||!(a in e)||!Js(t[a],e[a]))return!1;return Object.keys(e).length===u}}return t!=t&&e!=e}function BG(t,e,a){if(a&&(t?.hasOwnProperty(a)||e?.hasOwnProperty(a)))return t[a]===e||t===e[a]||t[a]===e[a];if("object"==typeof t&&"object"==typeof e&&Object.keys(t).length!==Object.keys(e).length)return!1;for(const u in t)if(t.hasOwnProperty(u)&&t[u]!==e[u])return!1;return!0}const bc=(t,e,a)=>{switch(t.toUpperCase()){case"<":case"LT":return e":case"GT":return e>a;case">=":case"GE":return e>=a;case"!=":case"<>":case"NE":return e!==a;case"=":case"==":case"EQ":return e===a;case"IN":return!(!a||!Array.isArray(a))&&a.includes(e);case"NIN":case"NOT_IN":return!(!a||!Array.isArray(a))&&!a.includes(e);case"IN_CONTAINS":return!(!a||!Array.isArray(a)||"string"!=typeof e)&&a.some(u=>e.split(/[,]+/).map(i=>i.trim()).includes(u));case"NIN_CONTAINS":case"NOT_IN_CONTAINS":return!(!a||!Array.isArray(a)||"string"!=typeof e)&&!a.some(u=>e.split(/[,]+/).map(i=>i.trim()).includes(u));case"IN_COLLECTION":return!!(e&&a&&Array.isArray(e)&&Array.isArray(a))&&a.some(u=>e.includes(u));case"NOT_IN_COLLECTION":return!!(e&&a&&Array.isArray(e)&&Array.isArray(a))&&!a.some(u=>e.includes(u))}return!0},SG=(t,e)=>{let[a,u]=e;if(void 0===a&&!t.operator)return!0;t.cellValue=void 0===t.cellValue||null===t.cellValue?"":t.cellValue.toString();const i=t?.ignoreAccentOnStringFilterAndSort?fv(t.cellValue,!0):t.cellValue.toLowerCase();if("string"==typeof a&&(a=t?.ignoreAccentOnStringFilterAndSort?fv(a,!0):a.toLowerCase()),"string"==typeof u&&(u=t?.ignoreAccentOnStringFilterAndSort?fv(u,!0):u.toLowerCase()),void 0!==a&&void 0!==u){let o=t?.operator??t.defaultFilterRangeOperator;o!==re.rangeInclusive&&o!==re.rangeExclusive&&(o=t.defaultFilterRangeOperator);const d=o===re.rangeInclusive,h=UM(d?">=":">",i,a,t.searchInputLastChar),m=UM(d?"<=":"<",i,u,t.searchInputLastChar);return h&&m}return UM(t.operator,i,a,t.searchInputLastChar)};function UM(t,e,a,u){return"*"===t||t===re.endsWith||"*z"===t?e.endsWith(a):""===t&&"*"===u||t===re.startsWith||"a*"===t?e.startsWith(a):""===t||t===re.contains?e.indexOf(a)>-1:"<>"===t||t===re.notContains?-1===e.indexOf(a):bc(t||"==",e,a)}const zG=(t,e)=>{const a=parseFloat(t.cellValue),[u,i]=e;if(void 0===u&&!t.operator)return!0;if(void 0!==u&&void 0!==i){let r=t?.operator??t.defaultFilterRangeOperator;r!==re.rangeInclusive&&r!==re.rangeExclusive&&(r=t.defaultFilterRangeOperator);const o=r===re.rangeInclusive,d=bc(o?">=":">",a,+u),h=bc(o?"<=":"<",a,+i);return d&&h}return bc(t.operator||"==",a,+u)};const MG=(t,e)=>s7(t.cellValue)===s7(e);const LG=t=>{const e=t.operator;let a;return a=!Array.isArray(t.cellValue)||"IN_COLLECTION"!==e&&"NOT_IN_COLLECTION"!==e?void 0===t.cellValue||null===t.cellValue?"":`${t.cellValue}`:t.cellValue.length?t.cellValue.map(u=>`${u}`):[],bc(e||"IN",a,t.searchTerms||[])};function K7(t,e){let u;switch(TG(e)){case"boolean":u=function zde(t){return s7(Array.isArray(t)&&t[0]||!1)}(t);break;case"date":u=function Lde(t,e){const a=Array.isArray(t)&&t||[],i=el(e||F.dateIso),r=[];if(2===a.length||"string"==typeof a[0]&&a[0].indexOf("..")>0){const o=2===a.length?a:a[0].split(".."),d=Array.isArray(o)&&o[0]||"",h=Array.isArray(o)&&o[1]||"",m=Ec(d,i,!0),E=Ec(h,i,!0);if(!m||!E)return[];r.push(m,E)}else{const o=Ec(a[0],i,!0);if(!o)return[];r.push(o)}return r}(t,e);break;case"number":u=function Sde(t){const a=Array.isArray(t)&&t||[0],u=[];let i,r;if(2===a.length||"string"==typeof a[0]&&a[0].indexOf("..")>0){const o=2===a.length?a:a[0].split("..");i=parseFloat(Array.isArray(o)?o[0]:""),r=parseFloat(Array.isArray(o)?o[1]:"")}else i=parseFloat(a[0]);return Ca(i,!0)&&Ca(r,!0)?u.push(i,r):Ca(i,!0)&&u.push(i),u}(t);break;case"object":u=function Pde(t){return(Array.isArray(t)&&t.length>0?t[0]:"")||""}(t);break;case"string":u=function Bde(t){const a=Array.isArray(t)&&t||[""],u=[];let i,r;if(2===a.length||"string"==typeof a[0]&&a[0].indexOf("..")>0){const o=2===a.length?a:a[0].split("..");i=`${Array.isArray(o)?o[0]:""}`,r=`${Array.isArray(o)?o[1]:""}`}else{const o=Array.isArray(t)&&t.length>0?t[0]:"";i=null==o?"":`${o}`}return void 0!==i&&void 0!==r?u.push(i,r):void 0!==i&&u.push(i),u}(t)}return u}function TG(t){switch(t){case F.boolean:return"boolean";case F.date:case F.dateIso:case F.dateUtc:case F.dateTime:case F.dateTimeIso:case F.dateTimeIsoAmPm:case F.dateTimeIsoAM_PM:case F.dateTimeShortIso:case F.dateEuro:case F.dateEuroShort:case F.dateTimeShortEuro:case F.dateTimeEuro:case F.dateTimeEuroAmPm:case F.dateTimeEuroAM_PM:case F.dateTimeEuroShort:case F.dateTimeEuroShortAmPm:case F.dateTimeEuroShortAM_PM:case F.dateUs:case F.dateUsShort:case F.dateTimeShortUs:case F.dateTimeUs:case F.dateTimeUsAmPm:case F.dateTimeUsAM_PM:case F.dateTimeUsShort:case F.dateTimeUsShortAmPm:case F.dateTimeUsShortAM_PM:return"date";case F.integer:case F.float:case F.number:return"number";case F.object:return"object";case F.string:case F.text:case F.password:case F.readonly:default:return"string"}}const PG_executeFilterConditionTest=(t,e)=>{if(function wde(t){switch(t&&t.toUpperCase()||""){case"IN":case"NIN":case"NOT_IN":case"IN_CONTAINS":case"NIN_CONTAINS":case"NOT_IN_CONTAINS":case"IN_COLLECTION":case"NOT_IN_COLLECTION":return!0;default:return!1}}(t.operator))return LG(t);switch(TG(t.filterSearchType||t.fieldType)){case"boolean":return MG(t,e);case"date":return function Mde(t,e){const u=el(t&&(t.filterSearchType||t.fieldType)||F.dateIso),[i,r]=e,o=Ec(t.cellValue,u,!0);if(!i&&!r||!o)return!1;const d="ISO8601"===u||u.toLowerCase().includes("h")?o.valueOf():Yj(new Date(o)).valueOf();if(i&&r){let m=t?.operator??t.defaultFilterRangeOperator;m!==re.rangeInclusive&&m!==re.rangeExclusive&&(m=t.defaultFilterRangeOperator);const E=m===re.rangeInclusive,v=bc(E?">=":">",d,i.valueOf()),k=bc(E?"<=":"<",d,r.valueOf());return v&&k}const h="ISO8601"===u||u.toLowerCase().includes("h")?i.valueOf():Yj(new Date(i)).valueOf();return bc(t.operator||"==",d,h)}(t,e||[]);case"number":return zG(t,e||[]);case"object":return((t,e)=>{if(void 0===e&&!t.operator)return!0;switch((t.operator||"").toUpperCase()){case"!=":case"<>":case"NE":return!BG(t.cellValue,e,t.dataKey);default:return BG(t.cellValue,e,t.dataKey)}})(t,e);default:return SG(t,e||[])}};class Ide{constructor(e,a,u,i,r){this.filterFactory=e,this.pubSubService=a,this.sharedService=u,this.backendUtilities=i,this.rxjs=r,this._isFilterFirstRender=!0,this._firstColumnIdRendered="",this._filtersMetadata=[],this._columnFilters={},this._isTreePresetExecuted=!1,this._previousFilters=[],this._onSearchChange=new ve,this._eventHandler=new Ot,this.rxjs&&(this.httpCancelRequests$=this.rxjs.createSubject())}get eventHandler(){return this._eventHandler}get isFilterFirstRender(){return this._isFilterFirstRender}get onSearchChange(){return this._onSearchChange}get _gridOptions(){return this._grid?.getOptions()??{}}get _columnDefinitions(){return this._grid?.getColumns()??[]}get _dataView(){return this._grid?.getData()??{}}addRxJsResource(e){this.rxjs=e}init(e){this._grid=e,this._gridOptions&&this._gridOptions.enableTreeData&&this._gridOptions.treeDataOptions&&this._grid.setSortColumns([{columnId:this._gridOptions.treeDataOptions.columnId,sortAsc:!0}])}dispose(){this._eventHandler.unsubscribeAll(),this.httpCancelRequests$&&this.rxjs?.isObservable(this.httpCancelRequests$)&&(this.httpCancelRequests$.next(),this.httpCancelRequests$.complete()),this.disposeColumnFilters(),this._onSearchChange=null}disposeColumnFilters(){if(this.removeAllColumnFiltersProperties(),Array.isArray(this._filtersMetadata)){let e=this._filtersMetadata.pop();for(;e;)"function"==typeof e?.destroy&&e.destroy(),e=this._filtersMetadata.pop()}}bindBackendOnFilter(e){this._filtersMetadata=[],this._eventHandler.subscribe(e.onHeaderRowCellRendered,(a,u)=>{u.column.id===this._firstColumnIdRendered&&(this._isFilterFirstRender=!1),this.addFilterTemplateToHeaderRow(u,this._isFilterFirstRender),""===this._firstColumnIdRendered&&(this._firstColumnIdRendered=u.column.id)}),this.subscribeToOnHeaderRowCellRendered(e),this._onSearchChange&&this._eventHandler.subscribe(this._onSearchChange,this.onBackendFilterChange.bind(this))}bindLocalOnFilter(e){var a=this;this._filtersMetadata=[],this._dataView.setFilterArgs({columnFilters:this._columnFilters,grid:this._grid,dataView:this._dataView}),this._dataView.setFilter(this.customLocalFilter.bind(this)),this._onSearchChange&&this._eventHandler.subscribe(this._onSearchChange,function(){var u=Au(function*(i,r){const o=r?.clearFilterTriggered??!1;o||(yield a.emitFilterChanged(wu.local,!0)),!0===a._gridOptions.enableTreeData&&(a._tmpPreFilteredData=a.preFilterTreeData(a._dataView.getItems(),a._columnFilters)),null!==r.columnId&&a._dataView.refresh(),o||(yield a.emitFilterChanged(wu.local)),a._previousFilters=a.extractBasicFilterDetails(a._columnFilters)});return function(i,r){return u.apply(this,arguments)}}()),this._eventHandler.subscribe(e.onHeaderRowCellRendered,(u,i)=>{this.addFilterTemplateToHeaderRow(i)}),this.subscribeToOnHeaderRowCellRendered(e)}clearFilterByColumnId(e,a){var u=this;return Au(function*(){yield u.pubSubService.publish("onBeforeFilterClear",{columnId:a},0);const i=u._gridOptions.backendServiceApi??!1,r=i?wu.remote:wu.local,o=Object.keys(u._columnFilters);let d;Array.isArray(o)&&(d=o.find(m=>m===`${a}`));const h=u._filtersMetadata.find(m=>m.columnDef.id===a);return h?.clear&&h.clear(!0),i&&void 0!==d&&u.onBackendFilterChange(e,{grid:u._grid,columnFilters:u._columnFilters}),yield u.emitFilterChanged(r),!0})()}clearFilters(e=!0){var a=this;return Au(function*(){e&&(yield a.pubSubService.publish("onBeforeFilterClear",!0,0)),a._filtersMetadata.forEach(i=>{i?.clear&&i.clear(!1)}),a.removeAllColumnFiltersProperties(),Array.isArray(a._columnDefinitions)&&a._columnDefinitions.forEach(i=>{i.filter?.searchTerms&&delete i.filter.searchTerms}),a._dataView&&a._grid&&(a._dataView.refresh(),a._grid.invalidate());const u=a._gridOptions.backendServiceApi;if(u&&e){const i={clearFilterTriggered:!0,shouldTriggerQuery:e,grid:a._grid,columnFilters:a._columnFilters},o=u.service.processOnFilterChanged(void 0,i),d=a._gridOptions.pagination?.totalItems??0;a.backendUtilities?.executeBackendCallback(u,o,i,new Date,d,{errorCallback:a.resetToPreviousSearchFilters.bind(a),successCallback:h=>a._previousFilters=a.extractBasicFilterDetails(h.columnFilters),emitActionChangedCallback:a.emitFilterChanged.bind(a)})}else a._previousFilters=a.extractBasicFilterDetails(a._columnFilters);e&&a.pubSubService.publish("onFilterCleared",!0)})()}customLocalFilter(e,a){const u=a?.grid,i=a?.columnFilters??{},r=this._gridOptions.enableTreeData??!1,o=this._gridOptions.treeDataOptions;if(r&&o){const d=o.collapsedPropName??ae.treeDataProperties.COLLAPSED_PROP,h=o.parentPropName??ae.treeDataProperties.PARENT_PROP,m=o?.childrenPropName??ae.treeDataProperties.CHILDREN_PROP,E=this._gridOptions.datasetIdPropertyName??"id",v=o.autoRecalcTotalsOnFilterChange??!1;let k=!1;if(null!==e[h]){let x=this._dataView.getItemById(e[h]);for(;x;){if(x[d]){if(!v)return!1;k=!0}x=this._dataView.getItemById(x[h])}}if(this._tmpPreFilteredData instanceof Set){const x=this._tmpPreFilteredData.has(e[E]);if(v){const f=Mh(this.sharedService.hierarchicalDataset,C=>C[E]===e[E],m);if(f&&(f.__filteredOut=!x),k)return!1}return x}}else if("object"==typeof i)for(const d of Object.keys(i)){const h=i[d],m=this.preProcessFilterConditionOnDataContext(e,h,u);if("boolean"==typeof m)return m;let E=h?.parsedSearchTerms;if(void 0===E&&(E=K7(h.searchTerms,h.columnDef.type||F.string),void 0!==E&&(h.parsedSearchTerms=E)),!PG_executeFilterConditionTest(m,E))return!1}return!0}parseFormInputFilterConditions(e,a){const u=su(!0,[],e)||[];let i=Array.isArray(u)&&1===u.length?u[0]:"";const r=a.columnDef,o=r.filter?.type??r.type??F.string;let d=null;o!==F.object&&(i=null==i?"":`${i}`,d=!1!==(r.autoParseInputFilterOperator??this._gridOptions.autoParseInputFilterOperator)?i.match(/^([<>!=*]{0,2})(.*[^<>!=*])?([*]?)$/):[i,"",i,""]);let h=d?.[1]||a.operator;const m=d?.[2]||"",E=d?.[3]||("*z"===h?"*":"");return"string"==typeof i&&(i=i.replace("'","''"),"*"===h||"*z"===h?h=re.endsWith:("a*"===h||"*"===E)&&(h=re.startsWith)),Array.isArray(d)&&d.length>=1&&Array.isArray(u)&&1===u.length&&(u[0]=m),{dataKey:r.dataKey,fieldType:o,searchTerms:u||[],operator:h,searchInputLastChar:E,filterSearchType:r.filterSearchType,defaultFilterRangeOperator:this._gridOptions.defaultFilterRangeOperator}}preProcessFilterConditionOnDataContext(e,a,u){const i=a.columnDef,r=a.columnId;let o=u.getColumnIndex(r);if(!i&&this.sharedService&&Array.isArray(this.sharedService.allColumns)&&(o=this.sharedService.allColumns.findIndex(k=>k.field===r)),!i)return!0;if(this._gridOptions.enableRowDetailView){const k=this._gridOptions.rowDetailView&&this._gridOptions.rowDetailView.keyPrefix||"__";e[`${k}isPadding`]&&e[`${k}parent`]&&(e=e[`${k}parent`])}let d=i.filter?.queryField||i.queryFieldFilter||i.queryField||i.field||"";"function"==typeof i.queryFieldNameGetterFn&&(d=i.queryFieldNameGetterFn(e));const h=i.filter?.type??i.type??F.string;let m=e[d];d?.indexOf(".")>=0&&(m=Xu(e,d));const E=a.operator,v=a.searchTerms||[];if(!v||Array.isArray(v)&&(0===v.length||1===v.length&&E===v[0]))return!0;if(v&&Array.isArray(v)&&h!==F.object)for(let k=0,x=v.length;k{x[A[d]]=A,delete x[A[d]].__used}),"object"==typeof a&&Object.keys(a).forEach(A=>{const w=a[A],z=w?.searchTerms?su(!0,[],w.searchTerms):[],L=this.parseFormInputFilterConditions(z,w),M=w.columnDef,j=M?.filter?.type??M?.type??F.string,$=K7(L.searchTerms,j);void 0!==$&&(w.parsedSearchTerms=$)}),e.forEach(A=>{const w=A[o];let z=!0;for(const L of Object.keys(a)){const M=a[L],j=this.preProcessFilterConditionOnDataContext(A,M,this._grid);if(j){const $=M?.parsedSearchTerms,oe="boolean"==typeof j?j:PG_executeFilterConditionTest(j,$);if(oe&&k&&w&&M.columnId===E){C.set(A[d],!0);break}if(oe||!v&&!0===C.get(A[r])){if(w&&M.columnId===E&&C.set(A[d],!0),oe||!v&&M.columnId===E)continue}else w&&!0!==C.get(A[r])&&M.columnId!==E&&C.set(A[d],!1)}z=!1}if(z){f.add(A[d]);let L=x[A[r]]??!1;const M=!m;for(!this._isTreePresetExecuted&&Array.isArray(h)&&h.some(j=>j.itemId===L.id&&j.isCollapsed===M)&&(L[i]=M);L;)L.__used??f.add(L[d]),x[L[d]].__used=!0,L=x[L[r]]??!1}})),this._isTreePresetExecuted=!0,f}getColumnFilters(){return this._columnFilters}getPreviousFilters(){return this._previousFilters}getFiltersMetadata(){return this._filtersMetadata}getCurrentLocalFilters(){const e=[];if(this._columnFilters)for(const a of Object.keys(this._columnFilters)){const u=this._columnFilters[a],i={columnId:a||""},o=this.sharedService.allColumns.find(d=>d.id===i.columnId)?.filter?.emptySearchTermReturnAllValues??!0;u?.searchTerms&&(i.searchTerms=u.searchTerms),u.operator&&(i.operator=u.operator),u.targetSelector&&(i.targetSelector=u.targetSelector),Array.isArray(i.searchTerms)&&i.searchTerms.length>0&&(!o||""!==i.searchTerms[0])&&e.push(i)}return e}emitFilterChanged(e,a=!1){const u=a?"onBeforeFilterChange":"onFilterChanged";if(e===wu.remote&&this._gridOptions.backendServiceApi){let i=[];const r=this._gridOptions.backendServiceApi.service;return r?.getCurrentFilters&&(i=r.getCurrentFilters()),this.pubSubService.publish(u,i)}if(e===wu.local)return this.pubSubService.publish(u,this.getCurrentLocalFilters())}onBackendFilterChange(e,a){var u=this;return Au(function*(){const i=a?.shouldTriggerQuery;if(i&&(yield u.emitFilterChanged(wu.remote,!0)),!a||!a.grid)throw new Error('Something went wrong when trying to bind the "onBackendFilterChange(event, args)" function, it seems that "args" is not populated correctly');const r=u._gridOptions.backendServiceApi;if(!r||!r.process||!r.service)throw new Error('BackendServiceApi requires at least a "process" function and a "service" defined');const o=new Date;if(r.preProcess&&r.preProcess(),i){const d=yield r.service.processOnFilterChanged(e,a),h=u._gridOptions.pagination?.totalItems??0;u.backendUtilities?.executeBackendCallback(r,d,a,o,h,{errorCallback:u.resetToPreviousSearchFilters.bind(u),successCallback:m=>u._previousFilters=u.extractBasicFilterDetails(m.columnFilters),emitActionChangedCallback:u.emitFilterChanged.bind(u),httpCancelRequestSubject:u.httpCancelRequests$})}})()}populateColumnFilterSearchTermPresets(e){return Array.isArray(e)&&(this._columnDefinitions.forEach(a=>{a.filter?.searchTerms&&delete a.filter.searchTerms;const u=e.find(i=>i.columnId===a.id);u&&Array.isArray(u?.searchTerms)&&(a.filter=a.filter||{},a.filter.operator=u.operator||a.filter.operator||"",a.filter.searchTerms=u.searchTerms)}),this._gridOptions.enableTreeData&&this.refreshTreeDataFilters(),this._previousFilters=this.extractBasicFilterDetails(this._columnFilters)),this._columnDefinitions}refreshTreeDataFilters(e){const a=e??this._dataView?.getItems()??[];this._dataView&&this._gridOptions.enableTreeData&&a.length>0?(this._tmpPreFilteredData=this.preFilterTreeData(a,this._columnFilters),this._dataView.refresh()):0===a.length&&Array.isArray(this.sharedService.hierarchicalDataset)&&this.sharedService.hierarchicalDataset.length>0&&setTimeout(()=>this.refreshTreeDataFilters())}disableFilterFunctionality(e=!0,a=!0){const i=!this._gridOptions.enableFiltering;i!==e&&(a&&e&&this.clearFilters(),this.disableAllFilteringCommands(e),this._grid.setOptions({enableFiltering:i},!1,!0),this._grid.setHeaderRowVisibility(i),this._gridOptions.enableFiltering=!e,this.sharedService.gridOptions=this._gridOptions,this._grid.setColumns(this.sharedService.columnDefinitions))}resetToPreviousSearchFilters(){this.updateFilters(this._previousFilters,!1,!1,!1)}toggleFilterFunctionality(e=!0){const a=this._gridOptions.enableFiltering;this.disableFilterFunctionality(a,e)}toggleHeaderFilterRow(){let e=this._gridOptions.showHeaderRow??!1;e=!e,this._grid.setHeaderRowVisibility(e),!0===e&&this._grid.setColumns(this.sharedService.columnDefinitions)}setSortColumnIcons(e){this._grid&&Array.isArray(e)&&this._grid.setSortColumns(e)}updateFilters(e,a=!0,u=!0,i=!1){var r=this;return Au(function*(){if(!r._filtersMetadata||0===r._filtersMetadata.length||!r._gridOptions||!r._gridOptions.enableFiltering)throw new Error('[Slickgrid-Universal] in order to use "updateFilters" method, you need to have Filterable Columns defined in your grid and "enableFiltering" set in your Grid Options');if(Array.isArray(e)){r.clearFilters(!1),e.forEach(h=>{const m=r._filtersMetadata.find(E=>h.columnId===E.columnDef.id);if(h&&m){const E=h.operator||m.defaultOperator;r.updateColumnFilters(h.searchTerms,m.columnDef,E),m.setValues(h.searchTerms||[],E),(i||r._gridOptions.enableTreeData)&&r.callbackSearchEvent(void 0,{columnDef:m.columnDef,operator:E,searchTerms:h.searchTerms,shouldTriggerQuery:!0,forceOnSearchChangeEvent:!0})}});const o=r._gridOptions.backendServiceApi,d=o?wu.remote:wu.local;if(a&&(yield r.emitFilterChanged(d,!0)),r._dataView.refresh(),o){const h=o?.service;h?.updateFilters&&(h.updateFilters(e,!0),u&&r.backendUtilities?.refreshBackendDataset(r._gridOptions))}a&&(yield r.emitFilterChanged(d))}return!0})()}updateSingleFilter(e,a=!0,u=!0){var i=this;return Au(function*(){const r=i.sharedService.allColumns.find(o=>o.id===e.columnId);if(r&&e.columnId){i._columnFilters={};const o=r.filter?.emptySearchTermReturnAllValues??!0;Array.isArray(e.searchTerms)&&(e.searchTerms.length>1||1===e.searchTerms.length&&(!o||""!==e.searchTerms[0]))&&(i._columnFilters[e.columnId]={columnId:e.columnId,operator:e.operator,searchTerms:e.searchTerms,columnDef:r,type:r.type??F.string});const d=i._gridOptions.backendServiceApi,h=d?wu.remote:wu.local;if(a&&(yield i.emitFilterChanged(h,!0)),d){const m=d?.service;m?.updateFilters&&(m.updateFilters(i._columnFilters,!0),u&&i.backendUtilities?.refreshBackendDataset(i._gridOptions))}else i._dataView.setFilterArgs({columnFilters:i._columnFilters,grid:i._grid}),i._gridOptions.enableTreeData&&i.refreshTreeDataFilters(),i._dataView.refresh();a&&(yield i.emitFilterChanged(h))}return!0})()}drawFilterTemplate(e,a){let u;if("string"==typeof a){if(u=document.querySelector(a),null===u)return null}else u=a;const i="string"==typeof e?this.sharedService.allColumns.find(o=>o.id===e):e;if("selector"!==(i?.id??"")&&i?.filterable){let o,d;const h=this.filterFactory.createFilter(i.filter);d=i&&i.filter&&i.filter.operator||h&&h.operator,this._columnFilters[i.id]?(o=this._columnFilters[i.id].searchTerms||void 0,d=this._columnFilters[i.id].operator||void 0):i.filter&&(o=i.filter.searchTerms||void 0,this.updateColumnFilters(o,i,d));const m={grid:this._grid,operator:d,searchTerms:o,columnDef:i,filterContainerElm:u,callback:this.callbackSearchEvent.bind(this)};return h&&(h.init(m),o&&h.setValues&&h.setValues(o,d)),h}return null}addFilterTemplateToHeaderRow(e,a=!0){const u=e.column,i=u?.id??"";if("selector"!==i&&u?.filterable){let r,o;const d=this.filterFactory.createFilter(u.filter);o=u&&u.filter&&u.filter.operator||d&&d.operator,this._columnFilters[u.id]?(r=this._columnFilters[u.id].searchTerms||void 0,o=this._columnFilters[u.id].operator||void 0):u.filter&&(r=u.filter.searchTerms||void 0,this.updateColumnFilters(r,u,o));const h={grid:this._grid,operator:o,searchTerms:r,columnDef:u,filterContainerElm:this._grid.getHeaderRowColumn(i),callback:this.callbackSearchEvent.bind(this)};if(d){d.init(h,a);const m=this._filtersMetadata.findIndex(E=>d.columnDef.id===E.columnDef.id);-1===m?this._filtersMetadata.push(d):this._filtersMetadata[m]=d,r&&d.setValues&&d.setValues(r,o)}}}callbackSearchEvent(e,a){if(a){const u=e?.target?e.target.value:void 0,i=a.searchTerms&&Array.isArray(a.searchTerms)?a.searchTerms:u?[u]:void 0,r=a.columnDef||null,o=r?.id??"",d=r?.filter?.type??r?.type??F.string,h=a.operator||void 0,m=i&&Array.isArray(i),E=m&&i&&i.length,v={...this._columnFilters},k=r.filter?.emptySearchTermReturnAllValues??!0;let x;if(r&&o)if(!m||0===E||1===E&&Array.isArray(i)&&k&&""===i[0])delete this._columnFilters[o];else{const A=`${o}`,w={columnId:A,columnDef:r,parsedSearchTerms:[],type:d,targetSelector:this.getSelectorStringFromElement(e?.target)},z=this.parseFormInputFilterConditions(i,w);w.operator=h||z.operator||x2(d),x=K7(z.searchTerms,d),void 0!==x&&(w.parsedSearchTerms=x),w.searchTerms=z.searchTerms||[],this._columnFilters[A]=w}const f=e&&"function"!=typeof e.isPropagationStopped?su({},new jt,e):e,C=e?.key;if(this._onSearchChange&&(a.forceOnSearchChangeEvent||"Enter"===C||!Js(v,this._columnFilters))){const A={clearFilterTriggered:a.clearFilterTriggered,shouldTriggerQuery:a.shouldTriggerQuery,columnId:o,columnDef:r,columnFilters:this._columnFilters,operator:h||x2(d),searchTerms:i,parsedSearchTerms:x,grid:this._grid,target:e?.target};!1===this.pubSubService.publish("onBeforeSearchChange",A)?this._gridOptions.resetFilterSearchValueAfterOnBeforeCancellation&&this.resetToPreviousSearchFilters():this._onSearchChange.notify(A,f)}}}disableAllFilteringCommands(e=!0){const a=this._grid.getColumns();a.forEach(i=>{i?.header?.menu&&i.header.menu.commandItems?.forEach(r=>{r&&"string"!=typeof r&&"clear-filter"===r.command&&(r.hidden=e)})});const u=this._gridOptions.gridMenu?.commandItems;return u&&u.forEach(i=>{if(i&&"string"!=typeof i){const r=i.command;("clear-filter"===r||"toggle-filter"===r)&&(i.hidden=e)}}),a}extractBasicFilterDetails(e){const a=[];if(e&&"object"==typeof e)for(const u of Object.keys(e)){const{operator:i,searchTerms:r}=e[`${u}`];a.push({columnId:u,operator:i,searchTerms:r})}return a}getSelectorStringFromElement(e){return e?.localName?e?.className?`${e.localName}.${Array.from(e.classList).join(".")}`:e.localName:""}removeAllColumnFiltersProperties(){"object"==typeof this._columnFilters&&Object.keys(this._columnFilters).forEach(e=>{e&&this._columnFilters[e]&&delete this._columnFilters[e]})}subscribeToOnHeaderRowCellRendered(e){this._eventHandler.subscribe(e.onBeforeHeaderRowCellDestroy,(a,u)=>{this._filtersMetadata.find(r=>r.columnDef.id===u.column.id)?.destroy?.()})}updateColumnFilters(e,a,u){const i=a.filter?.type??a.type??F.string,r=K7(e,i);e&&a&&(this._columnFilters[a.id]={columnId:a.id,columnDef:a,searchTerms:e,operator:u,parsedSearchTerms:r,type:i})}}const W7={skipError:!1,triggerEvent:!0},K2={highlightRow:!0,resortGrid:!1,selectRow:!1,scrollRowIntoView:!0,skipError:!1,triggerEvent:!0},JM={highlightRow:!1,selectRow:!1,scrollRowIntoView:!1,skipError:!1,triggerEvent:!0},NG={autoResizeColumns:!0,triggerEvent:!0,hideFromColumnPicker:!1,hideFromGridMenu:!1};class Rde{constructor(e,a,u,i,r,o,d){this.gridStateService=e,this.filterService=a,this.pubSubService=u,this.paginationService=i,this.sharedService=r,this.sortService=o,this.treeDataService=d}get _dataView(){return this._grid?.getData()}get _gridOptions(){return this._grid?.getOptions()??{}}dispose(){this._rowSelectionPlugin?.dispose()}init(e){this._grid=e}clearAllFiltersAndSorts(){this.sortService&&this.sortService.clearSorting&&this.sortService.clearSorting(!1),this.filterService&&this.filterService.clearFilters&&this.filterService.clearFilters()}clearPinning(e=!0){const a=[...this.sharedService.visibleColumns];this.sharedService.slickGrid.setOptions({frozenColumn:-1,frozenRow:-1,frozenBottom:!1,enableMouseWheelScrollHandler:!1}),e&&Array.isArray(a)&&this.sharedService.slickGrid.setColumns(a)}setPinning(e,a=!0,u=!1,i=!0){Ij(e)?this.clearPinning():(this.sharedService.slickGrid.setOptions(e,u,i),this.sharedService.gridOptions={...this.sharedService.gridOptions,...e}),a&&this.sharedService.slickGrid.autosizeColumns()}getAllColumnDefinitions(){return this.sharedService.allColumns}getVisibleColumnDefinitions(){return this.sharedService.visibleColumns}getColumnFromEventArguments(e){if(!(e&&e.grid&&e.grid.getColumns&&e.grid.getDataItem))throw new Error("[Slickgrid-Universal] To get the column definition and data, we need to have these arguments passed as objects (row, cell, grid)");return{row:e.row,cell:e.cell,columnDef:e.grid.getColumns()[e.cell],dataContext:e.grid.getDataItem(e.row),dataView:this._dataView,grid:this._grid}}getDataItemByRowNumber(e){if(!this._grid||"function"!=typeof this._grid.getDataItem)throw new Error('[Slickgrid-Universal] We could not find SlickGrid Grid object or it\'s "getDataItem" method');return this._grid.getDataItem(e)}getDataItemByRowIndex(e){if(!this._grid||"function"!=typeof this._grid.getDataItem)throw new Error('[Slickgrid-Universal] We could not find SlickGrid Grid object and/or "getDataItem" method');return this._grid.getDataItem(e)}getDataItemByRowIndexes(e){if(!this._grid||"function"!=typeof this._grid.getDataItem)throw new Error('[Slickgrid-Universal] We could not find SlickGrid Grid object and/or "getDataItem" method');const a=[];return Array.isArray(e)&&e.forEach(u=>{a.push(this._grid.getDataItem(u))}),a}getSelectedRows(){if(!this._grid||"function"!=typeof this._grid.getSelectedRows)throw new Error('[Slickgrid-Universal] We could not find SlickGrid Grid object and/or "getSelectedRows" method');return this._grid.getSelectedRows()}getSelectedRowsDataItem(){if(!this._grid||"function"!=typeof this._grid.getSelectedRows)throw new Error('[Slickgrid-Universal] We could not find SlickGrid Grid object and/or "getSelectedRows" method');const e=this._grid.getSelectedRows();return this.getDataItemByRowIndexes(e)}hideColumnById(e,a){if(a={...NG,...a},this._grid&&this._grid.getColumns&&this._grid.setColumns){const u=this._grid.getColumns(),i=u.findIndex(r=>r.id===e);if(i>=0){const r=$z(u,i);this.sharedService.visibleColumns=r,this._grid.setColumns(r);const o=this.sharedService.allColumns.findIndex(d=>d.id===e);return o&&(a?.hideFromColumnPicker&&(this.sharedService.allColumns[o].excludeFromColumnPicker=!0),a?.hideFromGridMenu&&(this.sharedService.allColumns[o].excludeFromGridMenu=!0)),a?.autoResizeColumns&&this._grid.autosizeColumns(),a?.triggerEvent&&this.pubSubService.publish("onHeaderMenuHideColumns",{columns:r}),i}}return-1}hideColumnByIds(e,a){if(a={...NG,...a},Array.isArray(e)){for(const u of e)this.hideColumnById(u,{...a,triggerEvent:!1,autoResizeColumns:!1});a?.autoResizeColumns&&this._grid.autosizeColumns(),a?.triggerEvent&&this.pubSubService.publish("onHeaderMenuHideColumns",{columns:this.sharedService.visibleColumns})}}highlightRow(e,a){this._grid.getSelectionModel()||(this._rowSelectionPlugin=new H7(this._gridOptions.rowSelectionOptions),this._grid.setSelectionModel(this._rowSelectionPlugin)),a||=this._gridOptions.rowHighlightDuration,Array.isArray(e)?e.forEach(u=>this._grid.highlightRow(u)):this._grid.highlightRow(e,a)}setSelectedRow(e){this._grid?.setSelectedRows&&this._grid.setSelectedRows([e])}setSelectedRows(e){this._grid?.setSelectedRows&&this._grid.setSelectedRows(e)}renderGrid(){"function"==typeof this._grid?.invalidate&&this._grid.invalidate()}resetGrid(e){if(this.clearPinning(!1),this._grid){const a=this.sharedService.allColumns||[];Array.isArray(a)&&a.length>0&&(this._grid.setColumns(a),this._gridOptions?.enableAutoSizeColumns&&this._grid.autosizeColumns(),this.gridStateService.resetColumns(e))}"function"==typeof this.filterService?.clearFilters&&this.filterService.clearFilters(),"function"==typeof this.sortService?.clearSorting&&this.sortService.clearSorting()}addItem(e,a){const u={...K2,...a};if(!(u?.skipError||this._grid&&this._gridOptions&&this._dataView))throw new Error("[Slickgrid-Universal] We could not find SlickGrid Grid, DataView objects");const i=this._gridOptions.datasetIdPropertyName||"id";if(!(u?.skipError||e&&e.hasOwnProperty(i)))throw new Error(`[Slickgrid-Universal] Adding an item requires the item to include an "${i}" property`);if(this._gridOptions?.enableTreeData&&"top"===a?.position)throw new Error('[Slickgrid-Universal] Please note that `addItem({ position: "top" })` is not supported when used with Tree Data because of the extra complexity.');const r=u?.position;"bottom"===r||this._gridOptions?.enableTreeData?this._dataView.addItem(e):this._dataView.insertItem(0,e);let o=0;const d=e?.[i]??"";return this._gridOptions?.enableTreeData?(this.invalidateHierarchicalDataset(),o=this._dataView.getRowById(d),u.scrollRowIntoView&&this._grid.scrollRowIntoView(o??0,!1)):u.resortGrid?(this._dataView.reSort(),o=this._dataView.getRowById(d)):(o="bottom"===r?this._dataView.getRowById(d):0,u.scrollRowIntoView&&this._grid.scrollRowIntoView(o??0)),u.highlightRow&&void 0!==o&&this.highlightRow(o),void 0!==o&&u.selectRow&&this._gridOptions&&(this._gridOptions.enableCheckboxSelector||this._gridOptions.enableRowSelection)&&this.setSelectedRow(o),u.triggerEvent&&this.pubSubService.publish("onItemAdded",e),!this._gridOptions?.backendServiceApi&&this._gridOptions.enablePagination&&("bottom"===r?this.paginationService.goToLastPage():this.paginationService.goToFirstPage()),o}addItems(e,a){const u={...K2,...a},i=this._gridOptions.datasetIdPropertyName||"id",r=u?.position,o=[];if(!Array.isArray(e))return[this.addItem(e,u)||0];if(this._dataView.beginUpdate(!0),"bottom"===r||this._gridOptions?.enableTreeData?this._dataView.addItems(e):this._dataView.insertItems(0,e),this._dataView.endUpdate(),this._gridOptions?.enableTreeData){this.invalidateHierarchicalDataset();const d=e[0]?.[i]??"",h=this._dataView.getRowById(d);u.scrollRowIntoView&&this._grid.scrollRowIntoView(h??0,!1)}else u.resortGrid&&this._dataView.reSort();return r&&u.scrollRowIntoView&&!this._gridOptions?.enableTreeData&&("bottom"===r?this._grid.navigateBottom():this._grid.navigateTop()),e.forEach(d=>o.push(this._dataView.getRowById(d[i]))),u.highlightRow&&this.highlightRow(o),u.selectRow&&this._gridOptions&&(this._gridOptions.enableCheckboxSelector||this._gridOptions.enableRowSelection)&&this.setSelectedRows(o),u.triggerEvent&&this.pubSubService.publish("onItemAdded",e),o}deleteItem(e,a){a={...W7,...a};const u=this._gridOptions.datasetIdPropertyName||"id";if(!(a?.skipError||e&&e.hasOwnProperty(u)))throw new Error(`[Slickgrid-Universal] Deleting an item requires the item to include an "${u}" property`);return this.deleteItemById(e[u],a)}deleteItems(e,a){a={...W7,...a};const u=this._gridOptions.datasetIdPropertyName||"id";if(!Array.isArray(e))return this.deleteItem(e,a),[e[u]];this._dataView.beginUpdate(!0);const i=[];return e.forEach(r=>{void 0!==r?.[u]&&i.push(r[u])}),this._dataView.deleteItems(i),this._dataView.endUpdate(),a.triggerEvent&&this.pubSubService.publish("onItemDeleted",e),i}deleteItemById(e,a){if(a={...W7,...a},!a?.skipError&&null==e)throw new Error('[Slickgrid-Universal] Cannot delete a row without a valid "id"');return!(this.gridStateService&&this.gridStateService.needToPreserveRowSelection())&&this._grid&&this._gridOptions&&(this._gridOptions.enableCheckboxSelector||this._gridOptions.enableRowSelection)&&this.setSelectedRows([]),this._dataView.deleteItem(e),a.triggerEvent&&this.pubSubService.publish("onItemDeleted",e),e}deleteItemByIds(e,a){if(a={...W7,...a},Array.isArray(e)){this._dataView.beginUpdate(!0);for(let u=0;u{const d=o&&o.hasOwnProperty(u)?o[u]:void 0;if(r.push(d),void 0!==this._dataView.getIdxById(d)){const h=this._dataView.getRowById(d);void 0!==h&&(i.push(h),this._grid.updateRow(h))}}),this._dataView.updateItems(r,e),this._dataView.endUpdate(),this._gridOptions?.enableTreeData&&this.invalidateHierarchicalDataset(),a.highlightRow&&this.highlightRow(i),a.selectRow&&this._gridOptions&&(this._gridOptions.enableCheckboxSelector||this._gridOptions.enableRowSelection)&&this.setSelectedRows(i),a.triggerEvent&&this.pubSubService.publish("onItemUpdated",e),i}updateItemById(e,a,u){if(u={...JM,...u},!u?.skipError&&void 0===e)throw new Error('[Slickgrid-Universal] Cannot update a row without a valid "id"');const i=this._dataView.getRowById(e);if(!u?.skipError&&!a&&!this._gridOptions.enablePagination)throw new Error(`[Slickgrid-Universal] The item to update in the grid was not found with id: ${e}`);return void 0!==this._dataView.getIdxById(e)&&(this._dataView.updateItem(e,a),void 0!==i&&this._grid.updateRow(i),this._gridOptions?.enableTreeData&&this.invalidateHierarchicalDataset(),u.scrollRowIntoView&&void 0!==i&&this._grid.scrollRowIntoView(i),u.highlightRow&&void 0!==i&&this.highlightRow(i),void 0!==i&&u.selectRow&&this._gridOptions&&(this._gridOptions.enableCheckboxSelector||this._gridOptions.enableRowSelection)&&this.setSelectedRow(i),u.triggerEvent&&this.pubSubService.publish("onItemUpdated",a)),i}upsertItem(e,a){a={...K2,...a};const u=this._gridOptions.datasetIdPropertyName||"id",i=e&&e.hasOwnProperty(u)?e[u]:void 0;if(!a?.skipError&&void 0===i)throw new Error(`[Slickgrid-Universal] Calling Upsert of an item requires the item to include an "${u}" property`);return this.upsertItemById(i,e,a)}upsertItems(e,a){if(a={...K2,...a},!Array.isArray(e))return[this.upsertItem(e,a)];this._dataView.beginUpdate(!0);const u=[];e.forEach(r=>{u.push(this.upsertItem(r,{...a,highlightRow:!1,resortGrid:!1,selectRow:!1,triggerEvent:!1}))}),this._dataView.endUpdate();const i=u.map(r=>void 0!==r.added?r.added:r.updated);if(a.highlightRow&&this.highlightRow(i),a.selectRow&&this._gridOptions&&(this._gridOptions.enableCheckboxSelector||this._gridOptions.enableRowSelection)&&this.setSelectedRows(i),a.triggerEvent){this.pubSubService.publish("onItemUpserted",e);const r=u.filter(d=>void 0!==d.added);Array.isArray(r)&&r.length>0&&this.pubSubService.publish("onItemAdded",r);const o=u.filter(d=>void 0!==d.updated);Array.isArray(o)&&o.length>0&&this.pubSubService.publish("onItemUpdated",o)}return u}upsertItemById(e,a,u){let r,o,i=!1;if(u={...K2,...u},!u?.skipError&&void 0===e&&!this.hasRowSelectionEnabled())throw new Error('[Slickgrid-Universal] Calling Upsert of an item requires the item to include a valid and unique "id" property');return void 0===this._dataView.getRowById(e)?(r=this.addItem(a,u),i=!0):(o=this.updateItem(a,{highlightRow:u.highlightRow,selectRow:u.selectRow,triggerEvent:u.triggerEvent}),i=!1),u.triggerEvent&&(this.pubSubService.publish("onItemUpserted",a),i?this.pubSubService.publish("onItemAdded",a):this.pubSubService.publish("onItemUpdated",a)),{added:r,updated:o}}invalidateHierarchicalDataset(e){if(this._gridOptions?.enableTreeData&&this.treeDataService){const a=e??this._dataView.getItems(),u=this.treeDataService.convertFlatParentChildToTreeDatasetAndSort(a||[],this.sharedService.allColumns,this._gridOptions);this.sharedService.hierarchicalDataset=u.hierarchical,this.filterService.refreshTreeDataFilters(e),this._dataView.setItems(u.flat),this._grid.invalidate()}}hasRowSelectionEnabled(){const e=this._grid.getSelectionModel();return(this._gridOptions.enableRowSelection||this._gridOptions.enableCheckboxSelector)&&e}}class Hde{get eventHandler(){return this._eventHandler}constructor(){this._eventHandler=new Ot}dispose(){this._eventHandler.unsubscribeAll()}bindOnBeforeEditCell(e){const a=e?.getData();this._eventHandler.subscribe(e.onBeforeEditCell,(u,i)=>{if(!(u&&i&&e&&void 0!==i.cell&&e.getColumns&&e.getDataItem))return;const r=e.getColumns()[i.cell];if("function"==typeof r.onBeforeEditCell){const o={row:i.row,cell:i.cell,dataView:a,grid:e,columnDef:r,dataContext:e.getDataItem(i.row)};r.onBeforeEditCell(u instanceof jt?u.getNativeEvent():u,o)}})}bindOnCellChange(e){const a=e?.getData();this._eventHandler.subscribe(e.onCellChange,(u,i)=>{if(!(u&&i&&e&&void 0!==i.cell&&e.getColumns&&e.getDataItem))return;const r=e.getColumns()[i.cell];if("function"==typeof r.onCellChange){const o={row:i.row,cell:i.cell,dataView:a,grid:e,columnDef:r,dataContext:e.getDataItem(i.row)};r.onCellChange(u instanceof jt?u.getNativeEvent():u,o)}})}bindOnClick(e){const a=e?.getData();this._eventHandler.subscribe(e.onClick,(u,i)=>{if(!(u&&i&&e&&void 0!==i.cell&&e.getColumns&&e.getDataItem))return;const r=e.getColumns()[i.cell];if("function"==typeof r.onCellClick){const o={row:i.row,cell:i.cell,dataView:a,grid:e,columnDef:r,dataContext:e.getDataItem(i.row)};r.onCellClick(u instanceof jt?u.getNativeEvent():u,o)}})}}class Vde{constructor(e,a,u,i,r,o){this.extensionService=e,this.filterService=a,this.pubSubService=u,this.sharedService=i,this.sortService=r,this.treeDataService=o,this._eventHandler=new Ot,this._columns=[],this._subscriptions=[],this._selectedRowIndexes=[],this._selectedRowDataContextIds=[],this._wasRecheckedAfterPageChange=!0}get _dataView(){return this._grid?.getData()??{}}get _gridOptions(){return this._grid?.getOptions()??{}}get selectedRowDataContextIds(){return this._selectedRowDataContextIds}set selectedRowDataContextIds(e){this._selectedRowDataContextIds=e}init(e){this._grid=e,this.subscribeToAllGridChanges(e)}dispose(){this._columns=[],this._eventHandler.unsubscribeAll(),this.pubSubService.unsubscribeAll(this._subscriptions)}changeColumnsArrangement(e,a=!0,u=!1){if(Array.isArray(e)&&e.length>0){const i=this.getAssociatedGridColumns(this._grid,e);if(i&&Array.isArray(i)&&i.length>0){if(Array.isArray(this.sharedService.allColumns)){const r=[];if(this._gridOptions.enableCheckboxSelector){const o=this._gridOptions?.checkboxSelector?.columnIndexPosition??0;r.push({columnId:"_checkbox_selector",columnIndexPosition:o})}if(this._gridOptions.enableRowDetailView){const o=this._gridOptions?.rowDetailView?.columnIndexPosition??0;r.push({columnId:"_detail_selector",columnIndexPosition:o})}if(this._gridOptions.enableRowMoveManager){const o=this._gridOptions?.rowMoveManager?.columnIndexPosition??0;r.push({columnId:"_move",columnIndexPosition:o})}this.addColumnDynamicWhenFeatureEnabled(r,this.sharedService.allColumns,i)}i.forEach(r=>r.originalWidth=r.width||r.originalWidth),this._grid.setColumns(i),this.sharedService.visibleColumns=i,a?this._grid.autosizeColumns():(u||this._gridOptions.enableAutoResizeColumnsByCellContent&&!this._gridOptions.autosizeColumnsByCellContentOnFirstLoad)&&this.pubSubService.publish("onFullResizeByContentRequested",{caller:"GridStateService"})}}}getCurrentGridState(){const{frozenColumn:e,frozenRow:a,frozenBottom:u}=this.sharedService.gridOptions,i={columns:this.getCurrentColumns(),filters:this.getCurrentFilters(),sorters:this.getCurrentSorters(),pinning:{frozenColumn:e,frozenRow:a,frozenBottom:u}},r=this.getCurrentPagination();if(r&&(i.pagination=r),this.hasRowSelectionEnabled()){const o=this.getCurrentRowSelections();o&&(i.rowSelection=o)}if(this._gridOptions?.enableTreeData){const o=this.getCurrentTreeDataToggleState();o&&(i.treeData=o)}return i}getColumns(){return this._columns}getAssociatedCurrentColumns(e){const a=[];return e&&Array.isArray(e)&&e.forEach(u=>{u?.id&&a.push({columnId:u.id,cssClass:u.cssClass||"",headerCssClass:u.headerCssClass||"",width:u.width||0})}),a}getAssociatedGridColumns(e,a){const u=[],i=this.sharedService.allColumns||e.getColumns();return a&&Array.isArray(a)&&a.forEach(r=>{const o=i.find(d=>d.id===r.columnId);o?.id&&u.push({...o,cssClass:r.cssClass||o.cssClass,headerCssClass:r.headerCssClass||o.headerCssClass,width:r.width})}),this._columns=u,u}getCurrentColumns(){return this.getAssociatedCurrentColumns(this._grid.getColumns()||[])}getCurrentFilters(){if(this._gridOptions?.backendServiceApi){const e=this._gridOptions.backendServiceApi.service;if(e?.getCurrentFilters)return e.getCurrentFilters()}else if(this.filterService?.getCurrentLocalFilters)return this.filterService.getCurrentLocalFilters();return null}getCurrentPagination(){if(this._gridOptions?.enablePagination){if(!this._gridOptions.backendServiceApi)return this.sharedService.currentPagination;{const e=this._gridOptions.backendServiceApi.service;if(e?.getCurrentPagination)return e.getCurrentPagination()}}return null}getCurrentRowSelections(){return this._grid&&this._dataView&&this.hasRowSelectionEnabled()?{gridRowIndexes:this._grid.getSelectedRows()||[],dataContextIds:this._dataView.getAllSelectedIds()||[],filteredDataContextIds:this._dataView.getAllSelectedFilteredIds()||[]}:null}getCurrentSorters(){if(this._gridOptions?.backendServiceApi){const e=this._gridOptions.backendServiceApi.service;if(e?.getCurrentSorters)return e.getCurrentSorters()}else if(this.sortService?.getCurrentLocalSorters)return this.sortService.getCurrentLocalSorters();return null}getCurrentTreeDataToggleState(){return this._gridOptions?.enableTreeData&&this.treeDataService?this.treeDataService.getCurrentToggleState():null}needToPreserveRowSelection(){let e=!1;if(this._gridOptions?.dataView&&this._gridOptions.dataView.hasOwnProperty("syncGridSelection")){const a=this._gridOptions.dataView.syncGridSelection;"boolean"==typeof a?e=this._gridOptions.dataView.syncGridSelection:"object"==typeof a&&(e=a.preserveHidden||a.preserveHiddenOnSelectionChange),e&&this._gridOptions.backendServiceApi&&this._gridOptions.dataView.hasOwnProperty("syncGridSelectionWithBackendService")&&(e=this._gridOptions.dataView.syncGridSelectionWithBackendService)}return e}resetColumns(e){const a=e||this._columns,u=this.getAssociatedCurrentColumns(a);this.pubSubService.publish("onGridStateChanged",{change:{newValues:u,type:kr.columns},gridState:this.getCurrentGridState()})}resetToOriginalColumns(e=!0){this._grid.setColumns(this.sharedService.allColumns),this.sharedService.visibleColumns=this.sharedService.allColumns,e&&this._grid.autosizeColumns()}resetRowSelectionWhenRequired(){!this.needToPreserveRowSelection()&&(this._gridOptions.enableRowSelection||this._gridOptions.enableCheckboxSelector)&&this.extensionService?.getExtensionByName?.(oa.rowSelection)?.instance&&this._grid.setSelectedRows([])}subscribeToAllGridChanges(e){this._subscriptions.push(this.pubSubService.subscribe("onFilterChanged",a=>{this.resetRowSelectionWhenRequired(),this.pubSubService.publish("onGridStateChanged",{change:{newValues:a,type:kr.filter},gridState:this.getCurrentGridState()})})),this._subscriptions.push(this.pubSubService.subscribe("onFilterCleared",()=>{this.resetRowSelectionWhenRequired(),this.pubSubService.publish("onGridStateChanged",{change:{newValues:[],type:kr.filter},gridState:this.getCurrentGridState()})})),this._subscriptions.push(this.pubSubService.subscribe("onSortChanged",a=>{this.resetRowSelectionWhenRequired(),this.pubSubService.publish("onGridStateChanged",{change:{newValues:a,type:kr.sorter},gridState:this.getCurrentGridState()})})),this._subscriptions.push(this.pubSubService.subscribe("onSortCleared",()=>{this.resetRowSelectionWhenRequired(),this.pubSubService.publish("onGridStateChanged",{change:{newValues:[],type:kr.sorter},gridState:this.getCurrentGridState()})})),this.bindExtensionAddonEventToGridStateChange(oa.columnPicker,"onColumnsChanged"),this.bindExtensionAddonEventToGridStateChange(oa.gridMenu,"onColumnsChanged"),this.bindSlickGridColumnChangeEventToGridStateChange("onColumnsReordered",e),this.bindSlickGridColumnChangeEventToGridStateChange("onColumnsResized",e),this.bindSlickGridOnSetOptionsEventToGridStateChange(e),(this._gridOptions.enableRowSelection||this._gridOptions.enableCheckboxSelector)&&this._eventHandler.subscribe(this._dataView.onSelectedRowIdsChanged,(a,u)=>{const i=(this._selectedRowIndexes||[]).slice(),r=(this.selectedRowDataContextIds||[]).slice();if(this.selectedRowDataContextIds=u.filteredIds,this._selectedRowIndexes=u.rows,!Js(this.selectedRowDataContextIds,r)||!Js(this._selectedRowIndexes,i)){const o={gridRowIndexes:this._selectedRowIndexes||[],dataContextIds:u.selectedRowIds,filteredDataContextIds:u.filteredIds};this.pubSubService.publish("onGridStateChanged",{change:{newValues:o,type:kr.rowSelection},gridState:this.getCurrentGridState()})}}),this._subscriptions.push(this.pubSubService.subscribe("onHeaderMenuHideColumns",a=>{const u=this.getAssociatedCurrentColumns(a);this.pubSubService.publish("onGridStateChanged",{change:{newValues:u,type:kr.columns},gridState:this.getCurrentGridState()})})),this._subscriptions.push(this.pubSubService.subscribe("onTreeItemToggled",a=>{this.pubSubService.publish("onGridStateChanged",{change:{newValues:a,type:kr.treeData},gridState:this.getCurrentGridState()})})),this._subscriptions.push(this.pubSubService.subscribe("onTreeFullToggleEnd",a=>{this.pubSubService.publish("onGridStateChanged",{change:{newValues:a,type:kr.treeData},gridState:this.getCurrentGridState()})}))}addColumnDynamicWhenFeatureEnabled(e,a,u){e.sort((i,r)=>i.columnIndexPosition-r.columnIndexPosition),e.forEach(i=>{const r=a.findIndex(d=>d.id===i.columnId),o=u.findIndex(d=>d.id===i.columnId);if(r>=0&&-1===o){const d=a[r];0===r?u.unshift(d):u.splice(r,0,d)}})}bindExtensionAddonEventToGridStateChange(e,a){const i=this.extensionService?.getExtensionByName?.(e)?.instance?.[a];i&&"function"==typeof i.subscribe&&this._eventHandler.subscribe(i,(r,o)=>{const d=o?.columns,h=this.getAssociatedCurrentColumns(d);this.pubSubService.publish("onGridStateChanged",{change:{newValues:h,type:kr.columns},gridState:this.getCurrentGridState()})})}bindSlickGridColumnChangeEventToGridStateChange(e,a){const u=a?.[e];u&&"function"==typeof u.subscribe&&this._eventHandler.subscribe(u,()=>{const i=a.getColumns(),r=this.getAssociatedCurrentColumns(i);this.pubSubService.publish("onGridStateChanged",{change:{newValues:r,type:kr.columns},gridState:this.getCurrentGridState()})})}bindSlickGridOnSetOptionsEventToGridStateChange(e){const a=e.onSetOptions;this._eventHandler.subscribe(a,(u,i)=>{const{frozenBottom:r,frozenColumn:o,frozenRow:d}=i.optionsBefore,{frozenBottom:h,frozenColumn:m,frozenRow:E}=i.optionsAfter;if(r!==h||o!==m||d!==E){const v={frozenBottom:h,frozenColumn:m,frozenRow:E},k=this.getCurrentGridState();this.pubSubService.publish("onGridStateChanged",{change:{newValues:v,type:kr.pinning},gridState:k})}})}hasRowSelectionEnabled(){const e=this._grid.getSelectionModel();return(this._gridOptions.enableRowSelection||this._gridOptions.enableCheckboxSelector)&&e}}class jde{constructor(e,a){this.extensionUtility=e,this.pubSubService=a,this._subscriptions=[],this._eventHandler=new Ot}get _dataView(){return this._grid?.getData()??{}}get eventHandler(){return this._eventHandler}get _gridOptions(){return this._grid?.getOptions()??{}}get _columnDefinitions(){return this._grid?.getColumns()??[]}init(e){if(this._grid=e,e&&this._gridOptions&&this._gridOptions.createPreHeaderPanel){this._gridOptions.enableTranslate&&this.translateGroupingAndColSpan(),this._eventHandler.subscribe(e.onSort,()=>this.renderPreHeaderRowGroupingTitles()),this._eventHandler.subscribe(e.onRendered,()=>this.renderPreHeaderRowGroupingTitles()),this._eventHandler.subscribe(e.onAutosizeColumns,()=>this.renderPreHeaderRowGroupingTitles()),this._eventHandler.subscribe(e.onColumnsResized,()=>this.renderPreHeaderRowGroupingTitles()),this._eventHandler.subscribe(e.onColumnsReordered,()=>this.renderPreHeaderRowGroupingTitles()),this._eventHandler.subscribe(this._dataView.onRowCountChanged,()=>this.delayRenderPreHeaderRowGroupingTitles(0)),this._subscriptions.push(this.pubSubService.subscribe("onColumnPickerColumnsChanged",()=>this.renderPreHeaderRowGroupingTitles()),this.pubSubService.subscribe("onHeaderMenuHideColumns",()=>this.delayRenderPreHeaderRowGroupingTitles(0)),this.pubSubService.subscribe("onGridMenuColumnsChanged",()=>this.renderPreHeaderRowGroupingTitles()),this.pubSubService.subscribe("onGridMenuMenuClose",()=>this.renderPreHeaderRowGroupingTitles()));const a=e.getPluginByName("Resizer");a?.onGridAfterResize&&this._eventHandler.subscribe(a.onGridAfterResize,()=>this.renderPreHeaderRowGroupingTitles()),this._eventHandler.subscribe(e.onSetOptions,(u,i)=>{i?.optionsBefore?.frozenColumn!==i?.optionsAfter?.frozenColumn&&this.delayRenderPreHeaderRowGroupingTitles(0)}),this.delayRenderPreHeaderRowGroupingTitles(75)}}dispose(){this._eventHandler.unsubscribeAll(),this.pubSubService.unsubscribeAll(this._subscriptions)}delayRenderPreHeaderRowGroupingTitles(e=0){setTimeout(()=>this.renderPreHeaderRowGroupingTitles(),e)}renderPreHeaderRowGroupingTitles(){if(this._gridOptions&&void 0!==this._gridOptions.frozenColumn&&this._gridOptions.frozenColumn>=0){let e=this._grid.getPreHeaderPanelLeft();this.renderHeaderGroups(e,0,this._gridOptions.frozenColumn+1),e=this._grid.getPreHeaderPanelRight(),this.renderHeaderGroups(e,this._gridOptions?.frozenColumn+1,this._columnDefinitions.length)}else{const e=this._grid.getPreHeaderPanel();this.renderHeaderGroups(e,0,this._columnDefinitions.length)}}renderHeaderGroups(e,a,u){Ct(e),e.className="slick-header-columns",e.style.left="-1000px",e.style.width=`${this._grid.getHeadersWidth()}px`,e.parentElement&&e.parentElement.classList.add("slick-header");const i=this._grid.getHeaderColumnWidthDiff();let r,o=null,d="",h=0;const m=this._gridOptions?.frozenHeaderWidthCalcDifferential??0,E=void 0!==this._gridOptions?.frozenColumn&&this._gridOptions.frozenColumn>=0;for(let v=a;v0?(h+=r.width||0,o?.style&&(o.style.width=h-i-m+"px")):(h=r.width||0,o=T("div",{className:"slick-state-default slick-header-column "+(E?"frozen":""),style:{width:h-i+"px"}}),T("span",{className:"slick-column-name",textContent:r.columnGroup||""},o),e.appendChild(o)),d=r.columnGroup||"")}translateGroupingAndColSpan(){const e=this._grid.getColumns();this.extensionUtility.translateItems(e,"columnGroupKey","columnGroup"),this._grid.setColumns(e),this.renderPreHeaderRowGroupingTitles()}}class Ode{constructor(e,a,u,i){this.pubSubService=e,this.sharedService=a,this.backendUtilities=u,this.rxjs=i,this._eventHandler=new Ot,this._initialized=!1,this._isLocalGrid=!0,this._dataFrom=1,this._dataTo=1,this._itemsPerPage=0,this._pageCount=1,this._pageNumber=1,this._totalItems=0,this._availablePageSizes=[],this._subscriptions=[],this._isCursorBased=!1}get dataView(){return this.grid?.getData()??{}}set paginationOptions(e){this._paginationOptions=e}get paginationOptions(){return this._paginationOptions}get availablePageSizes(){return this._availablePageSizes}get dataFrom(){return this._dataFrom}get dataTo(){return this._dataTo}get itemsPerPage(){return this._itemsPerPage}get pageCount(){return this._pageCount}get pageNumber(){return this._pageNumber}get totalItems(){return this._totalItems}set totalItems(e){this._totalItems=e,this._initialized&&this.refreshPagination()}get isCursorBased(){return this._isCursorBased}addRxJsResource(e){this.rxjs=e}init(e,a,u){if(this._availablePageSizes=a.pageSizes,this.grid=e,this._backendServiceApi=u,this._paginationOptions=a,this._isLocalGrid=!u,this._pageNumber=a.pageNumber||1,this._isCursorBased=u?.options?.useCursor??!1,u&&(!u.service||!u.process))throw new Error('BackendServiceApi requires the following 2 properties "process" and "service" to be defined.');this._isLocalGrid&&this.dataView&&(this._eventHandler.subscribe(this.dataView.onPagingInfoChanged,(r,o)=>{this._totalItems!==o.totalRows&&(this.updateTotalItems(o.totalRows),this._previousPagination={pageNumber:o.pageNum,pageSize:o.pageSize,pageSizes:this.availablePageSizes,totalItems:o.totalRows})}),setTimeout(()=>{this.dataView&&(this.dataView.setRefreshHints({isFilterUnchanged:!0}),this.dataView.setPagingOptions({pageSize:this.paginationOptions.pageSize,pageNum:this._pageNumber-1}))})),this._subscriptions.push(this.pubSubService.subscribe("onFilterChanged",()=>this.resetPagination())),this._subscriptions.push(this.pubSubService.subscribe("onFilterCleared",()=>this.resetPagination())),this.dataView&&(this._subscriptions.push(this.pubSubService.subscribe("onItemAdded",r=>this.processOnItemAddedOrRemoved(r,!0))),this._subscriptions.push(this.pubSubService.subscribe("onItemDeleted",r=>this.processOnItemAddedOrRemoved(r,!1)))),this.refreshPagination(!1,!1,!0);const i=this.getFullPagination();this._previousPagination={pageNumber:i.pageNumber,pageSize:i.pageSize,pageSizes:i.pageSizes,totalItems:this.totalItems},this._initialized=!0}dispose(){this._initialized=!1,this._eventHandler.unsubscribeAll(),this.pubSubService.unsubscribeAll(this._subscriptions)}getCurrentPagination(){return{pageNumber:this._pageNumber,pageSize:this._itemsPerPage,pageSizes:this._availablePageSizes}}getFullPagination(){return{pageCount:this._pageCount,pageNumber:this._pageNumber,pageSize:this._itemsPerPage,pageSizes:this._availablePageSizes,totalItems:this._totalItems,dataFrom:this._dataFrom,dataTo:this._dataTo}}getCurrentPageNumber(){return this._pageNumber}getCurrentItemPerPage(){return this._itemsPerPage}changeItemPerPage(e,a,u=!0){return this._pageNumber=1,this._pageCount=Math.ceil(this._totalItems/e),this._itemsPerPage=e,u?this.processOnPageChanged(this._pageNumber,a):Promise.resolve(this.getFullPagination())}goToFirstPage(e,a=!0){return this._pageNumber=1,a?this.isCursorBased&&this._cursorPageInfo?this.processOnPageChanged(this._pageNumber,e,{newPage:this._pageNumber,pageSize:this._itemsPerPage,first:this._itemsPerPage}):this.processOnPageChanged(this._pageNumber,e):Promise.resolve(this.getFullPagination())}goToLastPage(e,a=!0){return this._pageNumber=this._pageCount||1,a?this.isCursorBased&&this._cursorPageInfo?this.processOnPageChanged(this._pageNumber,e,{newPage:this._pageNumber,pageSize:this._itemsPerPage,last:this._itemsPerPage}):this.processOnPageChanged(this._pageNumber,e):Promise.resolve(this.getFullPagination())}goToNextPage(e,a=!0){return this._pageNumberthis._pageCount?this._pageNumber=this._pageCount:this._pageNumber=e,this._pageNumber!==i?u?this.processOnPageChanged(this._pageNumber,a):Promise.resolve(this.getFullPagination()):Promise.resolve(!1)}goToPreviousPage(e,a=!0){return this._pageNumber>1?(this._pageNumber--,a?this.isCursorBased&&this._cursorPageInfo?this.processOnPageChanged(this._pageNumber,e,{newPage:this._pageNumber,pageSize:this._itemsPerPage,last:this._itemsPerPage,before:this._cursorPageInfo.startCursor}):this.processOnPageChanged(this._pageNumber,e):Promise.resolve(this.getFullPagination())):Promise.resolve(!1)}refreshPagination(e=!1,a=!0,u=!1){const i={...this.getFullPagination()};if(this._paginationOptions){const o=this._paginationOptions;this._itemsPerPage||(this._isLocalGrid?this._itemsPerPage=o.pageSize:this._itemsPerPage=+(this._backendServiceApi?.options?.paginationOptions?.first?this._backendServiceApi.options.paginationOptions.first:o.pageSize)),(e||this._totalItems!==o.totalItems)&&(e?(this._pageNumber=1,this.paginationOptions.pageNumber=1):!this._initialized&&o.pageNumber&&o.pageNumber>1&&(this._pageNumber=o.pageNumber||1),1===this._pageNumber&&this._backendServiceApi&&this._backendServiceApi.service.resetPaginationOptions()),this._availablePageSizes=o.pageSizes,!this._totalItems&&o.totalItems&&(this._totalItems=o.totalItems),this.recalculateFromToIndexes()}this._pageCount=Math.ceil(this._totalItems/this._itemsPerPage),this.sharedService.currentPagination=this.getCurrentPagination(),this.pubSubService.publish("onPaginationRefreshed",this.getFullPagination()),a&&!Js(i,this.getFullPagination())&&this.pubSubService.publish("onPaginationChanged",this.getFullPagination()),u&&!Js(i,this.getFullPagination())&&this.pubSubService.publish("onPaginationPresetsInitialized",this.getFullPagination());const r=this.getFullPagination();this._previousPagination={pageNumber:r.pageNumber,pageSize:r.pageSize,pageSizes:r.pageSizes,totalItems:this.totalItems}}resetPagination(e=!0){this._isLocalGrid&&this.dataView&&this.sharedService?.gridOptions?.enablePagination&&this.dataView.setPagingOptions({pageSize:this._itemsPerPage,pageNum:0}),this._cursorPageInfo=void 0,this.refreshPagination(!0,e)}togglePaginationVisibility(e){if(this.grid&&this.sharedService?.gridOptions){const a=void 0!==e?e:!this.sharedService.gridOptions.enablePagination;if(a&&this.goToFirstPage(),this._isLocalGrid&&this.dataView){const u=e?this._itemsPerPage:0;this.dataView.setPagingOptions({pageSize:u,pageNum:0})}this.sharedService.gridOptions.enablePagination=a,this.pubSubService.publish("onPaginationVisibilityChanged",{visible:a})}}processOnPageChanged(e,a,u){return console.assert(!this.isCursorBased||u,"Configured for cursor based pagination - cursorArgs expected"),!1===this.pubSubService.publish("onBeforePaginationChange",this.getFullPagination())?(this.resetToPreviousPagination(),Promise.resolve(this.getFullPagination())):new Promise((i,r)=>{if(this.recalculateFromToIndexes(),this._isLocalGrid&&this.dataView)this.dataView.setPagingOptions({pageSize:this._itemsPerPage,pageNum:e-1}),this.pubSubService.publish("onPaginationChanged",this.getFullPagination()),this.pubSubService.publish("onPaginationRefreshed",this.getFullPagination()),i(this.getFullPagination());else{const o=+this._itemsPerPage,d=new Date;if(this._backendServiceApi?.preProcess&&this._backendServiceApi.preProcess(),this._backendServiceApi?.process){const h=this.isCursorBased&&u?this._backendServiceApi.service.processOnPaginationChanged(a,u):this._backendServiceApi.service.processOnPaginationChanged(a,{newPage:e,pageSize:o}),m=this._backendServiceApi.process(h);m instanceof Promise?m.then(E=>{this.backendUtilities?.executeBackendProcessesCallback(d,E,this._backendServiceApi,this._totalItems);const v=this.getFullPagination();this._previousPagination={pageNumber:v.pageNumber,pageSize:v.pageSize,pageSizes:v.pageSizes,totalItems:this.totalItems},i(this.getFullPagination())}).catch(E=>{this.resetToPreviousPagination(),this.backendUtilities?.onBackendError(E,this._backendServiceApi),(!this._backendServiceApi?.onError||!this.backendUtilities?.onBackendError)&&r(m)}):this.rxjs?.isObservable(m)&&this._subscriptions.push(m.subscribe(E=>{const v=this.getFullPagination();this._previousPagination={pageNumber:v.pageNumber,pageSize:v.pageSize,pageSizes:v.pageSizes,totalItems:this.totalItems},i(this.backendUtilities?.executeBackendProcessesCallback(d,E,this._backendServiceApi,this._totalItems))},E=>{this.resetToPreviousPagination(),this.backendUtilities?.onBackendError(E,this._backendServiceApi),(!this._backendServiceApi?.onError||!this.backendUtilities?.onBackendError)&&r(m)})),this.pubSubService.publish("onPaginationRefreshed",this.getFullPagination()),this.pubSubService.publish("onPaginationChanged",this.getFullPagination())}}})}recalculateFromToIndexes(){0===this._totalItems?(this._dataFrom=0,this._dataTo=1,this._pageNumber=0):(this._dataFrom=this._pageNumber>1?this._pageNumber*this._itemsPerPage-this._itemsPerPage+1:1,this._dataTo=this._totalItemsthis._totalItems&&(this._dataTo=this._totalItems)),this._pageNumber=this._totalItems>0&&0===this._pageNumber?1:this._pageNumber,(this._dataTo>this._totalItems||this._totalItemsthis.resizeColumnsByCellContent(!0))),this.gridOptions.enableColumnResizeOnDoubleClick&&(this._subscriptions.push(this.pubSubService.subscribe("onHeaderMenuColumnResizeByContent",i=>{this.handleSingleColumnResizeByContent(i.columnId)})),this._eventHandler.subscribe(this._grid.onColumnsResizeDblClick,(i,r)=>{this.handleSingleColumnResizeByContent(r.triggeredByColumn)}))}bindAutoResizeDataGrid(e){if("container"===this.gridOptions.autoResize?.resizeDetection){if(!this._pageContainerElm||!this._pageContainerElm)throw new Error('\n [Slickgrid-Universal] Resizer Service requires a container when gridOption.autoResize.resizeDetection="container"\n You can fix this by setting your gridOption.autoResize.container');this._resizeObserver||(this._resizeObserver=new ResizeObserver(()=>this.resizeObserverCallback())),this._resizeObserver.observe(this._pageContainerElm)}else{if(void 0===this._gridDomElm||void 0===Du(this._gridDomElm))return null;this.resizeGrid().then(()=>this.resizeGridWhenStylingIsBrokenUntilCorrected()).catch(a=>console.log("Error:",a)),this.resizeGrid(10,e),this._bindingEventService.bind(window,"resize",this.handleResizeGrid.bind(this,e))}}handleResizeGrid(e){this.pubSubService.publish("onGridBeforeResize"),this._resizePaused||(this.resizeGrid(0,e),this.resizeGrid(0,e))}resizeObserverCallback(){this._resizePaused||this.resizeGrid()}calculateGridNewDimensions(e){const a=e?.autoResize??{},u=Du(this._gridDomElm);if(!window||void 0===u)return null;let i=void 0!==a?.bottomPadding?a.bottomPadding:20;if(i&&e.enablePagination&&(i+=35),i&&e.showCustomFooter){const C=this.gridOptions?.customFooterOptions?.footerHeight??25;i+=parseInt(`${C}`,10)}let r=0,o=0;"container"===a.calculateAvailableSizeBy?r=r7(this._pageContainerElm,"height")||0:(r=window.innerHeight||0,o=u?.top??0);const d=r-o-i,h=r7(this._pageContainerElm,"width")||window.innerWidth||0,m=a?.maxHeight,E=a?.minHeight??180,v=a?.maxWidth,k=a?.minWidth??300;let x=d,f=a?.rightPadding?h-a.rightPadding:h;return xm&&(x=m),fv&&(f=v),{height:this._fixedHeight||x,width:this._fixedWidth||f}}getLastResizeDimensions(){return this._lastDimensions}pauseResizer(e){this._resizePaused=e}resizeGrid(e,a){return new Promise(u=>{(e=e||0)>0?(clearTimeout(this._timer),this._timer=setTimeout(()=>u(this.resizeGridCallback(a)),e)):u(this.resizeGridCallback(a))})}resizeGridCallback(e){const a=this.resizeGridWithDimensions(e);return this.pubSubService.publish("onGridAfterResize",a),this.gridOptions.enableAutoResizeColumnsByCellContent&&(!this._lastDimensions?.width||a?.width!==this._lastDimensions?.width)&&this.resizeColumnsByCellContent(!1),this._lastDimensions=a,a}resizeGridWithDimensions(e){const a=this.calculateGridNewDimensions(this.gridOptions);if((e||a)&&this._gridDomElm){const u=e?.height?e.height:a?.height,i=e?.width?e.width:a?.width;this.gridOptions.autoHeight||(this._gridDomElm.style.height=`${u}px`),this._gridDomElm.style.width=`${i}px`,this._gridContainerElm&&(this._gridContainerElm.style.width=`${i}px`),this._grid?.resizeCanvas&&this._gridContainerElm&&this._grid.resizeCanvas(),this._grid&&this.gridOptions?.enableAutoSizeColumns?this.gridUid&&document.querySelector(this.gridUidSelector)&&(!this._lastDimensions||this._lastDimensions.height!==u||this._lastDimensions.width!==i)&&this._grid.autosizeColumns():this.gridOptions.enableAutoResizeColumnsByCellContent&&(!this._lastDimensions?.width||i!==this._lastDimensions?.width)&&this.resizeColumnsByCellContent(!1),this._lastDimensions={height:u||0,width:i||0}}return this._lastDimensions}requestStopOfAutoFixResizeGrid(e=!0){this._isStopResizeIntervalRequested=e}resizeColumnsByCellContent(e=!1){const a=this._grid.getColumns(),u=this.dataView.getItems(),i={};let r=!1,o=0;const d=this._gridContainerElm?.offsetWidth??0;if(!Array.isArray(u)||0===u.length||!e&&this._totalColumnsWidthByContent>0&&this._totalColumnsWidthByContentd?this._grid.reRenderColumns(r):this._grid.autosizeColumns(),this.pubSubService.publish("onAfterResizeByContent",{readItemCount:o,calculateColumnWidths:h})}calculateCellWidthByReadingDataset(e,a,u=1e3,i){const r=Array.isArray(e)?e:[e],o=this.dataView.getItems();let d=0;for(const[h,m]of o.entries()){if(h>u)break;Array.isArray(r)&&"object"==typeof a&&r.forEach((E,v)=>{const k=this.calculateCellWidthByContent(m,E,h,i??v,a[E.id]);void 0!==k&&(a[E.id]=k)}),d=h+1}return d}calculateCellWidthByContent(e,a,u,i,r){const o=this.resizeByContentOptions.cellCharWidthInPx??7;if(!a.originalWidth){const d=a?.resizeCharWidthInPx??o,h=O7(a?.formatter,u,i,a,e,this._grid),m=y3(h)?zu(h):"",E=Math.ceil(m.length*d),v=a.resizeMaxWidthThreshold;a&&(void 0===r||E>r)&&(r=void 0!==v&&E>v?v:void 0!==a.maxWidth&&E>a.maxWidth?a.maxWidth:E)}return r}applyNewCalculatedColumnWidthByReference(e,a){const u=this.resizeByContentOptions.cellPaddingWidthInPx??6,i=this.resizeByContentOptions.formatterPaddingWidthInPx??6,r=e?.filter?.type??e?.type??F.string;let o=a;const d=e?.resizeCalcWidthRatio??this.resizeByContentOptions.defaultRatioForStringType??.9;o*="string"===r?d:1,o+=u,e.resizeExtraWidthPadding&&(o+=e.resizeExtraWidthPadding),e.editor&&this.gridOptions.editable&&(o+=i),void 0!==e.maxWidth&&o>e.maxWidth&&(o=e.maxWidth),void 0!==e.resizeMaxWidthThreshold&&o>e.resizeMaxWidthThreshold&&(o=e.resizeMaxWidthThreshold),o=Math.ceil(o),(void 0===e.originalWidth||!0===e.resizeAlwaysRecalculateWidth||!0===this.resizeByContentOptions.alwaysRecalculateColumnWidth)&&(e.width=this.readjustNewColumnWidthWhenOverLimit(e,o))}handleSingleColumnResizeByContent(e){const a=this._grid.getColumns(),u=a.findIndex(i=>i.id===e);if(u>=0){const i=a[u],r={[e]:i.originalWidth??i.minWidth??0};i.originalWidth=void 0,this.calculateCellWidthByReadingDataset(i,r,this.resizeByContentOptions.maxItemToInspectSingleColumnWidthByContent,u),this.applyNewCalculatedColumnWidthByReference(i,r[e]),this._grid.reRenderColumns(i?.rerenderOnResize??!1)}}readjustNewColumnWidthWhenOverLimit(e,a){const u=this.gridOptions.frozenColumn??-1,i=this._grid.getColumns().findIndex(o=>o.id===e.id)??0;let r=a;if(u>=0&&i<=u){const o=Array.from(this._grid.getViewports());if(o){const d=o.find(k=>k.classList.contains("slick-viewport-left"))?.clientWidth??0,h=o.find(k=>k.classList.contains("slick-viewport-right"))?.clientWidth??0,m=d+h,E=d-(e.width??0);if(E+a>m){r=d-E+h-(this.resizeByContentOptions.widthToRemoveFromExceededWidthReadjustment??50)}}}return Math.ceil(r)}checkIsGridShown(){return!!document.querySelector(`${this.gridUidSelector}`)?.offsetParent}resizeGridWhenStylingIsBrokenUntilCorrected(){var e=this;const a=this.gridOptions?.autoFixResizeTimeout??18e3,u=this.gridOptions?.autoFixResizeRequiredGoodCount??5,i=this._gridContainerElm.querySelector(`${this.gridUidSelector} .slick-header`),r=this._gridContainerElm.querySelector(`${this.gridUidSelector} .slick-viewport`);let o=0,d=0;if(i&&r&&this.gridOptions.autoFixResizeWhenBrokenStyleDetected){const h=this.dataView.getItemCount(),m=this._grid.getColumns()||[];this._intervalId=setInterval(Au(function*(){const v=Du(i);let k=v?.top??0;e.gridOptions?.enableFiltering&&e.gridOptions.headerRowHeight&&(k+=e.gridOptions.headerRowHeight),e.gridOptions?.createPreHeaderPanel&&e.gridOptions.showPreHeaderPanel&&e.gridOptions.preHeaderPanelHeight&&(k+=e.gridOptions.preHeaderPanelHeight),k+=44;const f=Du(r)?.top??0,C=Du(e._gridContainerElm);let A=0===v?.top||k-f>2||0===C?.left&&0===C?.top;const w=e._grid.getRenderedRange()?.rightPx??0;!A&&h>0&&0===w&&m.length>1&&(A=!0),e._isStopResizeIntervalRequested&&(A=!1,o=a),e.checkIsGridShown()&&(A||0===C?.left||0===C?.top)&&(yield e.resizeGrid(),d<5&&e._grid.updateColumns(),e.checkIsGridShown()&&(A=!1)),e.checkIsGridShown()&&d++,e.checkIsGridShown()&&!A&&(d>=u||o++>=a)&&clearInterval(e._intervalId)}),this.intervalRetryDelay)}}}class qde{constructor(){this._hasColumnsReordered=!1,this._hideHeaderRowAfterPageLoad=!1}get allColumns(){return this._allColumns}set allColumns(e){this._allColumns=e}get columnDefinitions(){return this._grid?.getColumns()??[]}get currentPagination(){return this._currentPagination}set currentPagination(e){this._currentPagination=e}get dataView(){return this._dataView}set dataView(e){this._dataView=e}get frozenVisibleColumnId(){return this._frozenVisibleColumnId}set frozenVisibleColumnId(e){this._frozenVisibleColumnId=e}get hasColumnsReordered(){return this._hasColumnsReordered}set hasColumnsReordered(e){this._hasColumnsReordered=e}get slickGrid(){return this._grid}set slickGrid(e){this._grid=e}get gridContainerElement(){return this._gridContainerElm}set gridContainerElement(e){this._gridContainerElm=e}get gridOptions(){return this._gridOptions||this._grid?.getOptions()||{}}set gridOptions(e){this._gridOptions=e}get groupItemMetadataProvider(){return this._groupItemMetadataProvider}set groupItemMetadataProvider(e){this._groupItemMetadataProvider=e}get hideHeaderRowAfterPageLoad(){return this._hideHeaderRowAfterPageLoad}set hideHeaderRowAfterPageLoad(e){this._hideHeaderRowAfterPageLoad=e}get externalRegisteredResources(){return this._externalRegisteredResources}set externalRegisteredResources(e){this._externalRegisteredResources=e}get visibleColumns(){return this._visibleColumns}set visibleColumns(e){this._visibleColumns=e}get hierarchicalDataset(){return this._hierarchicalDataset}set hierarchicalDataset(e){this._hierarchicalDataset=e}}class Yde{constructor(e,a,u,i){this.sharedService=e,this.pubSubService=a,this.backendUtilities=u,this.rxjs=i,this._currentLocalSorters=[],this._isBackendGrid=!1,this._eventHandler=new Ot,this.rxjs&&(this.httpCancelRequests$=this.rxjs.createSubject())}get eventHandler(){return this._eventHandler}get _gridOptions(){return this._grid?.getOptions()??{}}get _columnDefinitions(){return this._grid?.getColumns()??[]}dispose(){this._eventHandler?.unsubscribeAll&&this._eventHandler.unsubscribeAll(),this.httpCancelRequests$&&this.rxjs?.isObservable(this.httpCancelRequests$)&&(this.httpCancelRequests$.next(),this.httpCancelRequests$.complete())}addRxJsResource(e){this.rxjs=e}bindBackendOnSort(e){this._isBackendGrid=!0,this._grid=e,this._dataView=e?.getData(),this._eventHandler.subscribe(e.onSort,this.onBackendSortChanged.bind(this))}bindLocalOnSort(e){this._isBackendGrid=!1,this._grid=e,this._dataView=e?.getData(),this.processTreeDataInitialSort(),this._eventHandler.subscribe(e.onSort,this.handleLocalOnSort.bind(this))}handleLocalOnSort(e,a){const u=a.multiColumnSort?a.sortCols:new Array({columnId:a.sortCol?.id??"",sortAsc:a.sortAsc,sortCol:a.sortCol});this._currentLocalSorters=[],Array.isArray(u)&&u.forEach(i=>{i.sortCol&&this._currentLocalSorters.push({columnId:i.sortCol.id,direction:i.sortAsc?gi.ASC:gi.DESC})}),this.onLocalSortChanged(this._grid,u),this.emitSortChanged(wu.local)}clearSortByColumnId(e,a){const u=this.getCurrentColumnSorts(),i=this.getCurrentColumnSorts(`${a}`);if(Array.isArray(u)&&Array.isArray(i)&&u.length!==i.length){if(this._gridOptions.backendServiceApi)this.onBackendSortChanged(e,{multiColumnSort:!0,sortCols:i,grid:this._grid});else if(this._dataView)this.onLocalSortChanged(this._grid,i,!0,!0);else{const d=this._gridOptions?.multiColumnSort?i:i[0];this._grid.onSort.notify(d)}const r=i.map(o=>({columnId:o?.sortCol?.id??"",sortAsc:o?.sortAsc,sortCol:o?.sortCol}));this._grid.setSortColumns(r)}Array.isArray(i)&&0===i.length&&this.sortLocalGridByDefaultSortFieldId()}clearSorting(e=!0){if(this._grid&&this._gridOptions&&this._dataView)if(this._grid.setSortColumns([]),e)this._isBackendGrid?this.onBackendSortChanged(void 0,{grid:this._grid,multiColumnSort:!0,sortCols:[],clearSortTriggered:!0}):this._columnDefinitions&&Array.isArray(this._columnDefinitions)&&this._columnDefinitions.length>0&&this.sortLocalGridByDefaultSortFieldId();else if(this._isBackendGrid){const a=this._gridOptions?.backendServiceApi?.service;a?.clearSorters&&a.clearSorters()}this._currentLocalSorters=[],this.pubSubService.publish("onSortCleared",!0)}disableSortFunctionality(e=!0,a=!0){const i=!this._gridOptions.enableSorting;let r;this._gridOptions.enableSorting=i,e?(a&&this.clearSorting(),this._eventHandler.unsubscribeAll(),r=this.disableAllSortingCommands(!0)):(r=this.disableAllSortingCommands(!1),this._eventHandler.subscribe(this._grid.onSort,(o,d)=>this.handleLocalOnSort(o,d))),this._grid.setOptions({enableSorting:this._gridOptions.enableSorting},!1,!0),this.sharedService.gridOptions=this._gridOptions,this._grid.setColumns(r)}toggleSortFunctionality(e=!0){const a=this._gridOptions.enableSorting;this.disableSortFunctionality(a,e)}emitSortChanged(e,a){if(e===wu.remote&&this._gridOptions?.backendServiceApi){let u=[];const i=this._gridOptions.backendServiceApi.service;i?.getCurrentSorters&&(u=i.getCurrentSorters()),this.pubSubService.publish("onSortChanged",u)}else e===wu.local&&(a&&(this._currentLocalSorters=a),this.pubSubService.publish("onSortChanged",this.getCurrentLocalSorters()))}getCurrentLocalSorters(){return this._currentLocalSorters}getCurrentColumnSorts(e){if(this._grid){const a=this._grid.getSortColumns();if(Array.isArray(a))return a.reduce((i,r)=>(r&&(!e||r.columnId!==e)&&i.push({columnId:r.columnId||"",sortCol:this._columnDefinitions[this._grid.getColumnIndex(r.columnId||"")],sortAsc:r.sortAsc}),i),[])}return[]}loadGridSorters(e){this._currentLocalSorters=[];const a=[];return Array.isArray(e)&&((this._gridOptions.multiColumnSort?e:e.slice(0,1)).forEach(i=>{const r=this._columnDefinitions.find(o=>o.id===i.columnId);if(r){if(!r.sortable){let o="[Slickgrid-Universal] Cannot add sort icon to a column that is not sortable, please add `sortable: true` to your column or remove it from your list of columns to sort.";throw this._gridOptions.enableTreeData&&(o+=" Also note that TreeData feature requires the column holding the tree (expand/collapse icons) to be sortable."),new Error(o)}a.push({columnId:r.id,sortAsc:i.direction.toUpperCase()===gi.ASC,sortCol:r}),this._currentLocalSorters.push({columnId:String(r.id),direction:i.direction.toUpperCase()})}}),this.onLocalSortChanged(this._grid,a),this._grid.setSortColumns(a.map(i=>({columnId:i.columnId,sortAsc:i.sortAsc})))),a}processTreeDataInitialSort(){if(this._gridOptions?.enableTreeData&&this._gridOptions.treeDataOptions){const e=this._gridOptions.treeDataOptions,a=this._columnDefinitions.find(u=>u.id===e.columnId);if(a){let u=gi.ASC,i={columnId:e.columnId,sortCol:a,sortAsc:!0};if(e?.initialSort?.columnId){const r=e.initialSort.columnId,o=this._columnDefinitions.find(d=>d.id===r);u=(e.initialSort.direction||gi.ASC).toUpperCase(),i={columnId:r,sortCol:o,sortAsc:u===gi.ASC}}i?.columnId&&this.sharedService?.hierarchicalDataset&&this.updateSorting([{columnId:i.columnId||"",direction:u}])}}}onBackendSortChanged(e,a){if(!a||!a.grid)throw new Error('Something went wrong when trying to bind the "onBackendSortChanged(event, args)" function, it seems that "args" is not populated correctly');const u=a.grid?.getOptions()??{},i=u.backendServiceApi;if(!i||!i.process||!i.service)throw new Error('BackendServiceApi requires at least a "process" function and a "service" defined');const r=new Date;i.preProcess&&i.preProcess();const o=i.service.processOnSortChanged(e,a),d=u?.pagination?.totalItems||0;this.backendUtilities?.executeBackendCallback(i,o,a,r,d,{emitActionChangedCallback:this.emitSortChanged.bind(this),errorCallback:()=>{this._grid.setSortColumns(a.previousSortColumns||[]);const h=a.previousSortColumns?.map(m=>({columnId:m.columnId,sortAsc:m.sortAsc,sortCol:this._columnDefinitions.find(E=>E.id===m.columnId)}));i?.service?.updateSorters?.(h||[])},httpCancelRequestSubject:this.httpCancelRequests$})}onLocalSortChanged(e,a,u=!1,i=!1){var r=this;return Au(function*(){const o=r._gridOptions?.datasetIdPropertyName??"id",d=r._gridOptions?.enableTreeData??!1,h=e.getData();if(yield r.pubSubService.publish("onBeforeSortChange",{sortColumns:a},0),e&&h){if(u&&!d&&h.reSort(),d&&r.sharedService&&Array.isArray(r.sharedService.hierarchicalDataset)){const m=r.sortHierarchicalDataset(r.sharedService.hierarchicalDataset,a);r._dataView.setItems(m.flat,o),r._dataView.onRowCountChanged.notify({previous:r._dataView.getFilteredItemCount(),current:r._dataView.getLength(),itemCount:r._dataView.getItemCount(),dataView:r._dataView,callingOnRowsChanged:!0})}else h.sort(r.sortComparers.bind(r,a));e.invalidate(),i&&r.emitSortChanged(wu.local,a.map(m=>({columnId:m.sortCol?.id??"id",direction:m.sortAsc?gi.ASC:gi.DESC})))}})()}sortHierarchicalDataset(e,a,u=!1){this.sortTreeData(e,a);const i=this._gridOptions?.datasetIdPropertyName??"id",r=this._gridOptions?.treeDataOptions??{columnId:""},d=vj(e,{...r,identifierPropName:r.identifierPropName??i,shouldAddTreeLevelNumber:!0});if(u){this._currentLocalSorters=[],a.forEach(m=>{this._currentLocalSorters.push({columnId:m.columnId,direction:m.sortAsc?"ASC":"DESC"})});const h=this._gridOptions?.backendServiceApi?wu.remote:wu.local;this.emitSortChanged(h)}return{hierarchical:e,flat:d}}sortLocalGridByDefaultSortFieldId(){const e=this._gridOptions&&this._gridOptions.defaultColumnSortFieldId||this._gridOptions.datasetIdPropertyName||"id",a={id:e,field:e};this.onLocalSortChanged(this._grid,new Array({columnId:a.id,sortAsc:!0,sortCol:a,clearSortTriggered:!0}),!1,!0)}sortComparers(e,a,u){if(Array.isArray(e))for(const i of e){const r=this.sortComparer(i,a,u);if(void 0!==r)return r}return eu.neutral}sortComparer(e,a,u,i){if(e?.sortCol){const r=e.sortCol,o=e.sortAsc?eu.asc:eu.desc;let d=i||r.queryFieldSorter||r.queryField||r.field,h=d;const m=r.type||F.string;"function"==typeof r.queryFieldNameGetterFn&&(d=r.queryFieldNameGetterFn(a),h=r.queryFieldNameGetterFn(u));let E=a[d],v=u[h];if(d?.indexOf(".")>=0&&(E=Xu(a,d)),h?.indexOf(".")>=0&&(v=Xu(u,h)),r.sortComparer){const k=r.sortComparer(E,v,o,r,this._gridOptions);if(k!==eu.neutral)return k}else{const k=yv(m,E,v,o,r,this._gridOptions);if(k!==eu.neutral)return k}}}sortTreeData(e,a){Array.isArray(a)&&a.forEach(u=>{this.sortTreeChildren(e,u,0)})}sortTreeChildren(e,a,u){const r=this._gridOptions?.treeDataOptions?.childrenPropName??"children";e.sort((o,d)=>this.sortComparer(a,o,d)??eu.neutral),e.forEach(o=>{o&&o.hasOwnProperty(r)&&Array.isArray(o[r])&&(u++,this.sortTreeChildren(o[r],a,u),u--)})}updateSorting(e,a=!0,u=!0){if(!this._gridOptions||!this._gridOptions.enableSorting)throw new Error('[Slickgrid-Universal] in order to use "updateSorting" method, you need to have Sortable Columns defined in your grid and "enableSorting" set in your Grid Options');if(Array.isArray(e)){const i=this._gridOptions?.backendServiceApi;if(i){const r=i?.service;r?.updateSorters&&(r.updateSorters(void 0,e),u&&this.backendUtilities?.refreshBackendDataset(this._gridOptions))}else this.loadGridSorters(e);if(a){const r=i?wu.remote:wu.local;this.emitSortChanged(r)}}}disableAllSortingCommands(e=!0){const a=this._grid.getColumns();a.forEach(i=>{void 0!==i.sortable&&(i.sortable=!e),i?.header?.menu&&i.header.menu.commandItems?.forEach(r=>{if(r&&"string"!=typeof r){const o=r.command;("sort-asc"===o||"sort-desc"===o||"clear-sort"===o)&&(r.hidden=e)}})});const u=this._gridOptions?.gridMenu?.commandItems;return u&&u.forEach(i=>{i&&"string"!=typeof i&&"clear-sorting"===i.command&&(i.hidden=e)}),a}}class Qde{constructor(e,a,u){this.pubSubService=e,this.sharedService=a,this.sortService=u,this._currentToggledItems=[],this._isLastFullToggleCollapsed=!1,this._isOneCpuCyclePassed=!1,this._isTreeDataEnabled=!1,this._subscriptions=[],this._treeDataRecalcHandler=null,this._eventHandler=new Ot,setTimeout(()=>this._isOneCpuCyclePassed=!0)}set currentToggledItems(e){this._currentToggledItems=e}get dataset(){return this.dataView?.getItems()}get datasetHierarchical(){return this.sharedService.hierarchicalDataset}get dataView(){return this._grid?.getData()}get eventHandler(){return this._eventHandler}get gridOptions(){return this._grid?.getOptions()??{}}get treeDataOptions(){return this.gridOptions.treeDataOptions}dispose(){this._eventHandler.unsubscribeAll(),this.pubSubService.unsubscribeAll(this._subscriptions)}init(e){if(this._grid=e,this._isTreeDataEnabled=this.gridOptions?.enableTreeData??!1,this._isLastFullToggleCollapsed=this.treeDataOptions?.initiallyCollapsed??!1,this._currentToggledItems=this.gridOptions.presets?.treeData?.toggledItems??[],this._lastToggleStateChange={type:this._isLastFullToggleCollapsed?"full-collapse":"full-expand",previousFullToggleType:this._isLastFullToggleCollapsed?"full-collapse":"full-expand",toggledItems:this._currentToggledItems},this._isTreeDataEnabled){if(this.gridOptions?.multiColumnSort)throw new Error('[Slickgrid-Universal] It looks like you are trying to use Tree Data with multi-column sorting, unfortunately it is not supported because of its complexity, you can disable it via "multiColumnSort: false" grid option and/or help in providing support for this feature.');if(!this.gridOptions?.enableFiltering)throw new Error('[Slickgrid-Universal] It looks like you are trying to use Tree Data without using the filtering option, unfortunately that is not possible with Tree Data since it relies heavily on the filters to expand/collapse the tree. You need to enable it via "enableFiltering: true"');if(this.gridOptions?.backendServiceApi||this.gridOptions?.enablePagination)throw new Error("[Slickgrid-Universal] It looks like you are trying to use Tree Data with Pagination and/or a Backend Service (OData, GraphQL) but unfortunately that is simply not supported because of its complexity.");if(!this.gridOptions.treeDataOptions||!this.gridOptions.treeDataOptions.columnId)throw new Error('[Slickgrid-Universal] When enabling tree data, you must also provide the "treeDataOption" property in your Grid Options with "childrenPropName" or "parentPropName" (depending if your array is hierarchical or flat) for the Tree Data to work properly.')}this._eventHandler.subscribe(e.onClick,this.handleOnCellClick.bind(this)),this._subscriptions.push(this.pubSubService.subscribe("onGridMenuClearAllSorting",this.clearSorting.bind(this))),this._treeDataRecalcHandler=this.setAutoRecalcTotalsCallbackWhenFeatEnabled(this.gridOptions),this._eventHandler.subscribe(this.dataView.onRowCountChanged,()=>{"function"==typeof this._treeDataRecalcHandler&&this._isOneCpuCyclePassed&&(clearTimeout(this._timer),this._timer=setTimeout(()=>this._treeDataRecalcHandler?.(),this.treeDataOptions?.autoRecalcTotalsDebounce??0))})}applyToggledItemStateChanges(e,a,u=!0,i=!1){if(Array.isArray(e)){const r=this.getTreeDataOptionPropName("collapsedPropName"),o=this.getTreeDataOptionPropName("hasChildrenPropName");this.dataView.beginUpdate(!0);const h="full-collapse"===(a??this._lastToggleStateChange.previousFullToggleType);a&&(this._lastToggleStateChange.previousFullToggleType=a),u&&(this.dataView.getItems()||[]).forEach(m=>{m[o]&&(m[r]=h)}),this.dynamicallyToggleItemState(e,i)}}dynamicallyToggleItemState(e,a=!0){Array.isArray(e)&&(this.dataView.beginUpdate(!0),e.forEach(u=>{const i=this.dataView.getItemById(u.itemId);if(this.updateToggledItem(i,u.isCollapsed),a){const r=this._currentToggledItems.findIndex(o=>o.itemId===u.itemId);r>=0?this._currentToggledItems[r].isCollapsed=u.isCollapsed:this._currentToggledItems.push({itemId:u.itemId,isCollapsed:u.isCollapsed}),this.pubSubService.publish("onTreeItemToggled",{...this._lastToggleStateChange,fromItemId:u.itemId,toggledItems:this._currentToggledItems,type:u.isCollapsed?zh.toggleCollapse:zh.toggleExpand})}}),this.dataView.endUpdate(),this.dataView.refresh())}getCurrentToggleState(){return this._lastToggleStateChange}getInitialSort(e,a){const u=a?.treeDataOptions,i=u?.initialSort??{columnId:u?.columnId??"",direction:"ASC"},r=e.find(o=>o.id===i.columnId);return{columnId:i.columnId,sortAsc:"DESC"!==i?.direction?.toUpperCase(),sortCol:r}}getItemCount(e){if(void 0!==e){const a=this.getTreeDataOptionPropName("levelPropName");return this.dataView.getItems().filter(u=>u[a]===e).length}return this.dataView.getItemCount()}getToggledItems(){return this._currentToggledItems}getTreeDataOptionPropName(e){let a="";switch(e){case"childrenPropName":a=this.treeDataOptions?.childrenPropName??ae.treeDataProperties.CHILDREN_PROP;break;case"collapsedPropName":a=this.treeDataOptions?.collapsedPropName??ae.treeDataProperties.COLLAPSED_PROP;break;case"hasChildrenPropName":a=this.treeDataOptions?.hasChildrenPropName??ae.treeDataProperties.HAS_CHILDREN_PROP;break;case"identifierPropName":a=this.treeDataOptions?.identifierPropName??this.gridOptions?.datasetIdPropertyName??"id";break;case"levelPropName":a=this.treeDataOptions?.levelPropName??ae.treeDataProperties.TREE_LEVEL_PROP;break;case"parentPropName":a=this.treeDataOptions?.parentPropName??ae.treeDataProperties.PARENT_PROP}return a}clearSorting(){const e=this.getInitialSort(this.sharedService.columnDefinitions,this.sharedService.gridOptions);this.sortService.loadGridSorters([{columnId:e.columnId,direction:e.sortAsc?"ASC":"DESC"}])}convertFlatParentChildToTreeDatasetAndSort(e,a,u){const i=this.convertFlatParentChildToTreeDataset(e,u),r=this.getInitialSort(a,u),o=this.sortService.sortHierarchicalDataset(i,[r],!0);return this._grid?.setSortColumns([r]),o}convertFlatParentChildToTreeDataset(e,a){const u=a?.datasetIdPropertyName??"id",i=a?.treeDataOptions??{columnId:"id"};return bj(e,{...i,identifierPropName:i.identifierPropName??u,initiallyCollapsed:this._isLastFullToggleCollapsed})}enableAutoRecalcTotalsFeature(e=!0){e&&this._isTreeDataEnabled?this._treeDataRecalcHandler=this.recalculateTreeTotals.bind(this,this.gridOptions):this._treeDataRecalcHandler=null}recalculateTreeTotals(e){const a=e.treeDataOptions,u=a?.childrenPropName??ae.treeDataProperties.CHILDREN_PROP,i=a?.levelPropName??ae.treeDataProperties.TREE_LEVEL_PROP;a?.aggregators&&(a.aggregators.forEach(r=>{v2(this.sharedService.hierarchicalDataset||[],{childrenPropName:u,levelPropName:i,aggregator:r})}),this._grid.invalidate())}sortHierarchicalDataset(e,a){const u=a??this.getInitialSort(this.sharedService.allColumns,this.gridOptions),i=Array.isArray(u)?u:[u];return this.sortService.sortHierarchicalDataset(e,i)}toggleTreeDataCollapse(e,a=!0){var u=this;return Au(function*(){if(u.gridOptions?.enableTreeData){const r=u.getTreeDataOptionPropName("hasChildrenPropName");a&&(yield u.pubSubService.publish("onTreeFullToggleStart",{collapsing:e})),u.dataView.beginUpdate(!0),(u.dataView.getItems()||[]).forEach(o=>{o[r]&&u.updateToggledItem(o,e)}),u.dataView.endUpdate(),u.dataView.refresh(),u._isLastFullToggleCollapsed=e}const i=e?zh.fullCollapse:zh.fullExpand;u._lastToggleStateChange={type:i,previousFullToggleType:i,toggledItems:null},a&&u.pubSubService.publish("onTreeFullToggleEnd",u._lastToggleStateChange)})()}handleOnCellClick(e,a){if(e&&a){const u=e.target||{},i=this.gridOptions.datasetIdPropertyName??"id",r=this.getTreeDataOptionPropName("collapsedPropName"),o=this.getTreeDataOptionPropName("childrenPropName");if("string"==typeof u?.className&&u.className.indexOf("toggle")>=0){const h=this.dataView.getItem(a.row);if(h){h[r]=!h[r];const m=h[r],E=h[i],v=this._currentToggledItems.findIndex(f=>f.itemId===E);v>=0?this._currentToggledItems[v].isCollapsed=m:this._currentToggledItems.push({itemId:E,isCollapsed:m}),this.dataView.updateItem(E,h);const k=f=>f[i]===E,x=Mh(this.sharedService.hierarchicalDataset||[],k,o);x&&(x[r]=m),this._grid.invalidate(),this._lastToggleStateChange={type:m?zh.toggleCollapse:zh.toggleExpand,previousFullToggleType:this._isLastFullToggleCollapsed?"full-collapse":"full-expand",toggledItems:this._currentToggledItems},this.pubSubService.publish("onTreeItemToggled",{...this._lastToggleStateChange,fromItemId:E})}e.stopImmediatePropagation()}}}updateToggledItem(e,a){const u=this.gridOptions?.datasetIdPropertyName??"id",i=this.getTreeDataOptionPropName("childrenPropName"),r=this.getTreeDataOptionPropName("collapsedPropName");if(e){e[r]=a,this.dataView.updateItem(e[u],e);const o=h=>h[u]===e[u],d=Mh(this.sharedService.hierarchicalDataset||[],o,i);d&&(d[r]=a)}}setAutoRecalcTotalsCallbackWhenFeatEnabled(e){return e?.enableTreeData&&e?.treeDataOptions?.autoRecalcTotalsOnFilterChange&&e?.treeDataOptions?.aggregators?this.recalculateTreeTotals.bind(this,e):null}}class Hh{constructor(e){this.translaterService=e,this._debounceTypingDelay=0,this._shouldTriggerQuery=!0,this._inputType="text",this.inputFilterType="single",this.searchTerms=[],this._bindEventService=new wi}get columnFilter(){return this.columnDef?.filter??{}}get defaultOperator(){return re.empty}get inputType(){return this._inputType}set inputType(e){this._inputType=e}get operator(){return this.columnFilter?.operator??this.defaultOperator}set operator(e){this.columnFilter&&(this.columnFilter.operator=e)}get gridOptions(){return this.grid?.getOptions()??{}}init(e){if(!e)throw new Error('[Slickgrid-Universal] A filter must always have an "init()" with valid arguments.');this.grid=e.grid,this.callback=e.callback,this.columnDef=e.columnDef,"compound"===this.inputFilterType&&(this.operator=e.operator||""),this.searchTerms=e?.searchTerms??[],this._cellContainerElm=e.filterContainerElm;const a=this.gridOptions?.backendServiceApi;this._debounceTypingDelay=(a?a?.filterTypingDebounce??this.gridOptions?.defaultBackendServiceFilterTypingDebounce:this.gridOptions?.filterTypingDebounce)??0;const u=Array.isArray(this.searchTerms)&&this.searchTerms.length>=0?this.searchTerms[0]:"";this.createDomFilterElement(u),this._bindEventService.bind(this._filterInputElm,["keyup","blur","change"],this.onTriggerEvent.bind(this)),this._bindEventService.bind(this._filterInputElm,"wheel",this.onTriggerEvent.bind(this),{passive:!0}),"compound"===this.inputFilterType&&this._selectOperatorElm&&this._bindEventService.bind(this._selectOperatorElm,"change",this.onTriggerEvent.bind(this))}clear(e=!0){this._filterInputElm&&(this._shouldTriggerQuery=e,this.searchTerms=[],this._filterInputElm.value="",this._currentValue=void 0,"compound"===this.inputFilterType&&this._selectOperatorElm&&(this._selectOperatorElm.selectedIndex=0,this._filterContainerElm.classList.remove("filled")),this._filterInputElm.classList.remove("filled"),this.onTriggerEvent(void 0,!0))}destroy(){this._bindEventService.unbindAll(),this._selectOperatorElm?.remove?.(),this._filterInputElm?.remove?.()}getValues(){return this._filterInputElm.value}setValues(e,a){const u=Array.isArray(e)?e:[e];let i="";for(const r of u)i="single"===this.inputFilterType?a?this.addOptionalOperatorIntoSearchString(r,a):r:`${r}`,this._filterInputElm.value=`${i??""}`,this._currentValue=this._filterInputElm.value;if(""!==this.getValues()?(this._filterContainerElm.classList.add("filled"),this._filterInputElm.classList.add("filled")):(this._filterContainerElm.classList.remove("filled"),this._filterInputElm.classList.remove("filled")),this.operator=a||this.defaultOperator,a&&this._selectOperatorElm){const r=xv(this.operator);this._selectOperatorElm.value=r}}addOptionalOperatorIntoSearchString(e,a){let u="",i="",r=null==e?"":`${e}`;if(a&&r){switch(a){case"<>":case"!=":case"=":case"==":case">":case">=":case"<":case"<=":u=a;break;case"EndsWith":case"*z":u="*";break;case"StartsWith":case"a*":i="*"}r=`${u}${r}${i}`}return r}getCompoundOperatorOptionValues(){const e=this.columnDef.type&&this.columnDef.type?this.columnDef.type:F.string;let a=[];if(this.columnFilter?.compoundOperatorList)return this.columnFilter.compoundOperatorList;switch(e){case F.string:case F.text:case F.readonly:case F.password:a=function h0e(t,e){const a=[{operator:"",desc:Kl("CONTAINS","TEXT_CONTAINS","Contains",t,e)},{operator:"<>",desc:Kl("NOT_CONTAINS","TEXT_NOT_CONTAINS","Not Contains",t,e)},{operator:"=",desc:Kl("EQUALS","TEXT_EQUALS","Equals",t,e)},{operator:"!=",desc:Kl("NOT_EQUAL_TO","TEXT_NOT_EQUAL_TO","Not equal to",t,e)},{operator:"a*",desc:Kl("STARTS_WITH","TEXT_STARTS_WITH","Starts with",t,e)},{operator:"*z",desc:Kl("ENDS_WITH","TEXT_ENDS_WITH","Ends with",t,e)}];return iO(t,a,"text"),a}(this.gridOptions,this.translaterService);break;default:a=lM(this.gridOptions,this.translaterService)}return a}createDomFilterElement(e){const a=this.columnDef?.id??"";Ct(this._cellContainerElm);let u=this.gridOptions?.defaultFilterPlaceholder??"";this.columnFilter?.placeholder&&(u=this.columnFilter.placeholder);const i=`${e??""}`;if(this._filterInputElm=T("input",{type:this._inputType||"text",autocomplete:"off",ariaAutoComplete:"none",placeholder:u,ariaLabel:this.columnFilter?.ariaLabel??`${Rs(a+"")} Search Filter`,className:`form-control filter-${a}`,value:i,dataset:{columnid:`${a}`}}),e&&this._filterInputElm.classList.add("filled"),void 0!==e&&(this._currentValue=i),"single"===this.inputFilterType)this._filterContainerElm=this._filterInputElm,this._filterInputElm.classList.add("search-filter"),this._cellContainerElm.appendChild(this._filterInputElm),this._cellContainerElm.appendChild(document.createElement("span"));else{this._filterInputElm.classList.add("compound-input"),this._selectOperatorElm=rM(this.getCompoundOperatorOptionValues(),this.grid),this._filterContainerElm=T("div",{className:`form-group search-filter filter-${a}`});const r=T("div",{className:"input-group"},this._filterContainerElm);T("div",{className:"input-group-addon input-group-prepend operator"},r).appendChild(this._selectOperatorElm),r.appendChild(this._filterInputElm),r.appendChild(T("span")),this.operator&&(this._selectOperatorElm.value=xv(this.operator)),this._filterContainerElm&&this._cellContainerElm.appendChild(this._filterContainerElm)}}onTriggerEvent(e,a=!1){if(a)this.callback(e,{columnDef:this.columnDef,clearFilterTriggered:a,shouldTriggerQuery:this._shouldTriggerQuery}),this._filterContainerElm.classList.remove("filled");else{const u=e?.type??"",i=this._selectOperatorElm?.value??this.operator;let r=this._filterInputElm.value;const o=this.gridOptions.enableFilterTrimWhiteSpace||this.columnFilter.enableTrimWhiteSpace;"string"==typeof r&&o&&(r=r.trim()),"select"!==e?.target?.tagName.toLowerCase()&&(this._currentValue=r),""===r?this._filterContainerElm.classList.remove("filled"):this._filterContainerElm.classList.add("filled");const d={columnDef:this.columnDef,operator:i,searchTerms:r?[r]:null,shouldTriggerQuery:this._shouldTriggerQuery},h="keyup"===u&&"Enter"!==e?.key?this._debounceTypingDelay:0,m=this.columnFilter.skipCompoundOperatorFilterWithNullInput??this.gridOptions.skipCompoundOperatorFilterWithNullInput;("single"===this.inputFilterType||!m||void 0!==this._currentValue)&&(h>0?(clearTimeout(this._timer),this._timer=setTimeout(()=>this.callback(e,d),h)):this.callback(e,d))}this._shouldTriggerQuery=!0}}class IG extends Hh{constructor(e){super(e),this.translaterService=e,this.inputType="text",this.inputFilterType="compound"}}const ZM="#86bff8";class $M{constructor(e){this.translaterService=e,this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0,this._sliderTrackFilledColor=ZM,this.sliderType="double",this.searchTerms=[],this._bindEventService=new wi}get columnFilter(){return this.columnDef?.filter??{}}get currentValue(){return this._currentValue}get currentValues(){return this._currentValues}get defaultOperator(){return"compound"===this.sliderType?re.empty:"single"===this.sliderType?re.greaterThanOrEqual:this.gridOptions.defaultFilterRangeOperator||re.rangeInclusive}get filterOptions(){return{...this.gridOptions.defaultFilterOptions?.slider,...this.columnFilter?.filterOptions}}get gridOptions(){return this.grid?.getOptions()??{}}get sliderOptions(){return this._sliderOptions}get operator(){return this._operator||(this.columnFilter.operator??this.defaultOperator)}set operator(e){this._operator=e}init(e){if(!e)throw new Error('[Slickgrid-Universal] A filter must always have an "init()" with valid arguments.');this.grid=e.grid,this.callback=e.callback,this.columnDef=e.columnDef,this.operator=e.operator||"",this.searchTerms=e?.searchTerms??[],this._argFilterContainerElm=e.filterContainerElm,this._sliderTrackFilledColor=window.getComputedStyle(document.documentElement).getPropertyValue("--slick-slider-filter-filled-track-color")||ZM,this._filterElm=this.createDomFilterElement(this.searchTerms)}clear(e=!0){if(this._filterElm){this._clearFilterTriggered=!0,this._shouldTriggerQuery=e,this.searchTerms=[];const a=+(this.filterOptions?.sliderStartValue??ae.SLIDER_DEFAULT_MIN_VALUE),u=+(this.filterOptions?.sliderEndValue??ae.SLIDER_DEFAULT_MAX_VALUE);"double"===this.sliderType?(this._sliderLeftInputElm&&(this._sliderLeftInputElm.value=`${a}`),this._sliderRightInputElm&&(this._sliderRightInputElm.value=`${u}`),this._currentValues=[a,u],this._sliderLeftInputElm?.dispatchEvent(new Event("change")),this._sliderRightInputElm?.dispatchEvent(new Event("change"))):(this._sliderRightInputElm&&(this._sliderRightInputElm.value=`${a}`),this._selectOperatorElm&&(this._selectOperatorElm.selectedIndex=0),this._currentValue=a,this._sliderRightInputElm?.dispatchEvent(new Event("change"))),(this.filterOptions?.hideSliderNumber??this.filterOptions?.hideSliderNumbers)||("double"===this.sliderType?this.renderSliderValues(a,u):this.renderSliderValues(void 0,a)),this._divContainerFilterElm.classList.remove("filled"),this._filterElm.classList.remove("filled"),this.callback(void 0,{columnDef:this.columnDef,clearFilterTriggered:!0,shouldTriggerQuery:e,searchTerms:[]})}}destroy(){this._bindEventService.unbindAll(),this._sliderTrackElm?.remove(),this._sliderLeftInputElm?.remove(),this._sliderRightInputElm?.remove()}renderSliderValues(e,a){this._leftSliderNumberElm?.textContent&&e&&(this._leftSliderNumberElm.textContent=e.toString()),this._rightSliderNumberElm?.textContent&&a&&(this._rightSliderNumberElm.textContent=a.toString())}getValues(){return"double"===this.sliderType?this._currentValues:this._currentValue}setValues(e,a){if(e){let r=[];const o=Array.isArray(e)?e?.[0]:e;if(Array.isArray(e)&&2===e.length?r=e:"string"==typeof o&&o.indexOf("..")>0?(r=o.split(".."),this._currentValue=+(r?.[0]??0)):(l7(o)||""===o)&&(this._currentValue=null===o?void 0:+o,r=[o]),"double"!==this.sliderType&&this._sliderRightInputElm)this._sliderRightInputElm.value="string"==typeof e?e:`${o}`,this.renderSliderValues(void 0,this._sliderRightInputElm.value);else if(Array.isArray(r)&&2===r.length&&!this.filterOptions?.hideSliderNumbers){const[d,h]=r;this._sliderLeftInputElm&&(this._sliderLeftInputElm.value=String(d??ae.SLIDER_DEFAULT_MIN_VALUE)),this._sliderRightInputElm&&(this._sliderRightInputElm.value=String(h??ae.SLIDER_DEFAULT_MAX_VALUE)),this.renderSliderValues(...r)}}else this._currentValue=void 0,this._currentValues=void 0;const u=this.getValues();if((void 0===u?[]:Array.isArray(u)?u:[u]).length>0?this._filterElm.classList.add("filled"):this._filterElm.classList.remove("filled"),void 0!==a&&(this.operator=a),this.operator&&this._selectOperatorElm){const r=xv(this.operator);this._selectOperatorElm.value=r}}createDomFilterElement(e){const a=this.columnDef?.id??"",u=+(this.columnFilter.minValue??ae.SLIDER_DEFAULT_MIN_VALUE),i=+(this.columnFilter.maxValue??ae.SLIDER_DEFAULT_MAX_VALUE),r=+(this.columnFilter.valueStep??ae.SLIDER_DEFAULT_STEP);Ct(this._argFilterContainerElm);const o=+((Array.isArray(e)&&e?.[0])??this.filterOptions?.sliderStartValue??u),d=+((Array.isArray(e)&&e?.[1])??this.filterOptions?.sliderEndValue??i);if(this._sliderRangeContainElm=T("div",{className:`filter-input filter-${a} slider-input-container slider-values`,title:"double"===this.sliderType?`${o} - ${d}`:`${o}`}),this._sliderTrackElm=T("div",{className:"slider-track"}),"compound"===this.sliderType){const v=T("span",{className:"input-group-addon input-group-prepend operator"});this._selectOperatorElm=rM(this.getOperatorOptionValues(),this.grid),v.appendChild(this._selectOperatorElm)}"double"===this.sliderType&&(this._sliderLeftInputElm=T("input",{type:"range",className:"slider-filter-input",ariaLabel:this.columnFilter.ariaLabel??`${Rs(a+"")} Search Filter`,defaultValue:`${o}`,value:`${o}`,min:`${u}`,max:`${i}`,step:`${r}`}));const h="double"===this.sliderType?d:o;this._sliderRightInputElm=T("input",{type:"range",className:"slider-filter-input",ariaLabel:this.columnFilter.ariaLabel??`${Rs(a+"")} Search Filter`,defaultValue:`${h}`,value:`${h}`,min:`${u}`,max:`${i}`,step:`${r}`});const m=this.filterOptions?.hideSliderNumber??this.filterOptions?.hideSliderNumbers,E=m?"":"input-group";if(this._divContainerFilterElm=T("div",{className:`${E} search-filter slider-container slider-values filter-${a}`.trim()}),this._sliderRangeContainElm.appendChild(this._sliderTrackElm),"double"===this.sliderType&&this._sliderLeftInputElm&&this._sliderRangeContainElm.appendChild(this._sliderLeftInputElm),this._sliderRangeContainElm.appendChild(this._sliderRightInputElm),m)this._divContainerFilterElm.appendChild(this._sliderRangeContainElm);else{let v;"compound"===this.sliderType&&this._selectOperatorElm?(v=T("span",{className:"input-group-addon input-group-prepend operator"}),v.appendChild(this._selectOperatorElm)):"double"===this.sliderType&&(v=T("div",{className:"input-group-addon input-group-prepend slider-range-value"}),this._leftSliderNumberElm=T("span",{className:`input-group-text lowest-range-${a}`,textContent:`${o}`}),v.appendChild(this._leftSliderNumberElm));const k=T("div",{className:"input-group-addon input-group-append slider-range-value"});this._rightSliderNumberElm=T("span",{className:`input-group-text highest-range-${a}`,textContent:`${h}`},k),v&&this._divContainerFilterElm.appendChild(v),this._divContainerFilterElm.appendChild(this._sliderRangeContainElm),this._divContainerFilterElm.appendChild(k)}return this._sliderOptions={minValue:u,maxValue:i,step:r},this._currentValues=[o,d],Array.isArray(e)&&e.length>0&&""!==e[0]&&(this._divContainerFilterElm.classList.add("filled"),this._currentValue=o),(void 0!==this.filterOptions.sliderStartValue||void 0!==this.columnFilter.minValue)&&(this._currentValue=o),this._argFilterContainerElm.appendChild(this._divContainerFilterElm),this.updateTrackFilledColorWhenEnabled(),this._bindEventService.bind(this._sliderTrackElm,"click",this.sliderTrackClicked.bind(this)),this._bindEventService.bind(this._sliderRightInputElm,["input","change"],this.slideRightInputChanged.bind(this)),this._bindEventService.bind(this._sliderRightInputElm,["change","mouseup","touchend"],this.onValueChanged.bind(this)),"compound"===this.sliderType&&this._selectOperatorElm?this._bindEventService.bind(this._selectOperatorElm,["change"],this.onValueChanged.bind(this)):"double"===this.sliderType&&this._sliderLeftInputElm&&(this._bindEventService.bind(this._sliderLeftInputElm,["input","change"],this.slideLeftInputChanged.bind(this)),this._bindEventService.bind(this._sliderLeftInputElm,["change","mouseup","touchend"],this.onValueChanged.bind(this))),this._divContainerFilterElm}getOperatorOptionValues(){return this.columnFilter.compoundOperatorList?this.columnFilter.compoundOperatorList:lM(this.gridOptions,this.translaterService)}onValueChanged(e){const a=parseInt(this._sliderRightInputElm?.value??"",10);let u,i;if("compound"===this.sliderType||"single"===this.sliderType)"select"!==e?.target?.tagName?.toLowerCase()&&(this._currentValue=+a),u=this._currentValue,i=[u||"0"];else if("double"===this.sliderType){const o=[parseInt(this._sliderLeftInputElm?.value??"",10),a];u=o.join(".."),i=o}if(this._clearFilterTriggered)this._filterElm.classList.remove("filled"),this.callback(e,{columnDef:this.columnDef,clearFilterTriggered:this._clearFilterTriggered,searchTerms:[],shouldTriggerQuery:this._shouldTriggerQuery});else{const r=this._selectOperatorElm?.value??this.operator;""===u?this._filterElm.classList.remove("filled"):this._filterElm.classList.add("filled");const o=this.columnFilter.skipCompoundOperatorFilterWithNullInput??this.gridOptions.skipCompoundOperatorFilterWithNullInput;("compound"!==this.sliderType||!o||void 0!==this._currentValue)&&this.callback(e,{columnDef:this.columnDef,operator:r||"",searchTerms:i,shouldTriggerQuery:this._shouldTriggerQuery})}this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0,this.changeBothSliderFocuses(!1),this.grid.onHeaderRowMouseEnter.notify({column:this.columnDef,grid:this.grid},new jt(e))}changeBothSliderFocuses(e){const a=e?"add":"remove";this._sliderLeftInputElm?.classList[a]("focus"),this._sliderRightInputElm?.classList[a]("focus")}slideLeftInputChanged(e){const a=parseInt(this._sliderLeftInputElm?.value??"",10),u=parseInt(this._sliderRightInputElm?.value??"",10);this._sliderLeftInputElm&&u-a<=(this.filterOptions?.stopGapBetweenSliderHandles??0)&&(this._sliderLeftInputElm.value=String(a-(this.filterOptions?.stopGapBetweenSliderHandles??0))),this._sliderLeftInputElm&&this._sliderRightInputElm&&(+this._sliderLeftInputElm.value>=+this._sliderRightInputElm.value-20?(this._sliderLeftInputElm.style.zIndex="1",this._sliderRightInputElm.style.zIndex="0"):(this._sliderLeftInputElm.style.zIndex="0",this._sliderRightInputElm.style.zIndex="1")),this.sliderLeftOrRightChanged(e,a,u)}slideRightInputChanged(e){const a=parseInt(this._sliderLeftInputElm?.value??"",10),u=parseInt(this._sliderRightInputElm?.value??"",10);"double"===this.sliderType&&this._sliderRightInputElm&&u-a<=(this.filterOptions?.stopGapBetweenSliderHandles??0)&&(this._sliderRightInputElm.value=String(a+(this.filterOptions?.stopGapBetweenSliderHandles??0))),this.sliderLeftOrRightChanged(e,a,u)}sliderLeftOrRightChanged(e,a,u){this.updateTrackFilledColorWhenEnabled(),this.changeBothSliderFocuses(!0),this._sliderRangeContainElm.title="double"===this.sliderType?`${a} - ${u}`:`${u}`,(this.filterOptions?.hideSliderNumber??this.filterOptions?.hideSliderNumbers)||(this._leftSliderNumberElm?.textContent&&(this._leftSliderNumberElm.textContent=this._sliderLeftInputElm?.value??""),this._rightSliderNumberElm?.textContent&&(this._rightSliderNumberElm.textContent=this._sliderRightInputElm?.value??"")),this.grid.onHeaderRowMouseEnter.notify({column:this.columnDef,grid:this.grid},new jt(e))}sliderTrackClicked(e){e.preventDefault();const i=100*(e.offsetX+0)/this._sliderTrackElm.offsetWidth;this._sliderRightInputElm&&"double"!==this.sliderType?(this._sliderRightInputElm.value=`${i}`,this._sliderRightInputElm.dispatchEvent(new Event("change"))):this._sliderLeftInputElm&&this._sliderRightInputElm&&(i<=50?(this._sliderLeftInputElm.value=`${i}`,this._sliderLeftInputElm.dispatchEvent(new Event("change"))):(this._sliderRightInputElm.value=`${i}`,this._sliderRightInputElm.dispatchEvent(new Event("change"))))}updateTrackFilledColorWhenEnabled(){if(this.filterOptions?.enableSliderTrackColoring&&this._sliderRightInputElm){let e=0;this._sliderLeftInputElm&&(e=(+this._sliderLeftInputElm.value-+this._sliderLeftInputElm.min)/(this.sliderOptions?.maxValue??0-+this._sliderLeftInputElm.min)*100);const a=(+this._sliderRightInputElm.value-+this._sliderRightInputElm.min)/(this.sliderOptions?.maxValue??0-+this._sliderRightInputElm.min)*100,u="linear-gradient(to right, %b %p1, %c %p1, %c %p2, %b %p2)".replace(/%b/g,"#eee").replace(/%c/g,this.filterOptions?.sliderTrackFilledColor||this._sliderTrackFilledColor||ZM).replace(/%p1/g,`${e}%`).replace(/%p2/g,`${a}%`);this._sliderTrackElm.style.background=u,this._sliderOptions.sliderTrackBackground=u}}}var oce=Object.defineProperty,Je=(t,e,a)=>((t,e,a)=>e in t?oce(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a)(t,"symbol"!=typeof e?e+"":e,a),sce=class{constructor(t){Je(this,"_distinctEvent"),Je(this,"_boundedEvents",[]),this._distinctEvent=t?.distinctEvent??!1}get boundedEvents(){return this._boundedEvents}dispose(){this.unbindAll(),this._boundedEvents=[]}bind(t,e,a,u,i=""){let r=Array.isArray(e)?e:[e];if("function"==typeof t?.forEach)t.forEach(o=>{for(let d of r)(!this._distinctEvent||this._distinctEvent&&!this.hasBinding(o,d))&&(o.addEventListener(d,a,u),this._boundedEvents.push({element:o,eventName:d,listener:a,groupName:i}))});else for(let o of r)(!this._distinctEvent||this._distinctEvent&&!this.hasBinding(t,o))&&(t.addEventListener(o,a,u),this._boundedEvents.push({element:t,eventName:o,listener:a,groupName:i}))}hasBinding(t,e){return this._boundedEvents.some(a=>a.element===t&&(!e||a.eventName===e))}unbind(t,e,a){if(t){let u=Array.isArray(t)?t:[t],i=Array.isArray(e)?e||"":[e||""];for(let r of u){a||(a=this._boundedEvents.find(o=>{if(o.element===r&&(!e||o.eventName===e))return o.listener}));for(let o of i)r?.removeEventListener?.(o,a)}}}unbindAll(t){if(t){let e=Array.isArray(t)?t:[t];for(let a=this._boundedEvents.length-1;a>=0;--a){let u=this._boundedEvents[a];if(e.some(i=>i===u.groupName)){let{element:i,eventName:r,listener:o}=u;this.unbind(i,r,o),this._boundedEvents.splice(a,1)}}}else for(;this._boundedEvents.length>0;){let e=this._boundedEvents.pop(),{element:a,eventName:u,listener:i}=e;this.unbind(a,u,i)}}},RG=typeof window<"u"&&void 0!==window.multipleSelect?window.multipleSelect:{locales:{}},dce={formatSelectAll:()=>"[Select all]",formatAllSelected:()=>"All selected",formatCountSelected:(t,e)=>`${t} of ${e} selected`,formatNoMatchesFound:()=>"No matches found",formatOkButton:()=>"OK"};RG.locales["en-US"]=dce;var HG=RG.locales,VG={name:"",placeholder:"",classes:"",classPrefix:"",data:void 0,locale:void 0,selectAll:!0,single:void 0,singleRadio:!1,multiple:!1,hideOptgroupCheckboxes:!1,multipleWidth:80,width:void 0,dropWidth:void 0,maxHeight:250,maxHeightUnit:"px",position:"bottom",displayValues:!1,displayTitle:!1,displayDelimiter:", ",minimumCountSelected:3,ellipsis:!1,isOpen:!1,keepOpen:!1,openOnHover:!1,container:null,filter:!1,filterGroup:!1,filterPlaceholder:"",filterAcceptOnEnter:!1,filterByDataLength:void 0,customFilter(t){let{text:e,label:a,search:u}=t;return(a||e||"").includes(u)},showClear:!1,autoAdjustDropHeight:!1,autoAdjustDropPosition:!1,autoAdjustDropWidthByTextSize:!1,adjustedHeightPadding:10,useSelectOptionLabel:!1,useSelectOptionLabelToHtml:!1,navigationHighlight:!0,infiniteScroll:!1,virtualScroll:!0,cssStyler:()=>null,textTemplate:t=>t.innerHTML.trim(),labelTemplate:t=>t.label,onOpen:()=>!1,onClose:()=>!1,onCheckAll:()=>!1,onUncheckAll:()=>!1,onFocus:()=>!1,onBlur:()=>!1,onOptgroupClick:()=>!1,onBeforeClick:()=>!0,onClick:()=>!1,onFilter:()=>!1,onFilterClear:()=>!1,onClear:()=>!1,onAfterCreate:()=>!1,onDestroy:()=>!1,onAfterDestroy:()=>!1,onDestroyed:()=>!1};Object.assign(VG,HG["en-US"]);var I0={BLOCK_ROWS:50,CLUSTER_BLOCKS:4,DEFAULTS:VG,METHODS:["init","getOptions","refreshOptions","getSelects","setSelects","enable","disable","open","close","check","uncheck","checkAll","uncheckAll","checkInvert","focus","blur","refresh","destroy"]};function qM(t){let u=Object.prototype.toString.call(t).slice(8,-1).toLowerCase();return"object"===u?(()=>{let i={};for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=qM(t[r]));return i})():"array"===u?t.map(i=>qM(i)):t}function YM(t){return null!=t&&""!==t}function J7(t,e,a){if(Array.isArray(t))for(let u of t){if(u[e]===a||u[e]===""+ +u[e]&&+u[e]===a)return u;if("optgroup"===u.type)for(let i of u.children)if(i&&(i[e]===a||i[e]===""+ +i[e]&&+i[e]===a))return i}}function QM(t){return Object.keys(t).forEach(e=>void 0===t[e]?delete t[e]:""),t}function Lv(t,e){if("string"!=typeof t)return t;if("function"==typeof e)return e(t);if("function"==typeof t.normalize)return t.normalize("NFD").replace(/[\u0300-\u036F]/g,"");throw new Error("[Multiple-Select-Vanilla] `normalize()` function is not defined, you can optionally provide a custom parser via the `diacriticParser` option.")}function XM(t){let e=0,a=0,u=0,i=0,r=window.innerHeight??0,o=window.innerWidth??0,d=function Dce(){return{left:window.pageXOffset||document.documentElement.scrollLeft||0,top:window.pageYOffset||document.documentElement.scrollTop||0}}(),h=d.top,m=d.left,E=tL(t);if(E){let v=E.top??0,k=E.left??0;a=v-h,e=r-(v-h),u=k-m,i=o-(k-m)}return{top:a,bottom:e,left:u,right:i}}function eL(t=""){return t.split(" ").filter(e=>e)}function Cr(t,e,a){let u=document.createElement(t);return e&&Object.keys(e).forEach(i=>{let r=e[i];"object"==typeof r?Object.assign(u[i],r):u[i]=e[i]}),a?.appendChild&&a.appendChild(u),u}function jG(t,e,a){let u=t.props?.innerHTML?function xce(t,e){let{[e]:a,...u}=t;return u}(t.props,"innerHTML"):t.props,i=Cr(t.tagName,function gce(t,e){return"object"==typeof t?Object.fromEntries(e?Object.entries(t).filter(([a,u])=>!YM(u)&&!e.includes(a)||YM(u)):Object.entries(t).filter(([a,u])=>YM(u))):t}(u,["className","title","style"]),e),r=a;if(r||(r=i),t.props.innerHTML&&(i.innerHTML=t.props.innerHTML),t.attrs)for(let o of Object.keys(t.attrs))i.setAttribute(o,t.attrs[o]);if(t.children)for(let o of t.children)jG(o,i,r);return e?.appendChild(i),i}function aL(t){return t.hasOwnProperty("tagName")?jG(t):document.createElement("li")}function Z7(t){for(;t?.firstChild;)t.lastChild&&t.removeChild(t.lastChild);return t}function tL(t){if(!t)return;let e=t?.getBoundingClientRect?.(),a=0,u=0,i=0,r=0;return void 0!==e?.top&&void 0!==e.left&&(a=e.top+window.pageYOffset,u=e.left+window.pageXOffset,r=e.right,i=e.bottom),{top:a,left:u,bottom:i,right:r}}function $7(t,e,a){if(!t)return 0;let u=Number.parseFloat(t.style[a]);if(!u||Number.isNaN(u)){switch(e){case"outer":u=t["width"===a?"offsetWidth":"offsetHeight"];break;case"scroll":u=t["width"===a?"scrollWidth":"scrollHeight"];break;default:u=t["width"===a?"clientWidth":"clientHeight"]}u=t.getBoundingClientRect()[a]}if(!u||Number.isNaN(u)){let i=t.style.display,r=t.style.position;t.style.display="block",t.style.position="absolute";let o=window.getComputedStyle(t)[a];u=Number.parseFloat(o),Number.isNaN(u)&&(u=0),t.style.display=i,t.style.position=r}return u||0}function OG(t,e){let a=null,u=t?.parentElement;for(;u;){let[i,r,o,d]=e.match(/^([a-z]*)([#.]{1})([a-z\-]+)$/i)||[];if(o&&d)for(let h of d.replace(o,"").split(" "))u.classList.contains(h)&&(r?u?.tagName.toLowerCase()===r&&(a=u):a=u);u=u.parentElement}return a}function GG(t,e){t?.style&&(t.style.display="none"===t.style.display&&!1!==e||!0===e?"block":"none")}var fce=class{constructor(t){Je(this,"clusterRows"),Je(this,"cache"),Je(this,"scrollEl"),Je(this,"blockHeight"),Je(this,"clusterHeight"),Je(this,"contentEl"),Je(this,"parentEl"),Je(this,"itemHeight"),Je(this,"lastCluster"),Je(this,"scrollTop"),Je(this,"dataStart"),Je(this,"dataEnd"),Je(this,"rows"),Je(this,"destroy"),Je(this,"callback"),Je(this,"sanitizer"),this.rows=t.rows,this.scrollEl=t.scrollEl,this.contentEl=t.contentEl,this.parentEl=t.contentEl?.parentElement,this.callback=t.callback,this.cache={},this.scrollTop=this.scrollEl.scrollTop,this.initDOM(this.rows),this.scrollEl.scrollTop=this.scrollTop,this.lastCluster=0;let e=()=>{this.lastCluster!==(this.lastCluster=this.getNum())&&(this.initDOM(this.rows),this.callback())};this.scrollEl.addEventListener("scroll",e,!1),this.destroy=()=>{this.scrollEl.removeEventListener("scroll",e,!1),Z7(this.contentEl)}}reset(t){this.lastCluster=0,this.cache={},Z7(this.contentEl),this.initDOM(t)}initDOM(t){if(typeof this.clusterHeight>"u"){this.cache.scrollTop=this.scrollEl.scrollTop;let r=aL(t[0]);this.contentEl.appendChild(r),this.contentEl.appendChild(r),this.contentEl.appendChild(r),this.cache.data=[t[0]],this.getRowsHeight()}let e=this.initData(t,this.getNum()),a=this.checkChanges("data",e.rows),u=this.checkChanges("top",e.topOffset),i=this.checkChanges("bottom",e.bottomOffset);Z7(this.contentEl),a&&u?(e.topOffset&&this.contentEl.appendChild(this.getExtra("top",e.topOffset)),e.rows.forEach(r=>this.contentEl.appendChild(aL(r))),e.bottomOffset&&this.contentEl.appendChild(this.getExtra("bottom",e.bottomOffset))):i&&this.contentEl.lastChild&&(this.contentEl.lastChild.style.height=`${e.bottomOffset}px`)}getRowsHeight(){if(typeof this.itemHeight>"u"){let t=this.parentEl?.style.display||"";this.parentEl&&(""===t||"none"===t)&&(this.parentEl.style.display="block");let e=this.contentEl.children,a=e[Math.floor(e.length/2)];this.itemHeight=a.offsetHeight,this.parentEl&&(this.parentEl.style.display=t)}this.blockHeight=this.itemHeight*I0.BLOCK_ROWS,this.clusterRows=I0.BLOCK_ROWS*I0.CLUSTER_BLOCKS,this.clusterHeight=this.blockHeight*I0.CLUSTER_BLOCKS}getNum(){this.scrollTop=this.scrollEl.scrollTop;let t=(this.clusterHeight||0)-(this.blockHeight||0);return t&&Math.floor(this.scrollTop/t)||0}initData(t,e){if(t.lengthdelete this[e])))}initLocale(){if(this.options.locale){if("object"==typeof this.options.locale)return void Object.assign(this.options,this.options.locale);let t=window.multipleSelect.locales,e=this.options.locale.split(/-|_/);if(e[0]=e[0].toLowerCase(),e[1]&&(e[1]=e[1].toUpperCase()),t[this.options.locale])Object.assign(this.options,t[this.options.locale]);else if(t[e.join("-")])Object.assign(this.options,t[e.join("-")]);else{if(!t[e[0]])throw new Error(`[multiple-select-vanilla] invalid locales "${this.options.locale}", make sure to import it before using it`);Object.assign(this.options,t[e[0]])}}}initContainer(){let t=this.elm.getAttribute("name")||this.options.name||"";this.options.classes&&this.elm.classList.add(this.options.classes),this.options.classPrefix&&(this.elm.classList.add(this.options.classPrefix),this.options.size&&this.elm.classList.add(`${this.options.classPrefix}-${this.options.size}`)),this.elm.style.display="none",this.labelElm=this.elm.closest("label"),!this.labelElm&&this.elm.id&&(this.labelElm=document.createElement("label"),this.labelElm.htmlFor=this.elm.id),this.labelElm?.querySelector("input")&&(this.labelElm=null),typeof this.options.single>"u"&&(this.options.single=!this.elm.multiple),this.parentElm=Cr("div",{className:eL(`ms-parent ${this.elm.className||""} ${this.options.classes}`).join(" "),dataset:{test:"sel"}}),this.options.darkMode&&this.parentElm.classList.add("ms-dark-mode");let e=this.elm.getAttribute("title")||"";e&&(this.parentElm.title=e),this.options.placeholder=this.options.placeholder||this.elm.getAttribute("placeholder")||"",this.choiceElm=Cr("button",{className:"ms-choice",type:"button"},this.parentElm),this.options.labelId&&(this.choiceElm.id=this.options.labelId,this.choiceElm.setAttribute("aria-labelledby",this.options.labelId)),this.choiceElm.appendChild(Cr("span",{className:"ms-placeholder",textContent:this.options.placeholder})),this.options.showClear&&(this.selectClearElm=Cr("div",{className:"ms-icon ms-icon-close"}),this.selectClearElm.style.display="none",this.choiceElm.appendChild(this.selectClearElm)),this.choiceElm.appendChild(Cr("div",{className:"ms-icon ms-icon-caret"})),this.dropElm=Cr("div",{className:`ms-drop ${this.options.position}`,ariaExpanded:"false"},this.parentElm),this.options.darkMode&&this.dropElm.classList.add("ms-dark-mode"),t&&(this.dropElm.dataset.name=t);let a=this.elm.getAttribute("data-test")||this.options.dataTest;a&&(this.parentElm.dataset.test=a,this.dropElm.dataset.test=a),this.closeElm=this.choiceElm.querySelector(".ms-icon-close"),this.options.dropWidth&&(this.dropElm.style.width="string"==typeof this.options.dropWidth?this.options.dropWidth:`${this.options.dropWidth}px`),function kce(t,e){t.parentNode?.insertBefore(e,t.nextSibling)}(this.elm,this.parentElm),this.elm.disabled&&(this.choiceElm.classList.add("disabled"),this.choiceElm.disabled=!0),this.selectAllName=`selectAll${t}`,this.selectGroupName=`selectGroup${t}`,this.selectItemName=`selectItem${t}`,this.options.keepOpen||(this._bindEventService.unbindAll("body-click"),this._bindEventService.bind(document.body,"click",u=>{u.target===this.choiceElm||OG(u.target,".ms-choice")===this.choiceElm||(u.target===this.dropElm||OG(u.target,".ms-drop")!==this.dropElm&&u.target!==this.elm)&&this.options.isOpen&&this.close("body.click")},void 0,"body-click"))}initData(){let t=[];if(this.options.data){if(Array.isArray(this.options.data))this.data=this.options.data.map(e=>"string"==typeof e||"number"==typeof e?{text:e,value:e}:e);else if("object"==typeof this.options.data){for(let[e,a]of Object.entries(this.options.data))t.push({value:e,text:`${a}`});this.data=t}}else this.elm.childNodes.forEach(e=>{let a=this.initRow(e);a&&t.push(a)}),this.options.data=t,this.data=t,this.fromHtml=!0;this.dataTotal=function vce(t){let e=0;return t.forEach((a,u)=>{"optgroup"===a.type?(a._key=`group_${u}`,a.visible=typeof a.visible>"u"||a.visible,a.children.forEach((i,r)=>{i&&(i.visible=typeof i?.visible>"u"||i.visible,i.divider||(i._key=`option_${u}_${r}`,e+=1))})):(a.visible=typeof a.visible>"u"||a.visible,a.divider||(a._key=`option_${u}`,e+=1))}),e}(this.data||[])}initRow(t,e){let a={};return"option"===t.tagName?.toLowerCase()?(a.type="option",a.text=this.options.textTemplate(t),a.value=t.value,a.visible=!0,a.selected=!!t.selected,a.disabled=e||t.disabled,a.classes=t.getAttribute("class")||"",a.title=t.getAttribute("title")||"",t.dataset.value&&(a._value=t.dataset.value),Object.keys(t.dataset).length&&(a._data=t.dataset,a._data.divider&&(a.divider=a._data.divider)),a):"optgroup"===t.tagName?.toLowerCase()?(a.type="optgroup",a.label=this.options.labelTemplate(t),a.visible=!0,a.selected=!!t.selected,a.disabled=t.disabled,a.children=[],Object.keys(t.dataset).length&&(a._data=t.dataset),t.childNodes.forEach(u=>{a.children.push(this.initRow(u,a.disabled))}),a):null}initDrop(){this.initList(),this.update(!0),this.options.isOpen&&this.open(10),this.options.openOnHover&&this.parentElm&&(this._bindEventService.bind(this.parentElm,"mouseover",()=>this.open(null)),this._bindEventService.bind(this.parentElm,"mouseout",()=>this.close("hover.mouseout")))}initFilter(){if(this.filterText="",this.options.filter||!this.options.filterByDataLength)return;let t=0;for(let e of this.data||[])"optgroup"===e.type?t+=e.children.length:t+=1;this.options.filter=t>this.options.filterByDataLength}initList(){if(this.options.filter&&(this.filterParentElm=Cr("div",{className:"ms-search"},this.dropElm),this.filterParentElm.appendChild(Cr("input",{autocomplete:"off",autocapitalize:"off",spellcheck:!1,type:"text",placeholder:this.options.filterPlaceholder||"\u{1f50e}\ufe0e"})),this.options.showSearchClear&&this.filterParentElm.appendChild(Cr("span",{className:"ms-icon ms-icon-close"}))),this.options.selectAll&&!this.options.single){let t=this.elm.getAttribute("name")||this.options.name||"";this.selectAllParentElm=Cr("div",{className:"ms-select-all",dataset:{key:"select_all"}});let e=document.createElement("label"),a="ms-icon "+(this.isAllSelected?"ms-icon-check":this.isPartiallyAllSelected?"ms-icon-minus":"ms-icon-uncheck"),u=Cr("div",{className:"icon-checkbox-container"},e);Cr("input",{type:"checkbox",ariaChecked:String(this.isAllSelected),checked:this.isAllSelected,dataset:{name:`selectAll${t}`}},u),Cr("div",{className:a},u),e.appendChild(Cr("span",{textContent:this.formatSelectAll()})),this.selectAllParentElm.appendChild(e),this.dropElm?.appendChild(this.selectAllParentElm)}this.ulElm=document.createElement("ul"),this.ulElm.role="combobox",this.ulElm.ariaExpanded="false",this.ulElm.ariaMultiSelectable=String(!this.options.single),this.dropElm?.appendChild(this.ulElm),this.options.showOkButton&&!this.options.single&&(this.okButtonElm=Cr("button",{className:"ms-ok-button",type:"button",textContent:this.formatOkButton()},this.dropElm)),this.initListItems()}initListItems(){let t=0,e=this.getListRows();if(this.options.selectAll&&!this.options.single&&(t=-1),e.length>I0.BLOCK_ROWS*I0.CLUSTER_BLOCKS){let a=this.dropElm&&"none"!==this.dropElm?.style.display;!a&&this.dropElm&&(this.dropElm.style.left="-10000",this.dropElm.style.display="block",this.dropElm.ariaExpanded="true");let u=()=>{if(this.virtualScroll){this._currentHighlightIndex=0,this.updateDataStart=this.virtualScroll.dataStart+t,this.updateDataEnd=this.virtualScroll.dataEnd+t,this.updateDataStart<0&&(this.updateDataStart=0,this._currentHighlightIndex=0);let i=this.getDataLength();this.updateDataEnd>i&&(this.updateDataEnd=i),this.ulElm&&(this.isMoveUpRecalcRequired?this.recalculateArrowMove("up"):this.virtualScroll.dataStart>this.updateDataStart&&this.recalculateArrowMove("down"))}};this.ulElm&&(this.virtualScroll?this.virtualScroll.reset(e):this.virtualScroll=new fce({rows:e,scrollEl:this.ulElm,contentEl:this.ulElm,sanitizer:this.options.sanitizer,callback:()=>{u(),this.events()}})),u(),!a&&this.dropElm&&(this.dropElm.style.left="0",this.dropElm.style.display="none",this.dropElm.ariaExpanded="false")}else this.ulElm&&(Z7(this.ulElm),e.forEach(a=>this.ulElm.appendChild(aL(a)))),this.updateDataStart=0,this.updateDataEnd=this.updateData.length;return this.events(),e}getListRows(){let t=[];return this.updateData=[],this.data?.forEach(e=>t.push(...this.initListItem(e))),this.options.infiniteScroll&&t.push({tagName:"li",props:{className:"ms-infinite-option",role:"option"}}),t.push({tagName:"li",props:{className:"ms-no-results",textContent:this.formatNoMatchesFound()}}),t}initListItem(t,e=0){let a=t?.title||"",u=this.options.multiple?"multiple":"",i=this.options.single?"radio":"checkbox",r=!!t?.selected,o=this.options.single&&!this.options.singleRadio,d="";if(!t?.visible)return[];if(this.updateData.push(t),o&&(d="hide-radio "),t.selected&&(d+="selected "),"optgroup"===t.type){let A,C=[];if(this.options.hideOptgroupCheckboxes||this.options.single)A={tagName:"span",props:{dataset:{name:this.selectGroupName,key:t._key}}};else{let M={tagName:"input",props:{type:"checkbox",dataset:{name:this.selectGroupName,key:t._key},checked:r,disabled:t.disabled}};A=o?M:{tagName:"div",props:{className:"icon-checkbox-container"+("radio"===i?" radio":"")},children:[M,{tagName:"div",props:{className:"ms-icon "+(r?"radio"===i?"ms-icon-radio":"ms-icon-check":"ms-icon-uncheck")}}]}}!d.includes("hide-radio")&&(this.options.hideOptgroupCheckboxes||this.options.single)&&(d+="hide-radio ");let w={tagName:"span",props:{}};this.applyAsTextOrHtmlWhenEnabled(w.props,t.label);let z={tagName:"li",props:{className:eL(`group${this.options.single||t.disabled?" disabled":""} ${d}`).join(" "),role:"option",ariaSelected:String(r),dataset:{key:t._key}},children:[{tagName:"label",props:{className:eL("optgroup"+(this.options.single||t.disabled?" disabled":"")).join(" ")},children:[A,w]}]},L=this.options.cssStyler(t);return L&&(z.props.style=L),C.push(z),t.children.forEach(M=>C.push(...this.initListItem(M,1))),C}if(d+=t.classes||"",e&&this.options.single&&(d+=`option-level-${e} `),t.divider)return[{tagName:"li",props:{className:"option-divider"}}];let h=u||d?(u+d).trim():"";t.disabled&&(h+=" disabled");let m=""+(t.disabled?"disabled":""),E={tagName:"span",props:{}};this.applyAsTextOrHtmlWhenEnabled(E.props,t.text);let v={tagName:"input",props:{type:i,value:encodeURI(t.value),dataset:{key:t._key,name:this.selectItemName},checked:r,disabled:!!t.disabled}};t.selected&&(v.attrs={checked:"checked"});let k={tagName:"div",props:{className:"icon-checkbox-container"+("radio"===i?" radio":"")},children:[v,{tagName:"div",props:{className:"ms-icon "+(v.props.checked?"radio"===i?"ms-icon-radio":"ms-icon-check":"ms-icon-uncheck")}}]},x={tagName:"li",props:{role:"option",title:a,ariaSelected:String(r),dataset:{key:t._key}},children:[{tagName:"label",props:{className:m},children:[o?v:k,E]}]};h&&(x.props.className=h);let f=this.options.cssStyler(t);return f&&(x.props.style=f),[x]}initSelected(t=!1){let e=0;for(let a of this.data||[])if("optgroup"===a.type){let u=a.children.filter(i=>i?.selected&&!i.disabled&&i.visible).length;a.children.length&&(a.selected=!this.options.single&&u&&u===a.children.filter(i=>i&&!i.disabled&&i.visible&&!i.divider).length),e+=u}else e+=a.selected&&!a.disabled&&a.visible?1:0;this.isAllSelected=this.data?.filter(a=>a.selected&&!a.disabled&&a.visible).length===this.data?.filter(a=>!a.disabled&&a.visible&&!a.divider).length,this.isPartiallyAllSelected=!this.isAllSelected&&e>0,t||(this.isAllSelected?this.options.onCheckAll():0===e&&this.options.onUncheckAll())}initView(){let t;window.getComputedStyle?(t=window.getComputedStyle(this.elm).width,"auto"===t&&(t=$7(this.dropElm,"outer","width")+20)):t=$7(this.elm,"outer","width")+20,this.parentElm.style.width=`${this.options.width||t}px`,this.elm.classList.add("ms-offscreen")}events(){this._bindEventService.unbindAll(["ok-button","search-input","select-all-checkbox","input-checkbox-list","group-checkbox-list","hover-highlight","arrow-highlight","option-list-scroll"]),this.clearSearchIconElm=this.filterParentElm?.querySelector(".ms-icon-close"),this.searchInputElm=this.dropElm?.querySelector(".ms-search input"),this.selectAllElm=this.dropElm?.querySelector(`input[data-name="${this.selectAllName}"]`),this.selectGroupElms=this.dropElm?.querySelectorAll(`input[data-name="${this.selectGroupName}"],span[data-name="${this.selectGroupName}"]`),this.selectItemElms=this.dropElm?.querySelectorAll(`input[data-name="${this.selectItemName}"]:enabled`),this.noResultsElm=this.dropElm?.querySelector(".ms-no-results");let t=e=>{e.preventDefault(),!e.target.classList.contains("ms-icon-close")&&(this.options.isOpen?this.close("toggle.close"):this.open())};this.labelElm&&this._bindEventService.bind(this.labelElm,"click",e=>{"label"===e.target.nodeName.toLowerCase()&&(t(e),(!this.options.filter||!this.options.isOpen)&&this.focus(),e.stopPropagation())}),this._bindEventService.bind(this.choiceElm,"click",t),this.options.onFocus&&this._bindEventService.bind(this.choiceElm,"focus",this.options.onFocus),this.options.onBlur&&this._bindEventService.bind(this.choiceElm,"blur",this.options.onBlur),this._bindEventService.bind(this.parentElm,"keydown",e=>{"Escape"===e.code&&this.handleEscapeKey()}),this.closeElm&&this._bindEventService.bind(this.closeElm,"click",e=>{e.preventDefault(),this._checkAll(!1,!0),this.initSelected(!1),this.updateSelected(),this.update(),this.options.onClear()}),this.clearSearchIconElm&&this._bindEventService.bind(this.clearSearchIconElm,"click",e=>{e.preventDefault(),this.searchInputElm&&(this.searchInputElm.value="",this.searchInputElm.focus()),this._currentHighlightIndex=-1,this.moveHighlightDown(),this.filter(),this.options.onFilterClear()}),this.searchInputElm&&(this._bindEventService.bind(this.searchInputElm,"keydown",e=>{"Tab"===e.code&&e.shiftKey&&this.close("key.shift+tab")},void 0,"search-input"),this._bindEventService.bind(this.searchInputElm,"keyup",e=>{if(this.options.filterAcceptOnEnter&&["Enter","Space"].includes(e.code)&&this.searchInputElm?.value){if(this.options.single){let a=[];this.selectItemElms?.forEach(u=>{"none"!==u.closest("li")?.style.display&&a.push(u)}),a.length&&a[0].hasAttribute("data-name")&&this.setSelects([a[0].value])}else this.selectAllElm?.click();return this.close(`key.${e.code.toLowerCase()}`),void this.focus()}this.filter()},void 0,"search-input")),this.selectAllElm&&this._bindEventService.bind(this.selectAllElm,"click",e=>this._checkAll(e.currentTarget?.checked),void 0,"select-all-checkbox"),this.okButtonElm&&this._bindEventService.bind(this.okButtonElm,"click",e=>{t(e),e.stopPropagation()},void 0,"ok-button"),this.selectGroupElms&&this._bindEventService.bind(this.selectGroupElms,"click",e=>{let a=e.currentTarget,u=a.checked,i=J7(this.data,"_key",a.dataset.key);this._checkGroup(i,u),this.options.onOptgroupClick(QM({label:i.label,selected:i.selected,data:i._data,children:i.children.map(r=>{if(r)return QM({text:r.text,value:r.value,selected:r.selected,disabled:r.disabled,data:r._data})})}))},void 0,"group-checkbox-list"),this.selectItemElms&&this._bindEventService.bind(this.selectItemElms,"click",e=>{let a=e.currentTarget,u=a.checked,i=J7(this.data,"_key",a.dataset.key),r=()=>{this.options.single&&this.options.isOpen&&!this.options.keepOpen&&this.close("selection")};!1!==this.options.onBeforeClick(i)?(this._check(i,u),this.options.onClick(QM({text:i.text,value:i.value,selected:i.selected,data:i._data})),r()):r()},void 0,"input-checkbox-list"),this.lastFocusedItemKey&&this.dropElm&&this.dropElm.querySelector(`li[data-key=${this.lastFocusedItemKey}]`)?.focus(),this.options.navigationHighlight&&this.dropElm&&(this._bindEventService.bind(this.dropElm,"mouseover",e=>{let a=e.target.closest(".ms-select-all")||e.target.closest("li");if(this.dropElm?.contains(a)&&this.lastMouseOverPosition!==`${e.clientX}:${e.clientY}`){let u=this.dropElm?.querySelectorAll(W2)||[],i=Array.from(u).findIndex(r=>r.dataset.key===a.dataset.key);this._currentHighlightIndex!==i&&!a.classList.contains("disabled")&&(this._currentSelectedElm=a,this._currentHighlightIndex=i,this.changeCurrentOptionHighlight(a))}this.lastMouseOverPosition=`${e.clientX}:${e.clientY}`},void 0,"hover-highlight"),this._bindEventService.bind(this.dropElm,"keydown",e=>{switch(e.key){case"ArrowUp":e.preventDefault(),this.moveHighlightUp();break;case"ArrowDown":e.preventDefault(),this.moveHighlightDown();break;case"Escape":this.handleEscapeKey();break;case"Enter":case" ":if(document.activeElement!==this.okButtonElm){let a=e.target.closest(".ms-select-all")||e.target.closest("li");if(" "===e.key&&this.options.filter||this.options.filterAcceptOnEnter&&!a)return;e.preventDefault(),this._currentSelectedElm?.querySelector("input")?.click(),this.options.single&&(this.choiceElm.focus(),this.lastFocusedItemKey=this.choiceElm?.dataset.key||"")}break;case"Tab":e.preventDefault(),e.shiftKey?document.activeElement===this.okButtonElm?(this.focusSelectAllOrList(),this.highlightCurrentOption()):(this.close("key.shift+tab"),this.choiceElm.focus()):(this.changeCurrentOptionHighlight(),this.okButtonElm?.focus())}},void 0,"arrow-highlight")),this.ulElm&&this.options.infiniteScroll&&this._bindEventService.bind(this.ulElm,"scroll",this.infiniteScrollHandler.bind(this),void 0,"option-list-scroll")}handleEscapeKey(){this.options.keepOpen||(this.close("key.escape"),this.choiceElm.focus())}infiniteScrollHandler(t,e,a){let u=!1;t?.target&&this.ulElm&&this.scrolledByMouse?t.target.scrollTop+t.target.clientHeight===this.ulElm.scrollHeight&&(u=!0):void 0!==e&&e+1===a&&(u=!0),u&&this.ulElm&&(this.virtualScroll?this.initListItems():this.ulElm.scrollTop=0,this._currentHighlightIndex=0,this.highlightCurrentOption())}open(t=0){return new Promise(e=>{null!==t&&t>=0?(clearTimeout(this.openDelayTimer),this.openDelayTimer=setTimeout(()=>{this.openDrop(),e()},t)):(this.openDrop(),e())})}openDrop(){if(!this.dropElm||this.choiceElm?.classList.contains("disabled"))return;if(this.options.isOpen=!0,this.parentElm.classList.add("ms-parent-open"),this.choiceElm?.querySelector("div.ms-icon-caret")?.classList.add("open"),this.dropElm.style.display="block",this.dropElm.ariaExpanded="true",this.selectAllElm?.parentElement&&(this.selectAllElm.parentElement.style.display="inline-flex"),this.noResultsElm&&(this.noResultsElm.style.display="none"),this.getDataLength()||(this.selectAllElm?.parentElement&&(this.selectAllElm.parentElement.style.display="none"),this.noResultsElm&&(this.noResultsElm.style.display="block")),this.options.container){let i,u=tL(this.dropElm);this.options.container instanceof Node?i=this.options.container:"string"==typeof this.options.container&&(i="body"===this.options.container?document.body:document.querySelector(this.options.container)),i.appendChild(this.dropElm),this.dropElm.style.top=`${u?.top??0}px`,this.dropElm.style.left=`${u?.left??0}px`,this.dropElm.style.minWidth="auto",this.dropElm.style.width=`${$7(this.parentElm,"outer","width")}px`}let t=this.options.minHeight,e=this.options.maxHeight;"row"===this.options.maxHeightUnit&&(e=$7(this.dropElm.querySelector("ul>li"),"outer","height")*this.options.maxHeight),this.ulElm??=this.dropElm.querySelector("ul"),this.ulElm&&(t&&(this.ulElm.style.minHeight=`${t}px`),this.ulElm.style.maxHeight=`${e}px`),this.dropElm.querySelectorAll(".multiple").forEach(u=>{u.style.width=`${this.options.multipleWidth}px`}),this.getDataLength()&&this.options.filter?(this.searchInputElm&&(this.searchInputElm.value="",this.searchInputElm.focus()),this.filter(!0)):this.focusSelectAllOrList(),this._currentHighlightIndex<0?this.moveHighlightDown():this.highlightCurrentOption(),this.options.autoAdjustDropWidthByTextSize&&this.adjustDropWidthByText();let a=this.options.position;if(this.options.autoAdjustDropHeight){if(this.options.autoAdjustDropPosition){let{bottom:u,top:i}=XM(this.dropElm);a=uu?"top":"bottom"}this.adjustDropHeight(a)}this.options.autoAdjustDropPosition&&this.adjustDropPosition(!0),this.options.onOpen()}focusSelectAllOrList(){this.selectAllElm?this.selectAllElm.focus():this.ulElm&&(this.ulElm.tabIndex=0,this.ulElm.focus())}highlightCurrentOption(){let t=this.dropElm?.querySelectorAll(W2)||[];if(this._currentHighlightIndex<=t.length){let e=t[this._currentHighlightIndex];e&&(this.lastFocusedItemKey=e.dataset.key||"",this._currentSelectedElm=e,this.scrolledByMouse=!1,e.scrollIntoView({block:"nearest"}),this.changeCurrentOptionHighlight(e),setTimeout(()=>this.scrolledByMouse=!0,10))}}changeCurrentOptionHighlight(t){t?.classList.add("highlighted"),(this.dropElm?.querySelectorAll(".ms-select-all.highlighted, ul li[data-key].highlighted")||[]).forEach(e=>{e!==t&&e.classList.remove("highlighted")})}moveHighlightDown(){let t=this.dropElm?.querySelectorAll(W2)||[],e=t.length;this._currentHighlightIndex0&&this.ulElm){let a=t[this._currentHighlightIndex+(this.options.single?0:1)],u=a?.dataset.key;return this.lastFocusedItemKey=u,this.ulElm.scrollTop=this.ulElm.scrollTop-a?.getBoundingClientRect().height||10,void(this.isMoveUpRecalcRequired=!0)}this._currentHighlightIndex>0&&(this._currentHighlightIndex--,t[this._currentHighlightIndex]?.classList.contains("disabled")&&this.moveHighlightUp()),this.highlightCurrentOption()}recalculateArrowMove(t){let e=this.dropElm?.querySelectorAll(W2)||[],a=Array.from(e).findIndex(u=>u.dataset.key===this.lastFocusedItemKey);this._currentHighlightIndex=a-1,"down"===t?this.moveHighlightDown():"up"===t&&(this.moveHighlightUp(),this.isMoveUpRecalcRequired=!1)}close(t){this.options.isOpen=!1,this.parentElm.classList.remove("ms-parent-open"),this.choiceElm?.querySelector("div.ms-icon-caret")?.classList.remove("open"),this.dropElm&&(this.dropElm.style.display="none",this.dropElm.ariaExpanded="false",this.options.container&&(this.parentElm.appendChild(this.dropElm),this.dropElm.style.top="auto",this.dropElm.style.left="auto")),this.options.onClose(t)}applyAsTextOrHtmlWhenEnabled(t,e){t||(t={}),this.isRenderAsHtml?t.innerHTML="function"==typeof this.options.sanitizer?this.options.sanitizer(e):e:t.textContent=e}update(t=!1){let e=this.getSelects(),a=this.getSelects("text");this.options.displayValues&&(a=e);let u=this.choiceElm?.querySelector("span"),i=e.length,r=null,o=()=>{if(this.options.useSelectOptionLabel||this.options.useSelectOptionLabelToHtml){let h=e.join(this.options.displayDelimiter);return this.options.useSelectOptionLabelToHtml?function bce(t){return t.replace(/(\b)(on[a-z]+)(\s*)=([^>]*)|javascript:([^>]*)[^>]*|(<\s*)(\/*)script([<>]*).*(<\s*)(\/*)script(>*)|(<|<)(\/*)(script|script defer)(.*)(>|>|>">)/gi,"")}(h):h}return a.join(this.options.displayDelimiter)};if(u){if(0===i){let h=this.options.placeholder||"";u.classList.add("ms-placeholder"),this.applyAsTextOrHtmlWhenEnabled(u,h)}else r=ithis.options.minimumCountSelected?`${a.slice(0,this.options.minimumCountSelected).join(this.options.displayDelimiter)}...`:this.formatCountSelected(i,this.dataTotal)&&i>this.options.minimumCountSelected?this.formatCountSelected(i,this.dataTotal):o();if(null!==r&&(u?.classList.remove("ms-placeholder"),this.applyAsTextOrHtmlWhenEnabled(u,r)),this.options.showClear&&this.selectClearElm){let h=r?"block":"none";this.selectClearElm.style.display=h}if(this.options.displayTitle){let h=this.options.useSelectOptionLabel||this.options.useSelectOptionLabelToHtml?"value":"text";u.title=this.getSelects(h).join(this.options.displayDelimiter)}}let d=this.getSelects();this.options.single?this.elm.value=d.length?d[0]:"":Array.from(this.elm.options).forEach(h=>{h.selected=d.some(m=>m===h.value)}),t||this.elm.dispatchEvent(new Event("change"))}updateSelected(t){for(let a=this.updateDataStart;aa.visible).length;if(this.selectAllElm){this.selectAllElm.ariaChecked=String(this.isAllSelected);let a=this.dropElm?.querySelector(".ms-select-all .icon-checkbox-container div");if(a){let u="";u=this.isAllSelected?"ms-icon-check":this.isPartiallyAllSelected?"ms-icon-minus":"ms-icon-uncheck",a.className=`ms-icon ${u}`}this.selectAllElm.checked=this.isAllSelected,GG(this.selectAllElm.closest("li"),!e)}GG(this.noResultsElm,e),this.virtualScroll&&(this.virtualScroll.rows=t??this.getListRows())}getData(){return this.options.data}getDataLength(){return this.data?.length??0}getOptions(t=!0){let e=Object.assign({},this.options);return delete e.data,t?qM(e):this.options}refreshOptions(t){(function Ece(t,e,a=!1){let u=Object.keys(t),i=Object.keys(e);if(a&&u.length!==i.length)return!1;for(let r of u)if(i.includes(r)&&t[r]!==e[r])return!1;return!0})(this.options,t,!0)||(this.options=Object.assign(this.options,t),this.destroy(!1),this.init())}getDropElement(){return this.dropElm}getParentElement(){return this.parentElm}getSelects(t="value"){let e=[];for(let a of this.data||[])if("optgroup"===a.type){let u=a.children.filter(i=>i?.selected);if(!u.length)continue;if("value"===t||this.options.single)e.push(...u.map(i=>"value"===t&&i._value||i[t]));else{let i=[];i.push("["),i.push(a.label),i.push(`: ${u.map(r=>r[t]).join(", ")}`),i.push("]"),e.push(i.join(""))}}else a.selected&&e.push("value"===t&&a._value||a[t]);return e}setSelects(t,e="value",a=!1){let u=!1,i=r=>{for(let o of r){let d=!1;if("text"===e){let h=document.createElement("div");this.applyAsTextOrHtmlWhenEnabled(h,o.text),d=t.includes(h.textContent?.trim()??"")}else d=t.includes(o._value||o.value),!d&&o.value===""+ +o.value&&(d=t.includes(+o.value));o.selected!==d&&(u=!0),o.selected=d}};for(let r of this.data||[])"optgroup"===r.type?i(r.children):i([r]);u&&(this.initSelected(a),this.updateSelected(),this.update(a))}enable(){this.choiceElm&&(this.choiceElm.classList.remove("disabled"),this.choiceElm.disabled=!1)}disable(){this.choiceElm&&(this.choiceElm?.classList.add("disabled"),this.choiceElm.disabled=!0)}check(t){let e=J7(this.data,"value",t);e&&this._check(e,!0)}uncheck(t){let e=J7(this.data,"value",t);e&&this._check(e,!1)}_check(t,e){this.options.single&&this._checkAll(!1,!0),t.selected=e,this.initSelected(),this.updateSelected(),this.update()}checkAll(){this._checkAll(!0)}uncheckAll(){this._checkAll(!1)}_checkAll(t,e){for(let a of this.data||[])"optgroup"===a.type?this._checkGroup(a,t,!0):!a.disabled&&!a.divider&&(e||a.visible)&&(a.selected=t);e||(this.initSelected(),this.updateSelected(),this.update())}_checkGroup(t,e,a){t.selected=e,t.children.forEach(u=>{u&&!u.disabled&&!u.divider&&(a||u.visible)&&(u.selected=e)}),a||(this.initSelected(),this.updateSelected(),this.update())}checkInvert(){if(!this.options.single){for(let t of this.data||[])if("optgroup"===t.type)for(let e of t.children)e&&(e.divider||(e.selected=!e.selected));else t&&!t.divider&&(t.selected=!t.selected);this.initSelected(),this.updateSelected(),this.update()}}focus(){this.choiceElm?.focus(),this.options.onFocus()}blur(){this.choiceElm?.blur(),this.options.onBlur()}refresh(){this.destroy(!1),this.init()}filter(t){let e=this.searchInputElm?.value.trim()??"",a=e.toLowerCase();if(this.filterText===a)return;this.filterText=a;for(let i of this.data||[])if("optgroup"===i.type)if(this.options.filterGroup){let r=`${i?.label??""}`;if(null!=i){let o=this.options.customFilter({label:Lv(r.toString().toLowerCase(),this.options.diacriticParser),search:Lv(a,this.options.diacriticParser),originalLabel:r,originalSearch:e,row:i});i.visible=o;for(let d of i.children)d&&(d.visible=o)}}else{for(let r of i.children)if(null!=r){let o=`${r?.text??""}`;r.visible=this.options.customFilter({text:Lv(o.toString().toLowerCase(),this.options.diacriticParser),search:Lv(a,this.options.diacriticParser),originalText:o,originalSearch:e,row:r,parent:i})}i.visible=i.children.filter(r=>r?.visible).length>0}else{let r=`${i?.text??""}`;i.visible=this.options.customFilter({text:Lv(r.toString().toLowerCase(),this.options.diacriticParser),search:Lv(a,this.options.diacriticParser),originalText:r,originalSearch:e,row:i})}let u=this.initListItems();this.initSelected(t),this.updateSelected(u),t||this.options.onFilter(e)}adjustDropHeight(t){let e="top"!==t,r=(this.filterParentElm?.getBoundingClientRect().height??0)+(this.okButtonElm?.getBoundingClientRect().height??0)+(this.options.single?0:this.selectAllParentElm?.getBoundingClientRect().height??0)+5,{bottom:o,top:d}=XM(this.parentElm),h=this.options.maxHeight;if(h=e?o-r-this.options.adjustedHeightPadding:d-r-this.options.adjustedHeightPadding,!this.options.maxHeight||this.options.maxHeight&&ho)e="bottom";else if(o>a&&u>a){if(this.options.container){let E=i-o;E<0&&(E=0),(E>0||t)&&(e="top",this.dropElm.style.top=`${E<0?0:E}px`)}else e="top",this.dropElm.classList.add(e);this.dropElm.classList.remove("bottom")}h-da.clientHeight?this.getScrollbarWidth():0,o=0;this.dropElm.querySelectorAll("li label").forEach(d=>{d.scrollWidth>o&&(o=d.scrollWidth)}),o+=u+r,othis.options.maxWidth&&(o=this.options.maxWidth),this.options.minWidth&&o"string"==typeof t?uL(document.querySelectorAll(t),e):t instanceof Node?uL([t],e):uL(t,e);function uL(t,e){let a=Array.from(t),u=[];for(let i=0;idelete r._multipleSelect,o.onAfterHardDestroyed=()=>u[i]=null,u.push(r._multipleSelect)}catch(o){console.error(o)}}return 1===u.length?u[0]:u}Tv.defaults=I0.DEFAULTS,Tv.locales={...HG},Tv.methods=I0.METHODS,typeof window<"u"&&(window.multipleSelect=Tv);class KG{constructor(e,a,u,i=!0){this.translaterService=e,this.collectionService=a,this.rxjs=u,this._isMultipleSelect=!0,this._collectionLength=0,this._shouldTriggerQuery=!0,this.isFilled=!1,this.enableTranslateLabel=!1,this.subscriptions=[],this._isMultipleSelect=i}get collectionOptions(){return this.columnDef?.filter?.collectionOptions??{}}get columnFilter(){return this.columnDef?.filter??{}}get customStructure(){return this.columnDef?.filter?.customStructure}get gridOptions(){return this.grid?.getOptions()??{}}get defaultOperator(){return this.isMultipleSelect?re.in:re.equal}get filterOptions(){return{...this.gridOptions.defaultFilterOptions?.select,...this.columnFilter?.filterOptions}}get isMultipleSelect(){return this._isMultipleSelect}get msInstance(){return this._msInstance}get selectOptions(){return this.defaultOptions}get operator(){return this.columnFilter?.operator??this.defaultOperator}set operator(e){this.columnFilter&&(this.columnFilter.operator=e)}init(e){var a=this;if(!e)throw new Error('[Slickgrid-Universal] A filter must always have an "init()" with valid arguments.');if(this.grid=e.grid,this.callback=e.callback,this.columnDef=e.columnDef,this.searchTerms=(e.hasOwnProperty("searchTerms")?e.searchTerms:[])||[],this.filterContainerElm=e.filterContainerElm,!this.grid||!this.columnDef||!this.columnFilter||!this.columnFilter.collection&&!this.columnFilter.collectionAsync)throw new Error("[Slickgrid-Universal] You need to pass a \"collection\" (or \"collectionAsync\") for the MultipleSelect/SingleSelect Filter to work correctly. Also each option should include a value/label pair (or value/labelKey when using Locale). For example:: { filter: model: Filters.multipleSelect, collection: [{ value: true, label: 'True' }, { value: false, label: 'False'}] }");if(this.enableTranslateLabel=this.columnFilter?.enableTranslateLabel??!1,this.labelName=this.customStructure?.label??"label",this.labelPrefixName=this.customStructure?.labelPrefix??"labelPrefix",this.labelSuffixName=this.customStructure?.labelSuffix??"labelSuffix",this.optionLabel=this.customStructure?.optionLabel??"value",this.valueName=this.customStructure?.value??"value",this.enableTranslateLabel&&(!this.translaterService||"function"!=typeof this.translaterService.translate))throw new Error('[select-filter] The Translate Service is required for the Select Filter to work correctly when "enableTranslateLabel" is set.');this._locales=this.gridOptions?.locales??ae.locales,this.initMultipleSelectTemplate();let u=this.gridOptions?.defaultFilterPlaceholder||"";this.columnFilter?.placeholder&&(u=this.columnFilter.placeholder),this.defaultOptions.placeholder=u||"",this._isMultipleSelect&&this.columnDef?.filter&&(this.columnDef.filter.emptySearchTermReturnAllValues=this.columnDef.filter?.emptySearchTermReturnAllValues??!1);const i=this.columnFilter.collection||[];return new Promise(function(){var r=Au(function*(o,d){try{let h;a.columnFilter.collectionAsync&&!a.columnFilter.collection?(h=uO(a.columnFilter.collectionAsync,a.columnDef,a.renderDomElement.bind(a),a.rxjs,a.subscriptions),o(h)):(h=i,a.renderDomElement(i),o(i)),(a.columnFilter.collectionAsync||a.columnFilter.enableCollectionWatch)&&(yield h??a.columnFilter.collectionAsync,a.watchCollectionChanges())}catch(h){d(h)}});return function(o,d){return r.apply(this,arguments)}}())}clear(e=!0){this._msInstance&&this._collectionLength>0&&(this._msInstance.setSelects([]),this.filterElm?.classList.remove("filled"),this._msInstance?.getParentElement()?.classList.remove("filled"),this.searchTerms=[],this._shouldTriggerQuery=e,this.callback(void 0,{columnDef:this.columnDef,clearFilterTriggered:!0,shouldTriggerQuery:this._shouldTriggerQuery}),this._shouldTriggerQuery=!0)}destroy(){"function"==typeof this._msInstance?.destroy&&this._msInstance.destroy(),this.filterElm?.remove(),D2(this.subscriptions)}getValues(){return this._msInstance?.getSelects()??[]}setValues(e,a){void 0!==e&&this._msInstance&&(e=Array.isArray(e)?e.every(u=>y2(u))?e.map(String):e:[e],this._msInstance.setSelects(e)),this.updateFilterStyle(this.getValues().length>0),this.operator=a||this.defaultOperator}filterCollection(e){let a=e;if(this.columnFilter&&this.columnFilter.collectionFilterBy){const u=this.columnFilter.collectionFilterBy,i=this.columnFilter.collectionOptions?.filterResultAfterEachPass||null;a=this.collectionService?.filterCollection(a,u,i)||[]}return a}sortCollection(e){let a=e;if(this.columnFilter&&this.columnFilter.collectionSortBy){const u=this.columnFilter.collectionSortBy;a=this.collectionService?.sortCollection(this.columnDef,a,u,this.enableTranslateLabel)||[]}return a}watchCollectionChanges(){this.columnFilter?.collection&&(p2(this.columnFilter.collection,this.watchCallback.bind(this)),Gz(this.columnFilter,"collection",this.propertyObserverCallback.bind(this)))}propertyObserverCallback(e){this.renderDomElement(e||[]),this.columnFilter.collection&&p2(this.columnFilter.collection,this.watchCallback.bind(this))}watchCallback(e){this.renderDomElement(this.columnFilter.collection||e||[])}renderDomElement(e){if(!Array.isArray(e)&&this.collectionOptions?.collectionInsideObjectProperty){e=Xu(e,this.collectionOptions.collectionInsideObjectProperty||"")}if(!Array.isArray(e))throw new Error('The "collection" passed to the Select Filter is not a valid array.');let a=[];if(e.length>0&&(a=[...e]),this.collectionOptions?.addBlankEntry&&Array.isArray(a)&&a.length>0&&""!==a[0][this.valueName]&&a.unshift(this.createBlankEntry()),this.collectionOptions?.addCustomFirstEntry&&Array.isArray(a)&&a.length>0&&a[0][this.valueName]!==this.collectionOptions.addCustomFirstEntry[this.valueName]&&a.unshift(this.collectionOptions.addCustomFirstEntry),this.collectionOptions?.addCustomLastEntry&&Array.isArray(a)&&a.length>0){a[a.length-1][this.valueName]!==this.collectionOptions.addCustomLastEntry[this.valueName]&&a.push(this.collectionOptions.addCustomLastEntry)}let u=a;u=this.filterCollection(u),u=this.sortCollection(u);const i=PO("filter",u,this.columnDef,this.grid,this.isMultipleSelect,this.translaterService,this.searchTerms||[]);this.isFilled=i.hasFoundSearchTerm,this.createFilterElement(i.selectElement,i.dataCollection),this._collectionLength=u.length}createBlankEntry(){const e={[this.labelName]:"",[this.valueName]:""};return this.labelPrefixName&&(e[this.labelPrefixName]=""),this.labelSuffixName&&(e[this.labelSuffixName]=""),e}createFilterElement(e,a){const u=this.columnDef?.id??"";this.elementName=`filter-${u}`,this.defaultOptions.name=this.elementName,Ct(this.filterContainerElm),this.filterElm=e,this.filterElm.dataset.columnId=`${u}`,this.updateFilterStyle(this.isFilled),this.filterContainerElm.appendChild(e),this.filterElmOptions={...this.defaultOptions,...this.filterOptions,data:a},this._msInstance=Tv(e,this.filterElmOptions)}initMultipleSelectTemplate(){const e=this.gridOptions?.enableTranslate??!1,u={autoAdjustDropHeight:!0,autoAdjustDropPosition:!0,autoAdjustDropWidthByTextSize:!0,name:`${this.columnDef?.id??""}`,container:"body",darkMode:!!this.gridOptions.darkMode,filter:!1,maxHeight:275,single:!0,singleRadio:!0,showSearchClear:!0,renderOptionLabelAsHtml:this.columnFilter?.enableRenderHtml??!1,sanitizer:i=>this.grid.sanitizeHtmlString(i),onClose:()=>this.onTriggerEvent(),onClear:()=>this.clear()};if(this._isMultipleSelect){u.single=!1,u.singleRadio=!1,u.showOkButton=!0,u.displayTitle=!0;const i=Gl(this.gridOptions);u.countSelectedText=e&&this.translaterService?.translate?this.translaterService.translate(`${i}X_OF_Y_SELECTED`):this._locales?.TEXT_X_OF_Y_SELECTED,u.allSelectedText=e&&this.translaterService?.translate?this.translaterService.translate(`${i}ALL_SELECTED`):this._locales?.TEXT_ALL_SELECTED,u.noMatchesFoundText=e&&this.translaterService?.translate?this.translaterService.translate(`${i}NO_MATCHES_FOUND`):this._locales?.TEXT_NO_MATCHES_FOUND,u.okButtonText=e&&this.translaterService?.translate?this.translaterService.translate(`${i}OK`):this._locales?.TEXT_OK,u.selectAllText=e&&this.translaterService?.translate?this.translaterService.translate(`${i}SELECT_ALL`):this._locales?.TEXT_SELECT_ALL}this.defaultOptions=u}onTriggerEvent(){if(this._msInstance){const e=this.getValues();this.updateFilterStyle(Array.isArray(e)&&e.length>1||1===e.length&&""!==e[0]),this.searchTerms=e,this.callback(void 0,{columnDef:this.columnDef,operator:this.operator,searchTerms:e,shouldTriggerQuery:this._shouldTriggerQuery}),this._shouldTriggerQuery=!0}}updateFilterStyle(e){e?(this.isFilled=!0,this.filterElm?.classList.add("filled"),this._msInstance?.getParentElement()?.classList.add("filled")):(this.isFilled=!1,this.filterElm?.classList.remove("filled"),this._msInstance?.getParentElement()?.classList.remove("filled"))}}const ie={autocompleter:class m0e{constructor(e,a,u){this.translaterService=e,this.collectionService=a,this.rxjs=u,this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0,this.searchTerms=[],this.isFilled=!1,this.isItemSelected=!1,this.valueName="label",this.enableTranslateLabel=!1,this.subscriptions=[],this._bindEventService=new wi}get autocompleterOptions(){return this._autocompleterOptions||{}}get collectionOptions(){return this.columnDef?.filter?.collectionOptions??{}}get collection(){return this._collection}get columnFilter(){return this.columnDef?.filter||{}}get filterDomElement(){return this._filterElm}get filterOptions(){return{...this.gridOptions.defaultFilterOptions?.autocompleter,...this.columnFilter?.filterOptions}}get customStructure(){let e=this.columnFilter?.customStructure;const a=this.columnFilter?.type??this.columnDef?.type;return!e&&a===F.object&&this.columnDef?.dataKey&&this.columnDef?.labelKey&&(e={label:this.columnDef.labelKey,value:this.columnDef.dataKey}),e}get defaultOperator(){return re.equal}get gridOptions(){return this.grid?.getOptions()??{}}get instance(){return this._instance}get operator(){return this.columnFilter?.operator??this.defaultOperator}set operator(e){this.columnFilter&&(this.columnFilter.operator=e)}init(e){var a=this;if(!e)throw new Error('[Slickgrid-Universal] A filter must always have an "init()" with valid arguments.');if(this.grid=e.grid,this.callback=e.callback,this.columnDef=e.columnDef,this.searchTerms=(e.hasOwnProperty("searchTerms")?e.searchTerms:[])||[],this.filterContainerElm=e.filterContainerElm,!(this.grid&&this.columnDef&&this.columnFilter&&(this.columnFilter.collection||this.columnFilter.collectionAsync||this.columnFilter.filterOptions)))throw new Error("[Slickgrid-Universal] You need to pass a \"collection\" (or \"collectionAsync\") for the AutoComplete Filter to work correctly. Also each option should include a value/label pair (or value/labelKey when using Locale). For example:: { filter: model: Filters.autocompleter, collection: [{ value: true, label: 'True' }, { value: false, label: 'False'}] }");this.enableTranslateLabel=this.columnFilter?.enableTranslateLabel??!1,this.labelName=this.customStructure?.label??"label",this.valueName=this.customStructure?.value??"value",this.labelPrefixName=this.customStructure?.labelPrefix??"labelPrefix",this.labelSuffixName=this.customStructure?.labelSuffix??"labelSuffix",this._locales=this.gridOptions?.locales??ae.locales;const u=this.columnFilter.collection;return this._collection=u,this.renderDomElement(u),new Promise(function(){var i=Au(function*(r,o){try{const d=a.columnFilter.collectionAsync;let h;d&&!a.columnFilter.collection?(h=uO(d,a.columnDef,a.renderDomElement.bind(a),a.rxjs,a.subscriptions),r(h)):(h=u,r(u)),(d||a.columnFilter.enableCollectionWatch)&&(yield h??d,a.watchCollectionChanges())}catch(d){o(d)}});return function(r,o){return i.apply(this,arguments)}}())}clear(e=!0){this._filterElm&&(this._clearFilterTriggered=!0,this._shouldTriggerQuery=e,this.searchTerms=[],this._filterElm.value="",this._filterElm.dispatchEvent(new CustomEvent("input")),this._filterElm.classList.remove("filled"))}destroy(){"function"==typeof this._instance?.destroy&&this._instance.destroy(),this._filterElm,this._filterElm?.remove?.(),this._collection=void 0,this._bindEventService.unbindAll(),D2(this.subscriptions)}getValues(){return this._filterElm?.value}setValues(e,a){e&&this._filterElm&&(this._filterElm.value=e);const u=""!==this.getValues()?"add":"remove";this._filterElm?.classList[u]("filled"),this.operator=a||this.defaultOperator}filterCollection(e){let a=e;if(this.columnFilter&&this.columnFilter.collectionFilterBy){const u=this.columnFilter.collectionFilterBy,i=this.columnFilter.collectionOptions&&this.columnFilter.collectionOptions.filterResultAfterEachPass||null;a=this.collectionService?.filterCollection(a,u,i)||[]}return a}sortCollection(e){let a=e;if(this.columnFilter&&this.columnFilter.collectionSortBy){const u=this.columnFilter.collectionSortBy;a=this.collectionService?.sortCollection(this.columnDef,a,u,this.enableTranslateLabel)||[]}return a}watchCollectionChanges(){this.columnFilter?.collection&&(p2(this.columnFilter.collection,e=>{this.renderDomElement(this.columnFilter.collection||e||[])}),Gz(this.columnFilter,"collection",e=>{this.renderDomElement(e||[]),this.columnFilter.collection&&p2(this.columnFilter.collection,a=>{this.renderDomElement(this.columnFilter.collection||a||[])})}))}renderDomElement(e){if(!Array.isArray(e)&&this.collectionOptions?.collectionInsideObjectProperty){e=Xu(e,this.collectionOptions.collectionInsideObjectProperty||"")}let a=e;a&&(a=this.filterCollection(a),a=this.sortCollection(a));const u=Array.isArray(this.searchTerms)&&this.searchTerms.length>=0?this.searchTerms[0]:"";this._collection=a,this._filterElm=this.createFilterElement(a,u),this._bindEventService.bind(this._filterElm,"input",this.handleOnInputChange.bind(this)),this._bindEventService.bind(this._filterElm,"blur",()=>{this.isItemSelected||this.clear()})}createFilterElement(e,a){this._collection=e;const u=this.columnDef?.id??"";Ct(this.filterContainerElm);let i=this.gridOptions?.defaultFilterPlaceholder??"";this.columnFilter?.placeholder&&(i=this.columnFilter.placeholder),this._filterElm=T("input",{type:"text",ariaLabel:this.columnFilter?.ariaLabel??`${Rs(u+"")} Search Filter`,autocomplete:"off",ariaAutoComplete:"none",placeholder:i,className:`form-control search-filter filter-${u} slick-autocomplete-container`,value:a??"",dataset:{columnid:`${u}`}});const r=a;Array.isArray(e)&&(e=e.every(d=>y2(d))?e.map(d=>({label:d,value:d})):e.map(d=>({label:d?.[this.labelName],value:d?.[this.valueName],labelPrefix:d?.[this.labelPrefixName]??"",labelSuffix:d?.[this.labelSuffixName]??""}))),this._autocompleterOptions={input:this._filterElm,debounceWaitMs:200,className:`slick-autocomplete ${this.filterOptions?.className??""}`.trim(),emptyMsg:this.gridOptions.enableTranslate&&this.translaterService?.translate?this.translaterService.translate("NO_ELEMENTS_FOUND"):this._locales?.TEXT_NO_ELEMENTS_FOUND??"No elements found",customize:(d,h,m)=>{m.style.width=""},onSelect:d=>{this.isItemSelected=!0,this.handleSelect(d)},...this.filterOptions},this.gridOptions?.darkMode&&(this._autocompleterOptions.className+=" slick-dark-mode"),this.autocompleterOptions.className=Vt(this.autocompleterOptions.className).join(" "),this._autocompleterOptions.renderItem?.layout?(this._autocompleterOptions.className+=` autocomplete-custom-${_2(this._autocompleterOptions.renderItem.layout)}`,this._autocompleterOptions.render=this.renderCustomItem.bind(this)):Array.isArray(e)?this._autocompleterOptions.render=this._autocompleterOptions.render?.bind(this)??this.renderCollectionItem.bind(this):this._autocompleterOptions.render||(this._autocompleterOptions.render=this.renderRegularItem.bind(this)),this.filterOptions?.fetch?(tO(this._filterElm,this._autocompleterOptions),this._instance=m7(this._autocompleterOptions)):this._instance=m7({...this._autocompleterOptions,fetch:(d,h)=>{e&&h(e.filter(m=>(("string"==typeof m?m:m?.label)||"").toLowerCase().includes(d.toLowerCase())))}}),this._filterElm.value=r??"";const o=T("div",{className:"autocomplete-filter-container"});return o.appendChild(this._filterElm),o.appendChild(T("span")),a&&this._filterElm.classList.add("filled"),this.filterContainerElm.appendChild(o),this.filterContainerElm.appendChild(document.createElement("span")),this._filterElm}handleSelect(e){if(void 0!==e){const u=this.filterOptions?.renderItem??!1,i="string"==typeof e?e:u?e[this.labelName]:e.label;let r="string"==typeof e?e:u?e[this.valueName]:e.value;r=this.trimWhitespaceWhenEnabled(r);const o=""===r?"remove":"add";this._filterElm?.classList[o]("filled"),this.setValues(i),this.callback(void 0,{columnDef:this.columnDef,operator:this.operator,searchTerms:[r],shouldTriggerQuery:this._shouldTriggerQuery}),this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0}return!1}handleOnInputChange(e){let a=e?.target?.value??"";const u=this.filterOptions.triggerOnEveryKeyStroke??!1;if(a=this.trimWhitespaceWhenEnabled(a),this._clearFilterTriggered||""===a||u){const i={columnDef:this.columnDef,shouldTriggerQuery:this._shouldTriggerQuery};this._clearFilterTriggered?i.clearFilterTriggered=this._clearFilterTriggered:(i.operator=this.operator,i.searchTerms=[a]),""!==a?(this.isItemSelected=!0,this._filterElm?.classList.add("filled")):(this.isItemSelected=!1,this._filterElm?.classList.remove("filled")),this.callback(e,i)}this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0}renderRegularItem(e){return T("div",{textContent:("string"==typeof e?e:e?.label??"")||""})}renderCustomItem(e){const a=this._autocompleterOptions?.renderItem?.templateCallback(e)??"",u=document.createElement("div");return this.grid.applyHtmlCode(u,a),u}renderCollectionItem(e){const a=this.columnFilter?.enableRenderHtml??!1,o=(e.labelPrefix||"")+(e.label||"")+(e.labelSuffix||""),d=this.grid.sanitizeHtmlString(o)||"",h=document.createElement("div");return h[a?"innerHTML":"textContent"]=d,h}trimWhitespaceWhenEnabled(e){let a=e;const u=this.gridOptions.enableFilterTrimWhiteSpace||this.columnFilter.enableTrimWhiteSpace;return"string"==typeof e&&u&&(a=e.trim()),a}},compoundDate:class Bse extends LO{constructor(e){super(e),this.translaterService=e,this.inputFilterType="compound"}},compoundInput:IG,compoundInputNumber:class Xde extends Hh{constructor(e){super(e),this.translaterService=e,this.inputType="number",this.inputFilterType="compound"}},compoundInputPassword:class ece extends Hh{constructor(e){super(e),this.translaterService=e,this.inputType="password",this.inputFilterType="compound"}},compoundInputText:IG,compoundSlider:class tce extends $M{constructor(e){super(e),this.translaterService=e,this.sliderType="compound"}},dateRange:class uce extends LO{constructor(e){super(e),this.translaterService=e,this.inputFilterType="range"}},input:Hh,inputMask:class ice extends Hh{constructor(e){super(e),this.translaterService=e,this._inputMask="",this.inputType="text"}get inputMask(){return this._inputMask}init(e){if(!e)throw new Error('[Slickgrid-Universal] A filter must always have an "init()" with valid arguments.');if(this.grid=e.grid,this.callback=e.callback,this.columnDef=e.columnDef,this.searchTerms=(e.hasOwnProperty("searchTerms")?e.searchTerms:[])||[],this._cellContainerElm=e.filterContainerElm,this.columnDef?.params?.mask?this._inputMask=this.columnDef.params.mask:this.columnFilter?.params?.mask&&(this._inputMask=this.columnFilter.params.mask),!this._inputMask)throw new Error("[Slickgrid-Universal] The Filters.inputMask requires the mask to be passed in the filter params or the column definition params\n for example:: this.columnDefinitions: [{ id: 'phone', field: 'phone', filter: { model: Filters.inputMask, params: { mask: '000-000-0000' }}}]");const a=Array.isArray(this.searchTerms)&&this.searchTerms.length>=0?this.searchTerms[0]:"";this.createDomFilterElement(a),this._bindEventService.bind(this._filterInputElm,["keyup","blur","change"],this.onTriggerEvent.bind(this))}onTriggerEvent(e,a=!1){let u="";if(e?.target?.value){let i=e?.target?.value??"";const r=this.gridOptions.enableFilterTrimWhiteSpace||this.columnFilter.enableTrimWhiteSpace;"string"==typeof i&&r&&(i=i.trim());const o=this.unmaskValue(i),d=this.maskValue(o);u=o,e?.keyCode>=48&&(this._filterInputElm.value=d,e.preventDefault())}a?(this.callback(e,{columnDef:this.columnDef,clearFilterTriggered:a,shouldTriggerQuery:this._shouldTriggerQuery}),this._filterInputElm.classList.remove("filled")):(this._filterInputElm.classList.add("filled"),this.callback(e,{columnDef:this.columnDef,operator:this.operator,searchTerms:[u],shouldTriggerQuery:this._shouldTriggerQuery})),this._shouldTriggerQuery=!0}maskValue(e){let a=0,u="";return this._inputMask&&(u=this._inputMask.replace(/[09A]/gi,i=>(("0"===i||"9"===i)&&/\d+/g.test(e[a])||"A"===i.toUpperCase()&&/[^\d]+/gi.test(e[a]))&&e[a++]||"")),u}unmaskValue(e){const a=e.replace(/[^0-9a-z]*/gi,""),u=this._inputMask.replace(/[^0-9a-z]*/gi,"");let i="";for(let r=0;r=r)||"inclusive"===o&&(Er)))h=!1,m=a||ae.VALIDATION_EDITOR_TEXT_LENGTH_BETWEEN.replace(/{{minLength}}|{{maxLength}}/gi,v=>d[v]);else if(void 0!==i&&null!==E&&("exclusive"===o&&E<=i||"inclusive"===o&&null!==E&&Ed[k])}else if(void 0!==r&&null!==E&&("exclusive"===o&&E>=r||"inclusive"===o&&null!==E&&E>r)){h=!1;const v="inclusive"===o?ae.VALIDATION_EDITOR_TEXT_MAX_LENGTH_INCLUSIVE:ae.VALIDATION_EDITOR_TEXT_MAX_LENGTH;m=a||v.replace(/{{maxLength}}/gi,k=>d[k])}return{valid:h,msg:m}}function UG(t,e){const a=isNaN(t)?null:parseFloat(t),u=e.decimal||0,i=e.required,r=e.minValue,o=e.maxValue,d=e.operatorConditionalType||"inclusive",h=e.errorMessage,m={"{{minValue}}":r,"{{maxValue}}":o,"{{minDecimal}}":0,"{{maxDecimal}}":u};let E=!0,v="";if("function"==typeof e.validator)return e.validator(t,e.editorArgs);if(i&&""===t)E=!1,v=h||ae.VALIDATION_REQUIRED_FIELD;else if(""!==t&&(isNaN(t)||0===u&&!/^[-+]?(\d*(\.)?(\d)*)$/.test(t)))E=!1,v=h||ae.VALIDATION_EDITOR_VALID_NUMBER;else if(void 0!==r&&void 0!==o&&null!==a&&("exclusive"===d&&(a<=+r||a>=+o)||"inclusive"===d&&(a<+r||a>+o)))E=!1,v=h||ae.VALIDATION_EDITOR_NUMBER_BETWEEN.replace(/{{minValue}}|{{maxValue}}/gi,k=>m[k]);else if(void 0!==r&&null!==a&&("exclusive"===d&&a<=+r||"inclusive"===d&&a<+r)){E=!1;const k="inclusive"===d?ae.VALIDATION_EDITOR_NUMBER_MIN_INCLUSIVE:ae.VALIDATION_EDITOR_NUMBER_MIN;v=h||k.replace(/{{minValue}}/gi,x=>m[x])}else if(void 0!==o&&null!==a&&("exclusive"===d&&a>=+o||"inclusive"===d&&a>+o)){E=!1;const k="inclusive"===d?ae.VALIDATION_EDITOR_NUMBER_MAX_INCLUSIVE:ae.VALIDATION_EDITOR_NUMBER_MAX;v=h||k.replace(/{{maxValue}}/gi,x=>m[x])}else u>0&&!new RegExp(`^[-+]?(\\d*(\\.)?(\\d){0,${u}})$`).test(t)&&(E=!1,v=h||ae.VALIDATION_EDITOR_DECIMAL_BETWEEN.replace(/{{minDecimal}}|{{maxDecimal}}/gi,k=>m[k]));return{valid:E,msg:v}}function JG(t,e){let a=isNaN(t)?null:parseInt(t,10);null!==a&&isNaN(a)&&(a=null);const u=e.errorMessage,i=e.required,r=e.minValue,o=e.maxValue,d=e.operatorConditionalType||"inclusive",h={"{{minValue}}":r,"{{maxValue}}":o};let m=!0,E="";if(e.validator)return e.validator(t,e.editorArgs);if(i&&""===t)m=!1,E=u||ae.VALIDATION_REQUIRED_FIELD;else if(""===t||!isNaN(t)&&/^[+-]?\d+$/.test(t)){if(void 0!==r&&void 0!==o&&null!==a&&("exclusive"===d&&(a<=+r||a>=+o)||"inclusive"===d&&(a<+r||a>+o)))m=!1,E=u||ae.VALIDATION_EDITOR_INTEGER_BETWEEN.replace(/{{minValue}}|{{maxValue}}/gi,v=>h[v]);else if(void 0!==r&&null!==a&&("exclusive"===d&&a<=+r||"inclusive"===d&&null!==a&&a<+r)){m=!1;const v="inclusive"===d?ae.VALIDATION_EDITOR_INTEGER_MIN_INCLUSIVE:ae.VALIDATION_EDITOR_INTEGER_MIN;E=u||v.replace(/{{minValue}}/gi,k=>h[k])}else if(void 0!==o&&null!==a&&("exclusive"===d&&a>=+o||"inclusive"===d&&null!==a&&a>+o)){m=!1;const v="inclusive"===d?ae.VALIDATION_EDITOR_INTEGER_MAX_INCLUSIVE:ae.VALIDATION_EDITOR_INTEGER_MAX;E=u||v.replace(/{{maxValue}}/gi,k=>h[k])}}else m=!1,E=u||ae.VALIDATION_EDITOR_VALID_INTEGER;return{valid:m,msg:E}}class Y7{constructor(e,a="text"){if(this.args=e,this._inputType="text",this._isValueTouched=!1,this.disabled=!1,!e)throw new Error("[Slickgrid-Universal] Something is wrong with this grid, an Editor must always have valid arguments.");this.grid=e.grid,this.gridOptions=e.grid&&e.grid.getOptions(),this._bindEventService=new wi,this.inputType=a,this.init()}get columnDef(){return this.args.column}get columnEditor(){return this.columnDef?.editor||{}}get dataContext(){return this.args.item}get editorDomElement(){return this._input}get hasAutoCommitEdit(){return this.gridOptions.autoCommitEdit??!1}get inputType(){return this._inputType}set inputType(e){this._inputType=e}get validator(){return this.columnEditor?.validator??this.columnDef?.validator}init(){const e=this.columnDef?.id??"",a=this.args.compositeEditorOptions;this._input=T("input",{type:this._inputType||"text",autocomplete:"off",ariaAutoComplete:"none",ariaLabel:this.columnEditor?.ariaLabel??`${Rs(e+"")} Input Editor`,className:`editor-text editor-${e}`,placeholder:this.columnEditor?.placeholder??"",title:this.columnEditor?.title??""}),"number"===this.inputType&&(this._input.step=`${void 0!==this.columnEditor.valueStep?this.columnEditor.valueStep:this.getInputDecimalSteps()}`);const u=this.args.container;u&&"function"==typeof u.appendChild&&u.appendChild(this._input),this._bindEventService.bind(this._input,"focus",()=>this._input?.select()),this._bindEventService.bind(this._input,"keydown",i=>{this._isValueTouched=!0,this._lastInputKeyEvent=i,("ArrowLeft"===i.key||"ArrowRight"===i.key)&&i.stopImmediatePropagation()}),this.hasAutoCommitEdit&&!a&&this._bindEventService.bind(this._input,["focusout","blur"],()=>{this._isValueTouched=!0,this.save()}),a&&(this._bindEventService.bind(this._input,["input","paste"],this.handleOnInputChange.bind(this)),"number"===this.inputType&&this._bindEventService.bind(this._input,"wheel",this.handleOnMouseWheel.bind(this),{passive:!0}))}destroy(){this._bindEventService.unbindAll(),this._input?.remove?.()}disable(e=!0){const a=this.disabled;if(this.disabled=e,this._input)if(e){this._input.setAttribute("disabled","disabled");const u=this.getValue();a!==e&&this.args?.compositeEditorOptions&&""!==u&&this.reset("",!0,!0)}else this._input.removeAttribute("disabled")}focus(){this.grid.focus(),this._input?.focus()}getDecimalPlaces(){let e=this.columnEditor?.decimal??this.columnEditor?.params?.decimalPlaces??void 0;return void 0===e&&(e=0),e||0===e?e:null}getInputDecimalSteps(){const e=this.getDecimalPlaces();let a="";for(let u=1;u0?`0.${a}1`:"1"}show(){this.args?.compositeEditorOptions&&this.applyInputUsabilityState()}getValue(){return this._input?.value||""}setValue(e,a=!1,u=!0){if(this._input&&(this._input.value=`${e}`,a)){this.applyValue(this.args.item,this.serializeValue());const i=this.args.compositeEditorOptions;i&&u&&this.handleChangeOnCompositeEditor(null,i,"system")}}applyValue(e,a){const u=this.columnDef&&this.columnDef.field;if(void 0!==u){const i=u?.indexOf(".")>0,o=this.validate(null,a)?.valid?a:"";if(i){xr(e,this.columnEditor?.complexObjectPath??u??"",o)}else u&&(e[u]=o)}}isValueChanged(){const e=this._input?.value,a=this._lastInputKeyEvent?.key;return!(!this.columnEditor?.alwaysSaveOnEnterKey||"Enter"!==a)||!(""===e&&(null===this._originalValue||void 0===this._originalValue))&&e!==this._originalValue}isValueTouched(){return this._isValueTouched}loadValue(e){const a=this.columnDef?.field;if(e&&void 0!==a&&this._input){const i=a?.indexOf(".")>0?Xu(e,a):e.hasOwnProperty(a)&&e[a]||"";this._originalValue=i,this._input.value=this._originalValue,this._input.select()}}reset(e,a=!0,u=!1){const i=e??this._originalValue??"";this._input&&(this._originalValue=i,this._input.value=`${i}`),this._isValueTouched=!1;const r=this.args.compositeEditorOptions;if(r&&a){const o=!u;this.handleChangeOnCompositeEditor(null,r,"user",o)}}save(){const e=this.validate(),a=e&&e.valid||!1;this.hasAutoCommitEdit&&a?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}serializeValue(){return this._input?.value??""}validate(e,a){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return q7(void 0!==a?a:this._input&&this._input.value,{editorArgs:this.args,errorMessage:this.columnEditor.errorMessage,minLength:this.columnEditor.minLength,maxLength:this.columnEditor.maxLength,operatorConditionalType:this.columnEditor.operatorConditionalType,required:!this.args?.compositeEditorOptions&&this.columnEditor.required,validator:this.validator})}applyInputUsabilityState(){const e=this.grid.getActiveCell(),a=this.grid.onBeforeEditCell.notify({...e,item:this.dataContext,column:this.args.column,grid:this.grid,target:"composite",compositeEditorOptions:this.args.compositeEditorOptions}).getReturnValue();this.disable(!1===a)}handleChangeOnCompositeEditor(e,a,u="user",i=!1){const r=this.grid.getActiveCell(),o=this.args.column,d=this.columnDef?.id??"",h=this.dataContext,m=this.grid,E=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,E),this.applyValue(a.formValues,E);const v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(i||this.disabled&&v&&a.formValues.hasOwnProperty(d))&&delete a.formValues[d],m.onCompositeEditorChange.notify({...r,item:h,grid:m,column:o,formValues:a.formValues,editors:a.editors,triggeredBy:u},new jt(e))}handleOnInputChange(e){this._isValueTouched=!0;const a=this.args.compositeEditorOptions;if(a){const u=this.gridOptions?.editorTypingDebounce??500;clearTimeout(this._timer),this._timer=setTimeout(()=>this.handleChangeOnCompositeEditor(e,a),u)}}handleOnMouseWheel(e){this._isValueTouched=!0;const a=this.args.compositeEditorOptions;a&&this.handleChangeOnCompositeEditor(e,a)}}class ZG{constructor(e,a,u=-1){if(this.args=e,this.isMultipleSelect=a,this.delayOpening=u,this._isValueTouched=!1,this._isDisposingOrCallingSave=!1,this.disabled=!1,this.enableTranslateLabel=!1,this.finalCollection=[],!e)throw new Error("[Slickgrid-Universal] Something is wrong with this grid, an Editor must always have valid arguments.");this.grid=e.grid,this.gridOptions=this.grid.getOptions()||{},this.gridOptions?.translater&&(this._translaterService=this.gridOptions.translater),this._locales=this.gridOptions.locales||ae.locales;const i=this.columnDef?.id??"";this.elementName=`editor-${i}`;const r=this.args.compositeEditorOptions,o={autoAdjustDropHeight:!0,autoAdjustDropPosition:!0,autoAdjustDropWidthByTextSize:!0,container:"body",darkMode:!!this.gridOptions.darkMode,filter:!1,maxHeight:275,minHeight:25,name:this.elementName,single:!0,singleRadio:!0,renderOptionLabelAsHtml:this.columnEditor?.enableRenderHtml??!1,sanitizer:d=>this.grid.sanitizeHtmlString(d),onClick:()=>this._isValueTouched=!0,onCheckAll:()=>this._isValueTouched=!0,onUncheckAll:()=>this._isValueTouched=!0,onClose:d=>{"key.escape"!==d&&"body.click"!==d&&(this.hasAutoCommitEdit||this.isValueChanged())?r?this.handleChangeOnCompositeEditor(r):(this._isDisposingOrCallingSave=!0,this.save(this.hasAutoCommitEdit)):"key.escape"===d&&this.cancel()}};if(a)if(o.single=!1,o.singleRadio=!1,o.displayTitle=!0,o.showOkButton=!0,this._translaterService?.getCurrentLanguage()){const d=Gl(this.gridOptions);o.countSelectedText=this._translaterService.translate(`${d}X_OF_Y_SELECTED`),o.allSelectedText=this._translaterService.translate(`${d}ALL_SELECTED`),o.selectAllText=this._translaterService.translate(`${d}SELECT_ALL`),o.okButtonText=this._translaterService.translate(`${d}OK`),o.noMatchesFoundText=this._translaterService.translate(`${d}NO_MATCHES_FOUND`)}else o.countSelectedText=this._locales?.TEXT_X_OF_Y_SELECTED,o.allSelectedText=this._locales?.TEXT_ALL_SELECTED,o.selectAllText=this._locales?.TEXT_SELECT_ALL,o.okButtonText=this._locales?.TEXT_OK,o.noMatchesFoundText=this._locales?.TEXT_NO_MATCHES_FOUND;this.defaultOptions=o,this.init()}get collection(){return this.columnEditor?.collection??[]}get collectionOptions(){return this.columnEditor?.collectionOptions}get columnDef(){return this.args.column}get columnEditor(){return this.columnDef?.editor??{}}get dataContext(){return this.args.item}get editorDomElement(){return this.editorElm}get editorOptions(){return{...this.gridOptions.defaultEditorOptions?.select,...this.columnEditor?.editorOptions}}get isCompositeEditor(){return!!this.args?.compositeEditorOptions}get customStructure(){return this.columnDef?.editor?.customStructure}get hasAutoCommitEdit(){return this.gridOptions.autoCommitEdit??!1}get msInstance(){return this._msInstance}get selectOptions(){return this.defaultOptions}get currentValues(){const e=this._msInstance?.getSelects()??[];if(this.collection.every(i=>"number"==typeof i||"string"==typeof i))return this.collection.filter(i=>e?.some(r=>`${r}`===i?.toString()));const a=this.collectionOptions?.separatorBetweenTextLabels??"",u=this.collectionOptions?.includePrefixSuffixToSelectedValues??!1;return this.collection.filter(i=>e.some(r=>`${r}`===i?.[this.valueName]?.toString())).map(i=>{const r=i[this.valueName];let o=i[this.labelPrefixName]||"",d=i[this.labelSuffixName]||"";const m=(this.columnDef?.field??"")?.indexOf(".")>0,E=this.columnEditor?.serializeComplexValueFormat??"object";return m&&"object"==typeof i&&"object"===E?i:(o=this.enableTranslateLabel&&this._translaterService&&o&&"string"==typeof o?this._translaterService.translate(o||" "):o,d=this.enableTranslateLabel&&this._translaterService&&d&&"string"==typeof d?this._translaterService.translate(d||" "):d,u?[o,r,d].filter(k=>k).join(a):r)})}get currentValue(){const e=this._msInstance?.getSelects()??[],a=e.length?e[0]:"",u=this.columnDef?.field;if(void 0!==u){if(this.collection.every(m=>"number"==typeof m||"string"==typeof m))return hc(this.collection,m=>m?.toString?.()===`${a}`);const i=this.collectionOptions?.separatorBetweenTextLabels??"",r=this.collectionOptions?.includePrefixSuffixToSelectedValues??!1,o=hc(this.collection,m=>m.hasOwnProperty(this.valueName)&&m[this.valueName]?.toString()===`${a}`),d=u?.indexOf(".")>0,h=this.columnEditor?.serializeComplexValueFormat??"object";if(d&&"object"==typeof o&&"object"===h)return o;if(o&&o.hasOwnProperty(this.valueName)){const m=o[this.valueName];if(r){let E=o[this.labelPrefixName]||"",v=o[this.labelSuffixName]||"";return E=this.enableTranslateLabel&&this._translaterService&&E&&"string"==typeof E?this._translaterService.translate(E||" "):E,v=this.enableTranslateLabel&&this._translaterService&&v&&"string"==typeof v?this._translaterService.translate(v||" "):v,[E,m,v].filter(x=>x).join(i)}return m}}return""}get validator(){return this.columnEditor?.validator??this.columnDef?.validator}init(){if(!this.columnDef||!this.columnDef.editor||!this.columnDef.editor.collection&&!this.columnDef.editor.collectionAsync)throw new Error("[Slickgrid-Universal] You need to pass a \"collection\" (or \"collectionAsync\") inside Column Definition Editor for the MultipleSelect/SingleSelect Editor to work correctly.\n Also each option should include a value/label pair (or value/labelKey when using Locale).\n For example: { editor: { collection: [{ value: true, label: 'True' },{ value: false, label: 'False'}] } }");if(this._collectionService=new TO(this._translaterService),this.enableTranslateLabel=this.columnEditor?.enableTranslateLabel??!1,this.labelName=this.customStructure?.label??"label",this.labelPrefixName=this.customStructure?.labelPrefix??"labelPrefix",this.labelSuffixName=this.customStructure?.labelSuffix??"labelSuffix",this.optionLabel=this.customStructure?.optionLabel??"value",this.valueName=this.customStructure?.value??"value",this.enableTranslateLabel&&(!this._translaterService||"function"!=typeof this._translaterService.translate))throw new Error('[Slickgrid-Universal] requires a Translate Service to be installed and configured when the grid option "enableTranslate" is enabled.');this.renderDomElement(this.collection),(this.disabled||this.columnEditor?.collectionAsync&&Array.isArray(this.collection)&&0===this.collection.length)&&this.disable(!0)}getValue(){return this.isMultipleSelect?this.currentValues:this.currentValue}setValue(e,a=!1,u=!0){if(this.isMultipleSelect&&Array.isArray(e)?this.loadMultipleValues(e):this.loadSingleValue(e),a){this.applyValue(this.args.item,this.serializeValue());const i=this.args.compositeEditorOptions;i&&u&&this.handleChangeOnCompositeEditor(i,"system")}}cancel(){this.args?.cancelChanges&&this.args.cancelChanges()}hide(){this._msInstance&&this._msInstance.close()}show(e){!this.isCompositeEditor&&this._msInstance?this._msInstance.open(e):this.isCompositeEditor&&this.applyInputUsabilityState()}applyValue(e,a){const u=this.columnDef?.field,i=this.columnDef?.type;let r=a;if(void 0!==u){(i===F.number||i===F.integer||i===F.boolean)&&!isNaN(parseFloat(a))&&(r=parseFloat(a)),this.isMultipleSelect&&"string"==typeof a&&a.indexOf(",")>=0&&(r=a.split(","));const o=u?.indexOf(".")>0;if(r=this.validate(null,r)?.valid?r:"",o){xr(e,this.columnEditor?.complexObjectPath??u??"",r)}else e[u]=r}}destroy(){this._msInstance&&this.hasAutoCommitEdit&&this.isValueChanged()&&!this._isDisposingOrCallingSave&&!this.isCompositeEditor&&(this._isDisposingOrCallingSave=!0,this.save(!0)),this._isDisposingOrCallingSave=!0,"function"==typeof this._msInstance?.destroy&&this._msInstance.destroy(),this.editorElm?.remove(),this._msInstance=void 0}loadValue(e){const a=this.columnDef?.field,u=void 0!==a&&a?.indexOf(".")>0;if(e&&void 0!==a){const i=this.columnEditor?.complexObjectPath??a,r=u?Xu(e,i):e.hasOwnProperty(a)&&e[a],o=u&&r?.hasOwnProperty(this.valueName)?r[this.valueName]:r;this.isMultipleSelect&&Array.isArray(o)?this.loadMultipleValues(o):this.loadSingleValue(o)}}loadMultipleValues(e){if(Array.isArray(e)){this.originalValue=e.map(u=>"number"==typeof u||"boolean"==typeof u?`${u}`:u),this._msInstance?.setSelects(this.originalValue);const a=this.args.compositeEditorOptions;a&&this.handleChangeOnCompositeEditor(a)}}loadSingleValue(e){this.originalValue="number"==typeof e||"boolean"==typeof e?`${e}`:e,this._msInstance?.setSelects([this.originalValue])}serializeValue(){return this.isMultipleSelect?this.currentValues:this.currentValue}changeEditorOption(e,a){this.columnEditor&&(this.columnEditor.editorOptions||(this.columnEditor.editorOptions={}),this.columnEditor.editorOptions[e]=a,this.editorElmOptions={...this.editorElmOptions,[e]:a},this._msInstance?.refreshOptions(this.editorElmOptions))}disable(e=!0){const a=this.disabled;if(this.disabled=e,this._msInstance)if(e){this._msInstance.disable();const u=this.getValue(),i=Array.isArray(u)&&this.isMultipleSelect?""===u?.[0]:""===u;a!==e&&this.isCompositeEditor&&!i&&this.reset("",!0,!0)}else this._msInstance.enable()}focus(){this.grid.focus(),this._msInstance?.focus()}isValueChanged(){const e=this._msInstance?.getSelects();if(this.isMultipleSelect)return!Js(e,this.originalValue);const a=Array.isArray(e)&&e.length>0?e[0]:void 0;return void 0!==a&&a!==this.originalValue}isValueTouched(){return this._isValueTouched}reset(e,a=!0,u=!1){const i=e??this.originalValue;if(this._msInstance){this.originalValue=this.isMultipleSelect?void 0!==i?[i]:[]:i;const o=void 0===this.originalValue?[]:[this.originalValue];this._msInstance.setSelects(o)}this._isValueTouched=!1;const r=this.args.compositeEditorOptions;if(r&&a){const o=!u;this.handleChangeOnCompositeEditor(r,"user",o)}}save(e=!1){const u=this.validate()?.valid??!1;(!this._isDisposingOrCallingSave||e)&&this.hasAutoCommitEdit&&u?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}validate(e,a){const u=!this.isCompositeEditor&&this.columnEditor?.required,i=void 0!==a?a:this._msInstance?.getSelects(),r=this.columnEditor&&this.columnEditor.errorMessage;if(this.isCompositeEditor&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};if(this.validator){const o=void 0!==a?a:this.isMultipleSelect?this.currentValues:this.currentValue;return this.validator(o,this.args)}return u&&(""===i||Array.isArray(i)&&0===i.length)?{valid:!1,msg:r||ae.VALIDATION_REQUIRED_FIELD}:{valid:!0,msg:null}}applyInputUsabilityState(){const e=this.grid.getActiveCell(),a=this.grid.onBeforeEditCell.notify({...e,item:this.dataContext,column:this.args.column,grid:this.grid,target:"composite",compositeEditorOptions:this.args.compositeEditorOptions}).getReturnValue();this.disable(!1===a)}filterCollection(e){let a=e;if(this.columnEditor&&this.columnEditor.collectionFilterBy){const u=this.columnEditor.collectionFilterBy,i=this.columnEditor.collectionOptions?.filterResultAfterEachPass??null;a=this._collectionService.filterCollection(a,u,i)}return a}sortCollection(e){let a=e;if(this.columnDef&&this.columnEditor&&this.columnEditor.collectionSortBy){const u=this.columnEditor.collectionSortBy;a=this._collectionService.sortCollection(this.columnDef,a,u,this.enableTranslateLabel)}return a}renderDomElement(e){if(!Array.isArray(e)&&this.collectionOptions?.collectionInsideObjectProperty){e=Xu(e,this.collectionOptions.collectionInsideObjectProperty)}if(!Array.isArray(e))throw new Error('The "collection" passed to the Select Editor is not a valid array.');let a=[];if(e.length>0&&(a=[...e]),this.collectionOptions?.addBlankEntry&&Array.isArray(a)&&a.length>0&&""!==a[0][this.valueName]&&(a.unshift(this.createBlankEntry()),this.collection.unshift(this.createBlankEntry())),this.collectionOptions?.addCustomFirstEntry&&Array.isArray(a)&&a.length>0&&a[0][this.valueName]!==this.collectionOptions.addCustomFirstEntry[this.valueName]&&(a.unshift(this.collectionOptions.addCustomFirstEntry),this.collection.unshift(this.collectionOptions.addCustomFirstEntry)),this.collectionOptions?.addCustomLastEntry&&Array.isArray(a)&&a.length>0){a[a.length-1][this.valueName]!==this.collectionOptions.addCustomLastEntry[this.valueName]&&a.push(this.collectionOptions.addCustomLastEntry)}let u=a;if(u=this.filterCollection(u),u=this.sortCollection(u),this.columnEditor?.collectionOverride){const r={column:this.columnDef,dataContext:this.dataContext,grid:this.grid,originalCollections:this.collection};if(this.args.compositeEditorOptions){const{formValues:o,modalType:d}=this.args.compositeEditorOptions;r.compositeEditorOptions={formValues:o,modalType:d}}u=this.columnEditor.collectionOverride(u,r)}this.finalCollection=u;const i=PO("editor",u,this.columnDef,this.grid,this.isMultipleSelect,this._translaterService);this.createDomElement(i.selectElement,i.dataCollection)}createBlankEntry(){const e={[this.labelName]:"",[this.valueName]:""};return this.labelPrefixName&&(e[this.labelPrefixName]=""),this.labelSuffixName&&(e[this.labelSuffixName]=""),e}createDomElement(e,a){const u=this.args.container;e&&u&&"function"==typeof u.appendChild&&(Ct(u),u.appendChild(e));const i=this.columnEditor?.placeholder??"";this.defaultOptions.placeholder=i||"",this.editorElmOptions={...this.defaultOptions,...this.editorOptions,data:a},this._msInstance=Tv(e,this.editorElmOptions),this.editorElm=this._msInstance.getParentElement(),this.isCompositeEditor||this.show(this.delayOpening)}handleChangeOnCompositeEditor(e,a="user",u=!1){const i=this.grid.getActiveCell(),r=this.args.column,o=this.columnDef?.id??"",d=this.dataContext,h=this.grid,m=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,m),this.applyValue(e.formValues,m);const E=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(u||this.disabled&&E&&e.formValues.hasOwnProperty(o))&&delete e.formValues[o],h.onCompositeEditorChange.notify({...i,item:d,grid:h,column:r,formValues:e.formValues,editors:e.editors,triggeredBy:a},new jt)}}const qe={autocompleter:class Hce{constructor(e){if(this.args=e,this._isValueTouched=!1,this._lastTriggeredByClearInput=!1,this.disabled=!1,this.forceUserInput=!1,this.finalCollection=[],!e)throw new Error("[Slickgrid-Universal] Something is wrong with this grid, an Editor must always have valid arguments.");this.grid=e.grid,this._bindEventService=new wi,this.gridOptions?.translater&&(this._translater=this.gridOptions.translater),this._locales=this.gridOptions&&this.gridOptions.locales||ae.locales,this.init()}get autocompleterOptions(){return this._autocompleterOptions||{}}get collection(){return this.columnEditor?.collection??[]}get editorDomElement(){return this._inputElm}get elementCollection(){return this._elementCollection}get columnDef(){return this.args.column}get columnEditor(){return this.columnDef?.editor||{}}get customStructure(){let e=this.columnEditor?.customStructure;const a=this.columnEditor?.type??this.columnDef?.type;return!e&&a===F.object&&this.columnDef?.dataKey&&this.columnDef?.labelKey&&(e={label:this.columnDef.labelKey,value:this.columnDef.dataKey}),e}get dataContext(){return this.args.item}get editorOptions(){return{...this.gridOptions.defaultEditorOptions?.autocompleter,...this.columnEditor?.editorOptions}}get gridOptions(){return this.grid?.getOptions()??{}}get instance(){return this._instance}get hasAutoCommitEdit(){return this.gridOptions.autoCommitEdit??!1}get validator(){return this.columnEditor?.validator??this.columnDef?.validator}init(){this.labelName=this.customStructure?.label??"label",this.valueName=this.customStructure?.value??"value",this.labelPrefixName=this.customStructure?.labelPrefix??"labelPrefix",this.labelSuffixName=this.customStructure?.labelSuffix??"labelSuffix";let e=this.columnEditor.collection;this.columnEditor?.collectionAsync&&!e&&(e=[]),this.renderDomElement(e),(this.disabled||this.columnEditor?.collectionAsync&&Array.isArray(e)&&0===e.length)&&this.disable(!0)}destroy(){this._bindEventService.unbindAll(),"function"==typeof this._instance?.destroy&&this._instance.destroy(),this._inputElm?.remove?.(),this._elementCollection=null}disable(e=!0){const a=this.disabled;if(this.disabled=e,this._inputElm)if(e){this._inputElm.disabled=!0;const u=this.getValue();a!==e&&this.args?.compositeEditorOptions&&""!==u&&this.clear(!0)}else this._inputElm.disabled=!1}focus(){this.grid.focus(),this._inputElm&&(this._inputElm.focus(),this._inputElm.select())}show(){this.args?.compositeEditorOptions&&this.applyInputUsabilityState()}getValue(){return this._inputElm.value}setValue(e,a=!1,u=!0){if(this._inputElm.value=e?.hasOwnProperty(this.labelName)?e[this.labelName]:e,a){this._currentValue=e,this._defaultTextValue="string"==typeof e?e:e?.[this.labelName]??"",this.applyValue(this.args.item,this.serializeValue());const i=this.args.compositeEditorOptions;i&&u&&this.handleChangeOnCompositeEditor(null,i,"system")}}applyValue(e,a){let u=a;const i=this.columnDef?.field;if(void 0!==i){Array.isArray(this.collection)&&this.collection.length>0&&(u=hc(this.collection,d=>d&&Lh(a)&&d.hasOwnProperty(this.valueName)?d[this.valueName].toString()===(a.hasOwnProperty(this.valueName)&&a[this.valueName].toString()):d&&"string"==typeof a&&d.hasOwnProperty(this.valueName)?d[this.valueName].toString()===a:d?.toString()===a,""));const r=i?.indexOf(".")>0;if(u=this.validate(null,u)?.valid?u:"",r){xr(e,this.columnEditor?.complexObjectPath??i??"",u)}else e[i]=u}}isValueChanged(){const e=this._inputElm.value,a=this._lastInputKeyEvent?.key;if(this.columnEditor?.alwaysSaveOnEnterKey&&"Enter"===a)return!0;const u=!(""===e&&(null===this._defaultTextValue||void 0===this._defaultTextValue))&&e!==this._defaultTextValue;return this._lastTriggeredByClearInput||u}isValueTouched(){return this._isValueTouched}loadValue(e){const a=this.columnDef?.field;if(e&&void 0!==a){const i=a?.indexOf(".")>0?Xu(e,a):e[a];this._currentValue=i,this._originalValue=i,this._defaultTextValue="string"==typeof i?i:i?.[this.labelName]??"",this._inputElm.value=this._defaultTextValue,this._inputElm.select()}}clear(e=!1){this._inputElm&&(this._currentValue="",this._defaultTextValue="",this.setValue("",!0)),this._isValueTouched=!0,this._lastTriggeredByClearInput=!0;const a=this.args.compositeEditorOptions;if(a){const u=!e;this.handleChangeOnCompositeEditor(null,a,"user",u)}else this.save()}reset(e,a=!0,u=!1){const i=e??this._originalValue??"";this._inputElm&&(this._currentValue=i,this._defaultTextValue="string"==typeof i?i:i?.[this.labelName]??"",this._inputElm.value=this._defaultTextValue),this._isValueTouched=!1;const r=this.args.compositeEditorOptions;if(r&&a){const o=!u;this.handleChangeOnCompositeEditor(null,r,"user",o)}}save(){const a=this.validate()?.valid??!1;this.hasAutoCommitEdit&&a?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}serializeValue(){if(this._inputElm&&this.editorOptions.forceUserInput){const e=this.editorOptions?.minLength??3;this._currentValue=this._inputElm.value.length>e?this._inputElm.value:this._currentValue}return this.customStructure&&this._currentValue&&this._currentValue.hasOwnProperty(this.valueName)&&this.columnDef?.type!==F.object&&this.columnEditor?.type!==F.object?this._currentValue[this.valueName]:this._currentValue&&void 0!==this._currentValue.value?this.columnDef?.type===F.object||this.columnEditor?.type===F.object?{[this.labelName]:this._currentValue.label,[this.valueName]:this._currentValue.value}:this._currentValue.value:this._currentValue}validate(e,a){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return q7(void 0!==a?a:this._inputElm?.value,{editorArgs:this.args,errorMessage:this.columnEditor.errorMessage,minLength:this.columnEditor.minLength,maxLength:this.columnEditor.maxLength,operatorConditionalType:this.columnEditor.operatorConditionalType,required:!this.args?.compositeEditorOptions&&this.columnEditor.required,validator:this.validator})}applyInputUsabilityState(){const e=this.grid.getActiveCell(),a=this.grid.onBeforeEditCell.notify({...e,item:this.dataContext,column:this.args.column,grid:this.grid,target:"composite",compositeEditorOptions:this.args.compositeEditorOptions}).getReturnValue();this.disable(!1===a)}handleChangeOnCompositeEditor(e,a,u="user",i=!1){const r=this.grid.getActiveCell(),o=this.args.column,d=this.columnDef?.id??"",h=this.dataContext,m=this.grid,E=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,E),this.applyValue(a.formValues,E);const v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(i||this.disabled&&v&&a.formValues.hasOwnProperty(d))&&delete a.formValues[d],m.onCompositeEditorChange.notify({...r,item:h,grid:m,column:o,formValues:a.formValues,editors:a.editors,triggeredBy:u},new jt(e))}handleSelect(e){if(void 0!==e){const u=e;this._currentValue=u,this._isValueTouched=!0;const i=this.args.compositeEditorOptions,r=this.editorOptions?.renderItem??!1,o="string"==typeof u?u:r?u[this.labelName]:u.label;if(this.setValue(o),i?this.handleChangeOnCompositeEditor(null,i):this.save(),"function"==typeof this.editorOptions.onSelectItem){const{row:d,cell:h}=this.grid.getActiveCell()||{};this.editorOptions.onSelectItem(e,d,h,this.args.column,this.args.item)}setTimeout(()=>this._lastTriggeredByClearInput=!1)}return!1}renderRegularItem(e){return T("div",{textContent:("string"==typeof e?e:e?.label??"")||""})}renderCustomItem(e){const a=this._autocompleterOptions?.renderItem?.templateCallback(e)??"",u=document.createElement("div");return this.grid.applyHtmlCode(u,a),u}renderCollectionItem(e){const a=this.columnEditor?.enableRenderHtml??!1,o=(e.labelPrefix||"")+(e.label||"")+(e.labelSuffix||""),d=this.grid.sanitizeHtmlString(o)||"",h=document.createElement("div");return h[a?"innerHTML":"textContent"]=d,h}renderDomElement(e){const a=this.columnDef?.id??"",u=this.columnEditor?.placeholder??"",i=this.columnEditor?.title??"";this._editorInputGroupElm=T("div",{className:"autocomplete-container input-group"});const r=T("span",{className:"input-group-btn input-group-append",dataset:{clear:""}});this._clearButtonElm=T("button",{type:"button",className:"btn btn-default btn-clear"}),this._clearButtonElm.appendChild(T("i",{className:"icon-clear"})),this._inputElm=T("input",{type:"text",placeholder:u,title:i,autocomplete:"off",ariaAutoComplete:"none",className:`autocomplete form-control editor-text input-group-editor editor-${a}`,dataset:{input:""}},this._editorInputGroupElm),this._editorInputGroupElm.appendChild(document.createElement("span")),this.editorOptions?.hideClearButton||(r.appendChild(this._clearButtonElm),this._editorInputGroupElm.appendChild(r),this._bindEventService.bind(this._clearButtonElm,"click",()=>this.clear())),this._bindEventService.bind(this._inputElm,"focus",()=>this._inputElm?.select()),this._bindEventService.bind(this._inputElm,"keydown",d=>{this._lastInputKeyEvent=d,("ArrowLeft"===d.key||"ArrowRight"===d.key)&&d.stopImmediatePropagation(),"Enter"===d.key&&""===d.target.value&&this.columnEditor.alwaysSaveOnEnterKey&&(this._currentValue=null)});let o=e;if(o&&this.columnEditor?.collectionOverride){const d={column:this.columnDef,dataContext:this.dataContext,grid:this.grid,originalCollections:this.collection};if(this.args.compositeEditorOptions){const{formValues:h,modalType:m}=this.args.compositeEditorOptions;d.compositeEditorOptions={formValues:h,modalType:m}}o=this.columnEditor.collectionOverride(o,d)}o&&(this.finalCollection=o),Array.isArray(o)&&(o=this.collection.every(d=>y2(d))?o.map(d=>({label:d,value:d})):o.map(d=>({label:d?.[this.labelName],value:d?.[this.valueName],labelPrefix:d?.[this.labelPrefixName]??"",labelSuffix:d?.[this.labelSuffixName]??""})),this._elementCollection=o),this._autocompleterOptions={input:this._inputElm,debounceWaitMs:200,className:`slick-autocomplete ${this.editorOptions?.className??""}`.trim(),emptyMsg:this.gridOptions.enableTranslate&&this._translater?.translate?this._translater.translate("NO_ELEMENTS_FOUND"):this._locales?.TEXT_NO_ELEMENTS_FOUND??"No elements found",customize:(d,h,m)=>{m.style.width=""},onSelect:this.handleSelect.bind(this),...this.editorOptions},this.gridOptions?.darkMode&&(this._autocompleterOptions.className+=" slick-dark-mode"),this.autocompleterOptions.className=Vt(this.autocompleterOptions.className).join(" "),this._autocompleterOptions.renderItem?.layout?(this._autocompleterOptions.className+=` autocomplete-custom-${_2(this._autocompleterOptions.renderItem.layout)}`,this._autocompleterOptions.render=this.renderCustomItem.bind(this)):Array.isArray(e)?this._autocompleterOptions.render=this._autocompleterOptions.render?.bind(this)??this.renderCollectionItem.bind(this):this._autocompleterOptions.render||(this._autocompleterOptions.render=this.renderRegularItem.bind(this)),this._autocompleterOptions?.fetch?(tO(this._inputElm,this._autocompleterOptions),this._instance=m7(this._autocompleterOptions)):this._instance=m7({...this._autocompleterOptions,fetch:(d,h)=>{o&&h(o.filter(m=>(("string"==typeof m?m:m?.label)||"").toLowerCase().includes(d.toLowerCase())))}}),this.args.container.appendChild(this._editorInputGroupElm),this.args.compositeEditorOptions||setTimeout(()=>this.focus(),50)}},checkbox:class Vce{constructor(e){if(this.args=e,this._isValueTouched=!1,this.disabled=!1,!e)throw new Error("[Slickgrid-Universal] Something is wrong with this grid, an Editor must always have valid arguments.");this.grid=e.grid,this.gridOptions=this.grid.getOptions()||{},this._bindEventService=new wi,this.init()}get columnDef(){return this.args.column}get columnEditor(){return this.columnDef?.editor||{}}get dataContext(){return this.args.item}get editorDomElement(){return this._input}get hasAutoCommitEdit(){return this.gridOptions.autoCommitEdit??!1}get validator(){return this.columnEditor?.validator??this.columnDef?.validator}init(){const e=this.columnDef?.id??"",a=this.args.compositeEditorOptions;this._checkboxContainerElm=T("div",{className:`checkbox-editor-container editor-${e}`}),this._input=T("input",{type:"checkbox",value:"true",ariaLabel:this.columnEditor?.ariaLabel??`${Rs(e+"")} Checkbox Editor`,className:`editor-checkbox editor-${e}`,title:this.columnEditor?.title??""});const u=this.args?.container;u&&"function"==typeof u.appendChild&&(a?(this._checkboxContainerElm.appendChild(this._input),u.appendChild(this._checkboxContainerElm)):u.appendChild(this._input)),this.hasAutoCommitEdit&&!a&&this._bindEventService.bind(this._input,"click",()=>{this._isValueTouched=!0,this.save()}),a?this._bindEventService.bind(this._input,"change",i=>{this._isValueTouched=!0,this.handleChangeOnCompositeEditor(i,a)}):this.focus()}destroy(){this._bindEventService.unbindAll(),this._input?.remove?.()}disable(e=!0){const a=this.disabled;if(this.disabled=e,this._input)if(e){this._input.setAttribute("disabled","disabled"),this._checkboxContainerElm.classList.add("disabled");const u=this.getValue();a!==e&&this.args?.compositeEditorOptions&&!1!==u&&this.reset(!1,!0,!0)}else this._input.removeAttribute("disabled"),this._checkboxContainerElm.classList.remove("disabled")}focus(){this.grid.focus(),this._input?.focus()}preClick(){this._input&&(this._input.checked=!this._input.checked)}show(){this.args?.compositeEditorOptions&&this.applyInputUsabilityState()}getValue(){return this._input?.checked??!1}setValue(e,a=!1,u=!0){const i=!!e;if(this._input&&(this._input.checked=i),a){this.applyValue(this.args.item,this.serializeValue());const r=this.args.compositeEditorOptions;r&&u&&this.handleChangeOnCompositeEditor(null,r,"system")}}applyValue(e,a){const u=this.columnDef&&this.columnDef.field;if(void 0!==u){const i=u?.indexOf(".")>0,r=this.validate(null,a),o=r&&r.valid?a:"";if(i){xr(e,this.columnEditor?.complexObjectPath??u??"",o)}else e[u]=o}}isValueChanged(){return this.serializeValue()!==this._originalValue}isValueTouched(){return this._isValueTouched}loadValue(e){const a=this.columnDef&&this.columnDef.field;if(e&&void 0!==a&&this._input){const i=a?.indexOf(".")>0?Xu(e,a):e[a];this._originalValue=i,this._input.checked=!!this._originalValue}}reset(e,a=!0,u=!1){const i=e??this._originalValue??!1;this._input&&(this._originalValue=i,this._input.checked=!!i),this._isValueTouched=!1;const r=this.args.compositeEditorOptions;if(r&&a){const o=!u;this.handleChangeOnCompositeEditor(null,r,"user",o)}}save(){const e=this.validate(),a=e&&e.valid||!1;this.hasAutoCommitEdit&&a?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}serializeValue(){return this._input?.checked??!1}validate(e,a){const u=!this.args?.compositeEditorOptions&&this.columnEditor.required,i=void 0!==a?a:this._input?.checked,r=this.columnEditor.errorMessage;return this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled?{valid:!0,msg:""}:this.validator?this.validator(i,this.args):u&&!i?{valid:!1,msg:r||ae.VALIDATION_REQUIRED_FIELD}:{valid:!0,msg:null}}applyInputUsabilityState(){const e=this.grid.getActiveCell(),a=this.grid.onBeforeEditCell.notify({...e,item:this.dataContext,column:this.args.column,grid:this.grid,target:"composite",compositeEditorOptions:this.args.compositeEditorOptions}).getReturnValue();this.disable(!1===a)}handleChangeOnCompositeEditor(e,a,u="user",i=!1){const r=this.grid.getActiveCell(),o=this.args.column,d=this.columnDef?.id??"",h=this.dataContext,m=this.grid,E=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,E),this.applyValue(a.formValues,E);const v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(i||this.disabled&&v&&a.formValues.hasOwnProperty(d))&&delete a.formValues[d],m.onCompositeEditorChange.notify({...r,item:h,grid:m,column:o,formValues:a.formValues,editors:a.editors,triggeredBy:u},new jt(e))}},date:class jce{constructor(e){if(this.args=e,this._isValueTouched=!1,this._lastClickIsDate=!1,this._lastTriggeredByClearDate=!1,this.hasTimePicker=!1,this.disabled=!1,!e)throw new Error("[Slickgrid-Universal] Something is wrong with this grid, an Editor must always have valid arguments.");this.grid=e.grid,this.gridOptions=this.grid.getOptions()||{},this.gridOptions?.translater&&(this._translaterService=this.gridOptions.translater),this._bindEventService=new wi,this.init()}get columnDef(){return this.args.column}get columnEditor(){return this.columnDef?.editor||{}}get dataContext(){return this.args.item}get editorDomElement(){return this._inputElm}get editorOptions(){return{...this.gridOptions.defaultEditorOptions?.date,...this.columnEditor?.editorOptions}}get hasAutoCommitEdit(){return this.gridOptions.autoCommitEdit??!1}get pickerOptions(){return this._pickerMergedOptions}get validator(){return this.columnEditor?.validator??this.columnDef?.validator}init(){var e=this;return Au(function*(){if(e.args&&e.columnDef){const a=e.args.compositeEditorOptions,u=e.columnDef?.id??"",i=e.args.grid.getOptions()||{};e.defaultDate=e.args.item?.[e.columnDef.field];const r=e.columnDef.outputType||e.columnEditor.type||e.columnDef.type||F.dateUtc,o=el(r),d=e._translaterService?.getCurrentLanguage?.()||i.locale||"en";o&&("ISO8601"===o||o.toLowerCase().includes("h"))&&(e.hasTimePicker=!0);const h=el(e.hasTimePicker?F.dateTimeIsoAM_PM:F.dateIso),m={input:!0,jumpToSelectedDate:!0,sanitizer:k=>e.grid.sanitizeHtmlString(k),toggleSelected:!1,actions:{clickDay:()=>{e._lastClickIsDate=!0},changeToInput:(k,x)=>{if(x.HTMLInputElement){let f="";if(x.selectedDates[0]?(f=x.selectedDates[0],x.HTMLInputElement.value=js(x.selectedDates[0],void 0,r)):x.HTMLInputElement.value="",f&&e.hasTimePicker){const C=h7(f,h);C.setHours(+(x.selectedHours||0)),C.setMinutes(+(x.selectedMinutes||0)),x.HTMLInputElement.value=js(C,void 0,r)}e._lastClickIsDate&&(e.handleOnDateChange(),x.hide())}}},settings:{lang:d,iso8601:!1,visibility:{theme:e.gridOptions?.darkMode?"dark":"light",positionToInput:"auto",weekend:!1}}};e.hasTimePicker&&(m.settings.selection={time:24}),e._pickerMergedOptions=su(!0,{},m,{settings:e.editorOptions,type:"default"});const E=`.editor-text.date-picker.editor-${u}.form-control.input-group-editor`;e._editorInputGroupElm=T("div",{className:"vanilla-picker input-group"});const v=T("span",{className:"input-group-btn input-group-append",dataset:{clear:""}});e._clearButtonElm=T("button",{type:"button",className:"btn btn-default btn-clear"}),e._clearButtonElm.appendChild(T("i",{className:"icon-clear"})),e._inputElm=T("input",{placeholder:e.columnEditor?.placeholder??"",title:e.columnEditor&&e.columnEditor.title||"",className:E.replace(/\./g," "),dataset:{input:"",defaultdate:e.defaultDate},readOnly:!0},e._editorInputGroupElm),e.args.container.appendChild(e._editorInputGroupElm),e.columnEditor.editorOptions?.hideClearButton||(v.appendChild(e._clearButtonElm),e._editorInputGroupElm.appendChild(v),e._bindEventService.bind(e._clearButtonElm,"click",()=>{e.clear(),e.handleOnDateChange()})),setTimeout(()=>{e.calendarInstance=new MO(e._inputElm,e._pickerMergedOptions),e.calendarInstance.init(),a||(e.show(),e.focus()),e.calendarInstance&&(p7(e._inputElm,e.calendarInstance,e.defaultDate,e.columnDef,e.columnEditor),e.calendarInstance.update({dates:!0,month:!0,year:!0,time:!0}))})}})()}destroy(){this.hide(),this._bindEventService.unbindAll(),this.calendarInstance?.destroy(),Ct(this._editorInputGroupElm),Ct(this._inputElm),this._editorInputGroupElm?.remove(),this._inputElm?.remove()}clear(){this._lastTriggeredByClearDate=!0,this.calendarInstance&&(this.calendarInstance.settings.selected.dates=[],this._inputElm.value="")}disable(e=!0){const a=this.disabled;if(this.disabled=e,this._inputElm)if(e){this._inputElm.setAttribute("disabled","disabled"),this._clearButtonElm.disabled=!0;const u=this.getValue();a!==e&&this.args?.compositeEditorOptions&&""!==u&&this.reset("",!0,!0)}else this._inputElm.removeAttribute("disabled"),this._clearButtonElm.disabled=!1}changeEditorOption(e,a){this.columnEditor.editorOptions||(this.columnEditor.editorOptions={}),this.columnEditor.editorOptions[e]=a,this._pickerMergedOptions=su(!0,{},this._pickerMergedOptions,{settings:{[e]:a}})}focus(){this.grid.focus(),this.show(),this._inputElm?.focus()}hide(){this.calendarInstance?.hide()}show(){const e=!!this.args?.compositeEditorOptions;!e&&this.calendarInstance?this.calendarInstance.show():e&&this.applyInputUsabilityState()}getValue(){return this._inputElm.value}setValue(e,a=!1,u=!0){if(this.calendarInstance&&p7(this._inputElm,this.calendarInstance,e,this.columnDef,this.columnEditor),a){this.applyValue(this.args.item,this.serializeValue());const i=this.args.compositeEditorOptions;i&&u&&this.handleChangeOnCompositeEditor(i,"system")}}applyValue(e,a){const u=this.columnDef?.field;if(this.columnDef&&void 0!==u){const i=this.columnDef.saveOutputType||this.columnDef.outputType||this.columnEditor.type||this.columnDef.type||F.dateUtc,r=this.columnDef.outputType||this.columnEditor.type||this.columnDef.type||F.dateUtc,o=u.indexOf(".")>0,d=this.validate(null,a),h=a&&d?.valid?js(a,r,i):"";if(o){xr(e,this.columnEditor?.complexObjectPath??u,h)}else e[u]=h}}isValueChanged(){let e=!1;const a=this.getValue();return this.columnDef&&(e=this._lastTriggeredByClearDate||!(""===a&&""===this._originalDate)&&a!==this._originalDate),e}isValueTouched(){return this._isValueTouched}loadValue(e){const a=this.columnDef?.field;if(e&&this.columnDef&&void 0!==a){const i=a?.indexOf(".")>0?Xu(e,a):e[a],r=this.columnEditor.type||this.columnDef?.type||F.dateIso,o=this.columnDef.outputType||this.columnEditor.type||this.columnDef.type||F.dateIso;this._originalDate=js(i,r,o),this._inputElm.value=this._originalDate}}reset(e,a=!0,u=!1){const i=e??this._originalDate??"";this.calendarInstance&&(this._originalDate=i,this.calendarInstance.settings.selected.dates=[i],i||(this.calendarInstance.settings.selected.dates=[],this._inputElm.value="")),this._isValueTouched=!1;const r=this.args.compositeEditorOptions;if(r&&a){const o=!u;this.handleChangeOnCompositeEditor(r,"user",o)}}save(){const a=this.validate()?.valid??!1;this.hasAutoCommitEdit&&a?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}serializeValue(){return this.getValue()||""}validate(e,a){const u=!this.args?.compositeEditorOptions&&this.columnEditor.required,i=a??this._inputElm?.value,r=this.columnEditor.errorMessage;return this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled?{valid:!0,msg:""}:this.validator?this.validator(i,this.args):u&&""===i?{valid:!1,msg:r||ae.VALIDATION_REQUIRED_FIELD}:{valid:!0,msg:null}}applyInputUsabilityState(){const e=this.grid.getActiveCell(),a=this.grid.onBeforeEditCell.notify({...e,item:this.dataContext,column:this.args.column,grid:this.grid,target:"composite",compositeEditorOptions:this.args.compositeEditorOptions}).getReturnValue();this.disable(!1===a)}handleOnDateChange(){if(this._isValueTouched=!0,this.args){const e=this.args.compositeEditorOptions;e?this.handleChangeOnCompositeEditor(e):this.save()}setTimeout(()=>this._lastTriggeredByClearDate=!1)}handleChangeOnCompositeEditor(e,a="user",u=!1){const i=this.grid.getActiveCell(),r=this.args.column,o=this.columnDef?.id??"",d=this.dataContext,h=this.grid,m=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,m),this.applyValue(e.formValues,m);const E=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(u||this.disabled&&E&&e.formValues.hasOwnProperty(o))&&delete e.formValues[o],h.onCompositeEditorChange.notify({...i,item:d,grid:h,column:r,formValues:e.formValues,editors:e.editors,triggeredBy:a},new jt)}},dualInput:class Gce{constructor(e){if(this.args=e,this._isValueSaveCalled=!1,this._isLeftValueTouched=!1,this._isRightValueTouched=!1,this.disabled=!1,!e)throw new Error("[Slickgrid-Universal] Something is wrong with this grid, an Editor must always have valid arguments.");this.grid=e.grid,this.gridOptions=this.grid.getOptions()||{},this._eventHandler=new Ot,this._bindEventService=new wi,this.init(),this._eventHandler.subscribe(this.grid.onValidationError,()=>this._isValueSaveCalled=!0)}get columnDef(){return this.args.column}get columnEditor(){return this.columnDef?.editor||{}}get dataContext(){return this.args.item}get editorDomElement(){return{leftInput:this._leftInput,rightInput:this._rightInput}}get editorParams(){return this.columnEditor.params||{}}get eventHandler(){return this._eventHandler}get hasAutoCommitEdit(){return this.gridOptions.autoCommitEdit??!1}get isValueSaveCalled(){return this._isValueSaveCalled}get validator(){return this.columnEditor?.validator??this.columnDef?.validator}init(){if(!(this.editorParams&&this.editorParams.leftInput&&this.editorParams.leftInput.field&&this.editorParams.rightInput&&this.editorParams.rightInput.field))throw new Error("[Slickgrid-Universal] Please make sure that your Combo Input Editor has params defined with \"leftInput\" and \"rightInput\" (example: { editor: { model: Editors.comboInput, params: { leftInput: { field: 'firstName' }, { rightSide: { field: 'lastName' } }}}");this._leftFieldName=this.editorParams.leftInput?.field,this._rightFieldName=this.editorParams.rightInput?.field,this._leftInput=this.createInput("leftInput"),this._rightInput=this.createInput("rightInput");const e=this.args?.container;e&&"function"==typeof e.appendChild&&(e.appendChild(this._leftInput),e.appendChild(this._rightInput)),this._bindEventService.bind(this._leftInput,"keydown",u=>this.handleKeyDown(u,"leftInput")),this._bindEventService.bind(this._rightInput,"keydown",u=>this.handleKeyDown(u,"rightInput")),this.hasAutoCommitEdit&&(this._bindEventService.bind(this._leftInput,"focusout",u=>this.handleFocusOut(u,"leftInput")),this._bindEventService.bind(this._rightInput,"focusout",u=>this.handleFocusOut(u,"rightInput"))),this.args?.compositeEditorOptions?(this._bindEventService.bind(this._leftInput,"input",this.handleChangeOnCompositeEditorDebounce.bind(this)),this._bindEventService.bind(this._rightInput,"input",this.handleChangeOnCompositeEditorDebounce.bind(this))):setTimeout(()=>this._leftInput.select(),50)}handleFocusOut(e,a){const u=e.relatedTarget?.className||"";!this.args.compositeEditorOptions&&-1===u.indexOf("dual-editor")&&"focusout-right"!==this._lastEventType&&("rightInput"===a||"leftInput"===a&&"focusout-left"!==this._lastEventType)&&("leftInput"===a?this._isLeftValueTouched=!0:this._isRightValueTouched=!0,this.save());const r="leftInput"===a?"left":"right";this._lastEventType=`${e?.type}-${r}`}handleKeyDown(e,a){"leftInput"===a?this._isLeftValueTouched=!0:this._isRightValueTouched=!0,this._lastInputKeyEvent=e,("ArrowLeft"===e.key||"ArrowRight"===e.key||"Tab"===e.key)&&e.stopImmediatePropagation()}destroy(){this._eventHandler.unsubscribeAll(),this._bindEventService.unbindAll(),this._leftInput?.remove?.(),this._rightInput?.remove?.()}createInput(e){const a=this.editorParams[e],u=this.columnDef?.id??"",i=this.gridOptions.datasetIdPropertyName||"id",r=this.args?.item?.[i]??"";let o=a.type||"text";("float"===o||"integer"===o)&&(o="number");const d=T("input",{type:o||"text",id:`item-${r}-${e}`,ariaLabel:this.columnEditor?.ariaLabel??`${Rs(u+"")} Input Editor`,className:`dual-editor-text editor-${u} ${e.replace(/input/gi,"")}`,autocomplete:"off",ariaAutoComplete:"none",placeholder:a.placeholder||"",title:a.title||""});return"readonly"===o&&(d.readOnly=!0,o="text"),"number"===o&&(d.step=this.getInputDecimalSteps(e)),d}disable(e=!0){const a=this.disabled;this.disabled=e,this._leftInput&&this._rightInput&&(e?(this._leftInput.setAttribute("disabled","disabled"),this._rightInput.setAttribute("disabled","disabled"),a!==e&&this.args?.compositeEditorOptions&&this.reset("",!0,!0)):(this._leftInput.removeAttribute("disabled"),this._rightInput.removeAttribute("disabled")))}focus(){this.grid.focus()}show(){this.args?.compositeEditorOptions&&this.applyInputUsabilityState()}getValues(){const e={},a=this._leftInput.value,u=this._rightInput.value,i=this.editorParams.leftInput&&("float"===this.editorParams.leftInput.type||"integer"===this.editorParams.leftInput.type),r=this.editorParams.rightInput&&("float"===this.editorParams.rightInput.type||"integer"===this.editorParams.rightInput.type),o=""!==a&&i?+this._leftInput.value:a||"",d=""!==u&&r?+this._rightInput.value:u||"";return xr(e,this._leftFieldName,o),xr(e,this._rightFieldName,d),e}setValues(e){Array.isArray(e)&&2===e.length&&(this._leftInput.value=`${e[0]}`,this._rightInput.value=`${e[1]}`)}applyValue(e,a){this.applyValueByPosition(e,a,"leftInput"),this.applyValueByPosition(e,a,"rightInput")}applyValueByPosition(e,a,u){const i="leftInput"===u?this._leftFieldName:this._rightFieldName;if(void 0!==i){const r=i?.indexOf(".")>0;let o=i;if(r){const m=i.split(/\.(.*)/);o=m.length>1?m[1]:m}const d=r?Xu(a,o):a[i],h=this.validate(null,{position:u,inputValue:d});if(r){const m=Xu(a,o),E=h&&h.valid?m:"";xr(e,this.columnEditor?.complexObjectPath??i??"",E)}else i&&(e[i]=h&&h.valid?a[i]:"")}}isValueChanged(){const e=this._leftInput.value,a=this._rightInput.value,u=this.editorParams?.leftInput,i=this.editorParams?.rightInput,r=this._lastInputKeyEvent?.key;if((u&&u.alwaysSaveOnEnterKey||i&&i.alwaysSaveOnEnterKey)&&"Enter"===r)return!0;const o=!(""===e&&(null===this._originalLeftValue||void 0===this._originalLeftValue))&&e!==this._originalLeftValue,d=!(""===a&&(null===this._originalRightValue||void 0===this._originalRightValue))&&a!==this._originalRightValue;return o||d}isValueTouched(){return this._isLeftValueTouched||this._isRightValueTouched}loadValue(e){this.loadValueByPosition(e,"leftInput"),this.loadValueByPosition(e,"rightInput"),this._leftInput.select()}loadValueByPosition(e,a){const u="leftInput"===a?this._leftFieldName:this._rightFieldName,i="leftInput"===a?"_originalLeftValue":"_originalRightValue",r="leftInput"===a?"_leftInput":"_rightInput";if(e&&void 0!==u){const d=u?.indexOf(".")>0?Xu(e,u):e.hasOwnProperty(u)?e[u]:"";if(this[i]=d,"float"===this.editorParams[a].type){const h=this.getDecimalPlaces(a);null!==h&&(this[i]||0===this[i])&&void 0!==this[i]&&(this[i]=(+this[i]).toFixed(h))}this[r]&&(this[r].value=`${this[i]}`)}}reset(e,a=!0,u=!1){const i=e??this._originalLeftValue??"",r=e??this._originalRightValue??"";this._leftInput&&this._rightInput&&(this._originalLeftValue=i,this._originalRightValue=r,this._leftInput.value=`${i}`,this._rightInput.value=`${r}`),this._isLeftValueTouched=!1,this._isRightValueTouched=!1;const o=this.args.compositeEditorOptions;if(o&&a){const d=!u;this.handleChangeOnCompositeEditor(null,o,"user",d)}}save(){const e=this.validate(),a=e&&e.valid||!1;this._isValueSaveCalled||(this.hasAutoCommitEdit&&a?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges(),this._isValueSaveCalled=!0)}serializeValue(){const e={},a=this.serializeValueByPosition("leftInput"),u=this.serializeValueByPosition("rightInput");return xr(e,this._leftFieldName,a),xr(e,this._rightFieldName,u),e}serializeValueByPosition(e){const a="leftInput"===e?this._leftInput.value:this._rightInput.value;if(""===a||isNaN(+a))return a;let u=parseFloat(a);const i=this.getDecimalPlaces(e);return null!==i&&(u||0===u)&&u.toFixed&&(u=parseFloat(u.toFixed(i))),u}getDecimalPlaces(e){const u="leftInput"===e?"leftInput":"rightInput",r=this.editorParams[u]?.decimal;return void 0===r?0:r}getInputDecimalSteps(e){const a=this.getDecimalPlaces(e);let u="";for(let i=1;i0?`0.${u}1`:"1"}validate(e,a){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};if(a){const u=this.validateByPosition(a.position,a.inputValue);if(!u.valid)return"leftInput"===a.position?this._leftInput.select():this._rightInput.select(),u}else{const u=this.validateByPosition("leftInput"),i=this.validateByPosition("rightInput");if(!u.valid)return this._leftInput.select(),u;if(!i.valid)return this._rightInput.select(),i}return{valid:!0,msg:""}}validateByPosition(e,a){const u=this.editorParams[e];let i="";if(a)i=a;else{const d="leftInput"===e?this._leftInput:this._rightInput;i=d&&d.value}const r=this.validator;i="function"==typeof r?this.getValues():i;const o={editorArgs:this.args,errorMessage:u.errorMessage,required:!this.args?.compositeEditorOptions&&u.required,validator:"function"==typeof r?r:u.validator};switch(u.type){case"float":return UG(i,{...o,decimal:this.getDecimalPlaces(e),minValue:u.minValue,maxValue:u.maxValue,operatorConditionalType:u.operatorConditionalType});case"integer":return JG(i,{...o,minValue:u.minValue,maxValue:u.maxValue,operatorConditionalType:u.operatorConditionalType});default:return q7(i,o)}}applyInputUsabilityState(){const e=this.grid.getActiveCell(),a=this.grid.onBeforeEditCell.notify({...e,item:this.dataContext,column:this.args.column,grid:this.grid,target:"composite",compositeEditorOptions:this.args.compositeEditorOptions}).getReturnValue();this.disable(!1===a)}handleChangeOnCompositeEditor(e,a,u="user",i=!1){const r=this.grid.getActiveCell(),o=this.args.column,d=this.columnEditor.params?.leftInput?.field??"",h=this.columnEditor.params?.rightInput?.field??"",m=this.dataContext,E=this.grid,v=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,v),this.applyValue(a.formValues,v);const k=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(i||this.disabled&&k&&a.formValues.hasOwnProperty(d))&&delete a.formValues[d],(i||this.disabled&&k&&a.formValues.hasOwnProperty(h))&&delete a.formValues[h],E.onCompositeEditorChange.notify({...r,item:m,grid:E,column:o,formValues:a.formValues,editors:a.editors,triggeredBy:u},new jt(e))}handleChangeOnCompositeEditorDebounce(e){const a=this.args?.compositeEditorOptions;if(a){const u=this.gridOptions?.editorTypingDebounce??500;clearTimeout(this._timer),this._timer=setTimeout(()=>this.handleChangeOnCompositeEditor(e,a),u)}}},float:class Wce extends Y7{constructor(e){super(e,"number"),this.args=e}loadValue(e){const a=this.columnDef&&this.columnDef.field;if(void 0!==a&&e&&void 0!==a&&this._input){const i=a?.indexOf(".")>0?Xu(e,a):e[a];this._originalValue=i;const r=this.getDecimalPlaces();null!==r&&(this._originalValue||0===this._originalValue)&&void 0!==this._originalValue&&(this._originalValue=(+this._originalValue).toFixed(r)),this._input.value=`${this._originalValue}`,this._input.select()}}serializeValue(){const e=this._input?.value;if(void 0===e||""===e||isNaN(+e))return e;let a=parseFloat(e);const u=this.getDecimalPlaces();return null!==u&&(a||0===a)&&a.toFixed&&(a=parseFloat(a.toFixed(u))),a}validate(e,a){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return UG(void 0!==a?a:this._input?.value,{editorArgs:this.args,errorMessage:this.columnEditor.errorMessage,decimal:this.getDecimalPlaces(),minValue:this.columnEditor.minValue,maxValue:this.columnEditor.maxValue,operatorConditionalType:this.columnEditor.operatorConditionalType,required:!this.args?.compositeEditorOptions&&this.columnEditor.required,validator:this.validator})}},integer:class Jce extends Y7{constructor(e){super(e,"number"),this.args=e}loadValue(e){const a=this.columnDef&&this.columnDef.field;if(void 0!==a&&e&&void 0!==a&&this._input){const i=a?.indexOf(".")>0?Xu(e,a):e[a];this._originalValue=isNaN(i)||null==i?i:`${i}`,this._input.value=`${this._originalValue}`,this._input.select()}}serializeValue(){const e=this._input?.value;if(void 0===e||""===e||isNaN(+e))return e;const a=isNaN(+e)?e:parseInt(e,10);return isNaN(+a)?e:a}validate(e,a){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return JG(void 0!==a?a:this.getValue(),{editorArgs:this.args,errorMessage:this.columnEditor.errorMessage,minValue:this.columnEditor.minValue,maxValue:this.columnEditor.maxValue,operatorConditionalType:this.columnEditor.operatorConditionalType,required:!this.args?.compositeEditorOptions&&this.columnEditor.required,validator:this.validator})}handleOnMouseWheel(e){this._isValueTouched=!0;const a=this.args.compositeEditorOptions;a&&this.handleChangeOnCompositeEditor(e,a)}},longText:class Zce{constructor(e){if(this.args=e,this._isValueTouched=!1,this.disabled=!1,!e)throw new Error("[Slickgrid-Universal] Something is wrong with this grid, an Editor must always have valid arguments.");this.grid=e.grid,this.gridOptions=e.grid?.getOptions();const a=this.gridOptions||this.args.column.params||{};a?.translater&&(this._translater=a.translater),this._locales=this.gridOptions?.locales||ae.locales,this._bindEventService=new wi,this.init()}get columnDef(){return this.args.column}get columnEditor(){return this.columnDef?.editor??{}}get dataContext(){return this.args.item}get editorDomElement(){return this._textareaElm}get editorOptions(){return{...this.gridOptions.defaultEditorOptions?.longText,...this.columnEditor?.editorOptions}}get hasAutoCommitEdit(){return this.gridOptions?.autoCommitEdit??!1}get validator(){return this.columnEditor?.validator??this.columnDef?.validator}init(){let e="",a="";if(this._translater&&this._translater.translate&&this.gridOptions.enableTranslate){const E=Gl(this.gridOptions),v=this.editorOptions.buttonTexts?.cancelKey??`${E}CANCEL`,k=this.editorOptions.buttonTexts?.saveKey??`${E}SAVE`;e=this._translater.translate(`${E}${v}`),a=this._translater.translate(`${E}${k}`)}else e=this.editorOptions.buttonTexts?.cancel??this._locales?.TEXT_CANCEL??"Cancel",a=this.editorOptions.buttonTexts?.save??this._locales?.TEXT_SAVE??"Save";const u=this.args.compositeEditorOptions,i=this.columnDef?.id??"",r=this.columnEditor?.maxLength,o=this.editorOptions?.rows??4,d=u?this.args.container:document.body;this._wrapperElm=T("div",{className:`slick-large-editor-text editor-${i}`,style:{position:u?"relative":"absolute"}}),this.gridOptions?.darkMode&&this._wrapperElm.classList.add("slick-dark-mode"),d.appendChild(this._wrapperElm),this._textareaElm=T("textarea",{ariaLabel:this.columnEditor?.ariaLabel??`${Rs(i+"")} Text Editor`,cols:this.editorOptions?.cols??40,rows:u&&o>3?3:o,placeholder:this.columnEditor?.placeholder??"",title:this.columnEditor?.title??""},this._wrapperElm);const h=T("div",{className:"editor-footer"}),m=T("span",{className:"counter"});if(this._currentLengthElm=T("span",{className:"text-length",textContent:"0"}),m.appendChild(this._currentLengthElm),void 0!==r&&(m.appendChild(T("span",{className:"separator",textContent:"/"})),m.appendChild(T("span",{className:"max-length",textContent:`${r}`}))),h.appendChild(m),!u){const E=T("button",{className:"btn btn-cancel btn-default btn-xs",textContent:e},h),v=T("button",{className:"btn btn-save btn-primary btn-xs",textContent:a},h);this._bindEventService.bind(E,"click",this.cancel.bind(this)),this._bindEventService.bind(v,"click",this.save.bind(this)),this.position(this.args?.position),this._textareaElm.focus(),this._textareaElm.select()}this._wrapperElm.appendChild(h),this._bindEventService.bind(this._textareaElm,"keydown",this.handleKeyDown.bind(this)),this._bindEventService.bind(this._textareaElm,"input",this.handleOnInputChange.bind(this)),this._bindEventService.bind(this._textareaElm,"paste",this.handleOnInputChange.bind(this))}cancel(){const e=this._defaultTextValue||"";this._textareaElm.value=e,this._currentLengthElm.textContent=`${e.length}`,this.args?.cancelChanges&&this.args.cancelChanges()}hide(){this._wrapperElm.style.display="none"}show(){this.args?.compositeEditorOptions?this.applyInputUsabilityState():this._wrapperElm.style.display="block"}destroy(){this._bindEventService.unbindAll(),this._wrapperElm?.remove?.()}disable(e=!0){const a=this.disabled;if(this.disabled=e,this._textareaElm&&this._wrapperElm)if(e){this._textareaElm.disabled=!0,this._wrapperElm.classList.add("disabled");const u=this.getValue();a!==e&&this.args?.compositeEditorOptions&&""!==u&&this.reset("",!0,!0)}else this._textareaElm.disabled=!1,this._wrapperElm.classList.remove("disabled")}focus(){this.grid.focus(),this._textareaElm&&(this._textareaElm.focus(),this._textareaElm.select())}getValue(){return this._textareaElm.value}setValue(e,a=!1,u=!0){if(this._textareaElm.value=e,this._currentLengthElm.textContent=`${e.length}`,a){this.applyValue(this.args.item,this.serializeValue());const i=this.args.compositeEditorOptions;i&&u&&this.handleChangeOnCompositeEditor(null,i,"system")}}applyValue(e,a){const u=this.columnDef?.field;if(void 0!==u){const i=u?.indexOf(".")>0,o=this.validate(void 0,a)?.valid?a:"";if(i){xr(e,this.columnEditor?.complexObjectPath??u??"",o)}else e[u]=o}}isValueChanged(){const e=this._textareaElm.value;return!(""===e&&(null===this._defaultTextValue||void 0===this._defaultTextValue))&&e!==this._defaultTextValue}isValueTouched(){return this._isValueTouched}loadValue(e){const a=this.columnDef?.field;if(e&&void 0!==a){const i=a?.indexOf(".")>0?Xu(e,a):e[a];this._defaultTextValue=i||"",this._textareaElm.value=this._defaultTextValue,this._currentLengthElm.textContent=this._defaultTextValue.length,this._textareaElm.defaultValue=this._defaultTextValue,this._textareaElm.select()}}position(e){const a=Du(this.args.container),u=this.args.container.offsetHeight,i=this.args.container.offsetWidth,r=this._wrapperElm.getBoundingClientRect().height||this.args.position.height,o=this._wrapperElm.getBoundingClientRect().width||this.args.position.width,d=document.body.offsetHeight||window.innerHeight,h=document.body.offsetWidth||window.innerWidth;let m=a?.top??e.top??0,E=a?.left??e.left??0;const v=this.editorOptions?.position??"auto";if("left"===v||"auto"===v&&E+o>h){E-=o-i+(this.editorOptions?.marginRight??0)}("top"===v||"auto"===v&&m+r>d)&&(m-=r-u),this._wrapperElm.style.top=`${m}px`,this._wrapperElm.style.left=`${E}px`}reset(e,a=!0,u=!1){const i=e??this._defaultTextValue??"";this._textareaElm&&(this._defaultTextValue=i,this._textareaElm.value=i,this._currentLengthElm.textContent=i.length),this._isValueTouched=!1;const r=this.args.compositeEditorOptions;if(r&&a){const o=!u;this.handleChangeOnCompositeEditor(null,r,"user",o)}}save(){const a=this.validate()?.valid??!1;this.hasAutoCommitEdit&&a?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}serializeValue(){return this._textareaElm.value}validate(e,a){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return q7(void 0!==a?a:this._textareaElm?.value,{editorArgs:this.args,errorMessage:this.columnEditor.errorMessage,minLength:this.columnEditor.minLength,maxLength:this.columnEditor.maxLength,operatorConditionalType:this.columnEditor.operatorConditionalType,required:!this.args?.compositeEditorOptions&&this.columnEditor.required,validator:this.validator})}applyInputUsabilityState(){const e=this.grid.getActiveCell(),a=this.grid.onBeforeEditCell.notify({...e,item:this.dataContext,column:this.args.column,grid:this.grid,target:"composite",compositeEditorOptions:this.args.compositeEditorOptions}).getReturnValue();this.disable(!1===a)}handleKeyDown(e){const a=e.key;this._isValueTouched=!0,this.args.compositeEditorOptions||("Enter"===a&&e.ctrlKey||e.ctrlKey&&"S"===e.key.toUpperCase()?(e.preventDefault(),this.save()):"Escape"===a?(e.preventDefault(),this.cancel()):"Tab"===a&&e.shiftKey?(e.preventDefault(),this.args&&this.grid&&this.grid.navigatePrev()):"Tab"===a&&(e.preventDefault(),this.args&&this.grid&&this.grid.navigateNext()))}handleOnInputChange(e){const a=this.args.compositeEditorOptions,u=this.columnEditor?.maxLength;let i=!1;if(u&&(i=this.truncateText(this._textareaElm,u)),i)this._currentLengthElm.textContent=`${u}`;else{const r="paste"===e.type?e.clipboardData.getData("text"):e.target.value;this._currentLengthElm.textContent=`${r.length}`}if(a){const r=this.gridOptions?.editorTypingDebounce??500;clearTimeout(this._timer),this._timer=setTimeout(()=>this.handleChangeOnCompositeEditor(e,a),r)}}handleChangeOnCompositeEditor(e,a,u="user",i=!1){const r=this.grid.getActiveCell(),o=this.args.column,d=this.columnDef?.id??"",h=this.dataContext,m=this.grid,E=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,E),this.applyValue(a.formValues,E);const v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(i||this.disabled&&v&&a.formValues.hasOwnProperty(d))&&delete a.formValues[d],m.onCompositeEditorChange.notify({...r,item:h,grid:m,column:o,formValues:a.formValues,editors:a.editors,triggeredBy:u},new jt(e))}truncateText(e,a){const u=e.value+"";return u.length>a&&(e.value=u.substring(0,a),!0)}},multipleSelect:class $ce extends ZG{constructor(e,a=0){super(e,!0,a),this.args=e,this.delayOpening=a}},password:class Uce extends Y7{constructor(e){super(e,"password"),this.args=e}},singleSelect:class qce extends ZG{constructor(e,a=0){super(e,!1,a),this.args=e,this.delayOpening=a}},slider:class Yce{constructor(e){if(this.args=e,this._defaultValue=0,this._isValueTouched=!1,this._sliderNumberElm=null,this.disabled=!1,!e)throw new Error("[Slickgrid-Universal] Something is wrong with this grid, an Editor must always have valid arguments.");this.grid=e.grid,this.gridOptions=this.grid.getOptions()||{},this._bindEventService=new wi,this.init()}get columnDef(){return this.args.column}get columnEditor(){return this.columnDef?.editor??{}}get dataContext(){return this.args.item}get editorDomElement(){return this._editorElm}get editorInputDomElement(){return this._inputElm}get editorOptions(){return{...this.gridOptions.defaultEditorOptions?.slider,...this.columnEditor?.editorOptions}}get hasAutoCommitEdit(){return this.gridOptions.autoCommitEdit??!1}get sliderOptions(){return this._sliderOptions}get validator(){return this.columnEditor.validator??this.columnDef?.validator}init(){if(this._cellContainerElm=this.args?.container,this._cellContainerElm&&this.columnDef){const e=this.args.compositeEditorOptions;this._editorElm=this.buildDomElement(),e||this.focus(),this._cellContainerElm.appendChild(this._editorElm),this._bindEventService.bind(this._sliderTrackElm,["click","mouseup"],this.sliderTrackClicked.bind(this)),this._bindEventService.bind(this._inputElm,["change","mouseup","touchend"],this.handleChangeEvent.bind(this)),this._bindEventService.bind(this._inputElm,["input","change"],this.handleChangeSliderNumber.bind(this))}}cancel(){this._inputElm&&(this._inputElm.value=`${this._originalValue}`),this.args.cancelChanges()}destroy(){this._bindEventService.unbindAll(),this._inputElm?.remove(),this._editorElm?.remove(),this._sliderTrackElm?.remove()}disable(e=!0){const a=this.disabled;if(this.disabled=e,this._inputElm)if(e){this._inputElm.disabled=!0;const u=this.getValue();a!==e&&this.args?.compositeEditorOptions&&""!==u&&this.reset(0,!0,!0)}else this._inputElm.disabled=!1}focus(){this.grid.focus(),this._inputElm?.focus()}show(){this.args?.compositeEditorOptions&&this.applyInputUsabilityState()}getValue(){return this._inputElm?.value??""}setValue(e,a=!1,u=!0){if(this._inputElm&&(this._inputElm.value=`${e}`),this._sliderNumberElm&&(this._sliderNumberElm.textContent=`${e}`),a){this.applyValue(this.args.item,this.serializeValue());const i=this.args.compositeEditorOptions;i&&u&&this.handleChangeOnCompositeEditor(null,i,"system")}}applyValue(e,a){const u=this.columnDef?.field??"";if(void 0!==u){const i=u?.indexOf(".")>0,r=this.validate(void 0,a),o=r&&r.valid?a:"";if(i){xr(e,this.columnEditor.complexObjectPath??u??"",o)}else e&&(e[u]=o)}}isValueChanged(){const e=this._inputElm?.value??"";return!(""===e&&void 0===this._originalValue)&&+e!==this._originalValue}isValueTouched(){return this._isValueTouched}loadValue(e){const a=this.columnDef?.field??"";if(e&&void 0!==a){let i=a?.indexOf(".")>0?Xu(e,a):e.hasOwnProperty(a)?e[a]:this._defaultValue;(""===i||null==i)&&(i=this._defaultValue),this._originalValue=+i,this._inputElm&&(this._inputElm.value=`${i}`,this._inputElm.title=`${i}`),this._sliderNumberElm&&(this._sliderNumberElm.textContent=`${i}`)}this.updateTrackFilledColorWhenEnabled()}reset(e,a=!0,u=!1){const i=e??this._originalValue??0;this._inputElm&&(this._inputElm.value=`${i}`),this._sliderNumberElm&&(this._sliderNumberElm.textContent=`${i}`),this._isValueTouched=!1;const r=this.args.compositeEditorOptions;if(r&&a){const o=!u;this.handleChangeOnCompositeEditor(null,r,"user",o)}}save(){const e=this.validate(),a=e&&e.valid||!1;this.hasAutoCommitEdit&&a?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}serializeValue(){const e=this._inputElm?.value??"";return""!==e?parseInt(e,10):this._originalValue}validate(e,a){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return function Oce(t,e){const a=e.required,u=e.minValue,i=e.maxValue,r=e.errorMessage,o={"{{minValue}}":u,"{{maxValue}}":i};return e.validator?e.validator(t,e.editorArgs):a&&""===t?{valid:!1,msg:r||ae.VALIDATION_REQUIRED_FIELD}:void 0!==u&&void 0!==i&&null!==t&&(ti)?{valid:!1,msg:r||ae.VALIDATION_EDITOR_NUMBER_BETWEEN.replace(/{{minValue}}|{{maxValue}}/gi,d=>o[d])}:{valid:!0,msg:null}}(void 0!==a?a:this._inputElm?.value,{editorArgs:this.args,errorMessage:this.columnEditor.errorMessage,minValue:this.columnEditor.minValue,maxValue:this.columnEditor.maxValue,required:!this.args?.compositeEditorOptions&&this.columnEditor.required,validator:this.validator})}buildDomElement(){const e=this.columnDef?.id??"",a=this.columnEditor.title??"",u=+(this.columnEditor.minValue??ae.SLIDER_DEFAULT_MIN_VALUE),i=+(this.columnEditor.maxValue??ae.SLIDER_DEFAULT_MAX_VALUE),r=+(this.columnEditor.valueStep??ae.SLIDER_DEFAULT_STEP),o=this.editorOptions.sliderStartValue??u;this._defaultValue=+o,this._sliderTrackElm=T("div",{className:"slider-track"}),this._inputElm=T("input",{type:"range",title:a,defaultValue:`${o}`,value:`${o}`,min:`${u}`,max:`${i}`,step:`${this.columnEditor.valueStep??ae.SLIDER_DEFAULT_STEP}`,ariaLabel:this.columnEditor.ariaLabel??`${Rs(e+"")} Slider Editor`,className:`slider-editor-input editor-${e}`});const d=T("div",{className:"slider-container slider-editor"}),h=T("div",{className:"slider-input-container slider-editor"});if(h.appendChild(this._sliderTrackElm),h.appendChild(this._inputElm),d.appendChild(h),!this.editorOptions.hideSliderNumber){d.classList.add("input-group");const m=T("div",{className:"input-group-addon input-group-append slider-value"});this._sliderNumberElm=T("span",{className:"input-group-text",textContent:`${o}`}),m.appendChild(this._sliderNumberElm),d.appendChild(m)}return this._sliderOptions={minValue:u,maxValue:i,step:r},d}applyInputUsabilityState(){const e=this.grid.getActiveCell(),a=this.grid.onBeforeEditCell.notify({...e,item:this.dataContext,column:this.args.column,grid:this.grid,target:"composite",compositeEditorOptions:this.args.compositeEditorOptions}).getReturnValue();this.disable(!1===a)}handleChangeEvent(e){this._isValueTouched=!0;const a=this.args.compositeEditorOptions;a?this.handleChangeOnCompositeEditor(e,a):this.save()}handleChangeSliderNumber(e){const a=e.target?.value??"";""!==a&&(!this.editorOptions.hideSliderNumber&&this._sliderNumberElm&&(this._sliderNumberElm.textContent=a),this._inputElm.title=a,this.args?.compositeEditorOptions||this.grid.onMouseEnter.notify({column:this.columnDef,grid:this.grid},new jt(e))),this.updateTrackFilledColorWhenEnabled()}handleChangeOnCompositeEditor(e,a,u="user",i=!1){const r=this.grid.getActiveCell(),o=this.args.column,d=this.columnDef?.id??"",h=this.dataContext,m=this.grid,E=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,E),this.applyValue(a.formValues,E);const v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(i||this.disabled&&v&&a.formValues.hasOwnProperty(d))&&delete a.formValues[d],m.onCompositeEditorChange.notify({...r,item:h,grid:m,column:o,formValues:a.formValues,editors:a.editors,triggeredBy:u},new jt(e))}sliderTrackClicked(e){e.preventDefault();const i=100*(e.offsetX+0)/this._sliderTrackElm.offsetWidth;this._inputElm&&(this._inputElm.value=`${i}`,this._inputElm.dispatchEvent(new Event("change")))}updateTrackFilledColorWhenEnabled(){if(this.editorOptions.enableSliderTrackColoring&&this._inputElm){const a=(+this.getValue()-+this._inputElm.min)/(this.sliderOptions?.maxValue??0-+this._inputElm.min)*100,u="linear-gradient(to right, %b %p1, %c %p1, %c %p2, %b %p2)".replace(/%b/g,"#eee").replace(/%c/g,this.editorOptions?.sliderTrackFilledColor??"var(--slick-slider-filter-thumb-color, #86bff8)").replace(/%p1/g,"0%").replace(/%p2/g,`${a}%`);this._sliderTrackElm.style.background=u,this._sliderOptions.sliderTrackBackground=u}}},text:Y7},Q7=(t,e,a)=>{if(Array.isArray(a)&&a.length>0){const u=a.join(", ");return T("span",{title:u,textContent:u})}return a},$G=(t,e,a,u,i)=>{if(!u)return"";const r=u.params||{},o=r?.complexField??r?.complexFieldLabel??u.field;if(!o)throw new Error("For the Formatters.complexObject to work properly, you need to tell it which property of the complex object to use.\n There are 3 ways to provide it:\n 1- via the generic \"params\" with a \"complexField\" property on your Column Definition, example: this.columnDefs = [{ id: 'user', field: 'user', params: { complexField: 'user.firstName' } }]\n 2- via the generic \"params\" with a \"complexField\" and a \"labelKey\" property on your Column Definition, example: this.columnDefs = [{ id: 'user', field: 'user', labelKey: 'firstName', params: { complexField: 'user' } }]\n 3- via the field name that includes a dot notation, example: this.columnDefs = [{ id: 'user', field: 'user.firstName'}] ");if(u.labelKey&&i.hasOwnProperty(o))return i[o]?.[u.labelKey];if("string"==typeof o&&o.indexOf(".")>0){let d=o.split(".").reduce((h,m)=>h?.hasOwnProperty(m)?h[m]:"",i);return(null==d||"object"==typeof d&&0===Object.entries(d).length&&!(d instanceof Date))&&(d=""),d}return a},G={arrayObjectToCsv:(t,e,a,u,i)=>{const r=u&&u.params||{},o=r.propertyNames,d=r?.includeTitle??!0;let h=r.dataContextProperty;if(h||(h=u?.field?.split(".")[0]||""),!o||!Array.isArray(o)||!h)throw new Error('Formatters.arrayObjectToCsv requires you to pass an array of "propertyNames" (declared in "params") that you want to pull the data from.\n For example, if we have an array of user objects that have the property of firstName & lastName then we need to pass in your column definition:: { params: { propertyNames: [\'firtName\'] }}.\n Optionally, you can also pass the "dataContextProperty" if you wish to run this on another completely different field of the dataContext object.');if(i[h]&&Array.isArray(i[h])&&Array.isArray(i[h])&&i[h].length>0){const m=[];i[h].forEach(k=>{const x=[];o.forEach(f=>{x.push(k[f])}),m.push(x.join(" "))});const E=m.join(", "),v=T("span",{textContent:E});return d&&(v.title=E),v}return a},arrayToCsv:Q7,checkmarkMaterial:(t,e,a)=>{let u=!1;const i=Ca(a);return i&&(a=+a),(!0===a||i&&+a>0||"string"==typeof a&&a.length>0&&"false"!==a.toLowerCase()&&"0"!==a)&&(u=!0),u?T("i",{className:"mdi mdi-18px mdi-check checkmark-icon",ariaHidden:"true"}):""},complex:$G,complexObject:$G,collection:(t,e,a,u,i,r)=>{if(!(a&&u&&u.params&&u.params.collection&&u.params.collection.length))return a;const{params:o,params:{collection:d}}=u,h=o.customStructure?o.customStructure.label:"label",m=o.customStructure?o.customStructure.value:"value";return Array.isArray(a)?Q7(0,0,a.map(E=>hc(d,v=>v[m]===E)[h])):hc(d,E=>E[m]===a)[h]||""},collectionEditor:(t,e,a,u,i,r)=>{if(!(a&&u&&u.editor&&u.editor.collection&&u.editor.collection.length))return a;const{editor:o,editor:{collection:d}}=u,h=o.customStructure?o.customStructure.label:"label",m=o.customStructure?o.customStructure.value:"value";return Array.isArray(a)?d.every(E=>"string"==typeof E)?Q7(0,0,a.map(E=>hc(d,v=>v===E))):Q7(0,0,a.map(E=>hc(d,v=>v[m]===E)[h])):hc(d,E=>E[m]===a)[h]||""},currency:(t,e,a,u,i,r)=>{const{currencyPrefix:o,currencySuffix:d,minDecimal:h,maxDecimal:m,numberPrefix:E,numberSuffix:v,decimalSeparator:k,thousandSeparator:x,wrapNegativeNumber:f}=ju(u,r,"decimal","cell");if(Ca(a)){return`${E}${Bu(a,h,m,f,o,d,k,x)}${v}`}return a},dateIso:Ou(F.dateIso,"-"),dateTimeIso:Ou(F.dateTimeIso,"-"),dateTimeShortIso:Ou(F.dateTimeShortIso,"-"),dateTimeIsoAmPm:Ou(F.dateTimeIsoAmPm,"-"),dateTimeIsoAM_PM:Ou(F.dateTimeIsoAM_PM,"-"),dateEuro:Ou(F.dateEuro,"/"),dateEuroShort:Ou(F.dateEuroShort,"/"),dateTimeEuro:Ou(F.dateTimeEuro,"/"),dateTimeEuroShort:Ou(F.dateTimeEuroShort,"/"),dateTimeShortEuro:Ou(F.dateTimeShortEuro,"/"),dateTimeEuroAmPm:Ou(F.dateTimeEuroAmPm,"/"),dateTimeEuroAM_PM:Ou(F.dateTimeEuroAM_PM,"/"),dateTimeEuroShortAmPm:Ou(F.dateTimeEuroShortAmPm,"/"),dateTimeEuroShortAM_PM:Ou(F.dateTimeEuroShortAM_PM,"/"),dateUs:Ou(F.dateUs,"/"),dateTimeUs:Ou(F.dateTimeUs,"/"),dateTimeShortUs:Ou(F.dateTimeShortUs,"/"),dateTimeUsAmPm:Ou(F.dateTimeUsAmPm,"/"),dateTimeUsAM_PM:Ou(F.dateTimeUsAM_PM,"/"),dateTimeUsShort:Ou(F.dateTimeUsShort,"/"),dateTimeUsShortAmPm:Ou(F.dateTimeUsShortAmPm,"/"),dateTimeUsShortAM_PM:Ou(F.dateTimeUsShortAM_PM,"/"),dateUsShort:Ou(F.dateUsShort,"/"),dateUtc:Ou(F.dateUtc,"-"),decimal:(t,e,a,u,i,r)=>{const{minDecimal:o,maxDecimal:d,numberPrefix:h,numberSuffix:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(u,r,"decimal","cell");return Ca(a)?Bu(a,o,d,k,h,m,E,v):a},dollar:(t,e,a,u,i,r)=>{const{minDecimal:o,maxDecimal:d,decimalSeparator:h,thousandSeparator:m,wrapNegativeNumber:E}=ju(u,r,"currency","cell");return Ca(a)?Bu(a,o,d,E,"$","",h,m):a},dollarColored:(t,e,a,u,i,r)=>{const{minDecimal:o,maxDecimal:d,decimalSeparator:h,thousandSeparator:m,wrapNegativeNumber:E}=ju(u,r,"currency","cell");if(Ca(a)){const v=a>=0?"green":"red",x=T("span",{ariaHidden:"true",textContent:Bu(a,o,d,E,"$","",h,m)});return x.style.color=v,x}return a},dollarColoredBold:(t,e,a,u,i,r)=>{const{minDecimal:o,maxDecimal:d,decimalSeparator:h,thousandSeparator:m,wrapNegativeNumber:E}=ju(u,r,"currency","cell");if(Ca(a)){const v=a>=0?"green":"red",x=T("span",{ariaHidden:"true",textContent:Bu(a,o,d,E,"$","",h,m)});return x.style.color=v,x.style.fontWeight="bold",x}return a},hyperlink:(t,e,a,u,i,r)=>{const o=u&&u.params||{};let d=o.hyperlinkText?o.hyperlinkText:a;d=r.sanitizeHtmlString(d);let h=o.hyperlinkUrl?o.hyperlinkUrl:a;h=r.sanitizeHtmlString(h);const m=h.match(/^(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?/i);if(m&&Array.isArray(m)&&m.length>0){return T("a",{href:m[0],textContent:d})}return a},icon:(t,e,a,u)=>{const i=u?.params??{},r=i.iconCssClass||i.icon||i.formatterIcon;if(!r)throw new Error('[Slickgrid-Universal] When using `Formatters.icon`, you must provide the "iconCssClass" via the generic "params". (e.g.: `{ formatter: Formatters.icon, params: { iconCssClass: "mdi mdi-magnify" }}`');return T("i",{className:r,ariaHidden:"true"})},iconBoolean:(t,e,a,u)=>{const r=(u?.params||{}).cssClass;if(!r)throw new Error('[Slickgrid-Universal] When using `Formatters.iconBoolean`, you must provide You must provide the "cssClass", e.g.: { formatter: Formatters.iconBoolean, params: { cssClass: "mdi mdi-check" }}');let o=!1;const d=!isNaN(a);return(!0===a||d&&parseFloat(a)>0||!d&&"string"==typeof a&&"false"!==a.toLowerCase()&&"0"!==a)&&(o=!0),o?T("i",{className:r,ariaHidden:"true"}):""},mask:(t,e,a,u,i,r)=>{const d=(u.params||{}).mask;if(!d)throw new Error('You must provide a "mask" via the generic "params" options (e.g.: { formatter: Formatters.mask, params: { mask: \'000-000\' }}');if(a){let h=0;const m=a.toString(),v=(r.getOptions()||{})?.preventDocumentFragmentUsage?document.createElement("span"):new DocumentFragment;return v.textContent=d.replace(/[09A]/gi,()=>m[h++]||""),v}return a},multiple:j7,percent:(t,e,a,u,i,r)=>{const{minDecimal:o,maxDecimal:d,decimalSeparator:h,thousandSeparator:m,wrapNegativeNumber:E}=ju(u,r,"percent","cell");if(Ca(a)){return Bu(100*a,o,d,E,"","%",h,m)}return a},percentComplete:(t,e,a,u,i,r)=>{const{minDecimal:o,maxDecimal:d,decimalSeparator:h,thousandSeparator:m,wrapNegativeNumber:E}=ju(u,r,"percent","cell");if(Ca(a)){const v=a<50?"red":"green",k=Bu(a,o,d,E,"","%",h,m);return T("span",{textContent:a>100?"100%":k,style:{color:v}})}return a},percentCompleteBar:(t,e,a)=>{if(!Ca(a))return"";let u="",i=parseFloat(a);return i>100&&(i=100),u=i<30?"red":i<70?"silver":"green",T("span",{className:"percent-complete-bar",title:`${i}%`,style:{background:u,width:`${i}%`}})},percentCompleteBarWithText:(t,e,a)=>{if(!Ca(a))return"";let u="",i=parseFloat(a);return i>100&&(i=100),u=i<30?"red":i<70?"silver":"green",T("div",{className:"percent-complete-bar-with-text",title:`${i}%`,textContent:`${i}%`,style:{background:u,width:`${i}%`}})},percentSymbol:(t,e,a,u,i,r)=>{const{minDecimal:o,maxDecimal:d,decimalSeparator:h,thousandSeparator:m,wrapNegativeNumber:E}=ju(u,r,"percent","cell");return Ca(a)?Bu(a,o,d,E,"","%",h,m):a},progressBar:(t,e,a)=>{if(!Ca(a))return"";let u="",i=parseFloat(a);i>100&&(i=100),u=i<30?"danger":i<70?"warning":"success";const r=T("div",{className:"progress"});return r.appendChild(T("div",{className:`progress-bar progress-bar-${u} bg-${u}`,role:"progressbar",ariaValueNow:String(i),ariaValueMin:"0",ariaValueMax:"100",textContent:`${i}%`,style:{minWidth:"2em",width:`${i}%`}})),r},translate:(t,e,a,u,i,r)=>{const d=(r?.getOptions()??{}).translater||u&&u.params&&u.params.translater;if(!d||"function"!=typeof d.translate)throw new Error('"Formatters.translate" requires the Translate Service to be provided as a Grid Options "translater" (or "i18n" depending on which framework you use).\n For example: this.gridOptions = { enableTranslate: true, translater: this.translateService }');return null!=a&&"string"!=typeof a&&(a+=""),a?d.translate(a):""},translateBoolean:(t,e,a,u,i,r)=>{const d=(r?.getOptions()??{}).translater||u&&u.params&&u.params.translater;if(!d||"function"!=typeof d.translate)throw new Error('"Formatters.translateBoolean" requires the Translate Service to be provided as a Grid Options "translater" (or "i18n" depending on which framework you use).\n For example: this.gridOptions = { enableTranslate: true, translater: this.translateService }');return null!=a&&"string"!=typeof a&&(a+=""),a?d.translate(a.toUpperCase()):""},tree:(t,e,a,u,i,r)=>{const o=r.getOptions(),d=o?.treeDataOptions,h=d?.indentMarginLeft??15,m=d?.collapsedPropName??ae.treeDataProperties.COLLAPSED_PROP,E=d?.hasChildrenPropName??ae.treeDataProperties.HAS_CHILDREN_PROP,v=d?.levelPropName??ae.treeDataProperties.TREE_LEVEL_PROP;let k=a;if(k=b2(u,i,a),null==k||void 0===i)return"";if(!i.hasOwnProperty(v))throw new Error('[Slickgrid-Universal] You must provide valid "treeDataOptions" in your Grid Options, however it seems that we could not find any tree level info on the current item datacontext row.');const x=i?.[v]??0,f=document.createElement("span");f.style.display="inline-block",f.style.width=h*x+"px";const C=`slick-tree-level-${x}`;let A="";i[E]&&(A=i?.[m]?"collapsed":"expanded"),d?.titleFormatter&&(k=O7(d.titleFormatter,t,e,u,i,r));const z=T("div",{className:`slick-group-toggle ${A}`.trim(),ariaExpanded:String("expanded"===A)}),L=T("span",{className:"slick-tree-title"});r.applyHtmlCode(L,k),L.setAttribute("level",x);const M=o?.preventDocumentFragmentUsage?document.createElement("span"):new DocumentFragment;return M.appendChild(f),M.appendChild(z),M.appendChild(L),{addClasses:C,html:M}},treeParseTotals:(t,e,a,u,i,r)=>{const d=r.getOptions()?.treeDataOptions?.hasChildrenPropName??ae.treeDataProperties.HAS_CHILDREN_PROP,{groupTotalsFormatter:h,treeTotalsFormatter:m,params:E}=u;if(!h&&!m)throw new Error('[Slickgrid-Universal] When using Formatters.treeParseTotals, you must provide a total formatter via "groupTotalsFormatter" or "treeTotalsFormatter".');if(i[d]&&i?.__treeTotals&&(h||m))return(m??h)(i?.__treeTotals,u,r);if(E.formatters){let v=a;for(const k of E.formatters)!i[d]&&!i?.__treeTotals&&"function"==typeof k&&(v=k(t,e,v,u,i,r)||a);return v}return a},treeExport:(t,e,a,u,i,r)=>{const o=r.getOptions(),d=o?.treeDataOptions,h=d?.collapsedPropName??ae.treeDataProperties.COLLAPSED_PROP,m=d?.hasChildrenPropName??ae.treeDataProperties.HAS_CHILDREN_PROP,E=d?.levelPropName??ae.treeDataProperties.TREE_LEVEL_PROP,v=d?.exportIndentMarginLeft??5,k=d?.exportIndentationLeadingChar??".",x=d?.exportIndentationLeadingSpaceCount??3,f=o?.excelExportOptions?.groupCollapsedSymbol??"\u2b9e",C=o?.excelExportOptions?.groupExpandedSymbol??"\u2b9f";let A=a;if(A=b2(u,i,a),null==A||void 0===i)return"";if(!i.hasOwnProperty(E))throw new Error('[Slickgrid-Universal] You must provide valid "treeDataOptions" in your Grid Options, however it seems that we could not find any tree level info on the current item datacontext row.');const w=i?.[E]??0;let z="",L=0;i[m]?(z=i?.[h]?f:C,L=0===w?0:v*w):L=v*(0===w?0:w+1);const M=Dv(L);return d?.titleFormatter&&(A=O7(d.titleFormatter,t,e,u,i,r)),A=`${0===w&&z?"":0===w?`${k}${Dv(x)}`:k}${M}${z} ${A}`,zu(A)}},nt={avgTotals:(t,e,a)=>{const u=e.field??"";let i=t.avg?.[u];const r=e?.params;let o=r?.groupFormatterPrefix||"";const d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"regular","group");if(Ca(i)){if(i<0){if(i=Math.abs(i),k){if(isNaN(h)&&isNaN(m)){return`${o}(${cc(Math.round(i),v)})${d}`}return`${o}(${M0(i,h,m,E,v)})${d}`}o+="-"}if(isNaN(h)&&isNaN(m)){return`${o}${cc(Math.round(i),v)}${d}`}return`${o}${M0(i,h,m,E,v)}${d}`}return""},avgTotalsCurrency:(t,e,a)=>{const u=e.field??"",i=t.avg?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",h=r?.groupFormatterCurrencyPrefix||"",m=r?.groupFormatterCurrencySuffix||"",{minDecimal:E,maxDecimal:v,decimalSeparator:k,thousandSeparator:x,wrapNegativeNumber:f}=ju(e,a,"currency","group");if(Ca(i)){return`${o}${Bu(i,E,v,f,h,m,k,x)}${d}`}return""},avgTotalsDollar:(t,e,a)=>{const u=e.field??"",i=t.avg?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"currency","group");if(Ca(i)){return`${o}${Bu(i,h,m,k,"$","",E,v)}${d}`}return""},avgTotalsPercentage:(t,e,a)=>{const u=e.field??"";let i=t.avg?.[u];const r=e?.params;let o=r?.groupFormatterPrefix||"";const d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"percent","group");if(Ca(i)){if(i<0){if(i=Math.abs(i),k){if(isNaN(h)&&isNaN(m)){return`${o}(${cc(Math.round(i),v)}%)${d}`}return`${o}(${M0(i,h,m,E,v)}%)${d}`}o+="-"}if(isNaN(h)&&isNaN(m)){return`${o}${cc(Math.round(i),v)}%${d}`}return`${o}${M0(i,h,m,E,v)}%${d}`}return""},maxTotals:(t,e,a)=>{const u=e.field??"",i=t.max?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"regular","group");if(Ca(i)){return`${o}${Bu(i,h,m,k,"","",E,v)}${d}`}return""},minTotals:(t,e,a)=>{const u=e.field??"",i=t.min?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"regular","group");if(Ca(i)){return`${o}${Bu(i,h,m,k,"","",E,v)}${d}`}return""},sumTotals:(t,e,a)=>{const u=e.field??"",i=t.sum?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"regular","group");if(Ca(i)){return`${o}${Bu(i,h,m,k,"","",E,v)}${d}`}return""},sumTotalsBold:(t,e,a)=>{const u=e.field??"",i=t.sum?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"regular","group");if(Ca(i)){return T("span",{style:{fontWeight:"bold"},textContent:`${o}${Bu(i,h,m,k,"","",E,v)}${d}`})}return""},sumTotalsColored:(t,e,a)=>{const u=e.field??"",i=t.sum?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"regular","group");if(Ca(i)){return T("span",{style:{color:i>=0?"green":"red"},textContent:`${o}${Bu(i,h,m,k,"","",E,v)}${d}`})}return""},sumTotalsCurrency:(t,e,a)=>{const u=e.field??"",i=t.sum?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",h=r?.groupFormatterCurrencyPrefix||"",m=r?.groupFormatterCurrencySuffix||"",{minDecimal:E,maxDecimal:v,decimalSeparator:k,thousandSeparator:x,wrapNegativeNumber:f}=ju(e,a,"currency","group");if(Ca(i)){return`${o}${Bu(i,E,v,f,h,m,k,x)}${d}`}return""},sumTotalsCurrencyColored:(t,e,a)=>{const u=e.field??"",i=t.sum?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",h=r?.groupFormatterCurrencyPrefix||"",m=r?.groupFormatterCurrencySuffix||"",{minDecimal:E,maxDecimal:v,decimalSeparator:k,thousandSeparator:x,wrapNegativeNumber:f}=ju(e,a,"currency","group");if(Ca(i)){return T("span",{style:{color:i>=0?"green":"red"},textContent:`${o}${Bu(i,E,v,f,h,m,k,x)}${d}`})}return""},sumTotalsDollar:(t,e,a)=>{const u=e.field??"",i=t.sum?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"currency","group");if(Ca(i)){return`${o}${Bu(i,h,m,k,"$","",E,v)}${d}`}return""},sumTotalsDollarBold:(t,e,a)=>{const u=e.field??"",i=t.sum?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"currency","group");if(Ca(i)){return T("span",{style:{fontWeight:"bold"},textContent:`${o}${Bu(i,h,m,k,"$","",E,v)}${d}`})}return""},sumTotalsDollarColored:(t,e,a)=>{const u=e.field??"",i=t.sum?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"currency","group");if(Ca(i)){return T("span",{style:{color:i>=0?"green":"red"},textContent:`${o}${Bu(i,h,m,k,"$","",E,v)}${d}`})}return""},sumTotalsDollarColoredBold:(t,e,a)=>{const u=e.field??"",i=t.sum?.[u],r=e?.params,o=r?.groupFormatterPrefix||"",d=r?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:m,decimalSeparator:E,thousandSeparator:v,wrapNegativeNumber:k}=ju(e,a,"currency","group");if(Ca(i)){return T("span",{style:{color:i>=0?"green":"red",fontWeight:"bold"},textContent:`${o}${Bu(i,h,m,k,"$","",E,v)}${d}`})}return""}};class f1e{constructor(){this.options=Sce}}let il=class{constructor(e){this.vcr=e}createInteractiveAngularComponent(e,a,u,i){const r=this.vcr.createComponent(e,i);r?.instance&&u&&Object.assign(r.instance,u);let o=null;const d=r.hostView;return d&&Array.isArray(d.rootNodes)&&d.rootNodes[0]&&(o=d.rootNodes[0],a&&o&&a.replaceChildren(r.location.nativeElement)),{componentRef:r,domElement:o}}createAngularComponent(e,a,u,i){const r=this.vcr.createComponent(e,i);r?.instance&&u&&(Object.assign(r.instance,u),r.changeDetectorRef.detectChanges());let o=null;const d=r.hostView;return d&&Array.isArray(d.rootNodes)&&d.rootNodes[0]&&(o=d.rootNodes[0],a&&o&&(a.innerHTML=o.innerHTML)),{componentRef:r,domElement:o}}createAngularComponentAppendToDom(e,a,u,i){const r=this.createAngularComponent(e,a,u,i);return a?.replaceChildren?a.replaceChildren(r.domElement):document.body.appendChild(r.domElement),r}static#e=this.ctorParameters=()=>[{type:mr}]};il=Ye([m0(),Nt("design:paramtypes",[mr])],il);let U2=class{constructor(){this.dependencies=[]}get(e){const a=this.dependencies.find(u=>u.key===e);return a?.instance?a.instance:null}dispose(){this.dependencies=[]}registerInstance(e,a){this.dependencies.some(i=>i.key===e)||this.dependencies.push({key:e,instance:a})}};U2=Ye([m0()],U2);let J2=class{constructor(e){this.translateService=e}getCurrentLanguage(){return this.translateService?.currentLang??""}use(e){var a=this;return Au(function*(){return a.translateService?.use?.(e)})()}translate(e){return this.translateService?.instant?.(e||" ")}static#e=this.ctorParameters=()=>[{type:it,decorators:[{type:Ho}]}]};function kc(t){if(Array.isArray(t)){let e=t.pop();for(;e;)"function"==typeof e.unsubscribe&&e.unsubscribe(),e=t.pop()}return t}J2=Ye([m0(),Nt("design:paramtypes",[it])],J2);class C1e{constructor(e){this.pubSubService=e,this.pluginName="RowDetailView",this.onAsyncEndUpdate=new ve("onAsyncEndUpdate"),this.onAsyncResponse=new ve("onAsyncResponse"),this.onAfterRowDetailToggle=new ve("onAfterRowDetailToggle"),this.onBeforeRowDetailToggle=new ve("onBeforeRowDetailToggle"),this.onRowBackToViewportRange=new ve("onRowBackToViewportRange"),this.onRowOutOfViewportRange=new ve("onRowOutOfViewportRange"),this._dataViewIdProperty="id",this._expandableOverride=null,this._expandedRows=[],this._gridRowBuffer=0,this._gridUid="",this._keyPrefix="",this._lastRange=null,this._outsideRange=5,this._rowIdsOutOfViewport=[],this._visibleRenderedCellCount=0,this._defaults={alwaysRenderColumn:!0,columnId:"_detail_selector",field:"_detail_selector",cssClass:"detailView-toggle",collapseAllOnSort:!0,collapsedClass:void 0,expandedClass:void 0,keyPrefix:"_",loadOnce:!1,maxRows:void 0,reorderable:!1,saveDetailViewOnScroll:!0,singleRowExpand:!1,useSimpleViewportCalc:!1,toolTip:"",width:30},this._eventHandler=new Ot}get addonOptions(){return this._addonOptions}get dataView(){return this._grid?.getData()}get dataViewIdProperty(){return this._dataViewIdProperty}get eventHandler(){return this._eventHandler}get gridOptions(){return this._grid?.getOptions()||{}}get gridUid(){return this._gridUid||this._grid?.getUID()||""}set lastRange(e){this._lastRange=e}set rowIdsOutOfViewport(e){this._rowIdsOutOfViewport=e}get visibleRenderedCellCount(){return this._visibleRenderedCellCount}init(e){if(this._grid=e,!e)throw new Error('[Slickgrid-Universal] RowDetailView Plugin requires the Grid instance to be passed as argument to the "init()" method.');this._grid=e,this._gridUid=e.getUID(),this._addonOptions||(this._addonOptions=su(!0,{},this._defaults,this.gridOptions.rowDetailView)),this._keyPrefix=this._addonOptions?.keyPrefix||"_",K.addSlickEventPubSubWhenDefined(this.pubSubService,this),this._gridRowBuffer=this.gridOptions.minRowBuffer||0,this.gridOptions.minRowBuffer=this._addonOptions.panelRows+3,this._eventHandler.subscribe(this._grid.onClick,this.handleClick.bind(this)).subscribe(this._grid.onBeforeEditCell,()=>this.collapseAll()).subscribe(this._grid.onScroll,this.handleScroll.bind(this)),this._addonOptions.collapseAllOnSort&&(this.pubSubService.subscribe("onSortChanged",()=>this.collapseAll()),this._expandedRows=[],this._rowIdsOutOfViewport=[]),this._eventHandler.subscribe(this.dataView.onRowCountChanged,()=>{this._grid.updateRowCount(),this._grid.render()}),this._eventHandler.subscribe(this.dataView.onRowsChanged,(a,u)=>{this._grid.invalidateRows(u.rows),this._grid.render()}),this._eventHandler.subscribe(this.onAsyncResponse,this.handleOnAsyncResponse.bind(this)),this._eventHandler.subscribe(this.dataView.onSetItemsCalled,()=>{this._dataViewIdProperty=this.dataView?.getIdPropertyName()||"id"}),this._addonOptions.useSimpleViewportCalc&&this._eventHandler.subscribe(this._grid.onRendered,(a,u)=>{u?.endRow&&(this._visibleRenderedCellCount=u.endRow-u.startRow)})}dispose(){this._eventHandler?.unsubscribeAll()}create(e,a){if(!a.rowDetailView)throw new Error('[Slickgrid-Universal] The Row Detail View requires options to be passed via the "rowDetailView" property of the Grid Options');if(this._addonOptions=su(!0,{},this._defaults,a.rowDetailView),"function"==typeof this._addonOptions.expandableOverride&&this.expandableOverride(this._addonOptions.expandableOverride),Array.isArray(e)&&a){const u=this.getColumnDefinition();if(!e.some(i=>i.id===u.id)){const r=Array.isArray(e)&&e.find(d=>"selectAndMove"===d?.behavior)||u,o=a?.rowDetailView?.columnIndexPosition??0;o>0?e.splice(o,0,r):e.unshift(r),this.pubSubService.publish("onPluginColumnsChanged",{columns:e,pluginName:this.pluginName})}}return this}getOptions(){return this._addonOptions}setOptions(e){this._addonOptions=su(!0,{},this._addonOptions,e),this._addonOptions?.singleRowExpand&&this.collapseAll()}collapseAll(){this.dataView.beginUpdate(),this._expandedRows.forEach(e=>{this.collapseDetailView(e,!0)}),this.dataView.endUpdate()}collapseDetailView(e,a=!1){a||this.dataView.beginUpdate(),this._addonOptions.loadOnce&&this.saveDetailView(e),e[`${this._keyPrefix}collapsed`]=!0;for(let u=1;u<=e[`${this._keyPrefix}sizePadding`];u++)this.dataView.deleteItem(`${e[this._dataViewIdProperty]}.${u}`);e[`${this._keyPrefix}sizePadding`]=0,this.dataView.updateItem(e[this._dataViewIdProperty],e),this._expandedRows=this._expandedRows.filter(u=>u[this._dataViewIdProperty]!==e[this._dataViewIdProperty]),a||this.dataView.endUpdate()}expandDetailView(e){if(this._addonOptions?.singleRowExpand&&this.collapseAll(),e[`${this._keyPrefix}collapsed`]=!1,this._expandedRows.push(e),e[`${this._keyPrefix}detailContent`]||(e[`${this._keyPrefix}detailViewLoaded`]=!1),e[`${this._keyPrefix}detailViewLoaded`]&&!0===this._addonOptions.loadOnce)return this.onAsyncResponse.notify({item:e,itemDetail:e,detailView:e[`${this._keyPrefix}detailContent`],grid:this._grid}),this.applyTemplateNewLineHeight(e),void this.dataView.updateItem(e[this._dataViewIdProperty],e);e[`${this._keyPrefix}detailContent`]=this._addonOptions?.preTemplate?.(e),this.applyTemplateNewLineHeight(e),this.dataView.updateItem(e[this._dataViewIdProperty],e),this._addonOptions.process(e)}saveDetailView(e){const a=document.querySelector(`.${this.gridUid} .innerDetailView_${e[this._dataViewIdProperty]}`);if(a){const u=a.innerHTML;void 0!==u&&(e[`${this._keyPrefix}detailContent`]=u)}}handleOnAsyncResponse(e,a){if(!a||!a.item&&!a.itemDetail)return void console.error('SlickRowDetailView plugin requires the onAsyncResponse() to supply "args.item" property.');const u=a.item||a.itemDetail;u[`${this._keyPrefix}detailContent`]=a.detailView??this._addonOptions?.postTemplate?.(u),u[`${this._keyPrefix}detailViewLoaded`]=!0,this.dataView.updateItem(u[this._dataViewIdProperty],u),this.onAsyncEndUpdate.notify({grid:this._grid,item:u,itemDetail:u},e,this)}expandableOverride(e){this._expandableOverride=e}getExpandableOverride(){return this._expandableOverride}getColumnDefinition(){const e=String(this._addonOptions?.columnId??this._defaults.columnId);return{id:e,field:e,name:"",alwaysRenderColumn:this._addonOptions?.alwaysRenderColumn,cssClass:this._addonOptions.cssClass||"",excludeFromExport:!0,excludeFromColumnPicker:!0,excludeFromGridMenu:!0,excludeFromQuery:!0,excludeFromHeaderMenu:!0,formatter:this.detailSelectionFormatter.bind(this),reorderable:this._addonOptions.reorderable,resizable:!1,sortable:!1,toolTip:this._addonOptions.toolTip,width:this._addonOptions.width}}getExpandedRows(){return this._expandedRows}getOutOfViewportRows(){return this._rowIdsOutOfViewport}getFilterItem(e){return e[`${this._keyPrefix}isPadding`]&&e[`${this._keyPrefix}parent`]&&(e=e[`${this._keyPrefix}parent`]),e}resizeDetailView(e){if(!e)return;const a=document.querySelector(`.${this.gridUid} .detailViewContainer_${e[this._dataViewIdProperty]}`),u=document.querySelector(`.${this.gridUid} .cellDetailView_${e[this._dataViewIdProperty]}`),i=document.querySelector(`.${this.gridUid} .innerDetailView_${e[this._dataViewIdProperty]}`);if(!a||!u||!i)return;for(let v=1;v<=e[`${this._keyPrefix}sizePadding`];v++)this.dataView.deleteItem(`${e[this._dataViewIdProperty]}.${v}`);const r=this.gridOptions.rowHeight;a.style.minHeight="";const d=a.scrollHeight,h=Math.ceil(d/r);e[`${this._keyPrefix}sizePadding`]=Math.ceil(2*h*13/r),e[`${this._keyPrefix}height`]=d;let m=e[`${this._keyPrefix}sizePadding`]*r;void 0!==this._addonOptions.maxRows&&e[`${this._keyPrefix}sizePadding`]>this._addonOptions.maxRows&&(m=this._addonOptions.maxRows*r,e[`${this._keyPrefix}sizePadding`]=this._addonOptions.maxRows),this.gridOptions.minRowBuffer0&&(e="DOWN",this._lastRange)){if(this._lastRange.top===a.top&&this._lastRange.bottom===a.bottom)return;(this._lastRange.top>a.top||0===this._lastRange.top&&0===a.top&&this._lastRange.bottom>a.bottom)&&(e="UP")}this._expandedRows.forEach(u=>{const i=this.dataView.getRowById(u[this._dataViewIdProperty]),r=u[`${this._keyPrefix}sizePadding`],o=this._rowIdsOutOfViewport.some(d=>d===u[this._dataViewIdProperty]);"UP"===e?(this._addonOptions.saveDetailViewOnScroll&&i>=a.bottom-this._gridRowBuffer&&this.saveDetailView(u),o&&i-this._outsideRange=a.top?this.notifyBackToViewportWhenDomExist(u,u[this._dataViewIdProperty]):!o&&i+r>a.bottom&&this.notifyOutOfViewport(u,u[this._dataViewIdProperty])):"DOWN"===e&&(this._addonOptions.saveDetailViewOnScroll&&i<=a.top+this._gridRowBuffer&&this.saveDetailView(u),o&&i+r+this._outsideRange>a.bottom&&i{const u=this.dataView.getRowById(a[this._dataViewIdProperty]),i=this.checkIsRowOutOfViewportRange(u,e);!i&&this._rowIdsOutOfViewport.some(r=>r===a[this._dataViewIdProperty])?this.notifyBackToViewportWhenDomExist(a,a[this._dataViewIdProperty]):i&&this.notifyOutOfViewport(a,a[this._dataViewIdProperty])})}}checkExpandableOverride(e,a,u){return"function"!=typeof this._expandableOverride||this._expandableOverride(e,a,u)}checkIsRowOutOfViewportRange(e,a){return Math.abs(a.bottom-this._gridRowBuffer-e)>2*this._visibleRenderedCellCount}getPaddingItem(e,a){const u={};return Object.keys(this.dataView).forEach(i=>{i&&(u[i]=null)}),u[this._dataViewIdProperty]=`${e[this._dataViewIdProperty]}.${a}`,u[`${this._keyPrefix}collapsed`]=!0,u[`${this._keyPrefix}isPadding`]=!0,u[`${this._keyPrefix}parent`]=e,u[`${this._keyPrefix}offset`]=a,u}detailSelectionFormatter(e,a,u,i,r,o){if(!this.checkExpandableOverride(e,r,o))return"";if(void 0===r[`${this._keyPrefix}collapsed`]&&(r[`${this._keyPrefix}collapsed`]=!0,r[`${this._keyPrefix}sizePadding`]=0,r[`${this._keyPrefix}height`]=0,r[`${this._keyPrefix}isPadding`]=!1,r[`${this._keyPrefix}parent`]=void 0,r[`${this._keyPrefix}offset`]=0),!r[`${this._keyPrefix}isPadding`]){if(r[`${this._keyPrefix}collapsed`]){let d=`${this._addonOptions.cssClass||""} expand `;return this._addonOptions.collapsedClass&&(d+=this._addonOptions.collapsedClass),T("div",{className:Vt(d).join(" ")})}{const d=this.gridOptions.rowHeight||0;let h=(r[`${this._keyPrefix}sizePadding`]||0)*this.gridOptions.rowHeight;null!==this._addonOptions.maxRows&&(r[`${this._keyPrefix}sizePadding`]||0)>this._addonOptions.maxRows&&(h=this._addonOptions.maxRows*d,r[`${this._keyPrefix}sizePadding`]=this._addonOptions.maxRows);let m=`${this._addonOptions.cssClass||""} collapse `;this._addonOptions.expandedClass&&(m+=this._addonOptions.expandedClass);const E=T("div",{className:`dynamic-cell-detail cellDetailView_${r[this._dataViewIdProperty]}`,style:{height:`${h}px`,top:`${d}px`}}),v=T("div",{className:`detail-container detailViewContainer_${r[this._dataViewIdProperty]}`}),k=T("div",{className:`innerDetailView_${r[this._dataViewIdProperty]}`});return r[`${this._keyPrefix}detailContent`]instanceof HTMLElement?k.appendChild(r[`${this._keyPrefix}detailContent`]):k.innerHTML=this._grid.sanitizeHtmlString(r[`${this._keyPrefix}detailContent`]),v.appendChild(k),E.appendChild(v),{html:T("div",{className:Vt(m).join(" ")}),insertElementAfterTarget:E}}}return""}handleAccordionShowHide(e){e&&(e[`${this._keyPrefix}collapsed`]?this.expandDetailView(e):this.collapseDetailView(e))}handleClick(e,a){const u=this._grid.getDataItem(a.row);if(this.checkExpandableOverride(a.row,u,this._grid)){const i=this._grid.getColumns()[a.cell];if(this._addonOptions.useRowClick||i.id===this._addonOptions.columnId&&e.target.classList.contains(this._addonOptions.cssClass||"")){if(this._grid.getEditorLock().isActive()&&!this._grid.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();if(!1===this.onBeforeRowDetailToggle.notify({grid:this._grid,item:u},e,this,!0).getReturnValue())return;this.toggleRowSelection(a.row,u),this.onAfterRowDetailToggle.notify({grid:this._grid,item:u,expandedRows:this._expandedRows},e,this),e.stopPropagation(),e.stopImmediatePropagation()}}}handleScroll(){this._addonOptions.useSimpleViewportCalc?this.calculateOutOfRangeViewsSimplerVersion():this.calculateOutOfRangeViews()}notifyOutOfViewport(e,a){const u=e.rowIndex||this.dataView.getRowById(e[this._dataViewIdProperty]);this.onRowOutOfViewportRange.notify({grid:this._grid,item:e,rowId:a,rowIndex:u,expandedRows:this._expandedRows,rowIdsOutOfViewport:this.syncOutOfViewportArray(a,!0)},null,this)}notifyBackToViewportWhenDomExist(e,a){const u=e.rowIndex||this.dataView.getRowById(e[this._dataViewIdProperty]);setTimeout(()=>{document.querySelector(`.${this.gridUid} .cellDetailView_${e[this._dataViewIdProperty]}`)&&this.onRowBackToViewportRange.notify({grid:this._grid,item:e,rowId:a,rowIndex:u,expandedRows:this._expandedRows,rowIdsOutOfViewport:this.syncOutOfViewportArray(a,!1)},null,this)},100)}syncOutOfViewportArray(e,a){const u=this._rowIdsOutOfViewport.findIndex(i=>i===e);return a&&u<0?this._rowIdsOutOfViewport.push(e):!a&&u>=0&&this._rowIdsOutOfViewport.splice(u,1),this._rowIdsOutOfViewport}toggleRowSelection(e,a){this.checkExpandableOverride(e,a,this._grid)&&(this.dataView.beginUpdate(),this.handleAccordionShowHide(a),this.dataView.endUpdate())}}const iL="container_",qG="container_loading";class y1e extends C1e{constructor(e,a,u,i,r){super(u),this.angularUtilService=e,this.appRef=a,this.eventPubSubService=u,this.gridContainerElement=i,this.rxjs=r,this._views=[],this._subscriptions=[]}get addonOptions(){return this.getOptions()}get datasetIdPropName(){return this.gridOptions.datasetIdPropertyName||"id"}get eventHandler(){return this._eventHandler}set eventHandler(e){this._eventHandler=e}get gridOptions(){return this._grid?.getOptions()||{}}get rowDetailViewOptions(){return this.gridOptions.rowDetailView}addRxJsResource(e){this.rxjs=e}dispose(){this.disposeAllViewComponents(),this._subscriptions=D2(this._subscriptions),super.dispose()}disposeAllViewComponents(){this._views.forEach(e=>this.disposeViewComponent(e)),this._views=[]}getAddonInstance(){return this}init(e){this._grid=e,super.init(this._grid),this.register(e?.getSelectionModel())}register(e){if("function"!=typeof this.gridOptions.rowDetailView?.process)throw new Error('[Angular-Slickgrid] You need to provide a "process" function for the Row Detail Extension to work properly');return this._userProcessFn=this.gridOptions.rowDetailView.process,this.addonOptions.process=a=>this.onProcessing(a),this._grid&&this.gridOptions?.rowDetailView&&(this.gridOptions.rowDetailView.preTemplate||(this._preloadComponent=this.gridOptions?.rowDetailView?.preloadComponent,this.addonOptions.preTemplate=()=>this._grid.sanitizeHtmlString(`
`)),this.gridOptions.rowDetailView.postTemplate||(this._viewComponent=this.gridOptions?.rowDetailView?.viewComponent,this.addonOptions.postTemplate=a=>this._grid.sanitizeHtmlString(`
`)),(!e||!this._grid.getSelectionModel())&&(e=new H7(this.gridOptions.rowSelectionOptions||{selectActiveRow:!0}),this._grid.setSelectionModel(e)),this._grid&&this.rowDetailViewOptions&&(this.rowDetailViewOptions.onExtensionRegistered&&this.rowDetailViewOptions.onExtensionRegistered(this),this.onAsyncResponse&&this.eventHandler.subscribe(this.onAsyncResponse,(a,u)=>{this.rowDetailViewOptions&&"function"==typeof this.rowDetailViewOptions.onAsyncResponse&&this.rowDetailViewOptions.onAsyncResponse(a,u)}),this.onAsyncEndUpdate&&this.eventHandler.subscribe(this.onAsyncEndUpdate,(a,u)=>{this.renderViewModel(u?.item),this.rowDetailViewOptions&&"function"==typeof this.rowDetailViewOptions.onAsyncEndUpdate&&this.rowDetailViewOptions.onAsyncEndUpdate(a,u)}),this.onAfterRowDetailToggle&&this.eventHandler.subscribe(this.onAfterRowDetailToggle,(a,u)=>{this.renderPreloadView(),this.renderAllViewComponents(),this.rowDetailViewOptions&&"function"==typeof this.rowDetailViewOptions.onAfterRowDetailToggle&&this.rowDetailViewOptions.onAfterRowDetailToggle(a,u)}),this.onBeforeRowDetailToggle&&this.eventHandler.subscribe(this.onBeforeRowDetailToggle,(a,u)=>(this.handleOnBeforeRowDetailToggle(a,u),!this.rowDetailViewOptions||"function"!=typeof this.rowDetailViewOptions.onBeforeRowDetailToggle||this.rowDetailViewOptions.onBeforeRowDetailToggle(a,u))),this.onRowBackToViewportRange&&this.eventHandler.subscribe(this.onRowBackToViewportRange,(a,u)=>{this.handleOnRowBackToViewportRange(a,u),this.rowDetailViewOptions&&"function"==typeof this.rowDetailViewOptions.onRowBackToViewportRange&&this.rowDetailViewOptions.onRowBackToViewportRange(a,u)}),this.onRowOutOfViewportRange&&this.eventHandler.subscribe(this.onRowOutOfViewportRange,(a,u)=>{this.rowDetailViewOptions&&"function"==typeof this.rowDetailViewOptions.onRowOutOfViewportRange&&this.rowDetailViewOptions.onRowOutOfViewportRange(a,u)}),this.eventHandler.subscribe(this._grid.onColumnsReordered,this.redrawAllViewComponents.bind(this)),(this.gridOptions.enableRowSelection||this.gridOptions.enableCheckboxSelector)&&this.eventHandler.subscribe(this._grid.onSelectedRowsChanged,this.redrawAllViewComponents.bind(this)),this.eventHandler.subscribe(this._grid.onSort,this.disposeAllViewComponents.bind(this)),this._subscriptions.push(this.eventPubSubService?.subscribe("onFilterChanged",this.redrawAllViewComponents.bind(this)),this.eventPubSubService?.subscribe("onGridMenuClearAllFilters",()=>setTimeout(()=>this.redrawAllViewComponents())),this.eventPubSubService?.subscribe("onGridMenuClearAllSorting",()=>setTimeout(()=>this.redrawAllViewComponents()))))),this}redrawAllViewComponents(){this._views.forEach(e=>{this.redrawViewComponent(e)})}renderAllViewComponents(){this._views.forEach(e=>{e?.dataContext&&this.renderViewModel(e.dataContext)})}redrawViewComponent(e){this.gridContainerElement.getElementsByClassName(`${iL}${e.id}`)?.length>=0&&this.renderViewModel(e.dataContext)}renderPreloadView(){const e=this.gridContainerElement.getElementsByClassName(`${qG}`);this._preloadComponent&&e?.length>=0&&this.angularUtilService.createAngularComponentAppendToDom(this._preloadComponent,e[e.length-1])}renderViewModel(e){const a=this.gridContainerElement.getElementsByClassName(`${iL}${e[this.datasetIdPropName]}`);if(this._viewComponent&&a?.length>0){const u=this.angularUtilService.createAngularComponentAppendToDom(this._viewComponent,a[a.length-1],{model:e,addon:this,grid:this._grid,dataView:this.dataView,parent:this.rowDetailViewOptions?.parent});if(u?.componentRef){const i=this._views.find(r=>r.id===e[this.datasetIdPropName]);return i&&(i.componentRef=u.componentRef),i}}}disposeViewComponent(e){const a=e?.componentRef;if(a)return this.appRef.detachView(a.hostView),a?.destroy&&a.destroy(),e}notifyTemplate(e){this.onAsyncResponse&&this.onAsyncResponse.notify({item:e,itemDetail:e},void 0,this)}onProcessing(e){var a=this;return Au(function*(){if(e&&"function"==typeof a._userProcessFn){let u;const r=yield a._userProcessFn(e);if(r.hasOwnProperty(a.datasetIdPropName)?u=r:(r&&r instanceof rt||r instanceof Promise)&&(u=yield Wz(a.rxjs,r)),!u||!u.hasOwnProperty(a.datasetIdPropName))throw new Error(`[Angular-Slickgrid] could not process the Row Detail, you must make sure that your "process" callback\n (a Promise or an HttpClient call returning an Observable) returns an item object that has an "${a.datasetIdPropName}" property`);a.notifyTemplate(u||{})}})()}handleOnBeforeRowDetailToggle(e,a){if(a?.item?.__collapsed){const u={id:a.item[this.datasetIdPropName],dataContext:a.item},i=this.gridOptions.datasetIdPropertyName||"id";Tj(this._views,u,i)}else{const u=this._views.findIndex(i=>i.id===a.item[this.datasetIdPropName]);if(u>=0&&this._views.hasOwnProperty(u)){const i=this._views[u].componentRef;i&&(this.appRef.detachView(i.hostView),i.destroy()),this._views.splice(u,1)}}}handleOnRowBackToViewportRange(e,a){a?.item&&this.redrawAllViewComponents()}}const nL={alwaysShowVerticalScroll:!0,autoEdit:!1,asyncEditorLoading:!1,autoFitColumnsOnFirstLoad:!0,autoResize:{applyResizeToContainer:!0,calculateAvailableSizeBy:"window",bottomPadding:20,minHeight:180,minWidth:300,rightPadding:0},cellHighlightCssClass:"slick-cell-modified",checkboxSelector:{cssClass:"slick-cell-checkboxsel"},columnPicker:{hideForceFitButton:!1,hideSyncResizeButton:!0,headerColumnValueExtractor:YG},cellMenu:{autoAdjustDrop:!0,autoAlignSide:!0,hideCloseButton:!0,hideCommandSection:!1,hideOptionSection:!1},contextMenu:{autoAdjustDrop:!0,autoAlignSide:!0,hideCloseButton:!0,hideClearAllGrouping:!1,hideCollapseAllGroups:!1,hideCommandSection:!1,hideCopyCellValueCommand:!1,hideExpandAllGroups:!1,hideExportCsvCommand:!1,hideExportExcelCommand:!1,hideExportTextDelimitedCommand:!0,hideMenuOnScroll:!0,hideOptionSection:!1,iconCollapseAllGroupsCommand:"mdi mdi-arrow-collapse",iconExpandAllGroupsCommand:"mdi mdi-arrow-expand",iconClearGroupingCommand:"mdi mdi-close",iconCopyCellValueCommand:"mdi mdi-content-copy",iconExportCsvCommand:"mdi mdi-download",iconExportExcelCommand:"mdi mdi-file-excel-outline",iconExportTextDelimitedCommand:"mdi mdi-download",showBulletWhenIconMissing:!0,subItemChevronClass:"mdi mdi-chevron-down mdi-rotate-270"},customFooterOptions:{dateFormat:"YYYY-MM-DD, hh:mm a",hideRowSelectionCount:!1,hideTotalItemCount:!1,hideLastUpdateTimestamp:!0,footerHeight:25,leftContainerClass:"col-xs-12 col-sm-5",rightContainerClass:"col-xs-6 col-sm-7",metricSeparator:"|",metricTexts:{items:"items",itemsKey:"ITEMS",itemsSelected:"items selected",itemsSelectedKey:"ITEMS_SELECTED",of:"of",ofKey:"OF"}},dataView:{syncGridSelection:{preserveHidden:!1,preserveHiddenOnSelectionChange:!0},syncGridSelectionWithBackendService:!1},datasetIdPropertyName:"id",defaultFilter:ie.input,defaultBackendServiceFilterTypingDebounce:500,defaultColumnSortFieldId:"id",defaultFilterPlaceholder:"\u{1f50e}\ufe0e",defaultFilterRangeOperator:re.rangeInclusive,editable:!1,enableAutoResize:!0,enableAutoSizeColumns:!0,enableCellNavigation:!1,enableColumnPicker:!0,enableColumnReorder:!0,enableColumnResizeOnDoubleClick:!0,enableContextMenu:!0,enableExcelExport:!1,enableTextExport:!1,enableFilterTrimWhiteSpace:!1,enableGridMenu:!0,enableHeaderMenu:!0,enableEmptyDataWarningMessage:!0,emptyDataWarning:{className:"slick-empty-data-warning",message:"No data to display.",messageKey:"EMPTY_DATA_WARNING_MESSAGE",hideFrozenLeftWarning:!1,hideFrozenRightWarning:!1,leftViewportMarginLeft:"40%",rightViewportMarginLeft:"40%",frozenLeftViewportMarginLeft:"0px",frozenRightViewportMarginLeft:"40%"},enableMouseHoverHighlightRow:!0,enableSorting:!0,enableTextSelectionOnCells:!0,eventNamingStyle:T0.camelCase,explicitInitialization:!0,excelExportOptions:{addGroupIndentation:!0,exportWithFormatter:!1,filename:"export",format:ft.xlsx,groupingColumnHeaderTitle:"Group By",groupCollapsedSymbol:"\u2b9e",groupExpandedSymbol:"\u2b9f",groupingAggregatorRowText:"",sanitizeDataExport:!1},textExportOptions:{delimiter:Qr.comma,exportWithFormatter:!1,filename:"export",format:ft.csv,groupingColumnHeaderTitle:"Group By",groupingAggregatorRowText:"",sanitizeDataExport:!1,useUtf8WithBom:!0},filterTypingDebounce:0,forceFitColumns:!1,frozenHeaderWidthCalcDifferential:0,gridMenu:{dropSide:"left",commandLabels:{clearAllFiltersCommandKey:"CLEAR_ALL_FILTERS",clearAllSortingCommandKey:"CLEAR_ALL_SORTING",clearFrozenColumnsCommandKey:"CLEAR_PINNING",exportCsvCommandKey:"EXPORT_TO_CSV",exportExcelCommandKey:"EXPORT_TO_EXCEL",exportTextDelimitedCommandKey:"EXPORT_TO_TAB_DELIMITED",refreshDatasetCommandKey:"REFRESH_DATASET",toggleDarkModeCommandKey:"TOGGLE_DARK_MODE",toggleFilterCommandKey:"TOGGLE_FILTER_ROW",togglePreHeaderCommandKey:"TOGGLE_PRE_HEADER_ROW"},hideClearAllFiltersCommand:!1,hideClearAllSortingCommand:!1,hideClearFrozenColumnsCommand:!0,hideExportCsvCommand:!1,hideExportExcelCommand:!1,hideExportTextDelimitedCommand:!0,hideForceFitButton:!1,hideRefreshDatasetCommand:!1,hideSyncResizeButton:!0,hideToggleDarkModeCommand:!0,hideToggleFilterCommand:!1,hideTogglePreHeaderCommand:!1,iconCssClass:"mdi mdi-menu",iconClearAllFiltersCommand:"mdi mdi-filter-remove-outline",iconClearAllSortingCommand:"mdi mdi-sort-variant-off",iconClearFrozenColumnsCommand:"mdi mdi-pin-off-outline",iconExportCsvCommand:"mdi mdi-download",iconExportExcelCommand:"mdi mdi-file-excel-outline",iconExportTextDelimitedCommand:"mdi mdi-download",iconRefreshDatasetCommand:"mdi mdi-sync",iconToggleDarkModeCommand:"mdi mdi-brightness-4",iconToggleFilterCommand:"mdi mdi-flip-vertical",iconTogglePreHeaderCommand:"mdi mdi-flip-vertical",menuWidth:16,resizeOnShowHeaderRow:!0,subItemChevronClass:"mdi mdi-chevron-down mdi-rotate-270",headerColumnValueExtractor:YG},headerMenu:{autoAlign:!0,autoAlignOffset:12,minWidth:140,iconClearFilterCommand:"mdi mdi-filter-remove-outline",iconClearSortCommand:"mdi mdi-sort-variant-off",iconFreezeColumns:"mdi mdi-pin-outline",iconSortAscCommand:"mdi mdi-sort-ascending",iconSortDescCommand:"mdi mdi-sort-descending",iconColumnHideCommand:"mdi mdi-close",iconColumnResizeByContentCommand:"mdi mdi-arrow-expand-horizontal",hideColumnResizeByContentCommand:!1,hideColumnHideCommand:!1,hideClearFilterCommand:!1,hideClearSortCommand:!1,hideFreezeColumnsCommand:!0,hideSortCommands:!1,subItemChevronClass:"mdi mdi-chevron-down mdi-rotate-270"},headerRowHeight:35,multiColumnSort:!0,numberedMultiColumnSort:!0,tristateMultiColumnSort:!1,sortColNumberInSeparateSpan:!0,suppressActiveCellChangeOnEdit:!1,pagination:{pageSizes:[10,15,20,25,30,40,50,75,100],pageSize:25,totalItems:0},rowDetailView:{collapseAllOnSort:!0,cssClass:"detail-view-toggle",panelRows:1,keyPrefix:"__",useRowClick:!1,useSimpleViewportCalc:!0,saveDetailViewOnScroll:!1},rowHeight:35,topPanelHeight:35,preHeaderPanelWidth:"100%",translationNamespaceSeparator:":",resetFilterSearchValueAfterOnBeforeCancellation:!0,resizeByContentOnlyOnFirstLoad:!0,resizeByContentOptions:{alwaysRecalculateColumnWidth:!1,cellCharWidthInPx:7.8,cellPaddingWidthInPx:14,defaultRatioForStringType:.88,formatterPaddingWidthInPx:0,maxItemToInspectCellContentWidth:1e3,maxItemToInspectSingleColumnWidthByContent:5e3,widthToRemoveFromExceededWidthReadjustment:50},treeDataOptions:{exportIndentMarginLeft:5,exportIndentationLeadingChar:"\u034f\u034f\u034f\u034f\u034f\u034f\u034f\u034f\u034f\xb7"}};function YG(t){const e=t&&t.columnGroup||"";return e?e+" - "+t.name:t&&t.name||""}class F1e{constructor(){this._isPreviouslyShown=!1,this._warningLeftElement=null,this._warningRightElement=null}get gridOptions(){return this._grid?.getOptions()??{}}init(e,a){this._grid=e,this._translaterService=a.get("TranslaterService")}dispose(){this._warningLeftElement?.remove(),this._warningRightElement?.remove(),this._warningLeftElement=null,this._warningRightElement=null}showEmptyDataMessage(e=!0,a){if(!this._grid||!this.gridOptions||this._isPreviouslyShown===e)return!1;this._isPreviouslyShown=e;const u=this._grid.getUID(),r={message:"No data to display.",...this.gridOptions.emptyDataWarning,...a},o=r?.className??"slick-empty-data-warning";this._warningLeftElement=document.querySelector(`.${u} .${o}`);const d=document.querySelector(`.${u} .grid-canvas.grid-canvas-left`),h=document.querySelector(`.${u} .grid-canvas.grid-canvas-right`),m=r.leftViewportMarginLeft??0,E=r.rightViewportMarginLeft??0,v=r.frozenLeftViewportMarginLeft??0,k=r.frozenRightViewportMarginLeft??0,x=void 0!==this.gridOptions?.frozenColumn&&this.gridOptions.frozenColumn>=0,f="string"==typeof m?m:`${m}px`,C="string"==typeof E?E:`${E}px`;if(this.gridOptions.autoHeight){const w=document.querySelector(`.${u} .slick-pane.slick-pane-top.slick-pane-left`);if(w&&w.style&&d&&d.style){const z=parseInt(w.style.height,10)||0,L=this.gridOptions?.rowHeight??0,M=this.gridOptions.enableFiltering?this.gridOptions?.headerRowHeight??0:0,j=this.gridOptions.createPreHeaderPanel?this.gridOptions?.preHeaderPanelHeight??0:0;if(e){let $=null!==z&&z<100?z:100;$+=M+j,w.style.minHeight=`${$}px`,d.style.minHeight=`${L}px`}}}let A=r.message;if(this.gridOptions.enableTranslate&&this._translaterService&&r?.messageKey&&(A=this._translaterService.translate(r.messageKey)),!this._warningLeftElement&&d&&h&&(this._warningLeftElement=document.createElement("div"),this._warningLeftElement.classList.add(...Vt(o)),this._warningLeftElement.classList.add("left"),this._grid.applyHtmlCode(this._warningLeftElement,A),this._warningRightElement=this._warningLeftElement.cloneNode(!0),this._warningRightElement.classList.add("right"),h.appendChild(this._warningRightElement),d.appendChild(this._warningLeftElement)),this._warningLeftElement){let w=e?"flex":"none";x&&e&&(w=r.hideFrozenLeftWarning?"none":"flex"),this._warningLeftElement.style.display=w;const z="string"==typeof v?v:`${v}px`;this._warningLeftElement.style.marginLeft=x?z:f}if(this._warningRightElement){let w=e?"flex":"none";x&&e&&(w=r.hideFrozenRightWarning?"none":"flex"),this._warningRightElement.style.display=w;const z="string"==typeof k?k:`${k}px`;this._warningRightElement.style.marginLeft=x?z:C}return e}}class A1e{constructor(e){this._value=null,this._boundedEventWithListeners=[],this._elementBindings=[],this._binding=e,this._property=e.property||"",this._elementBindings=[],e.property&&e.variable&&(e.variable.hasOwnProperty(e.property)||e.property in e.variable)?this._value=e.variable[e.property]:this._value=e.variable,"object"==typeof e.variable&&Object.defineProperty(e.variable,e.property,{get:this.valueGetter.bind(this),set:this.valueSetter.bind(this)})}get boundedEventWithListeners(){return this._boundedEventWithListeners}get elementBindings(){return this._elementBindings}get property(){return this._property}dispose(){this.unbindAll(),this._boundedEventWithListeners=[],this._elementBindings=[]}valueGetter(){return this._value}valueSetter(e){if(this._value=e,Array.isArray(this._elementBindings))for(const a of this._elementBindings)a?.element&&a?.attribute&&(a.element[a.attribute]=e)}bind(e,a,u,i){return e&&e.forEach?e.forEach(r=>this.bindSingleElement(r,a,u,i)):e&&this.bindSingleElement(e,a,u,i),this}unbind(e,a,u,i,r){if(e){e.removeEventListener(a,u,i);const o=this._boundedEventWithListeners.findIndex(d=>d.uid===r);o>=0&&this._boundedEventWithListeners.splice(o,1)}}unbindAll(){let e=this._boundedEventWithListeners.pop();for(;e;){const{element:a,eventName:u,listener:i,uid:r}=e;this.unbind(a,u,i,void 0,r),e=this._boundedEventWithListeners.pop()}this._boundedEventWithListeners=[]}bindSingleElement(e,a,u,i){const r={element:e,attribute:a};if(e){if(u){const o=()=>{let d=e[a];if(this.hasData(d)&&"number"===e?.type&&(d=+d),this.valueSetter(d),(this._binding.variable.hasOwnProperty(this._binding.property)||this._binding.property in this._binding.variable)&&(this._binding.variable[this._binding.property]=this.valueGetter()),"function"==typeof i)return i(this.valueGetter())};r.event=u,r.listener=o,e.addEventListener(u,o),this._boundedEventWithListeners.push({element:e,eventName:u,listener:o,uid:this.generateUuidV4()})}this._elementBindings.push(r),e[a]=this._value}}generateUuidV4(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const a=16*Math.random()|0;return("x"===e?a:3&a|8).toString(16)})}hasData(e){return null!=e&&""!==e}}class QG{constructor(){this._observers=[],this._querySelectorPrefix=""}get querySelectorPrefix(){return this._querySelectorPrefix||""}set querySelectorPrefix(e){this._querySelectorPrefix=e}get observers(){return this._observers}dispose(){let e=this._observers.pop();for(;e;)e.dispose(),e=this._observers.pop();this._observers=[]}addElementBinding(e,a,u,i,r,o){const d=document.querySelectorAll(`${this.querySelectorPrefix}${u}`);let h=this._observers.find(m=>m.property===e);h||(h=new A1e({variable:e,property:a})),Array.isArray(r)?r.forEach(m=>h?.bind(d,i,m,o)):h?.bind(d,i,r,o),this._observers.push(h)}bindEventHandler(e,a,u,i){document.querySelectorAll(`${this.querySelectorPrefix}${e}`).forEach(o=>{o?.addEventListener&&o.addEventListener(a,u,i)})}setElementAttributeValue(e,a,u){document.querySelectorAll(`${this.querySelectorPrefix}${e}`).forEach(r=>{r.textContent="",r&&a in r&&(r[a]=u)})}}class w1e{get eventHandler(){return this._eventHandler}get gridUid(){return this.grid?.getUID()??""}get gridUidSelector(){return this.gridUid?`.${this.gridUid}`:""}get gridOptions(){return this.grid?.getOptions()??{}}get locales(){return this.gridOptions?.locales??ae.locales}set metrics(e){this.renderMetrics(e)}get leftFooterText(){return document.querySelector(`.slick-custom-footer${this.gridUidSelector} .left-footer`)?.textContent??""}set leftFooterText(e){this.renderLeftFooterText(e)}get rightFooterText(){return document.querySelector(`.slick-custom-footer${this.gridUidSelector} .right-footer`)?.textContent??""}set rightFooterText(e){this.renderRightFooterText(e)}constructor(e,a,u,i){if(this.grid=e,this.customFooterOptions=a,this.pubSubService=u,this.translaterService=i,this._enableTranslate=!1,this._isLeftFooterOriginallyEmpty=!0,this._isLeftFooterDisplayingSelectionRowCount=!1,this._isRightFooterOriginallyEmpty=!0,this._selectedRowCount=0,this._subscriptions=[],this._bindingHelper=new QG,this._bindingHelper.querySelectorPrefix=`.${this.gridUid} `,this._eventHandler=new Ot,this._enableTranslate=this.gridOptions?.enableTranslate??!1,this._isLeftFooterOriginallyEmpty=!this.gridOptions.customFooterOptions?.leftFooterText,this._isRightFooterOriginallyEmpty=!this.gridOptions.customFooterOptions?.rightFooterText,this.registerOnSelectedRowsChangedWhenEnabled(a),this._enableTranslate&&(!this.translaterService||!this.translaterService.translate))throw new Error('[Slickgrid-Universal] requires a Translate Service to be installed and configured when the grid option "enableTranslate" is enabled.');if(this.translateCustomFooterTexts(),this._enableTranslate&&this.pubSubService?.subscribe){const r=this.translaterService?.eventName??"onLanguageChange";this._subscriptions.push(this.pubSubService.subscribe(r,()=>this.translateCustomFooterTexts()))}}dispose(){this._eventHandler.unsubscribeAll(),this.pubSubService.unsubscribeAll(this._subscriptions),this._bindingHelper.dispose(),this._footerElement?.remove()}renderFooter(e){this.translateCustomFooterTexts(),this.createFooterContainer(e)}renderMetrics(e){const a=e?.endTime?ai(e.endTime,this.customFooterOptions.dateFormat,"en-US"):"";this._bindingHelper.setElementAttributeValue("span.last-update-timestamp","textContent",a),this._bindingHelper.setElementAttributeValue("span.item-count","textContent",e.itemCount),this._bindingHelper.setElementAttributeValue("span.total-count","textContent",e.totalItemCount),this.customFooterOptions.metricTexts?.lastUpdate&&this._bindingHelper.addElementBinding(this.customFooterOptions.metricTexts,"lastUpdate","span.text-last-update","textContent"),this._bindingHelper.addElementBinding(this.customFooterOptions.metricTexts,"items","span.text-items","textContent"),this._bindingHelper.addElementBinding(this.customFooterOptions.metricTexts,"of","span.text-of","textContent")}renderLeftFooterText(e){this._bindingHelper.setElementAttributeValue("div.left-footer","textContent",e)}renderRightFooterText(e){this._bindingHelper.setElementAttributeValue("div.right-footer","textContent",e)}translateCustomFooterTexts(){if(this.gridOptions.enableTranslate&&this.translaterService?.translate){this.customFooterOptions.metricTexts=this.customFooterOptions.metricTexts||{};for(const e of Object.keys(this.customFooterOptions.metricTexts))if(e.lastIndexOf("Key")>0){const a=e.substring(0,e.lastIndexOf("Key"));this.customFooterOptions.metricTexts[a]=this.translaterService.translate(this.customFooterOptions.metricTexts[e]||" ")}this._isLeftFooterDisplayingSelectionRowCount&&(this.leftFooterText=`${this._selectedRowCount} ${this.customFooterOptions.metricTexts.itemsSelected}`)}else this.locales&&(this.customFooterOptions.metricTexts=this.customFooterOptions.metricTexts||{},this.customFooterOptions.metricTexts.lastUpdate=this.customFooterOptions.metricTexts.lastUpdate||this.locales?.TEXT_LAST_UPDATE||"TEXT_LAST_UPDATE",this.customFooterOptions.metricTexts.items=this.customFooterOptions.metricTexts.items||this.locales?.TEXT_ITEMS||"TEXT_ITEMS",this.customFooterOptions.metricTexts.itemsSelected=this.customFooterOptions.metricTexts.itemsSelected||this.locales?.TEXT_ITEMS_SELECTED||"TEXT_ITEMS_SELECTED",this.customFooterOptions.metricTexts.of=this.customFooterOptions.metricTexts.of||this.locales?.TEXT_OF||"TEXT_OF")}createFooterContainer(e){const a=T("div",{className:`slick-custom-footer ${this.gridUid}`,style:{width:"100%",height:`${this.customFooterOptions.footerHeight||20}px`}}),u=T("div",{className:`left-footer ${this.customFooterOptions.leftContainerClass}`});this.grid.applyHtmlCode(u,this.customFooterOptions.leftFooterText),a.appendChild(u),a.appendChild(this.createFooterRightContainer()),this._footerElement=a,e?.appendChild&&this._footerElement&&e.appendChild(this._footerElement)}createFooterRightContainer(){const e=T("div",{className:`right-footer ${this.customFooterOptions.rightContainerClass||""}`});if(this._isRightFooterOriginallyEmpty){if(!this.customFooterOptions.hideMetrics){e.classList.add("metrics");const a=T("span",{className:"timestamp"},e);if(!this.customFooterOptions.hideLastUpdateTimestamp){const u=this.createFooterLastUpdate();u&&a.appendChild(u)}e.appendChild(T("span",{className:"item-count",textContent:`${this.metrics?.itemCount??"0"}`})),this.customFooterOptions.hideTotalItemCount||(e.appendChild(document.createTextNode("\r\n")),e.appendChild(T("span",{className:"text-of",textContent:` ${this.customFooterOptions.metricTexts?.of??"of"} `})),e.appendChild(document.createTextNode("\r\n")),e.appendChild(T("span",{className:"total-count",textContent:`${this.metrics?.totalItemCount??"0"}`}))),e.appendChild(document.createTextNode("\r\n")),e.appendChild(T("span",{className:"text-items",textContent:` ${this.customFooterOptions.metricTexts?.items??"items"} `}))}}else this.grid.applyHtmlCode(e,this.customFooterOptions.rightFooterText);return e}createFooterLastUpdate(){const e=this.customFooterOptions?.metricTexts?.lastUpdate??"Last Update",a=this.metrics?.endTime?ai(this.metrics?.endTime,this.customFooterOptions.dateFormat,"en-US"):"",u=T("span");return u.appendChild(T("span",{className:"text-last-update",textContent:e})),u.appendChild(document.createTextNode("\r\n")),u.appendChild(T("span",{className:"last-update-timestamp",textContent:a})),u.appendChild(T("span",{className:"separator",textContent:` ${this.customFooterOptions.metricSeparator||""} `})),u}registerOnSelectedRowsChangedWhenEnabled(e){if((this.gridOptions.enableCheckboxSelector||this.gridOptions.enableRowSelection)&&e&&!e.hideRowSelectionCount&&this._isLeftFooterOriginallyEmpty){this._isLeftFooterDisplayingSelectionRowCount=!0;const u=e.metricTexts?.itemsSelected??this.locales?.TEXT_ITEMS_SELECTED??"TEXT_ITEMS_SELECTED";e.leftFooterText=`0 ${u}`,this._eventHandler.subscribe(this.grid.onSelectedRowsChanged,(i,r)=>{this._selectedRowCount=r.rows.length;const o=e.metricTexts?.itemsSelected??this.locales?.TEXT_ITEMS_SELECTED??"TEXT_ITEMS_SELECTED";this.leftFooterText=`${this._selectedRowCount} ${o}`})}}}class B1e{constructor(e,a,u,i){if(this.paginationService=e,this.pubSubService=a,this.sharedService=u,this.translaterService=i,this._enableTranslate=!1,this._subscriptions=[],this.firstButtonClasses="",this.lastButtonClasses="",this.prevButtonClasses="",this.nextButtonClasses="",this.textItemsPerPage="items per page",this.textItems="items",this.textOf="of",this.textPage="Page",this._bindingHelper=new QG,this._bindingEventService=new wi,this._bindingHelper.querySelectorPrefix=`.${this.gridUid} `,this.currentPagination=this.paginationService.getFullPagination(),this._enableTranslate=this.gridOptions?.enableTranslate??!1,this._enableTranslate&&(!this.translaterService||!this.translaterService.translate))throw new Error('[Slickgrid-Universal] requires a Translate Service to be installed and configured when the grid option "enableTranslate" is enabled.');if(this.translatePaginationTexts(),this._enableTranslate&&this.pubSubService?.subscribe){const r=this.translaterService?.eventName??"onLanguageChange";this._subscriptions.push(this.pubSubService.subscribe(r,()=>this.translatePaginationTexts()))}this._subscriptions.push(this.pubSubService.subscribe("onPaginationRefreshed",r=>{for(const o of Object.keys(r))this.currentPagination[o]=r[o];this.updatePageButtonsUsability(),this._spanInfoFromToElm?.style&&(this._spanInfoFromToElm.style.display=0===this.currentPagination.totalItems?"none":"")}),this.pubSubService.subscribe("onPaginationSetCursorBased",()=>{this.dispose(),this.renderPagination(this._gridParentContainerElm)}))}get availablePageSizes(){return this.paginationService.availablePageSizes||[]}get dataFrom(){return this.paginationService.dataFrom}get dataTo(){return this.paginationService.dataTo}get itemsPerPage(){return this.paginationService.itemsPerPage}set itemsPerPage(e){this.paginationService.changeItemPerPage(e)}get pageCount(){return this.paginationService.pageCount}get pageNumber(){return this.paginationService.pageNumber}get grid(){return this.sharedService.slickGrid}get gridOptions(){return this.sharedService.gridOptions}get gridUid(){return this.grid?.getUID()??""}get locales(){return this.gridOptions?.locales??ae.locales}get totalItems(){return this.paginationService.totalItems}get isLeftPaginationDisabled(){return 1===this.pageNumber||0===this.totalItems}get isRightPaginationDisabled(){return this.pageNumber===this.pageCount||0===this.totalItems}dispose(){this.pubSubService.unsubscribeAll(this._subscriptions),this._bindingEventService.unbindAll(),this._bindingHelper.dispose(),this._paginationElement.remove()}renderPagination(e){this._gridParentContainerElm=e;const a=this.createPaginationContainer(),u=T("div",{className:"slick-pagination-nav"}),i=T("nav",{ariaLabel:"Page navigation"}),r=T("ul",{className:"pagination"});this._seekFirstElm=T("li",{className:"page-item seek-first"},r),this._seekFirstElm.appendChild(T("a",{className:"page-link icon-seek-first",ariaLabel:"First Page",role:"button"})),this._seekPrevElm=T("li",{className:"page-item seek-prev"},r),this._seekPrevElm.appendChild(T("a",{className:"page-link icon-seek-prev",ariaLabel:"Previous Page",role:"button"})),i.appendChild(r);const o=this.createPageNumberSection(),d=T("nav",{ariaLabel:"Page navigation"}),h=T("ul",{className:"pagination"});this._seekNextElm=T("li",{className:"page-item seek-next"},h),this._seekNextElm.appendChild(T("a",{className:"page-link icon-seek-next",ariaLabel:"Next Page",role:"button"})),this._seekEndElm=T("li",{className:"page-item seek-end"},h),this._seekEndElm.appendChild(T("a",{className:"page-link icon-seek-end",ariaLabel:"Last Page",role:"button"})),d.appendChild(h),a.appendChild(u),u.appendChild(i),u.appendChild(o),u.appendChild(d);const m=this.createPaginationSettingsSection();a.appendChild(u),a.appendChild(m),this._paginationElement.appendChild(a),e?.appendChild&&this._paginationElement&&e.appendChild(this._paginationElement),this.renderPageSizes(),this.addBindings(),this.addEventListeners(),this.updatePageButtonsUsability()}renderPageSizes(){if(this._itemPerPageElm&&Array.isArray(this.availablePageSizes))for(const e of this.availablePageSizes)this._itemPerPageElm.appendChild(T("option",{value:`${e}`,text:`${e}`}))}addBindings(){this._bindingHelper.addElementBinding(this,"firstButtonClasses","li.page-item.seek-first","className"),this._bindingHelper.addElementBinding(this,"prevButtonClasses","li.page-item.seek-prev","className"),this._bindingHelper.addElementBinding(this,"lastButtonClasses","li.page-item.seek-end","className"),this._bindingHelper.addElementBinding(this,"nextButtonClasses","li.page-item.seek-next","className"),this._bindingHelper.addElementBinding(this.currentPagination,"dataFrom","span.item-from","textContent"),this._bindingHelper.addElementBinding(this.currentPagination,"dataTo","span.item-to","textContent"),this._bindingHelper.addElementBinding(this.currentPagination,"totalItems","span.total-items","textContent"),this._bindingHelper.addElementBinding(this.currentPagination,"pageCount","span.page-count","textContent"),this._bindingHelper.addElementBinding(this.currentPagination,"pageSize","select.items-per-page","value"),this.paginationService.isCursorBased?this._bindingHelper.addElementBinding(this.currentPagination,"pageNumber","span.page-number","textContent"):this._bindingHelper.addElementBinding(this.currentPagination,"pageNumber","input.page-number","value","change",this.changeToCurrentPage.bind(this)),this._bindingHelper.addElementBinding(this,"textItems","span.text-items","textContent"),this._bindingHelper.addElementBinding(this,"textItemsPerPage","span.text-item-per-page","textContent"),this._bindingHelper.addElementBinding(this,"textOf","span.text-of","textContent"),this._bindingHelper.addElementBinding(this,"textPage","span.text-page","textContent")}addEventListeners(){this._bindingEventService.bind(this._seekFirstElm,"click",this.changeToFirstPage.bind(this)),this._bindingEventService.bind(this._seekEndElm,"click",this.changeToLastPage.bind(this)),this._bindingEventService.bind(this._seekNextElm,"click",this.changeToNextPage.bind(this)),this._bindingEventService.bind(this._seekPrevElm,"click",this.changeToPreviousPage.bind(this)),this._bindingEventService.bind(this._itemPerPageElm,"change",this.updateItemsPerPage.bind(this))}changeToFirstPage(e){this.isLeftPaginationDisabled||this.paginationService.goToFirstPage(e)}changeToLastPage(e){this.isRightPaginationDisabled||this.paginationService.goToLastPage(e)}changeToNextPage(e){this.isRightPaginationDisabled||this.paginationService.goToNextPage(e)}changeToPreviousPage(e){this.isLeftPaginationDisabled||this.paginationService.goToPreviousPage(e)}changeToCurrentPage(e){this.paginationService.goToPageNumber(+e)}updateItemsPerPage(e){this.itemsPerPage=+(e?.target?.value??0)}translatePaginationTexts(){if(this._enableTranslate&&this.translaterService?.translate){const e=Gl(this.gridOptions);this.textItemsPerPage=this.translaterService.translate(`${e}ITEMS_PER_PAGE`),this.textItems=this.translaterService.translate(`${e}ITEMS`),this.textOf=this.translaterService.translate(`${e}OF`),this.textPage=this.translaterService.translate(`${e}PAGE`)}else this.locales&&(this.textItemsPerPage=this.locales.TEXT_ITEMS_PER_PAGE||"TEXT_ITEMS_PER_PAGE",this.textItems=this.locales.TEXT_ITEMS||"TEXT_ITEMS",this.textOf=this.locales.TEXT_OF||"TEXT_OF",this.textPage=this.locales.TEXT_PAGE||"TEXT_PAGE")}createPaginationContainer(){const e=T("div",{id:"pager",className:`slick-pagination-container ${this.gridUid} pager`,style:{width:"100%"}}),a=T("div",{className:"slick-pagination"});return e.appendChild(a),this._paginationElement=e,a}createPageNumberSection(){const e=T("div",{className:"slick-page-number"});return T("span",{className:"text-page",textContent:"Page"},e),e.appendChild(document.createTextNode(" ")),this.paginationService.isCursorBased?T("span",{className:"page-number",ariaLabel:"Page Number",dataset:{test:"page-number-label"},textContent:"1"},e):T("input",{type:"text",className:"form-control page-number",ariaLabel:"Page Number",value:"1",size:1,dataset:{test:"page-number-input"}},e),e.appendChild(document.createTextNode(" ")),T("span",{className:"text-of",textContent:"of"},e),e.appendChild(document.createTextNode(" ")),T("span",{className:"page-count",dataset:{test:"page-count"}},e),e}createPaginationSettingsSection(){const e=T("span",{className:"slick-pagination-settings"});this._itemPerPageElm=T("select",{id:"items-per-page-label",ariaLabel:"Items per Page",className:"items-per-page"},e),e.appendChild(document.createTextNode(" ")),T("span",{className:"text-item-per-page",textContent:"items per page"},e),e.appendChild(document.createTextNode(", "));const a=T("span",{className:"slick-pagination-count"},e);this._spanInfoFromToElm=T("span",{className:"page-info-from-to"},a),T("span",{className:"item-from",ariaLabel:"Page Item From",dataset:{test:"item-from"}},this._spanInfoFromToElm),this._spanInfoFromToElm.appendChild(document.createTextNode("-")),T("span",{className:"item-to",ariaLabel:"Page Item To",dataset:{test:"item-to"}},this._spanInfoFromToElm),this._spanInfoFromToElm.appendChild(document.createTextNode(" ")),T("span",{className:"text-of",textContent:"of"},this._spanInfoFromToElm),this._spanInfoFromToElm.appendChild(document.createTextNode(" "));const u=T("span",{className:"page-info-total-items"},a);return T("span",{className:"total-items",ariaLabel:"Total Items",dataset:{test:"total-items"}},u),u.appendChild(document.createTextNode(" ")),T("span",{className:"text-items",textContent:"items"},u),u.appendChild(document.createTextNode(" ")),e}updatePageButtonsUsability(){this.firstButtonClasses=this.isLeftPaginationDisabled?"page-item seek-first disabled":"page-item seek-first",this.prevButtonClasses=this.isLeftPaginationDisabled?"page-item seek-prev disabled":"page-item seek-prev",this.lastButtonClasses=this.isRightPaginationDisabled?"page-item seek-end disabled":"page-item seek-end",this.nextButtonClasses=this.isRightPaginationDisabled?"page-item seek-next disabled":"page-item seek-next"}}class M1e{constructor(){this.className="RxJsResource"}get EMPTY(){return Ol}createObservable(){return new rt}createSubject(){return new Gt}firstValueFrom(e){return function S1e(t,e){const a="object"==typeof e;return new Promise((u,i)=>{const r=new Mn({next:o=>{u(o),r.unsubscribe()},error:i,complete:()=>{a?u(e.defaultValue):i(new Zx)}});t.subscribe(r)})}(e)}iif(e,a,u){return function z1e(t,e,a){return Kx(()=>t()?e:a)}(e,a,u)}isObservable(e){return Ms(e)}of(...e){return Ue(...e)}switchMap(e){return Fo(e)}takeUntil(e){return Ah(e)}}class L1e{static#e=this.locales={TEXT_ALL_SELECTED:"All Selected",TEXT_ALL_X_RECORDS_SELECTED:"All {{x}} records selected",TEXT_APPLY_MASS_UPDATE:"Apply Mass Update",TEXT_APPLY_TO_SELECTION:"Update Selection",TEXT_CANCEL:"Cancel",TEXT_CLEAR_ALL_FILTERS:"Clear all Filters",TEXT_CLEAR_ALL_GROUPING:"Clear all Grouping",TEXT_CLEAR_ALL_SORTING:"Clear all Sorting",TEXT_CLEAR_PINNING:"Unfreeze Columns/Rows",TEXT_CLONE:"Clone",TEXT_COLLAPSE_ALL_GROUPS:"Collapse all Groups",TEXT_CONTAINS:"Contains",TEXT_COLUMNS:"Columns",TEXT_COLUMN_RESIZE_BY_CONTENT:"Resize by Content",TEXT_COMMANDS:"Commands",TEXT_COPY:"Copy",TEXT_EQUALS:"Equals",TEXT_EQUAL_TO:"Equal to",TEXT_ENDS_WITH:"Ends With",TEXT_ERROR_EDITABLE_GRID_REQUIRED:"Your grid must be editable in order to use the Composite Editor Modal.",TEXT_ERROR_ENABLE_CELL_NAVIGATION_REQUIRED:'Composite Editor requires the flag "enableCellNavigation" to be set to True in your Grid Options.',TEXT_ERROR_NO_CHANGES_DETECTED:"Sorry we could not detect any changes.",TEXT_ERROR_NO_EDITOR_FOUND:"We could not find any Editor in your Column Definition.",TEXT_ERROR_NO_RECORD_FOUND:"No records selected for edit or clone operation.",TEXT_ERROR_ROW_NOT_EDITABLE:"Current row is not editable.",TEXT_ERROR_ROW_SELECTION_REQUIRED:"You must select some rows before trying to apply new value(s).",TEXT_EXPAND_ALL_GROUPS:"Expand all Groups",TEXT_EXPORT_TO_CSV:"Export in CSV format",TEXT_EXPORT_TO_TEXT_FORMAT:"Export in Text format (Tab delimited)",TEXT_EXPORT_TO_EXCEL:"Export to Excel",TEXT_EXPORT_TO_TAB_DELIMITED:"Export in Text format (Tab delimited)",TEXT_FORCE_FIT_COLUMNS:"Force fit columns",TEXT_FREEZE_COLUMNS:"Freeze Columns",TEXT_GREATER_THAN:"Greater than",TEXT_GREATER_THAN_OR_EQUAL_TO:"Greater than or equal to",TEXT_GROUP_BY:"Group By",TEXT_HIDE_COLUMN:"Hide Column",TEXT_ITEMS:"items",TEXT_ITEMS_PER_PAGE:"items per page",TEXT_ITEMS_SELECTED:"items selected",TEXT_OF:"of",TEXT_OK:"OK",TEXT_LAST_UPDATE:"Last Update",TEXT_LESS_THAN:"Less than",TEXT_LESS_THAN_OR_EQUAL_TO:"Less than or equal to",TEXT_NO_ELEMENTS_FOUND:"Aucun \xe9l\xe9ment trouv\xe9",TEXT_NOT_CONTAINS:"Not contains",TEXT_NOT_EQUAL_TO:"Not equal to",TEXT_PAGE:"Page",TEXT_REFRESH_DATASET:"Refresh Dataset",TEXT_REMOVE_FILTER:"Remove Filter",TEXT_REMOVE_SORT:"Remove Sort",TEXT_SAVE:"Save",TEXT_SELECT_ALL:"Select All",TEXT_SYNCHRONOUS_RESIZE:"Synchronous resize",TEXT_SORT_ASCENDING:"Sort Ascending",TEXT_SORT_DESCENDING:"Sort Descending",TEXT_STARTS_WITH:"Starts With",TEXT_TOGGLE_DARK_MODE:"Toggle Dark Mode",TEXT_TOGGLE_FILTER_ROW:"Toggle Filter Row",TEXT_TOGGLE_PRE_HEADER_ROW:"Toggle Pre-Header Row",TEXT_X_OF_Y_SELECTED:"# of % selected",TEXT_X_OF_Y_MASS_SELECTED:"{{x}} of {{y}} selected"};static#a=this.treeDataProperties={CHILDREN_PROP:"children",COLLAPSED_PROP:"__collapsed",HAS_CHILDREN_PROP:"__hasChildren",TREE_LEVEL_PROP:"__treeLevel",PARENT_PROP:"__parentId"};static#t=this.VALIDATION_REQUIRED_FIELD="Field is required";static#u=this.VALIDATION_EDITOR_VALID_NUMBER="Please enter a valid number";static#i=this.VALIDATION_EDITOR_VALID_INTEGER="Please enter a valid integer number";static#n=this.VALIDATION_EDITOR_INTEGER_BETWEEN="Please enter a valid integer number between {{minValue}} and {{maxValue}}";static#r=this.VALIDATION_EDITOR_INTEGER_MAX="Please enter a valid integer number that is lower than {{maxValue}}";static#o=this.VALIDATION_EDITOR_INTEGER_MAX_INCLUSIVE="Please enter a valid integer number that is lower than or equal to {{maxValue}}";static#l=this.VALIDATION_EDITOR_INTEGER_MIN="Please enter a valid integer number that is greater than {{minValue}}";static#s=this.VALIDATION_EDITOR_INTEGER_MIN_INCLUSIVE="Please enter a valid integer number that is greater than or equal to {{minValue}}";static#d=this.VALIDATION_EDITOR_NUMBER_BETWEEN="Please enter a valid number between {{minValue}} and {{maxValue}}";static#c=this.VALIDATION_EDITOR_NUMBER_MAX="Please enter a valid number that is lower than {{maxValue}}";static#h=this.VALIDATION_EDITOR_NUMBER_MAX_INCLUSIVE="Please enter a valid number that is lower than or equal to {{maxValue}}";static#m=this.VALIDATION_EDITOR_NUMBER_MIN="Please enter a valid number that is greater than {{minValue}}";static#p=this.VALIDATION_EDITOR_NUMBER_MIN_INCLUSIVE="Please enter a valid number that is greater than or equal to {{minValue}}";static#E=this.VALIDATION_EDITOR_DECIMAL_BETWEEN="Please enter a valid number with a maximum of {{maxDecimal}} decimals";static#g=this.VALIDATION_EDITOR_TEXT_LENGTH_BETWEEN="Please make sure your text length is between {{minLength}} and {{maxLength}} characters";static#v=this.VALIDATION_EDITOR_TEXT_MAX_LENGTH="Please make sure your text is less than {{maxLength}} characters";static#b=this.VALIDATION_EDITOR_TEXT_MAX_LENGTH_INCLUSIVE="Please make sure your text is less than or equal to {{maxLength}} characters";static#k=this.VALIDATION_EDITOR_TEXT_MIN_LENGTH="Please make sure your text is more than {{minLength}} character(s)";static#x=this.VALIDATION_EDITOR_TEXT_MIN_LENGTH_INCLUSIVE="Please make sure your text is at least {{minLength}} character(s)"}let X7=class{get paginationOptions(){return this._paginationOptions}set paginationOptions(e){e&&this._paginationOptions?this._paginationOptions={...this.gridOptions.pagination,...this._paginationOptions,...e}:this._paginationOptions=e,this.gridOptions.pagination=this._paginationOptions??this.gridOptions.pagination,this.paginationService.updateTotalItems(this.gridOptions.pagination?.totalItems??0,!0)}set columnDefinitions(e){this._columnDefinitions=e,this._isGridInitialized&&this.updateColumnDefinitionsList(e),e.length>0&&this.copyColumnWidthsReference(e)}get columnDefinitions(){return this._columnDefinitions}get dataset(){return(this.customDataView?this.slickGrid?.getData?.():this.dataView?.getItems())||[]}set dataset(e){const a=this._currentDatasetLength,u=Js(e,this._dataset||[]);let i=e;this.slickGrid&&this.gridOptions?.enableTreeData&&Array.isArray(e)&&(e.length>0||e.length!==a||!u)&&(this._isDatasetHierarchicalInitialized=!1,i=this.sortTreeDataset(e,!u)),this._dataset=i,this.refreshGridData(i||[]),this._currentDatasetLength=(e||[]).length,this.slickGrid&&this.gridOptions?.autoFitColumnsOnFirstLoad&&0===a&&!this._isAutosizeColsCalled&&(this.slickGrid.autosizeColumns(),this._isAutosizeColsCalled=!0)}get datasetHierarchical(){return this.sharedService.hierarchicalDataset}set datasetHierarchical(e){const a=Js(e,this.sharedService?.hierarchicalDataset??[]),u=this._currentDatasetLength;this.sharedService.hierarchicalDataset=e,e&&this.columnDefinitions&&this.filterService?.clearFilters&&this.filterService.clearFilters(),e&&this.slickGrid&&this.sortService?.processTreeDataInitialSort&&(this.sortService.processTreeDataInitialSort(),setTimeout(()=>{const i=this.dataView.getItemCount();i>0&&(i!==u||!a)&&this.filterService.refreshTreeDataFilters()}),this._isDatasetHierarchicalInitialized=!0)}get elementRef(){return this.elm}get eventHandler(){return this._eventHandler}get gridContainerElement(){return document.querySelector(`#${this.gridOptions.gridContainerId||""}`)}get isDatasetInitialized(){return this._isDatasetInitialized}set isDatasetInitialized(e){this._isDatasetInitialized=e}set isDatasetHierarchicalInitialized(e){this._isDatasetHierarchicalInitialized=e}get registeredResources(){return this._registeredResources}constructor(e,a,u,i,r,o,d,h,m){this.angularUtilService=e,this.appRef=a,this.cd=u,this.containerService=i,this.elm=r,this.translate=o,this.translaterService=d,this.forRootConfig=h,this._currentDatasetLength=0,this._darkMode=!1,this._eventHandler=new Ot,this._hideHeaderRowAfterPageLoad=!1,this._isAutosizeColsCalled=!1,this._isGridInitialized=!1,this._isDatasetInitialized=!1,this._isDatasetHierarchicalInitialized=!1,this._isPaginationInitialized=!1,this._isLocalGrid=!0,this._registeredResources=[],this.groupingDefinition={},this.showPagination=!1,this.serviceList=[],this.totalItems=0,this.subscriptions=[],this.gridId="",this.columnDefinitionsChange=new aa(!0);const E=new f1e;this._eventPubSubService=m?.eventPubSubService??new l0e(this.elm.nativeElement),this._eventPubSubService.eventNamingStyle=T0.camelCase,this.backendUtilityService=m?.backendUtilityService??new pj,this.gridEventService=m?.gridEventService??new Hde,this.sharedService=m?.sharedService??new qde,this.collectionService=m?.collectionService??new TO(this.translaterService),this.extensionUtility=m?.extensionUtility??new Sse(this.sharedService,this.backendUtilityService,this.translaterService),this.filterFactory=new Bce(E,this.translaterService,this.collectionService),this.filterService=m?.filterService??new Ide(this.filterFactory,this._eventPubSubService,this.sharedService,this.backendUtilityService),this.resizerService=m?.resizerService??new $de(this._eventPubSubService),this.sortService=m?.sortService??new Yde(this.sharedService,this._eventPubSubService,this.backendUtilityService),this.treeDataService=m?.treeDataService??new Qde(this._eventPubSubService,this.sharedService,this.sortService),this.paginationService=m?.paginationService??new Ode(this._eventPubSubService,this.sharedService,this.backendUtilityService),this.extensionService=m?.extensionService??new Ade(this.extensionUtility,this.filterService,this._eventPubSubService,this.sharedService,this.sortService,this.treeDataService,this.translaterService,()=>this.gridService),this.gridStateService=m?.gridStateService??new Vde(this.extensionService,this.filterService,this._eventPubSubService,this.sharedService,this.sortService,this.treeDataService),this.gridService=m?.gridService??new Rde(this.gridStateService,this.filterService,this._eventPubSubService,this.paginationService,this.sharedService,this.sortService,this.treeDataService),this.groupingService=m?.groupingAndColspanService??new jde(this.extensionUtility,this._eventPubSubService),this.serviceList=[this.containerService,this.extensionService,this.filterService,this.gridEventService,this.gridService,this.gridStateService,this.groupingService,this.paginationService,this.resizerService,this.sortService,this.treeDataService],this.containerService.registerInstance("ExtensionUtility",this.extensionUtility),this.containerService.registerInstance("FilterService",this.filterService),this.containerService.registerInstance("CollectionService",this.collectionService),this.containerService.registerInstance("ExtensionService",this.extensionService),this.containerService.registerInstance("GridEventService",this.gridEventService),this.containerService.registerInstance("GridService",this.gridService),this.containerService.registerInstance("GridStateService",this.gridStateService),this.containerService.registerInstance("GroupingAndColspanService",this.groupingService),this.containerService.registerInstance("PaginationService",this.paginationService),this.containerService.registerInstance("ResizerService",this.resizerService),this.containerService.registerInstance("SharedService",this.sharedService),this.containerService.registerInstance("SortService",this.sortService),this.containerService.registerInstance("EventPubSubService",this._eventPubSubService),this.containerService.registerInstance("PubSubService",this._eventPubSubService),this.containerService.registerInstance("TranslaterService",this.translaterService),this.containerService.registerInstance("TreeDataService",this.treeDataService)}ngAfterViewInit(){if(!this.gridOptions||!this.columnDefinitions)throw new Error("Using `` requires [gridOptions] and [columnDefinitions], it seems that you might have forgot to provide them since at least of them is undefined.");if(this.initialization(this._eventHandler),this._isGridInitialized=!0,this.gridOptions?.enableEmptyDataWarningMessage&&Array.isArray(this.dataset)){const e=this.dataset.length;this.displayEmptyDataWarning(e<1)}this.gridOptions.darkMode&&this.setDarkMode(!0)}ngOnDestroy(){this._eventPubSubService.publish("onBeforeGridDestroy",this.slickGrid),this.destroy(),this._eventPubSubService.publish("onAfterGridDestroyed",!0)}destroy(e=!1){if(this.serviceList.forEach(a=>{a&&a.dispose&&a.dispose()}),this.serviceList=[],this.disposeExternalResources(),this.slickEmptyWarning?.dispose(),this.slickFooter?.dispose(),this.slickPagination?.dispose(),this._eventHandler?.unsubscribeAll&&this._eventHandler.unsubscribeAll(),this._eventPubSubService?.unsubscribeAll(),this.dataView&&(this.dataView.setItems([]),this.dataView.destroy()),this.slickGrid?.destroy&&this.slickGrid.destroy(e),this.backendServiceApi){for(const a of Object.keys(this.backendServiceApi))delete this.backendServiceApi[a];this.backendServiceApi=void 0}for(const a of Object.keys(this.columnDefinitions))this.columnDefinitions[a]=null;for(const a of Object.keys(this.sharedService))this.sharedService[a]=null;e&&this.emptyGridContainerElm(),this.subscriptions=D2(this.subscriptions),this._dataset=null,this.datasetHierarchical=void 0,this._columnDefinitions=[],this._angularGridInstances=void 0,this.slickGrid=void 0}disposeExternalResources(){if(Array.isArray(this._registeredResources))for(;this._registeredResources.length>0;){const e=this._registeredResources.pop();e?.dispose&&e.dispose()}this._registeredResources=[]}emptyGridContainerElm(){const e=this.gridOptions?.gridContainerId??"grid1";Ct(document.querySelector(`#${e}`))}createBackendApiInternalPostProcessCallback(e){const a=e&&e.backendServiceApi;if(a&&a.service){const u=a.service;"function"==typeof u.getDatasetName&&(a.internalPostProcess=i=>{const r=a&&u&&"function"==typeof u.getDatasetName?u.getDatasetName():"";if(i?.data[r]){const o=i.data[r].hasOwnProperty("nodes")?i.data[r].nodes:i.data[r],d=i.data[r].hasOwnProperty("totalCount")?i.data[r].totalCount:i.data[r].length;this.refreshGridData(o,d||0)}})}}initialization(e){if(this.gridOptions.translater=this.translaterService,this._eventHandler=e,this._isAutosizeColsCalled=!1,this.gridOptions&&(void 0!==this.gridOptions.frozenRow&&this.gridOptions.frozenRow>=0||void 0!==this.gridOptions.frozenColumn&&this.gridOptions.frozenColumn>=0)&&void 0===this.gridOptions.enableMouseWheelScrollHandler&&(this.gridOptions.enableMouseWheelScrollHandler=!0),this._eventPubSubService.eventNamingStyle=this.gridOptions?.eventNamingStyle??T0.camelCase,this._eventPubSubService.publish("onBeforeGridCreate",!0),this._dataset=this._dataset||[],this.gridOptions=this.mergeGridOptions(this.gridOptions),this._paginationOptions=this.gridOptions?.pagination,this.locales=this.gridOptions?.locales??L1e.locales,this.backendServiceApi=this.gridOptions?.backendServiceApi,this._isLocalGrid=!this.backendServiceApi,this.createBackendApiInternalPostProcessCallback(this.gridOptions),!this.customDataView){const u=this.gridOptions?.dataView?.inlineFilters??!1;let i={...this.gridOptions.dataView,inlineFilters:u};(this.gridOptions.draggableGrouping||this.gridOptions.enableGrouping)&&(this.groupItemMetadataProvider=new IO,this.sharedService.groupItemMetadataProvider=this.groupItemMetadataProvider,i={...i,groupItemMetadataProvider:this.groupItemMetadataProvider}),this.dataView=new Tse(i,this._eventPubSubService),this._eventPubSubService.publish("onDataviewCreated",this.dataView)}this.preRegisterResources(),this._columnDefinitions=this.loadSlickGridEditors(this._columnDefinitions||[]),this.gridOptions.autoAddCustomEditorFormatter&&function Dde(t,e){if(Array.isArray(t))for(const a of t)if(a.editor)if(a.formatter&&a.formatter!==j7&&a.formatter!==e){const u=a.formatter;a.formatter=j7,a.params={...a.params,formatters:[u,e]}}else a.formatter&&a.formatter===j7&&a.params?-1===a.params.formatters.findIndex(u=>u===e)&&(a.params.formatters=[...a.params.formatters,e]):a.formatter=e}(this._columnDefinitions,this.gridOptions.autoAddCustomEditorFormatter),this.sharedService.allColumns=this._columnDefinitions,this.sharedService.visibleColumns=this._columnDefinitions,this.subscriptions.push(this._eventPubSubService.subscribe("onPluginColumnsChanged",u=>{this._columnDefinitions=u.columns,this.columnDefinitionsChange.emit(this._columnDefinitions)})),this.extensionService.createExtensionsBeforeGridCreation(this._columnDefinitions,this.gridOptions),this.gridOptions.presets?.pinning&&(this.gridOptions={...this.gridOptions,...this.gridOptions.presets.pinning}),this.slickGrid=new mde(`#${this.gridId}`,this.customDataView||this.dataView,this._columnDefinitions,this.gridOptions,this._eventPubSubService),this.sharedService.dataView=this.dataView,this.sharedService.slickGrid=this.slickGrid,this.sharedService.gridContainerElement=this.elm.nativeElement,this.groupItemMetadataProvider&&this.slickGrid.registerPlugin(this.groupItemMetadataProvider),this.extensionService.bindDifferentExtensions(),this.bindDifferentHooks(this.slickGrid,this.gridOptions,this.dataView);const a=void 0!==this.gridOptions.frozenColumn?this.gridOptions.frozenColumn:-1;if(a>=0&&a<=this._columnDefinitions.length&&(this.sharedService.frozenVisibleColumnId=this._columnDefinitions[a].id||""),this.registerResources(),this.slickGrid.init(),this.gridContainerElement&&this.resizerService.init(this.slickGrid,this.gridContainerElement),!this.gridOptions.enablePagination&&this.gridOptions.showCustomFooter&&this.gridOptions.customFooterOptions&&this.gridContainerElement&&(this.slickFooter=new w1e(this.slickGrid,this.gridOptions.customFooterOptions,this._eventPubSubService,this.translaterService),this.slickFooter.renderFooter(this.gridContainerElement)),!this.customDataView&&this.dataView){const u=this.gridOptions?.enableTreeData?this.sortTreeDataset(this._dataset):this._dataset;if(this.dataView.beginUpdate(),this.dataView.setItems(u||[],this.gridOptions.datasetIdPropertyName??"id"),this.dataView.endUpdate(),this.slickGrid?.getSelectionModel()&&this.gridOptions?.dataView?.hasOwnProperty("syncGridSelection")){let r=!1;this.gridOptions.backendServiceApi&&this.gridOptions.dataView.hasOwnProperty("syncGridSelectionWithBackendService")&&(r=this.gridOptions.dataView.syncGridSelectionWithBackendService);const o=this.gridOptions.dataView.syncGridSelection;if("boolean"==typeof o){let d=o;this._isLocalGrid||(d=o&&r),this.dataView.syncGridSelection(this.slickGrid,d)}else"object"==typeof o&&this.dataView.syncGridSelection(this.slickGrid,o.preserveHidden,o.preserveHiddenOnSelectionChange)}(this.dataView.getLength()||this._dataset&&this._dataset.length||0)>0&&(!this._isDatasetInitialized&&(this.gridOptions.enableCheckboxSelector||this.gridOptions.enableRowSelection)&&this.loadRowSelectionPresetWhenExists(),this.loadFilterPresetsWhenDatasetInitialized(),this._isDatasetInitialized=!0)}this._hideHeaderRowAfterPageLoad&&(this.showHeaderRow(!1),this.sharedService.hideHeaderRowAfterPageLoad=this._hideHeaderRowAfterPageLoad),this._eventPubSubService.publish("onGridCreated",this.slickGrid),this.customDataView||this.executeAfterDataviewCreated(this.slickGrid,this.gridOptions),this.bindResizeHook(this.slickGrid,this.gridOptions),this.gridOptions?.backendServiceApi&&this.bindBackendCallbackFunctions(this.gridOptions),this.gridOptions?.enablePagination&&this._isLocalGrid&&(this.showPagination=!0,this.loadLocalGridPagination(this.dataset)),this._angularGridInstances={dataView:this.dataView,slickGrid:this.slickGrid,extensions:this.extensionService?.extensionList,destroy:this.destroy.bind(this),backendService:this.gridOptions?.backendServiceApi?.service,eventPubSubService:this._eventPubSubService,filterService:this.filterService,gridEventService:this.gridEventService,gridStateService:this.gridStateService,gridService:this.gridService,groupingService:this.groupingService,extensionService:this.extensionService,paginationService:this.paginationService,resizerService:this.resizerService,sortService:this.sortService,treeDataService:this.treeDataService},this._eventPubSubService.publish("onAngularGridCreated",this._angularGridInstances)}paginationChanged(e){const a=this.gridStateService?.needToPreserveRowSelection()??!1;this.slickGrid&&!a&&this.gridOptions?.backendServiceApi&&(this.gridOptions.enableRowSelection||this.gridOptions.enableCheckboxSelector)&&this.slickGrid.setSelectedRows([]);const{pageNumber:u,pageSize:i}=e;this.sharedService&&void 0!==i&&void 0!==u&&(this.sharedService.currentPagination={pageNumber:u,pageSize:i}),this._eventPubSubService.publish("onGridStateChanged",{change:{newValues:{pageNumber:u,pageSize:i},type:kr.pagination},gridState:this.gridStateService.getCurrentGridState()}),this.cd.markForCheck()}refreshGridData(e,a){if(this.gridOptions&&this.gridOptions.enableEmptyDataWarningMessage&&Array.isArray(e)){const u=a||e.length;this.displayEmptyDataWarning(u<1)}if(Array.isArray(e)&&this.slickGrid&&this.dataView?.setItems){if(this.dataView.setItems(e,this.gridOptions.datasetIdPropertyName??"id"),!this.gridOptions.backendServiceApi&&!this.gridOptions.enableTreeData&&this.dataView.reSort(),e.length>0&&(this._isDatasetInitialized||(this.loadFilterPresetsWhenDatasetInitialized(),this.gridOptions.enableCheckboxSelector&&this.loadRowSelectionPresetWhenExists()),this._isDatasetInitialized=!0),e&&this.slickGrid.invalidate(),this.showPagination=!(!this.gridOptions||!(this.gridOptions.enablePagination||this.gridOptions.backendServiceApi&&void 0===this.gridOptions.enablePagination)),this._paginationOptions&&this.gridOptions?.pagination&&this.gridOptions?.backendServiceApi){const u=this.setPaginationOptionsWhenPresetDefined(this.gridOptions,this._paginationOptions),i=void 0!==a?a:this.gridOptions?.pagination?.totalItems;void 0!==i&&i!==this.totalItems&&(this.totalItems=+i),this._isPaginationInitialized?this.paginationService.updateTotalItems(this.totalItems):this.initializePaginationService(u)}if(this.slickGrid&&this.gridOptions.enableAutoResize){const u=this.gridOptions.autoResize&&this.gridOptions.autoResize.delay;this.resizerService.resizeGrid(u||10)}}}setData(e,a=!1){a&&(this._isAutosizeColsCalled=!1,this._currentDatasetLength=0),this.dataset=e||[]}setPaginationOptionsWhenPresetDefined(e,a){return e.presets?.pagination&&a&&!this._isPaginationInitialized&&(a.pageSize=e.presets.pagination.pageSize,a.pageNumber=e.presets.pagination.pageNumber),a}setDarkMode(e=!1){e?this.sharedService.gridContainerElement?.classList.add("slick-dark-mode"):this.sharedService.gridContainerElement?.classList.remove("slick-dark-mode")}updateColumnDefinitionsList(e){e=this.loadSlickGridEditors(e),this.gridOptions.enableTranslate?this.extensionService.translateColumnHeaders(void 0,e):this.extensionService.renderColumnHeaders(e,!0),this.gridOptions?.enableAutoSizeColumns?this.slickGrid.autosizeColumns():this.gridOptions?.enableAutoResizeColumnsByCellContent&&this.resizerService?.resizeColumnsByCellContent&&this.resizerService.resizeColumnsByCellContent()}showHeaderRow(e=!0){return this.slickGrid.setHeaderRowVisibility(e),!0===e&&this._isGridInitialized&&this.slickGrid.setColumns(this.columnDefinitions),e}copyColumnWidthsReference(e){e.forEach(a=>a.originalWidth=a.width)}displayEmptyDataWarning(e=!0){this.slickEmptyWarning?.showEmptyDataMessage(e)}bindDifferentHooks(e,a,u){if(this.translate?.onLangChange&&(a.enableTranslate&&this.extensionService.translateAllExtensions(),this.subscriptions.push(this.translate.onLangChange.subscribe(({lang:i})=>{this._eventPubSubService.publish("onLanguageChange"),a.enableTranslate&&(this.extensionService.translateAllExtensions(i),a.createPreHeaderPanel&&!a.enableDraggableGrouping&&this.groupingService.translateGroupingAndColSpan())}))),a.backendServiceApi){const i=a.backendServiceApi;i?.service?.init&&i.service.init(i.options,a.pagination,this.slickGrid,this.sharedService)}u&&e&&(this.gridEventService.bindOnCellChange(e),this.gridEventService.bindOnClick(e),u&&e&&(a.enableSorting&&(a.backendServiceApi&&!a.backendServiceApi.useLocalSorting?this.sortService.bindBackendOnSort(e):this.sortService.bindLocalOnSort(e)),a.enableFiltering&&(this.filterService.init(e),a.backendServiceApi&&!a.backendServiceApi.useLocalFiltering?this.filterService.bindBackendOnFilter(e):this.filterService.bindLocalOnFilter(e)),this._eventHandler.subscribe(e.onColumnsReordered,(i,r)=>{this.sharedService.hasColumnsReordered=!0,this.sharedService.visibleColumns=r.impactedColumns}),this._eventHandler.subscribe(e.onSetOptions,(i,r)=>{r.optionsBefore.darkMode!==r.optionsAfter.darkMode&&this.gridContainerElement&&this.setDarkMode(r.optionsAfter.darkMode)}),this.loadColumnPresetsWhenDatasetInitialized(),this.loadFilterPresetsWhenDatasetInitialized(),this._eventHandler.subscribe(u.onRowCountChanged,()=>{e.invalidate(),this.handleOnItemCountChanged(u.getFilteredItemCount()||0,u.getItemCount()||0)}),this._eventHandler.subscribe(u.onSetItemsCalled,(i,r)=>{this.handleOnItemCountChanged(u.getFilteredItemCount()||0,r.itemCount),r.itemCount>0&&(this.gridOptions.autosizeColumnsByCellContentOnFirstLoad||this.gridOptions.enableAutoResizeColumnsByCellContent)&&this.resizerService.resizeColumnsByCellContent(!this.gridOptions?.resizeByContentOnlyOnFirstLoad)}),a?.enableFiltering&&!a.enableRowDetailView&&this._eventHandler.subscribe(u.onRowsChanged,(i,r)=>{r?.rows&&Array.isArray(r.rows)&&(r.rows.forEach(o=>e.updateRow(o)),e.render())}))),a&&a.colspanCallback&&u&&u.getItem&&u.getItemMetadata&&(u.getItemMetadata=i=>{let r=null;return a.colspanCallback&&a.colspanCallback&&(r=a.colspanCallback(u.getItem(i))),r})}bindBackendCallbackFunctions(e){const a=e.backendServiceApi,u=a&&a.service,i=u?.options??{},r=!!i&&(!i||!i.hasOwnProperty("executeProcessCommandOnInit")||i.executeProcessCommandOnInit);if(u){if(e&&e.presets){if(u.updateFilters&&Array.isArray(e.presets.filters)&&e.presets.filters.length>0&&u.updateFilters(e.presets.filters,!0),u.updateSorters&&Array.isArray(e.presets.sorters)&&e.presets.sorters.length>0){const o=this.gridOptions.multiColumnSort?e.presets.sorters:e.presets.sorters.slice(0,1);u.updateSorters(void 0,o)}if(u.updatePagination&&e.presets.pagination){const{pageNumber:o,pageSize:d}=e.presets.pagination;u.updatePagination(o,d)}}else{const o=this.filterService.getColumnFilters();o&&u.updateFilters&&u.updateFilters(o,!1)}if(a&&u&&(a.onInit||r)){const o="function"==typeof u.buildQuery?u.buildQuery():"",d=r?a.process&&a.process(o)||null:a.onInit&&a.onInit(o)||null;setTimeout(()=>{const h=this.backendUtilityService,m=new Date;a.preProcess&&a.preProcess();const E=this.gridOptions?.pagination?.totalItems??0;d instanceof Promise?d.then(v=>h.executeBackendProcessesCallback(m,v,a,E)).catch(v=>h.onBackendError(v,a)):d&&this.rxjs?.isObservable(d)&&this.subscriptions.push(d.subscribe({next:v=>h.executeBackendProcessesCallback(m,v,a,E),error:v=>h.onBackendError(v,a)}))})}}}bindResizeHook(e,a){if(a.autoFitColumnsOnFirstLoad&&a.autosizeColumnsByCellContentOnFirstLoad||a.enableAutoSizeColumns&&a.enableAutoResizeColumnsByCellContent)throw new Error('[Angular-Slickgrid] You cannot enable both autosize/fit viewport & resize by content, you must choose which resize technique to use. You can enable these 2 options ("autoFitColumnsOnFirstLoad" and "enableAutoSizeColumns") OR these other 2 options ("autosizeColumnsByCellContentOnFirstLoad" and "enableAutoResizeColumnsByCellContent").');a.gridHeight||a.gridWidth?this.resizerService.resizeGrid(0,{height:a.gridHeight,width:a.gridWidth}):this.resizerService.resizeGrid(),e&&a?.enableAutoResize&&a.autoFitColumnsOnFirstLoad&&a.enableAutoSizeColumns&&!this._isAutosizeColsCalled&&(e.autosizeColumns(),this._isAutosizeColsCalled=!0)}executeAfterDataviewCreated(e,a){if(a.enableSorting&&a.presets&&Array.isArray(a.presets.sorters)){const u=this.gridOptions.multiColumnSort?a.presets.sorters:a.presets.sorters.slice(0,1);this.sortService.loadGridSorters(u)}}handleOnItemCountChanged(e,a){this._currentDatasetLength=a,this.metrics={startTime:new Date,endTime:new Date,itemCount:e,totalItemCount:a},this.slickFooter&&(this.slickFooter.metrics=this.metrics),this._isLocalGrid&&this.gridOptions?.enableEmptyDataWarningMessage&&this.displayEmptyDataWarning(0===e)}initializePaginationService(e){this.gridOptions&&(this.paginationData={gridOptions:this.gridOptions,paginationService:this.paginationService},this.paginationService.totalItems=this.totalItems,this.paginationService.init(this.slickGrid,e,this.backendServiceApi),this.subscriptions.push(this._eventPubSubService.subscribe("onPaginationChanged",a=>{this.paginationChanged(a)}),this._eventPubSubService.subscribe("onPaginationVisibilityChanged",a=>{this.showPagination=a?.visible??!1,this.gridOptions?.backendServiceApi&&this.backendUtilityService?.refreshBackendDataset(this.gridOptions),this.renderPagination(this.showPagination)})),this.renderPagination(),this._isPaginationInitialized=!0),this.cd.detectChanges()}loadEditorCollectionAsync(e){if(e?.editor){const a=e.editor.collectionAsync;e.editor.disabled=!0,a instanceof rt?this.subscriptions.push(a.subscribe(u=>this.updateEditorCollection(e,u))):a instanceof Promise&&a.then(u=>{Array.isArray(u)&&this.updateEditorCollection(e,u)})}}insertDynamicPresetColumns(e,a){if(this._columnDefinitions){const u=this._columnDefinitions.findIndex(i=>i.id===e);if(u>=0){const i=this._columnDefinitions[u];i?.id===e&&!a.some(r=>r.id===e)&&(u>0?a.splice(u,0,i):a.unshift(i))}}}loadColumnPresetsWhenDatasetInitialized(){if(this.gridOptions.presets&&Array.isArray(this.gridOptions.presets.columns)&&this.gridOptions.presets.columns.length>0){const e=this.gridStateService.getAssociatedGridColumns(this.slickGrid,this.gridOptions.presets.columns);if(e&&Array.isArray(e)&&e.length>0&&Array.isArray(this._columnDefinitions)){if(this.gridOptions.enableRowMoveManager){const a=this.gridOptions?.rowMoveManager?.columnId??"_move";this.insertDynamicPresetColumns(a,e)}if(this.gridOptions.enableCheckboxSelector){const a=this.gridOptions?.checkboxSelector?.columnId??"_checkbox_selector";this.insertDynamicPresetColumns(a,e)}if(this.gridOptions.enableRowDetailView){const a=this.gridOptions?.rowDetailView?.columnId??"_detail_selector";this.insertDynamicPresetColumns(a,e)}e.forEach(a=>a.originalWidth=a.width),this.slickGrid.setColumns(e),this.sharedService.visibleColumns=e}}}loadFilterPresetsWhenDatasetInitialized(){this.gridOptions&&!this.customDataView&&this.gridOptions.presets&&(Array.isArray(this.gridOptions.presets.filters)||Array.isArray(this.gridOptions.presets?.treeData?.toggledItems))&&this.filterService.populateColumnFilterSearchTermPresets(this.gridOptions.presets?.filters||[])}loadLocalGridPagination(e){if(this.gridOptions&&this._paginationOptions){if(this.totalItems=Array.isArray(e)?e.length:0,this._paginationOptions&&this.dataView?.getPagingInfo){const u=this.dataView.getPagingInfo();u?.hasOwnProperty("totalRows")&&this._paginationOptions.totalItems!==u.totalRows&&(this.totalItems=u.totalRows||0)}this._paginationOptions.totalItems=this.totalItems;const a=this.setPaginationOptionsWhenPresetDefined(this.gridOptions,this._paginationOptions);this.initializePaginationService(a)}}loadRowSelectionPresetWhenExists(){const e=this.gridOptions?.presets;if(this.gridOptions&&(this.gridOptions.enableCheckboxSelector||this.gridOptions.enableRowSelection)&&this.slickGrid?.getSelectionModel()&&e?.rowSelection&&(Array.isArray(e.rowSelection.gridRowIndexes)||Array.isArray(e.rowSelection.dataContextIds))){let u=e.rowSelection.dataContextIds,i=e.rowSelection.gridRowIndexes;Array.isArray(u)&&u.length>0?i=this.dataView.mapIdsToRows(u)||[]:Array.isArray(i)&&i.length>0&&(u=this.dataView.mapRowsToIds(i)||[]),this.slickGrid&&Array.isArray(i)&&(this.slickGrid.setSelectedRows(i),this.dataView.setSelectedIds(u||[],{isRowBeingAdded:!0,shouldTriggerEvent:!1,applyRowSelectionToGrid:!0}))}}mergeGridOptions(e){e.gridId=this.gridId,e.gridContainerId=`slickGridContainer-${this.gridId}`,e.enablePagination=!(!e.backendServiceApi||void 0!==e.enablePagination)||e.enablePagination||!1;const a=su(!0,{},nL,this.forRootConfig,e);return a?.pagination&&(e.enablePagination||e.backendServiceApi)&&(this.forRootConfig.pagination||e.pagination)&&(a.pagination.pageSize=e.pagination?.pageSize??this.forRootConfig.pagination?.pageSize??nL.pagination.pageSize,a.pagination.pageSizes=e.pagination?.pageSizes??this.forRootConfig.pagination?.pageSizes??nL.pagination.pageSizes),this._hideHeaderRowAfterPageLoad=!1===a.showHeaderRow,a.enableFiltering&&!a.showHeaderRow&&(a.showHeaderRow=a.enableFiltering),a&&!a.enableFiltering&&a.enablePagination&&this._isLocalGrid&&(a.enableFiltering=!0,a.showHeaderRow=!1,this._hideHeaderRowAfterPageLoad=!0,this.sharedService&&(this.sharedService.hideHeaderRowAfterPageLoad=!0)),a}registerExternalResources(e,a=!1){a&&this.disposeExternalResources(),e.forEach(u=>this._registeredResources.push(u)),this.initializeExternalResources(e)}resetExternalResources(){this._registeredResources=[]}preRegisterResources(){this._registeredResources=this.gridOptions?.externalResources||[],this.registerRxJsResource(new M1e),this.gridOptions.enableRowDetailView&&(this.slickRowDetailView=new y1e(this.angularUtilService,this.appRef,this._eventPubSubService,this.elm.nativeElement,this.rxjs),this.slickRowDetailView.create(this.columnDefinitions,this.gridOptions),this._registeredResources.push(this.slickRowDetailView),this.extensionService.addExtensionToList(oa.rowDetailView,{name:oa.rowDetailView,instance:this.slickRowDetailView}))}initializeExternalResources(e){if(Array.isArray(e))for(const a of e)this.slickGrid&&"function"==typeof a.init&&a.init(this.slickGrid,this.containerService)}registerResources(){Array.isArray(this._registeredResources)&&(this.sharedService.externalRegisteredResources=this._registeredResources),this._registeredResources.push(this.gridService,this.gridStateService),this.gridOptions.createPreHeaderPanel&&!this.gridOptions.enableDraggableGrouping&&this._registeredResources.push(this.groupingService),this.gridOptions.enableTreeData&&this._registeredResources.push(this.treeDataService),this.gridOptions.enableTranslate&&this.extensionService.translateColumnHeaders(),this.slickEmptyWarning=new F1e,this._registeredResources.push(this.slickEmptyWarning),this.initializeExternalResources(this._registeredResources)}registerRxJsResource(e){this.rxjs=e,this.backendUtilityService.addRxJsResource(this.rxjs),this.filterFactory.addRxJsResource(this.rxjs),this.filterService.addRxJsResource(this.rxjs),this.sortService.addRxJsResource(this.rxjs),this.paginationService.addRxJsResource(this.rxjs),this.containerService.registerInstance("RxJsResource",this.rxjs)}renderPagination(e=!0){this.gridOptions?.enablePagination&&!this._isPaginationInitialized&&e?(this.slickPagination=new B1e(this.paginationService,this._eventPubSubService,this.sharedService,this.translaterService),this.slickPagination.renderPagination(this.gridContainerElement),this._isPaginationInitialized=!0):e||(this.slickPagination&&this.slickPagination.dispose(),this._isPaginationInitialized=!1)}sortTreeDataset(e,a=!1){const u=this._currentDatasetLength;let i,r=[];return this._isDatasetHierarchicalInitialized&&this.datasetHierarchical?(i=this.treeDataService.sortHierarchicalDataset(this.datasetHierarchical),r=i.flat):Array.isArray(e)&&e.length>0&&(this.gridOptions?.treeDataOptions?.initialSort?(i=this.treeDataService.convertFlatParentChildToTreeDatasetAndSort(e,this._columnDefinitions,this.gridOptions),this.sharedService.hierarchicalDataset=i.hierarchical,r=i.flat):(this.sharedService.hierarchicalDataset=this.treeDataService.convertFlatParentChildToTreeDataset(e,this.gridOptions),r=e||[])),e.length>0&&(a||e.length!==u)&&this.filterService.refreshTreeDataFilters(r),r}loadSlickGridEditors(e){return e.some(a=>`${a.id}`.includes("."))&&console.error('[Angular-Slickgrid] Make sure that none of your Column Definition "id" property includes a dot in its name because that will cause some problems with the Editors. For example if your column definition "field" property is "user.firstName" then use "firstName" as the column "id".'),e.map(a=>(a?.editor?.collectionAsync&&this.loadEditorCollectionAsync(a),{...a,editorClass:a.editor?.model}))}updateEditorCollection(e,a){if(this.slickGrid&&e.editor){e.editor.collection=a,e.editor.disabled=!1;const u=this.slickGrid.getCellEditor();u?.disable&&u?.renderDomElement&&(u.destroy(),u.disable(!1),u.renderDomElement(a))}}static#e=this.ctorParameters=()=>[{type:il},{type:wn},{type:dn},{type:U2},{type:Ht},{type:it,decorators:[{type:Ho}]},{type:J2,decorators:[{type:Ho}]},{type:void 0,decorators:[{type:a0,args:["config"]}]},{type:void 0,decorators:[{type:a0,args:["externalService"]}]}];static#a=this.propDecorators={customDataView:[{type:Yo}],gridId:[{type:Yo}],gridOptions:[{type:Yo}],paginationOptions:[{type:Yo}],columnDefinitions:[{type:Yo}],columnDefinitionsChange:[{type:_y}],dataset:[{type:Yo}],datasetHierarchical:[{type:Yo}],slickgridHeader:[{type:TE,args:["slickgridHeader",{static:!0}]}],slickgridFooter:[{type:TE,args:["slickgridFooter",{static:!0}]}]}};var rL;X7=Ye([xa({selector:"angular-slickgrid",template:'
\n \n
\n
\n \n
',providers:[il,wn,J2]}),Nt("design:paramtypes",[il,wn,dn,U2,Ht,it,J2,Object,Object])],X7);let oL=rL=class{static forRoot(e={}){return{ngModule:rL,providers:[{provide:"config",useValue:e},{provide:"externalService",useValue:null},il,U2]}}};oL=rL=Ye([PB({imports:[ws,lc],declarations:[X7],exports:[X7]})],oL);let eF=class{constructor(){this.title="Example 11: Add / Update / Highlight a Datagrid Item",this.subTitle='\n Add / Update / Hightlight an Item from the Datagrid (Wiki docs).\n
    \n
  • Note: this demo is only on the datagrid (client) side, you still need to deal with the backend yourself
  • \n
  • Adding an item, will always be showing as the 1st item in the grid because that is the best visual place to add it
  • \n
  • Add/Update an item requires a valid Slickgrid Selection Model, you have 2 choices to deal with this:
  • \n
    • You can enable "enableCheckboxSelector" or "enableRowSelection" to True
    \n
  • Click on any of the buttons below to test this out
  • \n
  • You can change the highlighted color & animation by changing the SASS Variables:
  • \n
      \n
    • "$row-highlight-background-color" or "$row-highlight-fade-animation"
    • \n
    \n
  • You can also add CSS class(es) on the fly (or on page load) on rows with certain criteria, (e.g. click on last button)\n
      \n
    • Example, click on button "Highlight Rows with Duration over 50" to see row styling changing. Wiki doc
    • \n
    \n
\n ',this.columnDefinitions=[],this.dataset=this.mockDataset(1e3)}angularGridReady(e){this.angularGrid=e,this.dataView=e.dataView,this.grid=e.slickGrid,this.gridService=e.gridService}ngOnInit(){this.columnDefinitions=[{id:"delete",field:"id",excludeFromHeaderMenu:!0,formatter:G.icon,params:{iconCssClass:"mdi mdi-trash-can pointer"},minWidth:30,maxWidth:30,onCellClick:(e,a)=>{console.log(a),confirm("Are you sure?")&&this.angularGrid.gridService.deleteItemById(a.dataContext.id)}},{id:"title",name:"Title",field:"title",sortable:!0,type:F.string,editor:{model:qe.longText}},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:F.number,editor:{model:qe.text},onCellChange:(e,a)=>{alert("onCellChange directly attached to the column definition"),console.log(a)}},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,type:F.number,editor:{model:qe.integer}},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,type:F.date},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,type:F.date},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:G.checkmarkMaterial,type:F.number,editor:{model:qe.checkbox}}],this.gridOptions={asyncEditorLoading:!1,autoResize:{container:"#demo-container",rightPadding:10},editable:!0,enableColumnPicker:!0,enableCellNavigation:!0,enableRowSelection:!0}}mockDataset(e){const a=[];for(let u=0;u{m.id>u&&(u=m.id)});const i=u+e,r=2e3+Math.floor(10*Math.random()),o=Math.floor(11*Math.random()),d=Math.floor(29*Math.random()),h=Math.round(100*Math.random());return{id:i,title:"Task "+i,duration:Math.round(100*Math.random())+"",percentComplete:h,percentCompleteNumber:h,start:new Date(r,o,d),finish:new Date(r,o+2,d),effortDriven:!0}}highlighFifthRow(){this.scrollGridTop(),this.angularGrid.gridService.highlightRow(4,1500)}changeDurationBackgroundColor(){this.dataView.getItemMetadata=this.updateItemMetadataForDurationOver40(this.dataView.getItemMetadata),this.grid.invalidate(),this.grid.render()}updateItemMetadataForDurationOver40(e){return u=>{const i=this.dataView.getItem(u);let r={cssClasses:""};return"object"==typeof e&&(r=e(u)),r&&i&&i.duration&&+i.duration>40&&(r.cssClasses=(r.cssClasses||"")+" duration-bg"),r}}updateSecondItem(){this.scrollGridTop();const e=this.angularGrid.gridService.getDataItemByRowNumber(1);e.duration=Math.round(100*Math.random()),this.angularGrid.gridService.updateItem(e)}scrollGridBottom(){this.angularGrid.slickGrid.navigateBottom()}scrollGridTop(){this.angularGrid.slickGrid.navigateTop()}static#e=this.ctorParameters=()=>[]};eF=Ye([xa({encapsulation:Tt.None,template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n \n \n
\n \n \n
\n \n \n \n \n \n
\n
\n
\n\n
\n \n \n
\n
',styles:[Ble()]}),Nt("design:paramtypes",[])],eF);var P1e=W(4),N1e=W.n(P1e);let aF=class{constructor(){this.selectedId="",this.onItemChanged=new Gt}onChange(e){this.selectedItem=e,this.onItemChanged.next(e)}focus(){}};aF=Ye([xa({template:'\n \n\t\t\t\n\t\t\t\t{{ item?.name }}\n\t\t\t\n\t\t'})],aF);class I1e{constructor(e){this.args=e,this._subscriptions=[],this.defaultId="",this.grid=e&&e.grid,this.init()}get angularUtilService(){let e=this.gridOptions&&this.gridOptions.params&&this.gridOptions.params.angularUtilService;return(!e||!(e instanceof il))&&(e=this.columnEditor&&this.columnEditor.params&&this.columnEditor.params.angularUtilService),e}get collection(){return this.columnDef?.editor.collection??[]}get columnDef(){return this.args?.column??{}}get columnEditor(){return this.columnDef?.editor??{}}get gridOptions(){return this.grid?.getOptions()??{}}get hasAutoCommitEdit(){return this.gridOptions.autoCommitEdit??!1}get validator(){return this.columnEditor.validator||this.columnDef.validator}init(){if(!(this.columnEditor&&this.columnEditor.params.component&&this.angularUtilService instanceof il))throw new Error("[Angular-Slickgrid] For Editor with Angular Component to work properly, you need to provide the \"AngularUtilService\" via the Editor \"params\" OR the Grid Options \"params\"\n Example: this.columnDefs = [{ id: 'title', field: 'title', editor: { model: CustomEditor, collection: [...], params: { component: MyComponent, angularUtilService: this.angularUtilService }}];\n OR this.columnDefs = [{ id: 'title', field: 'title', editor: { model: CustomEditor, collection: [...] }]; this.gridOptions = { params: { angularUtilService: this.angularUtilService }}");if(this.columnEditor?.params.component){const e=this.angularUtilService.createAngularComponentAppendToDom(this.columnEditor.params.component,this.args.container);this.componentRef=e?.componentRef,Object.assign(this.componentRef.instance,{collection:this.collection}),this._subscriptions.push(this.componentRef.instance.onItemChanged.subscribe(a=>this.save()))}}save(){const e=this.validate();e&&e.valid&&(this.hasAutoCommitEdit?this.args.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges())}cancel(){this.componentRef.instance.selectedId=this.defaultId,this.componentRef.instance.selectedItem=this.defaultItem,this.args?.cancelChanges&&this.args.cancelChanges()}hide(){"function"==typeof this.componentRef?.instance.hide&&this.componentRef.instance.hide()}show(){"function"==typeof this.componentRef?.instance.show&&this.componentRef.instance.show()}destroy(){this.componentRef?.destroy&&this.componentRef.destroy(),kc(this._subscriptions)}focus(){"function"==typeof this.componentRef?.instance.focus&&this.componentRef.instance.focus()}applyValue(e,a){e[this.columnDef.field]=a}getValue(){return this.componentRef.instance.selectedId}loadValue(e){const a=e&&e[this.columnDef.field];this.componentRef.instance.selectedId=a&&a.id||"",this.componentRef.instance.selectedItem=a&&a}serializeValue(){return this.componentRef.instance.selectedItem}isValueChanged(){return!(""===this.componentRef.instance.selectedId&&(null===this.defaultId||void 0===this.defaultId))&&this.componentRef.instance.selectedId!==this.defaultId}validate(){if(this.validator){const e=this.componentRef.instance.selectedId;return this.validator(e,this.args)}return{valid:!0,msg:null}}}class XG{constructor(){this._shouldTriggerQuery=!0,this._subscriptions=[],this.searchTerms=[],this.operator=re.equal}get angularUtilService(){let e=this.gridOptions?.params?.angularUtilService;return(!e||!(e instanceof il))&&(e=this.columnFilter?.params?.angularUtilService),e}get collection(){return this.columnFilter?.collection||[]}get columnFilter(){return this.columnDef&&this.columnDef.filter||{}}get gridOptions(){return this.grid?.getOptions()??{}}init(e){if(this.grid=e.grid,this.callback=e.callback,this.columnDef=e.columnDef,this.searchTerms=(e.hasOwnProperty("searchTerms")?e.searchTerms:[])||[],!(this.columnFilter&&this.columnFilter.params.component&&this.angularUtilService instanceof il))throw new Error("[Angular-Slickgrid] For Filter with Angular Component to work properly, you need to provide the \"AngularUtilService\" via the Filter \"params\" OR the Grid Options \"params\"\n Example: this.columnDefs = [{ id: 'title', field: 'title', filter: { model: CustomFilter, collection: [...], params: { component: MyComponent, angularUtilService: this.angularUtilService }}];\n OR this.columnDefs = [{ id: 'title', field: 'title', filter: { model: CustomFilter, collection: [...] }]; this.gridOptions = { params: { angularUtilService: this.angularUtilService }}");if(this.columnFilter?.params.component){const a=this.grid.getHeaderRowColumn(this.columnDef.id);if(a){a.innerHTML="";const u=this.angularUtilService.createAngularComponentAppendToDom(this.columnFilter.params.component,a,{collection:this.collection});this.componentRef=u.componentRef,this._subscriptions.push(u.componentRef.instance.onItemChanged.subscribe(i=>{this.callback(void 0,{columnDef:this.columnDef,operator:this.operator,searchTerms:[i.id],shouldTriggerQuery:this._shouldTriggerQuery}),this._shouldTriggerQuery=!0}))}}}clear(e=!0){this._shouldTriggerQuery=e,this.componentRef?.instance?.hasOwnProperty("selectedId")&&(this.componentRef.instance.selectedId=0)}destroy(){this.componentRef?.destroy&&this.componentRef.destroy(),kc(this._subscriptions)}setValues(e){this.componentRef?.instance?.hasOwnProperty("selectedId")&&(this.componentRef.instance.selectedId=e)}}let tF=class{};tF=Ye([xa({template:"{{item?.assignee?.name}}"})],tF);let Z2=class{constructor(){this.selectedId="",this.onItemChanged=new Gt}onChange(e){this.selectedItem=e,this.onItemChanged.next(e)}};Z2=Ye([xa({template:'\n \n\t\t\t\n\t\t\t\t{{ item?.name }}\n\t\t\t\n\t\t'})],Z2);let uF=class{sayHello(e){alert(`Hello ${e}`)}};uF=Ye([xa({template:''})],uF);let iF=class{constructor(e,a){this.angularUtilService=e,this.translate=a,this.title="Example 22: Use of Angular Components",this.subTitle='\n

Filters, Editors, AsyncPostRender with Angular Components

\n Grid with usage of Angular Components as Editor & AsyncPostRender (similar to Formatter).\n
    \n
  • Support of Angular Component as Custom Editor (click on any "Assignee" name cell)
  • \n
      \n
    • That column uses ng-select as a custom editor as an Angular Component\n
    • Increased Grid Options "rowHeight" & "headerRowHeight" to 45 so that the "ng-select" fits in the cell. Ideally it would be better to override the ng-select css styling to change it\'s max height
    • \n
    \n
  • Support of Angular Component as Custom Filter ("Assignee" columns), which also uses "ng-select"\n
  • The 2nd "Assignee" column (showing in bold text) uses "asyncPostRender" with an Angular Component
  • \n
      \n
    • Why can\'t we use Angular Component as Customer Formatter and why do I see a slight delay in loading the data?
    • \n
    • It\'s totally normal since SlickGrid Formatters only accept strings (synchronously),\n so we cannot use that (Angular requires at least 1 full cycle to render the element), so we are left with SlickGrid "asyncPostRender" and\n it works but as the name suggest it\'s async users might see noticeable delay in loading the data\n
    • \n
    \n
  • The 2nd "Title" showing an interactive component, which is not destroyed after first rendering but stays active. Click on the button to see the title alerted
  • \n
\n ',this._commandQueue=[],this.columnDefinitions=[],this.isAutoEdit=!0,this.selectedLanguage="en",this.assignees=[{id:"",name:""},{id:"1",name:"John"},{id:"2",name:"Pierre"},{id:"3",name:"Paul"}]}ngOnInit(){this.prepareGrid()}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid}prepareGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",minWidth:100,filterable:!0,sortable:!0,type:F.string,editor:{model:qe.longText,minLength:5,maxLength:255},onCellChange:(e,a)=>{console.log(a),this.alertWarning=`Updated Title: ${a.dataContext.title}`}},{id:"title2",name:"Title with Angular Component",field:"title",minWidth:100,sortable:!0,type:F.string,formatter:()=>"...",asyncPostRender:this.renderInteractiveAngularComponent.bind(this),params:{component:uF,angularUtilService:this.angularUtilService}},{id:"assignee",name:"Assignee",field:"assignee",minWidth:100,filterable:!0,sortable:!0,filter:{model:XG,collection:this.assignees,params:{component:Z2}},queryFieldFilter:"assignee.id",queryFieldSorter:"assignee.name",formatter:G.complexObject,params:{complexFieldLabel:"assignee.name"},exportWithFormatter:!0,editor:{model:I1e,collection:this.assignees,params:{component:aF}},onCellChange:(e,a)=>{console.log(a),this.alertWarning=`Updated Title: ${a.dataContext.title}`}},{id:"assignee2",name:"Assignee with Angular Component",field:"assignee",minWidth:125,filterable:!0,sortable:!0,filter:{model:XG,collection:this.assignees,params:{component:Z2}},queryFieldFilter:"assignee.id",queryFieldSorter:"assignee.name",formatter:()=>"...",asyncPostRender:this.renderAngularComponent.bind(this),params:{component:tF,angularUtilService:this.angularUtilService,complexFieldLabel:"assignee.name"},exportCustomFormatter:G.complexObject},{id:"complete",name:"% Complete",field:"percentComplete",minWidth:100,filterable:!0,formatter:G.multiple,type:F.number,editor:{model:qe.singleSelect,enableRenderHtml:!0,collection:Array.from(Array(101).keys()).map(e=>({value:e,label:e,symbol:''})),customStructure:{value:"value",label:"label",labelSuffix:"symbol"},editorOptions:{maxHeight:400}},filter:{model:ie.slider,operator:">=",filterOptions:{hideSliderNumber:!1}},params:{formatters:[G.collectionEditor,G.percentCompleteBar]}},{id:"start",name:"Start",field:"start",minWidth:100,filterable:!0,filter:{model:ie.compoundDate},formatter:G.dateIso,exportWithFormatter:!0,sortable:!0,type:F.date,editor:{model:qe.date}},{id:"finish",name:"Finish",field:"finish",minWidth:100,filterable:!0,sortable:!0,filter:{model:ie.compoundDate},formatter:G.dateIso,exportWithFormatter:!0,type:F.date,editor:{model:qe.date}},{id:"action",name:"Action",field:"id",maxWidth:100,formatter:()=>'
Action
',cellMenu:{commandTitle:"Commands",commandItems:[{command:"help",title:"Help",iconCssClass:"mdi mdi-help-circle text-info",positionOrder:66,action:()=>alert("Please Help!")},{command:"delete-row",title:"Delete Row",positionOrder:64,iconCssClass:"mdi mdi-close color-danger",cssClass:"red",textCssClass:"text-italic color-danger-light",action:(e,a)=>this.angularGrid.gridService.deleteItemById(a.dataContext.id)}]}}],this.gridOptions={asyncEditorLoading:!1,autoEdit:this.isAutoEdit,autoCommitEdit:!1,autoResize:{container:"#demo-container",rightPadding:10},headerRowHeight:45,rowHeight:45,editable:!0,enableCellMenu:!0,enableCellNavigation:!0,enableColumnPicker:!0,enableExcelCopyBuffer:!0,enableFiltering:!0,enableAsyncPostRender:!0,asyncPostRenderDelay:0,editCommandHandler:(e,a,u)=>{this._commandQueue.push(u),u.execute()},i18n:this.translate,params:{angularUtilService:this.angularUtilService}},this.dataset=this.mockData(100)}mockData(e,a=0){const u=[];for(let i=a;i[{type:il},{type:it}]};iF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n \n \n \n \n \n
\n \n \n \n \n \n \n
\n
\n\n\n
\n
\n Updated Item: {{updatedObject | json}}\n
\n
\n Updated Item: {{alertWarning}}\n
\n
\n\n
\n \n \n
\n
',encapsulation:Tt.None,providers:[il],styles:[N1e()]}),Nt("design:paramtypes",[il,it])],iF);var H1e=W(656),V1e=W.n(H1e);let nF=class{constructor(){this.title="Example 23: Grid AutoHeight",this.subTitle='\n The SlickGrid option "autoHeight" can be used if you wish to keep the full height of the grid without any scrolling\n
    \n
  • You define a fixed grid width via "gridWidth" in the View
  • \n
  • You can still use the "autoResize" for the width to be resized automatically (the height will never change in this case)
  • \n
  • This dataset has 25 rows, if you scroll down the page you can see the entire set is shown without any grid scrolling (though you might have browser scrolling)
  • \n
\n ',this.columnDefinitions=[],this.operatorList=["=","<","<=",">",">=","<>","StartsWith","EndsWith"],this.selectedOperator="=",this.searchValue=""}ngOnInit(){this.prepareGrid()}angularGridReady(e){this.angularGrid=e}prepareGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:F.string},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:F.number},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,sortable:!0,type:F.number},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,type:F.date},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,type:F.date},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:G.checkmarkMaterial,sortable:!0,type:F.number}],this.selectedColumn=this.columnDefinitions[0],this.gridOptions={autoHeight:!0,autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!0,showHeaderRow:!1,alwaysShowVerticalScroll:!1,enableColumnPicker:!0,enableCellNavigation:!0,enableRowSelection:!0};const e=[];for(let a=0;a<25;a++){const u=2e3+Math.floor(10*Math.random()),i=Math.floor(11*Math.random()),r=Math.floor(29*Math.random()),o=Math.round(100*Math.random());e[a]={id:a,title:"Task "+a,duration:Math.round(100*Math.random())+"",percentComplete:o,percentCompleteNumber:o,start:new Date(u,i,r),finish:new Date(u,i+1,r),effortDriven:a%5==0}}this.dataset=e}clearGridSearchInput(){this.searchValue="",this.updateFilter()}updateFilter(){this.angularGrid.filterService.updateSingleFilter({columnId:`${this.selectedColumn.id||""}`,operator:this.selectedOperator,searchTerms:[this.searchValue||""]})}};nF=Ye([xa({encapsulation:Tt.None,template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n \n
\n
\n \n
\n
\n \n
\n\n
\n
\n \n \n
\n
\n
\n\n
\n\n \n \n
',styles:[V1e()]})],nF);let rF=class{constructor(){this._darkModeGrid1=!1,this.title="Example 1: Basic Grids",this.subTitle='\n Basic Grids with fixed sizes (800 x 225) set by "gridHeight" & "gridWidth"\n \n ',this.columnDefinitions1=[],this.columnDefinitions2=[]}ngOnInit(){this.prepareGrid()}ngOnDestroy(){document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"}angularGridReady1(e){this.angularGrid1=e}isBrowserDarkModeEnabled(){return window.matchMedia?.("(prefers-color-scheme: dark)").matches??!1}prepareGrid(){this.columnDefinitions1=[{id:"title",name:"Title",field:"title",sortable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0},{id:"%",name:"% Complete",field:"percentComplete",sortable:!0},{id:"start",name:"Start",field:"start",formatter:G.dateIso},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",sortable:!0}],this._darkModeGrid1=this.isBrowserDarkModeEnabled(),this.gridOptions1={darkMode:this._darkModeGrid1,enableAutoResize:!1,enableSorting:!0,gridHeight:225,gridWidth:800},this.columnDefinitions2=this.columnDefinitions1,this.gridOptions2={...this.gridOptions1,darkMode:!1,enablePagination:!0,pagination:{pageSizes:[5,10,20,25,50],pageSize:5}},this.dataset1=this.mockData(995),this.dataset2=this.mockData(995)}mockData(e){const a=[];for(let u=0;u\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n

\n
\n Grid 1\n \n
\n

\n\n
\n \n \n
\n\n
\n\n

Grid 2 (with local Pagination)

\n
\n \n \n
\n'})],rF);var G1e=W(55),K1e=W.n(G1e);const oF=["title","data-slick-tooltip"],z3="[title], [data-slick-tooltip]";class lF{constructor(){this.name="CustomTooltip",this._cellType="slick-cell",this._rxjs=null,this._sharedService=null,this._mousePosition={x:0,y:0},this._hasMultipleTooltips=!1,this._defaultOptions={bodyClassName:"tooltip-body",className:"",offsetArrow:3,offsetLeft:0,offsetRight:0,offsetTopBottom:4,hideArrow:!1,regularTooltipWhiteSpace:"pre-line",whiteSpace:"normal"},this._eventHandler=new Ot}get addonOptions(){return this._addonOptions}get cancellablePromise(){return this._cancellablePromise}get cellAddonOptions(){return this._cellAddonOptions}get bodyClassName(){return this._cellAddonOptions?.bodyClassName??"tooltip-body"}get className(){let e="slick-custom-tooltip";return this._addonOptions?.className&&(e+=` ${this._addonOptions.className}`),e}get dataView(){return this._grid.getData()||{}}get gridOptions(){return this._grid?.getOptions()||{}}get gridUid(){return this._grid?.getUID()||""}get gridUidSelector(){return this.gridUid?`.${this.gridUid}`:""}get tooltipElm(){return this._tooltipElm}addRxJsResource(e){this._rxjs=e}init(e,a){this._grid=e,this._rxjs=a.get("RxJsFacade"),this._sharedService=a.get("SharedService"),this._addonOptions={...this._defaultOptions,...this._sharedService?.gridOptions?.customTooltip},this._eventHandler.subscribe(e.onMouseEnter,this.handleOnMouseOver.bind(this)).subscribe(e.onHeaderMouseOver,(u,i)=>this.handleOnHeaderMouseOverByType(u,i,"slick-header-column")).subscribe(e.onHeaderRowMouseOver,(u,i)=>this.handleOnHeaderMouseOverByType(u,i,"slick-headerrow-column")).subscribe(e.onMouseLeave,this.hideTooltip.bind(this)).subscribe(e.onHeaderMouseOut,this.hideTooltip.bind(this)).subscribe(e.onHeaderRowMouseOut,this.hideTooltip.bind(this))}dispose(){this.hideTooltip(),this._cancellablePromise=void 0,this._eventHandler.unsubscribeAll()}hideTooltip(){this._cancellablePromise?.cancel(),this._observable$?.unsubscribe();const e=Vt(this.className).join(".");document.body.querySelector(`.${e}${this.gridUidSelector}`)?.remove()}getOptions(){return this._addonOptions}setOptions(e){this._addonOptions={...this._addonOptions,...e}}asyncProcessCallback(e,a,u,i,r){this.hideTooltip();const o={...r,[this.addonOptions?.asyncParamsPropName??"__params"]:e};this._cellAddonOptions?.useRegularTooltip?this.renderRegularTooltip(this._cellAddonOptions.asyncPostFormatter,a,u,i,o):this.renderTooltipFormatter(this._cellAddonOptions.asyncPostFormatter,a,u,i,o)}handleOnHeaderMouseOverByType(e,a,u){this._cellType=u,this._mousePosition={x:e.clientX||0,y:e.clientY||0},this._mouseTarget=document.elementFromPoint(e.clientX||0,e.clientY||0)?.closest(z3),this.hideTooltip();const i={row:-1,cell:this._grid.getColumns().findIndex(h=>(a?.column?.id??"")===h.id)},r=a.column,o={},d="slick-headerrow-column"===u;if((a=a||{}).cell=i.cell,a.row=i.row,a.columnDef=r,a.dataContext=o,a.grid=this._grid,a.type=d?"header-row":"header",this._cellAddonOptions={...this._addonOptions,...r?.customTooltip},!r?.disableTooltip&&("function"!=typeof this._cellAddonOptions?.usabilityOverride||this._cellAddonOptions.usabilityOverride(a))&&r&&e.target){this._cellNodeElm=e.target.closest(`.${u}`);const h=d?this._cellAddonOptions.headerRowFormatter:this._cellAddonOptions.headerFormatter;if(this._cellAddonOptions?.useRegularTooltip||!h){const m=d?this._cellAddonOptions?.useRegularTooltip?null:h:r.name;this.renderRegularTooltip(m,i,null,r,o)}else this._cellNodeElm&&"function"==typeof h&&this.renderTooltipFormatter(h,i,null,r,o)}}handleOnMouseOver(e){var a=this;return Au(function*(){if(a._cellType="slick-cell",a._mousePosition={x:e.clientX||0,y:e.clientY||0},a._mouseTarget=document.elementFromPoint(e.clientX||0,e.clientY||0)?.closest(z3),a.hideTooltip(),e&&a._grid){const u=e?.target?.closest(".slick-cell")?.className,i=u&&/l\d+/.exec(u||"")?a._grid.getCellFromEvent(e):null;if(i){const r=a.dataView?a.dataView.getItem(i.row):a._grid.getDataItem(i.row),o=a._grid.getColumns()[i.cell];if(a._cellNodeElm=a._grid.getCellNode(i.row,i.cell),r&&o){if(a._cellAddonOptions={...a._addonOptions,...o?.customTooltip},o?.disableTooltip||"function"==typeof a._cellAddonOptions?.usabilityOverride&&!a._cellAddonOptions.usabilityOverride({cell:i.cell,row:i.row,dataContext:r,column:o,grid:a._grid,type:"cell"}))return;const d=r.hasOwnProperty(o.field)?r[o.field]:null,h=a._grid.getEditorLock().isActive()?null:d;if(a._cellAddonOptions.useRegularTooltip&&!a._cellAddonOptions?.asyncProcess||!a._cellAddonOptions?.formatter)a.renderRegularTooltip(o.formatter,i,h,o,r);else if("function"==typeof a._cellAddonOptions?.formatter&&a.renderTooltipFormatter(a._cellAddonOptions.formatter,i,h,o,r),"function"==typeof a._cellAddonOptions?.asyncProcess){const m=a._cellAddonOptions.asyncProcess(i.row,i.cell,d,o,r,a._grid);if(a._cellAddonOptions.asyncPostFormatter||console.error('[Slickgrid-Universal] when using "asyncProcess" with Custom Tooltip, you must also provide an "asyncPostFormatter" formatter.'),m instanceof Promise)a._cancellablePromise=gj(m),a._cancellablePromise.promise.then(E=>a.asyncProcessCallback(E,i,d,o,r)).catch(E=>{E instanceof g2||console.error(E)});else if(a._rxjs?.isObservable(m)){const E=a._rxjs;a._observable$=m.pipe(E.switchMap(v=>E.of(v))).subscribe(v=>a.asyncProcessCallback(v,i,d,o,r),v=>console.error(v))}}}}}})()}parseFormatterAndSanitize(e,a,u,i,r){if("function"==typeof e){const o=e(a.row,a.cell,u,i,r,this._grid),d=y3(o)?o:o.html||o.text;return this._grid.sanitizeHtmlString((d instanceof HTMLElement?d.textContent:d)||"")}return"string"==typeof e?this._grid.sanitizeHtmlString(e):""}renderRegularTooltip(e,a,u,i,r){const o=document.createElement("div");let d;this._grid.applyHtmlCode(o,this.parseFormatterAndSanitize(e,a,u,i,r)),this._hasMultipleTooltips=(this._cellNodeElm?.querySelectorAll(z3).length||0)>1;const h=this._cellAddonOptions?.useRegularTooltipFromCellTextOnly||!this._mouseTarget?this._cellNodeElm:this._mouseTarget;let m=i?.toolTip??"";m||("slick-cell"===this._cellType&&h&&h.clientWidththis._cellAddonOptions?.tooltipTextMaxLength&&(m=m.substring(0,this._cellAddonOptions.tooltipTextMaxLength-3)+"..."),d=h):(this._cellAddonOptions?.useRegularTooltipFromFormatterOnly?d=o.querySelector(z3):(d=C2(h,oF)?h:o.querySelector(z3),(!d||!C2(d,oF))&&h&&(d=h.querySelector(z3))),"none"===d?.style.display||this._hasMultipleTooltips&&(!h||h===this._cellNodeElm)?m="":(!m||"function"==typeof e&&this._cellAddonOptions?.useRegularTooltipFromFormatterOnly)&&(m=C2(d,oF)||""))),""!==m&&this.renderTooltipFormatter(e,a,u,i,r,m,d),this.swapAndClearTitleAttribute(d,m)}renderTooltipFormatter(e,a,u,i,r,o,d){if(this._tooltipElm=T("div",{className:this.className}),this._tooltipBodyElm=T("div",{className:this.bodyClassName}),this._tooltipElm.classList.add(this.gridUid),this._tooltipElm.classList.add("l"+a.cell),this._tooltipElm.classList.add("r"+a.cell),this.tooltipElm?.appendChild(this._tooltipBodyElm),null==u){const E=this._cellNodeElm?.querySelector(z3);u=C2(E,oF)||u}let h=o||this.parseFormatterAndSanitize(e,a,u,i,r)||"";h=this._cellAddonOptions?.tooltipTextMaxLength&&h.length>this._cellAddonOptions.tooltipTextMaxLength?h.substring(0,this._cellAddonOptions.tooltipTextMaxLength-3)+"...":h;let m="";!o||this._cellAddonOptions?.renderRegularTooltipAsHtml?(m=this._grid.sanitizeHtmlString(h),this._grid.applyHtmlCode(this._tooltipBodyElm,m),this._tooltipBodyElm.style.whiteSpace=this._cellAddonOptions?.whiteSpace??this._defaultOptions.whiteSpace):(m=h||"",this._tooltipBodyElm.textContent=m,this._tooltipBodyElm.style.whiteSpace=this._cellAddonOptions?.regularTooltipWhiteSpace??this._defaultOptions.regularTooltipWhiteSpace),this._cellAddonOptions?.maxHeight&&(this._tooltipElm.style.maxHeight=`${this._cellAddonOptions.maxHeight}px`),this._cellAddonOptions?.maxWidth&&(this._tooltipElm.style.maxWidth=`${this._cellAddonOptions.maxWidth}px`),m.toString()&&(document.body.appendChild(this._tooltipElm),this.reposition(a),this._cellAddonOptions?.hideArrow||this._tooltipElm.classList.add("tooltip-arrow"),this.swapAndClearTitleAttribute(d,h))}reposition(e){if(this._tooltipElm){this._cellNodeElm=this._cellNodeElm||this._grid.getCellNode(e.row,e.cell);const a=Du(this._cellNodeElm)||{top:0,left:0},u=this._cellNodeElm.offsetWidth,i=this._tooltipElm.getBoundingClientRect().height,r=this._tooltipElm.getBoundingClientRect().width,o=document.body.offsetWidth||window.innerWidth;let d=(a.top||0)-this._tooltipElm.offsetHeight-(this._cellAddonOptions?.offsetTopBottom??0),h=(a.left||0)-(this._cellAddonOptions?.offsetRight??0);const m=this._cellAddonOptions?.position??"auto";let E="";if("center"===m?(h+=u/2-r/2+(this._cellAddonOptions?.offsetRight??0),E="top-center",this._tooltipElm.classList.remove("arrow-left-align","arrow-right-align"),this._tooltipElm.classList.add("arrow-center-align")):"right-align"===m||("auto"===m||"left-align"!==m)&&h+r>o?(E="right",h-=r-u-(this._cellAddonOptions?.offsetLeft??0),this._tooltipElm.classList.remove("arrow-center-align","arrow-left-align"),this._tooltipElm.classList.add("arrow-right-align")):(E="left",this._tooltipElm.classList.remove("arrow-center-align","arrow-right-align"),this._tooltipElm.classList.add("arrow-left-align")),"bottom"===m||("auto"===m||"top"!==m)&&i>f2(this._cellNodeElm).top?(d=(a.top||0)+(this.gridOptions.rowHeight??0)+(this._cellAddonOptions?.offsetTopBottom??0),E=`bottom-${E}`,this._tooltipElm.classList.remove("arrow-down"),this._tooltipElm.classList.add("arrow-up")):(E=`top-${E}`,this._tooltipElm.classList.remove("arrow-up"),this._tooltipElm.classList.add("arrow-down")),this._tooltipElm&&(this._hasMultipleTooltips||this.cellAddonOptions?.repositionByMouseOverTarget)){const v=Du(this._mouseTarget);E.includes("left")||"top-center"===E?h=v.left-(this._addonOptions?.offsetArrow??3):E.includes("right")&&(h=v.left-r+(this._mouseTarget?.offsetWidth??0)+(this._addonOptions?.offsetArrow??3))}this._tooltipElm.style.top=`${d}px`,this._tooltipElm.style.left=`${h}px`}}swapAndClearTitleAttribute(e,a){let u;e&&(u=this._cellNodeElm&&(this._cellNodeElm.hasAttribute("title")&&this._cellNodeElm.getAttribute("title")?this._cellNodeElm:this._cellNodeElm?.querySelector("[title]")));const i=e||this._cellNodeElm&&(this._cellNodeElm.hasAttribute("title")&&this._cellNodeElm.getAttribute("title")?this._cellNodeElm:this._cellNodeElm?.querySelector("[title]"));i&&(i.setAttribute("data-slick-tooltip",a||""),i.hasAttribute("title")&&i.setAttribute("title",""),u?.hasAttribute("title")&&u.setAttribute("title",""))}}let sF=class{constructor(e){this.translate=e,this.subscriptions=[],this.selectedLanguage="",this.selectedLanguageFile="",this.fetchResult="",this.statusClass="alert alert-light",this.statusStyle="display: none";this.translate.use("en"),this.selectedLanguage="en"}ngOnInit(){this.dataset=this.getData(20),this.defineGrid()}angularGridReady(e){this.angularGrid=e}defineGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,minWidth:100,filterable:!0,editor:{model:qe.text}},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,minWidth:100,filterable:!0,type:F.number,editor:{model:qe.text}},{id:"%",name:"% Complete",field:"percentComplete",sortable:!0,minWidth:100,filterable:!0,type:F.number,editor:{model:qe.text}},{id:"start",name:"Start",field:"start",formatter:G.dateIso,exportWithFormatter:!0,filterable:!0,editor:{model:qe.date}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,exportWithFormatter:!0,filterable:!0,editor:{model:qe.date}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",sortable:!0,minWidth:100,filterable:!0,type:"boolean",editor:{model:qe.checkbox}}],this.gridOptions={enableAutoResize:!1,gridHeight:350,gridWidth:800,rowHeight:33,enableExcelCopyBuffer:!0,excelCopyBufferOptions:{onBeforePasteCell:(e,a)=>a.cell>0},autoEdit:!1,editable:!0,enableCellNavigation:!0,enableRowBasedEdit:!0,enableTranslate:!0,i18n:this.translate,rowBasedEditOptions:{allowMultipleRows:!1,onBeforeEditMode:()=>this.clearStatus(),onBeforeRowUpdated:e=>{const{effortDriven:a,percentComplete:u,finish:i,start:r,duration:o,title:d}=e.dataContext;return o>40?(alert("Sorry, 40 is the maximum allowed duration."),Promise.resolve(!1)):function Z1e(t,e){return new Promise(a=>{setTimeout(()=>{a(new Response(JSON.stringify({status:200,message:"success"})))},window.Cypress?10:500)})}(0,JSON.stringify({effortDriven:a,percentComplete:u,finish:i,start:r,duration:o,title:d})).catch(h=>(console.error(h),!1)).then(h=>!1===h?(this.statusClass="alert alert-danger",!1):"object"==typeof h?h.json():void 0).then(h=>(this.statusStyle="display: block",this.statusClass="alert alert-success",this.fetchResult=h.message,!0))},actionColumnConfig:{width:100,minWidth:100,maxWidth:100},actionButtons:{editButtonClassName:"button-style margin-auto btn-icon px-2 me-1",iconEditButtonClassName:"mdi mdi-pencil",cancelButtonClassName:"button-style btn-icon px-2",cancelButtonTitle:"Cancel row",cancelButtonTitleKey:"RBE_BTN_CANCEL",iconCancelButtonClassName:"mdi mdi-undo text-danger",cancelButtonPrompt:"Are you sure you want to cancel your changes?",updateButtonClassName:"button-style btn-icon px-2 me-1",updateButtonTitle:"Update row",updateButtonTitleKey:"RBE_BTN_UPDATE",iconUpdateButtonClassName:"mdi mdi-check text-success",updateButtonPrompt:"Save changes?",deleteButtonClassName:"button-style btn-icon px-2",deleteButtonTitle:"Delete row",iconDeleteButtonClassName:"mdi mdi-trash-can text-danger",deleteButtonPrompt:"Are you sure you want to delete this row?"}},externalResources:[new lF]}}getData(e){const a=[];for(let u=0;u{this.selectedLanguage=e}))}static#e=this.ctorParameters=()=>[{type:it}]};sF=Ye([xa({encapsulation:Tt.None,template:'

\n Example 35: Row Based Editing\n \n \n code\n \n \n

\n\n
\n
    \n
  • \n The Row Based Edit plugin allows you to edit either a single or multiple\n specific rows at a time, while disabling the rest of the grid rows.\n
  • \n
  • \n Editedable rows, as well as modified cells are highlighted with a\n different color, which you can customize using css variables (see\n \n grid-base-row-editing.component.scss )\n
  • \n
  • \n Modifications are kept track of and if the cancel button is pressed, all\n modifications are rolled back.\n
  • \n
  • \n If the save button is pressed, a custom "onBeforeRowUpdated" callback is called, which you can use to save the data with your backend.
    \n The callback needs to return a Promise<boolean> and if the promise resolves to true, then the row will be updated, otherwise it will be cancelled and stays in edit mode.\n You can try out the later by defining a Duration value larger than 40.\n
    \n NOTE: You can also combine this with e.g. Batch Editing like shown in Example 30\n
  • \n
  • \n This example additionally uses the ExcelCopyBuffer Plugin, which you can see also in Slickgrid-Universal\n example 19.\n The example defines a rule that pastes in the first column are prohibited. In combination with the Row Based Editing Plugin though, this rule gets enhanced with the fact\n that only the edited rows are allowed to be pasted into, while still respecting the original rule.\n
  • \n
\n
\n\n
\n
\n
\n \n Toggle Single/Multi Row Edit\n \n \n Locale: {{selectedLanguage + \'.json\'}}\n
\n\n
\n Status: \n \n
\n
\n
\n\n\n\n',styles:[K1e()]}),Nt("design:paramtypes",[it])],sF);var aK={},Jt=Uint8Array,eo=Uint16Array,$2=Int32Array,Pv=new Jt([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Nv=new Jt([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),q2=new Jt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),tK=function(t,e){for(var a=new eo(31),u=0;u<31;++u)a[u]=e+=1<>1|(21845&Lu)<<1;Vh=(61680&(Vh=(52428&Vh)>>2|(13107&Vh)<<2))>>4|(3855&Vh)<<4,Y2[Lu]=((65280&Vh)>>8|(255&Vh)<<8)>>1}var Zs=function(t,e,a){for(var u=t.length,i=0,r=new eo(e);i>h]=m}else for(d=new eo(u),i=0;i>15-t[i]);return d},jh=new Jt(288);for(Lu=0;Lu<144;++Lu)jh[Lu]=8;for(Lu=144;Lu<256;++Lu)jh[Lu]=9;for(Lu=256;Lu<280;++Lu)jh[Lu]=7;for(Lu=280;Lu<288;++Lu)jh[Lu]=8;var Q2=new Jt(32);for(Lu=0;Lu<32;++Lu)Q2[Lu]=5;var rK=Zs(jh,9,0),lK=Zs(Q2,5,0),X2=function(t){return(t+7)/8|0},Oh=function(t,e,a){return(null==e||e<0)&&(e=0),(null==a||a>t.length)&&(a=t.length),new Jt(t.subarray(e,a))},dK=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],yt=function(t,e,a){var u=new Error(e||dK[t]);if(u.code=t,Error.captureStackTrace&&Error.captureStackTrace(u,yt),!a)throw u;return u},$s=function(t,e,a){a<<=7&e;var u=e/8|0;t[u]|=a,t[u+1]|=a>>8},Iv=function(t,e,a){a<<=7&e;var u=e/8|0;t[u]|=a,t[u+1]|=a>>8,t[u+2]|=a>>16},pF=function(t,e){for(var a=[],u=0;uk&&(k=r[u].s);var x=new eo(k+1),f=EF(a[E-1],x,0);if(f>e){u=0;var C=0,A=f-e,w=1<e))break;C+=w-(1<>=A;C>0;){var L=r[u].s;x[L]=0&&C;--u){var M=r[u].s;x[M]==e&&(--x[M],++C)}f=e}return{t:new Jt(x),l:f}},EF=function(t,e,a){return-1==t.s?Math.max(EF(t.l,e,a+1),EF(t.r,e,a+1)):e[t.s]=a},dL=function(t){for(var e=t.length;e&&!t[--e];);for(var a=new eo(++e),u=0,i=t[0],r=1,o=function(h){a[u++]=h},d=1;d<=e;++d)if(t[d]==i&&d!=e)++r;else{if(!i&&r>2){for(;r>138;r-=138)o(32754);r>2&&(o(r>10?r-11<<5|28690:r-3<<5|12305),r=0)}else if(r>3){for(o(i),--r;r>6;r-=6)o(8304);r>2&&(o(r-3<<5|8208),r=0)}for(;r--;)o(i);r=1,i=t[d]}return{c:a.subarray(0,u),n:e}},Rv=function(t,e){for(var a=0,u=0;u>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var r=0;r4&&!Ne[q2[Se-1]];--Se);var Oa,Pe,Ra,au,ga=m+5<<3,_t=Rv(i,jh)+Rv(r,Q2)+o,ht=Rv(i,k)+Rv(r,C)+o+14+3*Se+Rv(oe,Ne)+2*oe[16]+3*oe[17]+7*oe[18];if(h>=0&&ga<=_t&&ga<=ht)return cL(e,E,t.subarray(h,h+m));if($s(e,E,1+(ht<_t)),E+=2,ht<_t){Oa=Zs(k,x,0),Pe=k,Ra=Zs(C,A,0),au=C;var ol=Zs(Ne,Ie,0);$s(e,E,L-257),$s(e,E+5,$-1),$s(e,E+10,Se-4),E+=14;for(ee=0;ee15&&($s(e,E,yr[ee]>>5&127),E+=yr[ee]>>12)}}}else Oa=rK,Pe=jh,Ra=lK,au=Q2;for(ee=0;ee255){Iv(e,E,Oa[(mn=Tu>>18&31)+257]),E+=Pe[mn+257],mn>7&&($s(e,E,Tu>>23&31),E+=Pv[mn]);var ll=31&Tu;Iv(e,E,Ra[ll]),E+=au[ll],ll>3&&(Iv(e,E,Tu>>5&8191),E+=Nv[ll])}else Iv(e,E,Oa[Tu]),E+=Pe[Tu]}return Iv(e,E,Oa[256]),E+Pe[256]},cK=new $2([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),mL=new Jt(0),hK=function(t,e,a,u,i,r){var o=r.z||t.length,d=new Jt(u+o+5*(1+Math.ceil(o/7e3))+i),h=d.subarray(u,d.length-i),m=r.l,E=7&(r.r||0);if(e){E&&(h[0]=r.r>>3);for(var v=cK[e-1],k=v>>13,x=8191&v,f=(1<7e3||Ne>24576)&&(Oa>423||!m)){E=hL(t,h,0,M,j,$,ee,Ne,Se,ne-Se,E),Ne=oe=ee=0,Se=ne;for(var Pe=0;Pe<286;++Pe)j[Pe]=0;for(Pe=0;Pe<30;++Pe)$[Pe]=0}var Ra=2,au=0,ol=x,Zi=_t-ht&32767;if(Oa>2&&ga==L(ne-Zi))for(var Zn=Math.min(k,Oa)-1,yr=Math.min(32767,ne),mn=Math.min(258,Oa);Zi<=yr&&--ol&&_t!=ht;){if(t[ne+Ra]==t[ne+Ra-Zi]){for(var Tu=0;TuRa){if(Ra=Tu,au=Zi,Tu>Zn)break;var ll=Math.min(Zi,Tu-2),yc=0;for(Pe=0;Peyc&&(yc=Kv,ht=_c)}}}Zi+=(_t=ht)-(ht=C[_t])&32767}if(au){M[Ne++]=268435456|dF[Ra]<<18|sL[au];var Ve=31&dF[Ra],$a=31&sL[au];ee+=Pv[Ve]+Nv[$a],++j[257+Ve],++$[$a],Ie=ne+Ra,++oe}else M[Ne++]=t[ne],++j[t[ne]]}}for(ne=Math.max(ne,Ie);ne=o&&(h[E/8|0]=m,ii=o),E=cL(h,E+1,t.subarray(ne,ii))}r.i=o}return Oh(d,0,u+X2(E)+i)},mK=function(){for(var t=new Int32Array(256),e=0;e<256;++e){for(var a=e,u=9;--u;)a=(1&a&&-306674912)^a>>>1;t[e]=a}return t}(),gF=function(){var t=-1;return{p:function(e){for(var a=t,u=0;u>>8;t=a},d:function(){return~t}}},vF=function(t,e,a,u,i){if(!i&&(i={l:1},e.dictionary)){var r=e.dictionary.subarray(-32768),o=new Jt(r.length+t.length);o.set(r),o.set(t,r.length),t=o,i.w=r.length}return hK(t,null==e.level?6:e.level,null==e.mem?i.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):20:12+e.mem,a,u,i)},bF=function(t,e){var a={};for(var u in t)a[u]=t[u];for(var u in e)a[u]=e[u];return a},pK=function(t,e,a){for(var u=t(),i=t.toString(),r=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/\s+/g,"").split(","),o=0;o>>=8};function xF(t,e){return vF(t,e||{},0,0)}var DL=function(t,e,a,u){for(var i in t){var r=t[i],o=e+i,d=u;Array.isArray(r)&&(d=bF(u,r[1]),r=r[0]),r instanceof Jt?a[o]=[r,d]:(a[o+="/"]=[new Jt(0),d],DL(r,o,a,u))}},_K=typeof TextEncoder<"u"&&new TextEncoder,fL=typeof TextDecoder<"u"&&new TextDecoder;try{fL.decode(mL,{stream:!0}),1}catch{}function aD(t,e){if(e){for(var a=new Jt(t.length),u=0;u>1)),o=0,d=function(E){r[o++]=E};for(u=0;ur.length){var h=new Jt(o+8+(i-u<<1));h.set(r),r=h}var m=t.charCodeAt(u);m<128||e?d(m):m<2048?(d(192|m>>6),d(128|63&m)):m>55295&&m<57344?(d(240|(m=65536+(1047552&m)|1023&t.charCodeAt(++u))>>18),d(128|m>>12&63),d(128|m>>6&63),d(128|63&m)):(d(224|m>>12),d(128|m>>6&63),d(128|63&m))}return Oh(r,0,o)}var tD=function(t){var e=0;if(t)for(var a in t){var u=t[a].length;u>65535&&yt(9),e+=u+4}return e},DF=function(t,e,a,u,i,r,o,d){var h=u.length,m=a.extra,E=d&&d.length,v=tD(m);Gu(t,e,null!=o?33639248:67324752),e+=4,null!=o&&(t[e++]=20,t[e++]=a.os),t[e]=20,e+=2,t[e++]=a.flag<<1|(r<0&&8),t[e++]=i&&8,t[e++]=255&a.compression,t[e++]=a.compression>>8;var k=new Date(null==a.mtime?Date.now():a.mtime),x=k.getFullYear()-1980;if((x<0||x>119)&&yt(10),Gu(t,e,x<<25|k.getMonth()+1<<21|k.getDate()<<16|k.getHours()<<11|k.getMinutes()<<5|k.getSeconds()>>1),e+=4,-1!=r&&(Gu(t,e,a.crc),Gu(t,e+4,r<0?-r-2:r),Gu(t,e+8,a.size)),Gu(t,e+12,h),Gu(t,e+14,v),e+=16,null!=o&&(Gu(t,e,E),Gu(t,e+6,a.attrs),Gu(t,e+10,o),e+=14),t.set(u,e),e+=h,v)for(var f in m){var C=m[f],A=C.length;Gu(t,e,+f),Gu(t,e+2,A),t.set(C,e+4),e+=4+A}return E&&(t.set(d,e),e+=E),e},wK=function(t,e,a,u,i){Gu(t,e,101010256),Gu(t,e+8,a),Gu(t,e+10,a),Gu(t,e+12,u),Gu(t,e+16,i)};function she(t,e,a){a||(a=e,e={}),"function"!=typeof a&&yt(7);var u={};DL(t,"",u,e);var i=Object.keys(u),r=i.length,o=0,d=0,h=r,m=new Array(r),E=[],v=function(){for(var A=0;A65535&&_t(yt(11,0,1),null),ga)if($<16e4)try{_t(null,xF(L,M))}catch(ht){_t(ht,null)}else E.push(function the(t,e,a){return a||(a=e,e={}),"function"!=typeof a&&yt(7),Hv(t,e,[gL],function(u){return Gh(xF(u.data[0],u.data[1]))},0,a)}(L,M,_t));else _t(null,L)},C=0;C(((t,e,a)=>{e in t?dhe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a})(t,"symbol"!=typeof e?e+"":e,a),a);const hhe={"&":"&","<":"<",">":">",'"':""","'":"'"},BK=t=>("string"!=typeof t&&(t=`${t}`),t.replace(/[&<>"']/g,e=>hhe[e]));function xc(t){const e=typeof t;return null!=t&&("object"===e||"function"===e)}function mhe(t){if("object"!=typeof t||null===t||"[object Object]"!==Object.prototype.toString.call(t))return!1;const e=Object.getPrototypeOf(t);if(null===e)return!0;const a=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return"function"==typeof a&&a instanceof a&&Function.prototype.call(a)===Function.prototype.call(t)}function M3(t){return null!=t&&"string"==typeof t.valueOf()}const CL={};function nl(t="$lodash$"){CL[t]||(CL[t]=0);const e=++CL[t];return"$lodash$"===t?`${e}`:`${t}${e}`}class CF{constructor(e,a){X(this,"documentElement"),this.documentElement=this.createElement(a),this.documentElement.setAttribute("xmlns",e)}createElement(e){return new yF({nodeName:e})}createTextNode(e){return new SK(e)}toString(){return this.documentElement.toString()}}X(CF,"Node",{Create:t=>{switch(t.type){case"XML":return new yF(t);case"TEXT":return new SK(t.nodeValue);default:return null}}});class SK{constructor(e){X(this,"nodeValue"),this.nodeValue=e}toJSON(){return{nodeValue:this.nodeValue,type:"TEXT"}}toString(){return BK(this.nodeValue)}}class yF{constructor(e){if(X(this,"nodeName",""),X(this,"children"),X(this,"nodeValue"),X(this,"attributes"),X(this,"firstChild"),this.nodeName=e.nodeName,this.children=[],this.nodeValue=e.nodeValue||"",this.attributes={},e.children)for(let a=0,u=e.children.length;a${a}`:"/>",e}toJSON(){const e=[];for(let a=0,u=this.children.length;a0;)r-=Math.pow(26,u-1),i=r%Math.pow(26,u),r-=i,i/=Math.pow(26,u-1),o="ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(i)+o,u+=1;return N3.LETTER_REFS[e]=o,o.concat(String(a))}};X(_F,"_idSpaces",{}),X(_F,"LETTER_REFS",{}),X(_F,"schemas",{worksheet:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",sharedStrings:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",stylesheet:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",relationships:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",relationshipPackage:"http://schemas.openxmlformats.org/package/2006/relationships",contentTypes:"http://schemas.openxmlformats.org/package/2006/content-types",spreadsheetml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",markupCompat:"http://schemas.openxmlformats.org/markup-compatibility/2006",x14ac:"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac",officeDocument:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",package:"http://schemas.openxmlformats.org/package/2006/relationships",table:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table",spreadsheetDrawing:"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing",drawing:"http://schemas.openxmlformats.org/drawingml/2006/main",drawingRelationship:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",image:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",chart:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",hyperlink:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"});let ce=_F;const Kh={};class FF{constructor(){X(this,"relations",{}),X(this,"lastId",1),nl("rId")}importData(e){this.relations=e.relations,this.lastId=e.lastId}exportData(){return{relations:this.relations,lastId:this.lastId}}addRelation(e,a){return this.relations[e.id]={id:nl("rId"),schema:ce.schemas[a],object:e},this.relations[e.id].id}getRelationshipId(e){return this.relations[e.id]?this.relations[e.id].id:null}toXML(){const e=ce.createXmlDoc(ce.schemas.relationshipPackage,"Relationships"),a=e.documentElement;for(const[u,i]of Object.entries(this.relations)){const r=ce.createElement(e,"Relationship",[["Id",i.id],["Type",i.schema],["Target",i.object.target||Kh[u]]]);i.object.targetMode&&r.setAttribute("TargetMode",i.object.targetMode),a.appendChild(r)}return e}}class vhe{constructor(){X(this,"state",null),X(this,"xSplit",null),X(this,"ySplit",null),X(this,"activePane","bottomRight"),X(this,"topLeftCell",null),X(this,"_freezePane")}freezePane(e,a,u){this._freezePane={xSplit:e,ySplit:a,cell:u}}exportXML(e){const a=e.createElement("pane");return null!==this.state&&(a.setAttribute("xSplit",this._freezePane.xSplit),a.setAttribute("ySplit",this._freezePane.ySplit),a.setAttribute("topLeftCell",this._freezePane.cell),a.setAttribute("activePane","bottomRight"),a.setAttribute("state","frozen")),a}}class TK{constructor(){X(this,"strings",{}),X(this,"stringArray",[]),X(this,"id",nl("SharedStrings"))}addString(e){return this.strings[e]=this.stringArray.length,this.stringArray[this.stringArray.length]=e,this.strings[e]}exportData(){return this.strings}toXML(){const e=ce.createXmlDoc(ce.schemas.spreadsheetml,"sst"),a=e.documentElement;this.stringArray.reverse();let u=this.stringArray.length;a.setAttribute("count",u),a.setAttribute("uniqueCount",u);const i=e.createElement("si"),r=e.createElement("t");r.appendChild(e.createTextNode("--placeholder--")),i.appendChild(r);const o=this.stringArray;for(;u--;){const d=i.cloneNode(!0);"string"==typeof o[u]&&o[u].match(/\s+/)&&d.firstChild.setAttribute("xml:space","preserve"),d.firstChild.firstChild.nodeValue=o[u],a.appendChild(d)}return e}}class bhe{constructor(e){X(this,"pane"),X(this,"showZeros",null),X(this,"defaultGridColor",null),X(this,"colorId",null),X(this,"rightToLeft",null),X(this,"showFormulas",null),X(this,"showGridLines",null),X(this,"showOutlineSymbols",null),X(this,"showRowColHeaders",null),X(this,"showRuler",null),X(this,"showWhiteSpace",null),X(this,"tabSelected",null),X(this,"topLeftCell",null),X(this,"viewType",null),X(this,"windowProtection",null),X(this,"zoomScale",null),X(this,"zoomScaleNormal",null),X(this,"zoomScalePageLayoutView",null),X(this,"zoomScaleSheetLayoutView",null);const a=e||{};this.pane=a.pane||new vhe}freezePane(e,a,u){this.pane.state="frozen",this.pane.xSplit=e,this.pane.ySplit=a,this.pane.topLeftCell=u}exportXML(e){const a=e.createElement("sheetViews"),u=e.createElement("sheetView");return ce.setAttributesOnDoc(u,{workbookViewId:0,showZeros:{v:this.showZeros,type:Boolean},defaultGridColor:{v:this.defaultGridColor,type:Boolean},colorId:this.colorId,rightToLeft:{v:this.rightToLeft,type:Boolean},showFormulas:{v:this.showFormulas,type:Boolean},showGridLines:{v:this.showGridLines,type:Boolean},showOutlineSymbols:{v:this.showOutlineSymbols,type:Boolean},showRowColHeaders:{v:this.showRowColHeaders,type:Boolean},showRuler:{v:this.showRuler,type:Boolean},showWhiteSpace:{v:this.showWhiteSpace,type:Boolean},tabSelected:{v:this.tabSelected,type:Boolean},viewType:this.viewType,windowProtection:{v:this.windowProtection,type:Boolean},zoomScale:{v:this.zoomScale,type:Boolean},zoomScaleNormal:this.zoomScaleNormal,zoomScalePageLayoutView:this.zoomScalePageLayoutView,zoomScaleSheetLayoutView:this.zoomScaleSheetLayoutView}),u.appendChild(this.pane.exportXML(e)),a.appendChild(u),a}}class PK{constructor(){X(this,"id",nl("StyleSheet")),X(this,"cellStyles",[{name:"Normal",xfId:"0",builtinId:"0"}]),X(this,"defaultTableStyle",!1),X(this,"differentialStyles",[{}]),X(this,"masterCellFormats",[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfid:0}]),X(this,"masterCellStyles",[{numFmtId:0,fontId:0,fillId:0,borderId:0}]),X(this,"fonts",[{}]),X(this,"numberFormatters",[]),X(this,"fills",[{},{type:"pattern",patternType:"gray125",fgColor:"FF333333",bgColor:"FF333333"}]),X(this,"borders",[{top:{},left:{},right:{},bottom:{},diagonal:{}}]),X(this,"tableStyles",[])}createSimpleFormatter(e){const a={id:this.masterCellFormats.length};if("date"===e)a.numFmtId=14;return this.masterCellFormats.push(a),a}createFill(e){const a=this.fills.length,u=e;return u.id=a,this.fills.push(u),u}createNumberFormatter(e){const a={id:this.numberFormatters.length+100,formatCode:e};return this.numberFormatters.push(a),a}createFormat(e){const a={id:this.masterCellFormats.length};if(e.protection&&(a.protection=e.protection),e.font&&xc(e.font))a.fontId=this.createFontStyle(e.font).id;else if(e.font){if(Number.isNaN(parseInt(e.font,10)))throw new Error("Passing a non-numeric font id is not supported");a.fontId=e.font}if(e.format&&M3(e.format))a.numFmtId=this.createNumberFormatter(e.format).id;else if(e.format){if(Number.isNaN(parseInt(e.format,10)))throw new Error("Invalid number formatter id");a.numFmtId=e.format}if(e.border&&xc(e.border))a.borderId=this.createBorderFormatter(e.border).id;else if(e.border){if(Number.isNaN(parseInt(e.border,10)))throw new Error("Passing a non-numeric border id is not supported");a.borderId=e.border}if(e.fill&&xc(e.fill))a.fillId=this.createFill(e.fill).id;else if(e.fill){if(Number.isNaN(parseInt(e.fill,10)))throw new Error("Passing a non-numeric fill id is not supported");a.fillId=e.fill}return e.alignment&&xc(e.alignment)&&(a.alignment=function phe(t,e){return e.reduce((a,u)=>(null!=t&&t.hasOwnProperty(u)&&(a[u]=t[u]),a),{})}(e.alignment,["horizontal","justifyLastLine","readingOrder","relativeIndent","shrinkToFit","textRotation","vertical","wrapText"])),this.masterCellFormats.push(a),a}createDifferentialStyle(e){const a=this.differentialStyles.length,u={id:a};return e.font&&xc(e.font)&&(u.font=e.font),e.border&&xc(e.border)&&(u.border=Object.assign({top:{},left:{},right:{},bottom:{},diagonal:{}},e.border)),e.fill&&xc(e.fill)&&(u.fill=e.fill),e.alignment&&xc(e.alignment)&&(u.alignment=e.alignment),e.format&&M3(e.format)&&(u.numFmt=e.format),this.differentialStyles[a]=u,u}createTableStyle(e){this.tableStyles.push(e)}createBorderFormatter(e){return e={top:{},left:{},right:{},bottom:{},diagonal:{},id:this.borders.length,...e},this.borders.push(e),e}createFontStyle(e){const a={id:this.fonts.length};return e.bold&&(a.bold=!0),e.italic&&(a.italic=!0),e.superscript&&(a.vertAlign="superscript"),e.subscript&&(a.vertAlign="subscript"),e.underline&&("string"==typeof e.underline&&["double","singleAccounting","doubleAccounting"].includes(e.underline)?a.underline=e.underline:a.underline=!0),e.strike&&(a.strike=!0),e.outline&&(a.outline=!0),e.shadow&&(a.shadow=!0),e.size&&(a.size=e.size),e.color&&(a.color=e.color),e.fontName&&(a.fontName=e.fontName),this.fonts.push(a),a}exportBorders(e){const a=e.createElement("borders");a.setAttribute("count",this.borders.length);for(let u=0,i=this.borders.length;u{const o=e.createElement(r);return a[r].style&&o.setAttribute("style",a[r].style),a[r].color&&o.appendChild(this.exportColor(e,a[r].color)),o};return u.appendChild(i("left")),u.appendChild(i("right")),u.appendChild(i("top")),u.appendChild(i("bottom")),u.appendChild(i("diagonal")),u}exportColor(e,a){const u=e.createElement("color");return M3(a)?(u.setAttribute("rgb",a),u):(void 0!==a.tint&&u.setAttribute("tint",a.tint),void 0!==a.auto&&u.setAttribute("auto",String(!!a.auto)),void 0!==a.theme&&u.setAttribute("theme",a.theme),u)}exportMasterCellFormats(e){const a=ce.createElement(e,"cellXfs",[["count",this.masterCellFormats.length]]);for(let u=0,i=this.masterCellFormats.length;u-1!==i.indexOf(d));if(a.alignment){const d=a.alignment;u.appendChild(this.exportAlignment(e,d))}a.protection&&(u.appendChild(this.exportProtection(e,a.protection)),u.setAttribute("applyProtection","1"));let o=r.length;for(;o--;)u.setAttribute(r[o],a[r[o]]);return a.fillId&&u.setAttribute("applyFill","1"),a.fontId&&u.setAttribute("applyFont","1"),a.borderId&&u.setAttribute("applyBorder","1"),a.alignment&&u.setAttribute("applyAlignment","1"),a.numFmtId&&u.setAttribute("applyNumberFormat","1"),void 0!==a.numFmtId&&void 0===a.xfId&&u.setAttribute("xfId","0"),u}exportAlignment(e,a){const u=e.createElement("alignment"),i=Object.keys(a);for(let r=0,o=i.length;r{if("name"===r)return;i++;const d=e.createElement("tableStyleElement");d.setAttribute("type",r),d.setAttribute("dxfId",o),u.appendChild(d)}),u.setAttribute("count",String(i)),u}exportProtection(e,a){const u=e.createElement("protection");for(const i in a)a.hasOwn(i)&&u.setAttribute(i,a[i]);return u}toXML(){const e=ce.createXmlDoc(ce.schemas.spreadsheetml,"styleSheet"),a=e.documentElement;return a.appendChild(this.exportNumberFormatters(e)),a.appendChild(this.exportFonts(e)),a.appendChild(this.exportFills(e)),a.appendChild(this.exportBorders(e)),a.appendChild(this.exportMasterCellStyles(e)),a.appendChild(this.exportMasterCellFormats(e)),a.appendChild(this.exportCellStyles(e)),a.appendChild(this.exportDifferentialStyles(e)),this.tableStyles.length&&a.appendChild(this.exportTableStyles(e)),e}}class khe{constructor(e){X(this,"name",""),X(this,"id",nl("Worksheet")),X(this,"_timezoneOffset"),X(this,"relations",null),X(this,"columnFormats",[]),X(this,"data",[]),X(this,"mergedCells",[]),X(this,"columns",[]),X(this,"sheetProtection",!1),X(this,"_headers",[]),X(this,"_footers",[]),X(this,"_tables",[]),X(this,"_drawings",[]),X(this,"_orientation"),X(this,"_margin"),X(this,"_rowInstructions",{}),X(this,"_freezePane",{}),X(this,"sharedStrings",null),X(this,"hyperlinks",[]),X(this,"sheetView"),X(this,"showZeros",null),this._timezoneOffset=60*(new Date).getTimezoneOffset()*1e3,this.sheetView=e.sheetView||new bhe,this.initialize(e)}initialize(e){e=e||{},this.name=e.name,this.id=nl("Worksheet"),this._timezoneOffset=60*(new Date).getTimezoneOffset()*1e3,e.columns&&this.setColumns(e.columns),this.relations=new FF}exportData(){return{relations:this.relations.exportData(),columnFormats:this.columnFormats,data:this.data,columns:this.columns,mergedCells:this.mergedCells,_headers:this._headers,_footers:this._footers,_tables:this._tables,_rowInstructions:this._rowInstructions,_freezePane:this._freezePane,name:this.name,id:this.id}}importData(e){this.relations.importData(e.relations),delete e.relations,Object.assign(this,e)}setSharedStringCollection(e){this.sharedStrings=e}addTable(e){this._tables.push(e),this.relations.addRelation(e,"table")}addDrawings(e){this._drawings.push(e),this.relations.addRelation(e,"drawingRelationship")}setRowInstructions(e,a){this._rowInstructions[e]=a}setHeader(e){if(!Array.isArray(e))throw"Invalid argument type - setHeader expects an array of three instructions";this._headers=e}setFooter(e){if(!Array.isArray(e))throw"Invalid argument type - setFooter expects an array of three instructions";this._footers=e}compilePageDetailPackage(e){return e=e||"",["&L",this.compilePageDetailPiece(e[0]||""),"&C",this.compilePageDetailPiece(e[1]||""),"&R",this.compilePageDetailPiece(e[2]||"")].join("")}compilePageDetailPiece(e){if(M3(e))return'&"-,Regular"'.concat(e);if(xc(e)&&!Array.isArray(e)){let a="";if(e.font||e.bold){const u=e.bold?"Bold":"Regular";a+=`&"${e.font||"-"}`,a+=`,${u}"`}else a+='&"-,Regular"';return e.underline&&(a+="&U"),e.fontSize&&(a+=`&${e.fontSize}`),a+=e.text,a}return Array.isArray(e)?e.reduce((a,u)=>a.concat(this.compilePageDetailPiece(u)),""):void 0}exportHeader(e){const a=e.createElement("oddHeader");return a.appendChild(e.createTextNode(this.compilePageDetailPackage(this._headers))),a}exportFooter(e){const a=e.createElement("oddFooter");return a.appendChild(e.createTextNode(this.compilePageDetailPackage(this._footers))),a}_buildCache(e){const a=e.createElement("c"),u=e.createElement("v");u.appendChild(e.createTextNode("--temp--")),a.appendChild(u);const i=e.createElement("c"),r=e.createElement("f");r.appendChild(e.createTextNode("--temp--")),i.appendChild(r);const o=e.createElement("c");o.setAttribute("t","s");const d=e.createElement("v");return d.appendChild(e.createTextNode("--temp--")),o.appendChild(d),{number:a,date:a,string:o,formula:i}}collectSharedStrings(){const e=this.data,a={};for(let u=0,i=e.length;u"u"&&(a[h]=!0)}}return Object.keys(a)}toXML(){var e,a,u;const i=this.data,r=this.columns||[],o=ce.createXmlDoc(ce.schemas.spreadsheetml,"worksheet"),d=o.documentElement;let h,m,E;d.setAttribute("xmlns:r",ce.schemas.relationships),d.setAttribute("xmlns:mc",ce.schemas.markupCompat);let v=0;const k=ce.createElement(o,"sheetData"),x=this._buildCache(o);for(E=0,m=i.length;Ev?C:v;const A=o.createElement("row");for(let w=0;w0){const f=o.createElement("hyperlinks"),C=this.hyperlinks;for(h=0,m=C.length;h0){const f=o.createElement("mergeCells");for(h=0,m=this.mergedCells.length;h0||this._footers.length>0){const f=o.createElement("headerFooter");this._headers.length>0&&f.appendChild(this.exportHeader(o)),this._footers.length>0&&f.appendChild(this.exportFooter(o)),d.appendChild(f)}for(h=0,m=this._drawings.length;h0){const f=o.createElement("tableParts");for(f.setAttribute("count",this._tables.length),h=0,m=this._tables.length;h31&&console.log(`Microsoft Excel requires work sheet names to be less than 32 characters long, work sheet name "${this.worksheets[d].name}" is ${this.worksheets[d].name.length} characters long`),m.setAttribute("name",this.worksheets[d].name),m.setAttribute("sheetId",d+1),m.setAttribute("r:id",this.relations.getRelationshipId(this.worksheets[d])),i.appendChild(m)}a.appendChild(i);const r=ce.createElement(e,"definedNames");let o=0;for(const d in this.printTitles){if(!this.printTitles.hasOwn(d))continue;const h=this.printTitles[d],m=e.createElement("definedName");m.setAttribute("name","_xlnm.Print_Titles"),m.setAttribute("localSheetId",o++);let E="";h.top&&(E+=`${d}!$1:$${h.top}`,h.left&&(E+=",")),h.left&&(E+=`${d}!$A:$${h.left}`),m.appendChild(e.createTextNode(E)),r.appendChild(m)}return a.appendChild(r),e}createWorkbookRelationship(){const e=ce.createXmlDoc(ce.schemas.relationshipPackage,"Relationships");return e.documentElement.appendChild(ce.createElement(e,"Relationship",[["Id","rId1"],["Type",ce.schemas.officeDocument],["Target","xl/workbook.xml"]])),e}_generateCorePaths(e){let a,u;for(Kh[this.styleSheet.id]="styles.xml",Kh[this.sharedStrings.id]="sharedStrings.xml",Kh[this.id]="/xl/workbook.xml",a=0,u=this.tables.length;a\n${i}`}}generateFiles(){return new Promise(e=>{const a={};this._generateCorePaths(a);for(let u=0,i=this.worksheets.length;u{t.generateFiles().then(o=>{for(const[d,h]of Object.entries(o))u[d.substr(1)]=aD(h);return she(u,a?.zipOptions||{},(d,h)=>{if(d)r(d);else if("Uint8Array"===e)i(h);else{const m=a?.fileFormat??"xlsx";let E=a?.mimeType;void 0===E&&(E="xls"===m?"application/vnd.ms-excel":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"),i(new Blob([h],{type:E}))}})})})}(t,"Blob",{...a,fileFormat:u}).then(i=>{!function fhe(t,e){const a=document.createElement("a"),u=URL.createObjectURL(e);a&&document&&(a.textContent="download",a.href=u,a.setAttribute("download",t),a.style.visibility="hidden",document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(u))}(e,i)})}const Che=t=>t,yhe=(t,e,a,u,i)=>({value:"string"==typeof t&&/\d/g.test(t)?_he(t,e,i):t,metadata:{style:a}});function _he(t,e,a){let u=t;if("string"==typeof t&&t){const i=Us("decimalSeparator",e,a,ae.DEFAULT_NUMBER_DECIMAL_SEPARATOR),r=parseFloat(","===i?t.replace(/[^0-9,-]+/g,"").replace(",","."):t.replace(/[^\d.-]/g,""));u=isNaN(r)?t:r}return u}function Fhe(t,e,a,u,i=!0){const r=k2(a);let o,d=Che;return r===F.number&&i&&(o=yL(t,e,a,u,"cell").stylesheetFormatter.id,d=yhe),{stylesheetFormatterId:o,getDataValueParser:d}}function Ahe(t,e,a){return t?.[a]?.[e.field]??0}function IK(t){let e;switch(t){case G.currency:case G.dollar:case G.dollarColored:case G.dollarColoredBold:e="currency";break;case G.percent:case G.percentComplete:case G.percentCompleteBar:case G.percentCompleteBarWithText:case G.percentSymbol:e="percent";break;case G.decimal:default:e="decimal"}return e}function yL(t,e,a,u,i){let d,r="",o="";const h=k2(a);if("group"===i)switch(a.groupTotalsFormatter){case nt.avgTotals:case nt.avgTotalsCurrency:case nt.avgTotalsDollar:case nt.avgTotalsPercentage:o="avg";break;case nt.minTotals:o="min";break;case nt.maxTotals:o="max";break;case nt.sumTotals:case nt.sumTotalsBold:case nt.sumTotalsColored:case nt.sumTotalsCurrency:case nt.sumTotalsCurrencyColored:case nt.sumTotalsDollar:case nt.sumTotalsDollarColoredBold:case nt.sumTotalsDollarColored:case nt.sumTotalsDollarBold:o="sum";break;default:d=e.numberFormatter}else if(h===F.number)switch(a.formatter){case G.multiple:if(Array.isArray(a.params?.formatters))for(const m of a.params.formatters){const{stylesheetFormatter:E}=yL(t,e,{...a,formatter:m},u,i);if(E!==e.numberFormatter){d=E;break}}d||(d=e.numberFormatter);break;case G.currency:case G.decimal:case G.dollar:case G.dollarColored:case G.dollarColoredBold:case G.percent:case G.percentComplete:case G.percentCompleteBar:case G.percentCompleteBarWithText:case G.percentSymbol:r=HK(a,u,"cell");break;default:d=e.numberFormatter}return!d&&(a.formatter||a.groupTotalsFormatter)&&(r=HK(a,u,i,o),e.hasOwnProperty(r)||(e[r]=t.createFormat({format:r})),d=e[r]),{stylesheetFormatter:d,groupType:o}}function RK(t){const[e,a,u,i,r,o,d,h]=t?.match(/^([^\d(-]*)([(]?)([^\d]*)([-]?[\w]]?[\d\s]*[.,\d]*[\d]*[^)\s%]?)([^\d.,)]*)([)]?)([^\d]*)$/i)||[],m=(r||"").replace(/1/g,"0").replace(/[2]/g,"#");return[AF(a??""),u??"",AF(i??""),m,AF(o??""),d??"",AF(h??"")].join("").replace(",",",")}function HK(t,e,a,u=""){let i="",r="",o="";const{minDecimal:d,maxDecimal:h,thousandSeparator:m}=function whe(t,e,a){let u;if("group"===a)switch(t.groupTotalsFormatter){case nt.avgTotalsCurrency:case nt.avgTotalsDollar:case nt.sumTotalsCurrency:case nt.sumTotalsCurrencyColored:case nt.sumTotalsDollar:case nt.sumTotalsDollarBold:case nt.sumTotalsDollarColored:case nt.sumTotalsDollarColoredBold:u="currency";break;case nt.avgTotalsPercentage:u="percent";break;case nt.avgTotals:case nt.minTotals:case nt.maxTotals:case nt.sumTotals:case nt.sumTotalsColored:case nt.sumTotalsBold:default:u="decimal"}else if(t.formatter===G.multiple&&Array.isArray(t.params?.formatters)){u="decimal";for(const i of t.params.formatters)if(u=IK(i),"decimal"!==u)break}else u=IK(t.formatter);return ju(t,e,u,a)}(t,e,a),v=parseFloat(`${m?"2220":"0"}.${function Bhe(t,e){return VK("1",t)+VK("2",e-t)}(d,h)}`);return"group"===a&&t.groupTotalsFormatter?(r=zu(t.groupTotalsFormatter({[u]:{[t.field]:v}},t,e)),o=zu(t.groupTotalsFormatter({[u]:{[t.field]:-v}},t,e))):t.formatter&&(r=zu(t.formatter(0,0,v,t,{},e)),o=zu(t.formatter(0,0,-v,t,{},e))),r&&o&&(i=RK(r)+";"+RK(o)),i}function AF(t){return t&&`"${t}"`}function VK(t,e){let a="";for(let u=0;u{const i={name:this._excelExportOptions.sheetName||"Sheet1"};this._workbook=new NK,this._sheet=this._workbook.createWorksheet(i),this._stylesheet=this._workbook.getStyleSheet();const r=this._stylesheet.createFormat({font:{bold:!0}}),o=this._stylesheet.createFormat({format:"@"}),d=this._stylesheet.createFormat({format:"0"});this._stylesheetFormats={boldFormatter:r,numberFormatter:d,stringFormatter:o},this._sheet.setColumnFormats([r]);const h=this.getDataOutput();setTimeout(Au(function*(){a._gridOptions?.excelExportOptions?.customExcelHeader&&a._gridOptions.excelExportOptions.customExcelHeader(a._workbook,a._sheet);const m=a._grid?.getColumns()||[];a._sheet.setColumns(a.getColumnStyles(m));const E=a._sheet.data;let v=E;Array.isArray(E)&&Array.isArray(h)&&(v=a._sheet.data.concat(h)),a._sheet.setData(v),a._workbook.addWorksheet(a._sheet);let k=a._excelExportOptions?.mimeType;void 0===k&&(k=a._fileFormat===ft.xls?"application/vnd.ms-excel":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");const x=`${a._excelExportOptions.filename}.${a._fileFormat}`;Dhe(a._workbook,x,{mimeType:k}).then(()=>{a._pubSubService?.publish("onAfterExportToExcel",{filename:x,mimeType:k}),u(!0)})}))})}getExcelColumnNameByIndex(e){const a="ZABCDEFGHIJKLMNOPQRSTUVWXY";let u=Math.floor(e/26);const i=Math.floor(e%26);return 0===i&&u--,e>26?this.getExcelColumnNameByIndex(u)+a[i]:a[i]+""}getDataOutput(){const e=this._grid?.getColumns()||[],a=[],i=this._gridOptions?.excelExportOptions?.columnHeaderStyle;let r=this._stylesheetFormats.boldFormatter.id;if(i&&(r=this._stylesheet.createFormat(i).id),this._gridOptions.createPreHeaderPanel&&this._gridOptions.showPreHeaderPanel&&!this._gridOptions.enableDraggableGrouping){const o=this._stylesheet.createFormat({alignment:{horizontal:"center"},font:{bold:!0}});a.push(this.getColumnGroupedHeaderTitlesData(e,{style:o?.id})),this._hasColumnTitlePreHeader=!0}return a.push(this.getColumnHeaderData(e,{style:r})),this.pushAllGridRowDataToArray(a,e),a}getColumnStyles(e){const a=this._dataView.getGrouping(),u=[];return Array.isArray(a)&&a.length>0&&u.push({bestFit:!0,columnStyles:this._gridOptions?.excelExportOptions?.customColumnWidth??10}),e.forEach(i=>{const r=i.excludeFromExport??!1;(void 0===i.width||i.width>0)&&!r&&u.push({bestFit:!0,width:i.excelExportOptions?.width??this._gridOptions?.excelExportOptions?.customColumnWidth??10})}),u}getColumnGroupedHeaderTitlesData(e,a){let u=[];this._groupedColumnHeaders=this.getColumnGroupedHeaderTitles(e)||[],this._groupedColumnHeaders&&Array.isArray(this._groupedColumnHeaders)&&this._groupedColumnHeaders.length>0&&(u=this._groupedColumnHeaders.map(o=>({value:o.title,metadata:a})));let i=0;const r=this._groupedColumnHeaders.length;for(let o=0;o0&&(u=this._columnHeaders.map(r=>({value:zu(r.title),metadata:a})));const i=this.getGroupColumnTitle();return i&&u.unshift({value:i,metadata:a}),u}getGroupColumnTitle(){let e=this._excelExportOptions.groupingColumnHeaderTitle;!e&&this._gridOptions.enableTranslate&&this._translaterService?.translate?e=this._translaterService.translate(`${Gl(this._gridOptions)}GROUP_BY`):e||(e=this._locales&&this._locales.TEXT_GROUP_BY);const a=this._dataView.getGrouping();return Array.isArray(a)&&a.length>0?(this._hasGroupedItems=!0,e):(this._hasGroupedItems=!1,null)}getColumnGroupedHeaderTitles(e){const a=[];return e&&Array.isArray(e)&&e.forEach(u=>{let i="";i=u.columnGroupKey&&this._gridOptions.enableTranslate&&this._translaterService?.translate?this._translaterService.translate(u.columnGroupKey):u.columnGroup||"";const r=u.excludeFromExport||!1;(void 0===u.width||u.width>0)&&!r&&a.push({key:u.field||u.id,title:i||""})}),a}getColumnHeaders(e){const a=[];return e&&Array.isArray(e)&&e.forEach(u=>{let i="";i=(u.nameKey||u.nameKey)&&this._gridOptions.enableTranslate&&this._translaterService?.translate?this._translaterService.translate(u.nameKey||u.nameKey):hn(u.name||"","innerHTML")||wo(u.field);const r=u.excludeFromExport||!1;(void 0===u.width||u.width>0)&&!r&&a.push({key:(u.field||u.id)+"",title:i})}),a}pushAllGridRowDataToArray(e,a){const u=this._dataView.getLength();for(let i=0;i1||"*"===d&&E>0||(d=C?.colspan??1),"*"===d?k=e.length-E:(k=d,v.id in f&&(x=v.id,h=E))}if("*"===d&&E>0||!isNaN(d)&&+d>1&&v.id!==x){const f=a+(this._hasColumnTitlePreHeader?3:2);if("number"==typeof d&&k-1==1){const C=this.getExcelColumnNameByIndex(h+1),A=this.getExcelColumnNameByIndex(E+1);this._sheet.mergeCells(`${C}${f}`,`${A}${f}`),r.push("")}else if("*"===d&&1===k){const C=this.getExcelColumnNameByIndex(E+1);this._sheet.mergeCells(`A${f}`,`${C}${f}`)}else r.push("");"number"==typeof d&&!isNaN(d)&&+d>1&&(k=d--)}else{let f="";const C=k2(v),A={...this._excelExportOptions};if(!1!==v.exportWithFormatter&&Uz(C)&&(A.exportWithFormatter=!0),f=jM(a,E,v,u,this._grid,A),!this._regularCellExcelFormats.hasOwnProperty(v.id)){const L=v.excelExportOptions?.autoDetectCellFormat??this._excelExportOptions?.autoDetectCellFormat,M=Fhe(this._stylesheet,this._stylesheetFormats,v,this._grid,L);v.excelExportOptions?.style&&(M.stylesheetFormatterId=this._stylesheet.createFormat(v.excelExportOptions.style).id),v.excelExportOptions?.valueParserCallback&&(M.getDataValueParser=v.excelExportOptions.valueParserCallback),this._regularCellExcelFormats[v.id]=M}"string"==typeof f&&(v.sanitizeDataExport||this._excelExportOptions.sanitizeDataExport)&&(f=zu(f));const{stylesheetFormatterId:w,getDataValueParser:z}=this._regularCellExcelFormats[v.id];f=z(f,v,w,this._stylesheet,this._gridOptions),r.push(f),i++}}return r}readGroupedRowTitle(e){const a=zu(e.title);if(this._excelExportOptions&&this._excelExportOptions.addGroupIndentation){const u=this._excelExportOptions&&this._excelExportOptions.groupCollapsedSymbol||"\u2b9e",i=this._excelExportOptions&&this._excelExportOptions.groupExpandedSymbol||"\u2b9f";return(e.collapsed?u:i)+" "+Dv(5*e.level)+a}return a}readGroupedTotalRows(e,a){const i=[this._excelExportOptions.groupingAggregatorRowText||""];return e.forEach(r=>{let o="";const d=k2(r),h=r.excludeFromExport||!1;if(r.exportCustomGroupTotalsFormatter){const E=r.exportCustomGroupTotalsFormatter(a,r,this._grid);o=E instanceof HTMLElement?E.textContent||"":E}const m=r.excelExportOptions?.autoDetectCellFormat??this._excelExportOptions?.autoDetectCellFormat;if(d===F.number&&!1!==m){let E=this._groupTotalExcelFormats[r.id];E?.groupType||(E=yL(this._stylesheet,this._stylesheetFormats,r,this._grid,"group"),r.groupTotalsExcelExportOptions?.style&&(E.stylesheetFormatter=this._stylesheet.createFormat(r.groupTotalsExcelExportOptions.style)),this._groupTotalExcelFormats[r.id]=E);const v=r.groupTotalsExcelExportOptions?.valueParserCallback??Ahe;void 0!==a[E.groupType]?.[r.field]&&(o={value:v(a,r,E.groupType,this._stylesheet),metadata:{style:E.stylesheetFormatter?.id}})}else if(r.groupTotalsFormatter){const E=r.groupTotalsFormatter(a,r,this._grid);o=E instanceof HTMLElement?E.textContent||"":E}"string"==typeof o&&(r.sanitizeDataExport||this._excelExportOptions.sanitizeDataExport)&&(o=zu(o)),(void 0===r.width||r.width>0)&&!h&&i.push(o)}),i}}class _L{constructor(){this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0,this.searchTerms=[],this.operator=re.equal}get columnFilter(){return this.columnDef?.filter??{}}get gridOptions(){return this.grid?.getOptions()??{}}init(e){this.grid=e.grid,this.callback=e.callback,this.columnDef=e.columnDef,this.searchTerms=(e.hasOwnProperty("searchTerms")?e.searchTerms:[])||[];const a=Array.isArray(this.searchTerms)&&this.searchTerms.length>=0?this.searchTerms[0]:"";this.filterElm=this.createFilterElement(a),this.filterElm?.addEventListener("keyup",this.onKeyup.bind(this))}clear(e=!0){this.filterElm&&(this._clearFilterTriggered=!0,this._shouldTriggerQuery=e,this.filterElm.value="",this.filterElm.dispatchEvent(new Event("keyup")))}destroy(){this.filterElm?.removeEventListener("keyup",this.onKeyup.bind(this)),this.filterElm?.remove()}setValues(e){e&&this.filterElm&&(this.filterElm.value=e)}onKeyup(e){let a=e?.target?.value??"";const u=this.gridOptions.enableFilterTrimWhiteSpace||this.columnFilter.enableTrimWhiteSpace;"string"==typeof a&&u&&(a=a.trim()),this._clearFilterTriggered?(this.callback(e,{columnDef:this.columnDef,clearFilterTriggered:this._clearFilterTriggered,shouldTriggerQuery:this._shouldTriggerQuery}),this.filterElm?.classList.remove("filled")):(""===a?this.filterElm?.classList.remove("filled"):this.filterElm?.classList.add("filled"),this.callback(e,{columnDef:this.columnDef,searchTerms:[a],shouldTriggerQuery:this._shouldTriggerQuery})),this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0}createFilterElement(e){const a=this.grid.getHeaderRowColumn(this.columnDef.id);if(a){a.innerHTML="";let u=this.gridOptions?.defaultFilterPlaceholder??"";this.columnFilter?.placeholder&&(u=this.columnFilter.placeholder),this.filterElm=document.createElement("input"),this.filterElm.type="text",this.filterElm.className="form-control search-filter",this.filterElm.placeholder=u,this.filterElm.value=`${e||""}`,this.filterElm.dataset.columnid=`${this.columnDef.id}`,a.appendChild(this.filterElm)}return this.filterElm}}function Dc(t,e){return Math.floor(Math.random()*(e-t+1)+t)}let wF=class{constructor(e,a){this.http=e,this.translate=a,this.title="Example 4: Client Side Sort/Filter",this.subTitle='\n Sort/Filter on client side only using SlickGrid DataView (Wiki docs)\n
\n
    \n
  • Support multi-sort (by default), hold "Shift" key and click on the next column to sort.
  • \n
  • All column types support the following operators: (>, >=, <, <=, <>, !=, =, ==, *)
  • \n
      \n
    • Example: >100 ... >=2001-01-01 ... >02/28/17
    • \n
    • Note: For filters to work properly (default is string), make sure to provide a FieldType (type is against the dataset, not the Formatter)
    • \n
    \n
  • Date Filters
  • \n
      \n
    • \n FieldType of dateUtc/date (from dataset) can use an extra option of "filterSearchType" to let user filter more easily.\n For example, in the "UTC Date" field below, you can type ">02/28/2017", also when dealing with UTC you have to take the time difference in consideration.\n
    • \n
    \n
  • On String filters, (*) can be used as startsWith (Hello* => matches "Hello Word") ... endsWith (*Doe => matches: "John Doe")
  • \n
  • Custom Filter are now possible, "Description" column below, is a customized InputFilter with different placeholder. See Wiki - Custom Filter\n
  • MultipleSelect & SingeSelect Filters can use a regular "collection" or "collectionAsync" to load it asynchronously
  • \n
\n ',this.columnDefinitions=[]}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,minWidth:55,type:F.string,filterable:!0,filter:{model:ie.compoundInputText}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,type:F.string,filter:{model:_L,enableTrimWhiteSpace:!0}},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:F.number,exportCsvForceToKeepAsString:!0,minWidth:55,filterable:!0,filter:{collectionAsync:this.http.get("assets/data/collection_500_numbers.json"),collectionFilterBy:[{property:"value",operator:re.notEqual,value:360},{property:"value",operator:re.notEqual,value:365}],collectionSortBy:{property:"value",sortDesc:!0,fieldType:F.number},customStructure:{value:"value",label:"label",optionLabel:"value",labelSuffix:"text"},collectionOptions:{separatorBetweenTextLabels:" ",filterResultAfterEachPass:"chain"},model:ie.multipleSelect,filterOptions:{maxHeight:250,width:175,useSelectOptionLabelToHtml:!0}}},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,minWidth:70,type:F.number,sortable:!0,filterable:!0,filter:{model:ie.compoundInputNumber}},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,minWidth:75,type:F.date,filterable:!0,filter:{model:ie.compoundDate}},{id:"usDateShort",name:"US Date Short",field:"usDateShort",sortable:!0,minWidth:70,width:70,type:F.dateUsShort,exportWithFormatter:!0,filterable:!0,filter:{model:ie.compoundDate}},{id:"utcDate",name:"UTC Date",field:"utcDate",formatter:G.dateTimeIsoAmPm,sortable:!0,minWidth:115,type:F.dateUtc,exportWithFormatter:!0,outputType:F.dateTimeIsoAmPm,filterable:!0,filter:{model:ie.compoundDate,filterOptions:{range:{date:"today"}}}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven.isEffort",minWidth:85,maxWidth:85,type:F.boolean,sortable:!0,exportCustomFormatter:G.complexObject,formatter:G.multiple,params:{formatters:[G.complexObject,G.checkmarkMaterial]},filterable:!0,filter:{collection:[{isEffort:"",label:""},{isEffort:!0,label:"True"},{isEffort:!1,label:"False"}],customStructure:{value:"isEffort",label:"label"},model:ie.singleSelect,filterOptions:{autoAdjustDropHeight:!0}}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableExcelExport:!0,enableExcelCopyBuffer:!0,enableFiltering:!0,i18n:this.translate,showCustomFooter:!0,presets:{filters:[{columnId:"duration",searchTerms:[10,98]},{columnId:"usDateShort",operator:"<",searchTerms:["4/20/25"]}],sorters:[{columnId:"duration",direction:"DESC"},{columnId:"complete",direction:"ASC"}]},externalResources:[new rl]},this.dataset=this.mockData(1500)}angularGridReady(e){this.angularGrid=e}mockData(e,a=0){const u=[];for(let i=a;i=",searchTerms:["2001-02-28"]}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"duration",direction:"ASC"},{columnId:"start",direction:"DESC"}])}refreshMetrics(e,a){a&&a.current>=0&&setTimeout(()=>{this.metrics={startTime:new Date,endTime:new Date,itemCount:a&&a.current||0,totalItemCount:this.dataset.length||0}})}scrollGridBottom(){this.angularGrid.slickGrid.navigateBottom()}scrollGridTop(){this.angularGrid.slickGrid.navigateTop()}static#e=this.ctorParameters=()=>[{type:xu},{type:it}]};wF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n \n Metrics: {{metrics.startTime | date: \'yyyy-MM-dd hh:mm aaaaa\\\'m\\\'\'}} | {{metrics.itemCount}} of\n {{metrics.totalItemCount}} items\n \n
\n \n \n
\n \n \n \n \n\n \n \n
'}),Nt("design:paramtypes",[xu,it])],wF);var The=W(728),Phe=W.n(The);let BF=class{constructor(){this.title="Example 15: Column Span & Header Grouping",this.subTitle="\n This example demonstrates how to easily span a row over multiple columns & how to group header titles.\n
    \n
  • Note that you can add Sort but remember that it will sort by the data which the row contains, even if the data is visually hidden by colspan it will still sort it
  • \n
  • \n Header Grouping spanning accross multiple columns is working but has some UI issues on window resize.\n If anyone can fix it, probably some CSS issues, please let us know.\n
  • \n
\n ",this.dataset1=[],this.dataset2=[]}ngOnInit(){this.prepareGrid1(),this.prepareGrid2()}angularGridReady2(e){this.angularGrid2=e,this.gridObj2=e.slickGrid}prepareGrid1(){this.columnDefinitions1=[{id:"title",name:"Title",field:"title",sortable:!0,columnGroup:"Common Factor"},{id:"duration",name:"Duration",field:"duration",columnGroup:"Common Factor"},{id:"start",name:"Start",field:"start",columnGroup:"Period"},{id:"finish",name:"Finish",field:"finish",columnGroup:"Period"},{id:"%",name:"% Complete",field:"percentComplete",selectable:!1,columnGroup:"Analysis"},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",type:F.boolean,columnGroup:"Analysis"}],this.gridOptions1={gridHeight:275,gridWidth:800,enableAutoResize:!1,enableCellNavigation:!0,enableSorting:!0,createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:28,explicitInitialization:!0,colspanCallback:this.renderDifferentColspan,gridMenu:{iconButtonContainer:"preheader"},enableExcelExport:!0,excelExportOptions:{exportWithFormatter:!1},externalResources:[new rl]},this.dataset1=this.getData(500)}prepareGrid2(){this.columnDefinitions2=[{id:"sel",name:"#",field:"num",behavior:"select",cssClass:"cell-selection",width:40,resizable:!1,selectable:!1},{id:"title",name:"Title",field:"title",sortable:!0,columnGroup:"Common Factor"},{id:"duration",name:"Duration",field:"duration",columnGroup:"Common Factor"},{id:"start",name:"Start",field:"start",columnGroup:"Period"},{id:"finish",name:"Finish",field:"finish",columnGroup:"Period"},{id:"%",name:"% Complete",field:"percentComplete",selectable:!1,columnGroup:"Analysis"},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",type:F.boolean,columnGroup:"Analysis"}],this.gridOptions2={gridHeight:275,gridWidth:800,enableCellNavigation:!0,createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:25,explicitInitialization:!0,frozenColumn:2,gridMenu:{hideClearFrozenColumnsCommand:!1},headerMenu:{hideFreezeColumnsCommand:!1},enableExcelExport:!0,excelExportOptions:{exportWithFormatter:!1},externalResources:[new rl]},this.dataset2=this.getData(500)}getData(e){const a=[];for(let u=0;u\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n

Grid 1 (with Header Grouping & Colspan)

\n \n \n\n
\n\n

Grid 2 (with Header Grouping & Frozen/Pinned Columns)

\n
\n \n \n
\n \n \n',styles:[Phe()]})],BF);var Ihe=W(257),Rhe=W.n(Ihe);function jK(t,e,a){let u;a={modalType:"edit",validationFailedMsg:"Some of the fields have failed validation",validationMsgPrefix:null,show:null,hide:null,position:null,destroy:null,formValues:{},editors:{},...a};const r=()=>{},o=h=>{const m=e[h],E=Du(m),v=m?.clientWidth??0,k=m?.clientHeight??0;return{top:E?.top??0,left:E?.left??0,bottom:(E?.top??0)+k,right:(E?.left??0)+v,width:v,height:k,visible:!0}};function d(h){const m=this;let E=[];m.getEditors=()=>E,m.destroy=()=>{let k=E.pop();for(;k;)k?.destroy(),k=E.pop();let x=e.pop();for(;x;)Ct(x),x?.remove(),x=e.pop();a?.destroy?.(),E=[],e=null},m.focus=()=>{(u||E[0]).focus()},m.isValueChanged=()=>{let k=0;for(;k{const k=[];let x=0;for(;x{let f=0;for(;f{let x=0;for(;x{let x;u=null;const f=[];let C=0;for(;C{let k=0;for(;k{let k=0;for(;k{a?.position?.(k)},function v(){let k={},x=0;for(;x{Array.isArray(E)&&E.length>0&&"function"==typeof E[0].focus&&E[0].focus()},0)}()}return d.prototype=this,d}const OK=t=>console.log(t.message);class Hhe{get eventHandler(){return this._eventHandler}get dataView(){return this.grid?.getData()}get dataViewLength(){return this.dataView.getLength()}get formValues(){return this._formValues}get editors(){return this._editors}set editors(e){this._editors=e}get gridOptions(){return this.grid?.getOptions()}constructor(){this._columnDefinitions=[],this._lastActiveRowNumber=-1,this._formValues=null,this.gridService=null,this._eventHandler=new Ot,this._bindEventService=new wi}init(e,a){if(this.grid=e,this.gridService=a.get("GridService"),this.translaterService=a.get("TranslaterService"),!this.gridService)throw new Error("[Slickgrid-Universal] it seems that the GridService is not being loaded properly, make sure the Container Service is properly implemented.");if(this.gridOptions.enableTranslate&&(!this.translaterService||!this.translaterService.translate))throw new Error('[Slickgrid-Universal] requires a Translate Service to be installed and configured when the grid option "enableTranslate" is enabled.');this._locales=this.gridOptions?.locales??ae.locales}dispose(){this._eventHandler.unsubscribeAll(),this._bindEventService.unbindAll(),this._formValues=null,this.disposeComponent()}disposeComponent(){this._modalBodyTopValidationElm?.remove(),this._modalSaveButtonElm?.remove(),"function"==typeof this._modalElm?.remove&&(this._modalElm.remove(),document.body.classList.remove("slick-modal-open")),this._editorContainers=[]}changeFormInputValue(e,a,u=!1,i=!0){const r=this.getColumnByObjectOrId(e),o="string"==typeof e?e:r?.id??"",d=this._editors?.[o];let h=a;if(!d&&!u)throw new Error(`Composite Editor with column id "${o}" not found.`);if("function"==typeof d?.setValue&&Array.isArray(this._editorContainers)){d.setValue(a,!0,i);const E=this._editorContainers.find(k=>k.dataset.editorid===o),v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;!d.disabled||d.disabled&&!v?E?.classList?.add("modified"):(h="",E?.classList?.remove("modified")),d.disabled&&(""!==h||null!==h||void 0!==h||0!==h)&&(h="")}const m=r?.field??"";if(r&&m?.includes(".")){const E=r.editor?.complexObjectPath??m??"";xr(this._formValues??{},E,a)}else this._formValues={...this._formValues,[o]:h}}changeFormValue(e,a){const u=this.getColumnByObjectOrId(e),i="string"==typeof e?e:u?.id??"",r=u?.field??e;if(r?.includes(".")){const o=u?.editor?.complexObjectPath??r??"";xr(this._formValues,o,a)}else this._formValues={...this._formValues,[i]:a};this._formValues=f3({},this._itemDataContext,this._formValues)}changeFormEditorOption(e,a,u){const i=this._editors?.[e];if(!i?.changeEditorOption)throw new Error(`Editor with column id "${e}" not found OR the Editor does not support "changeEditorOption" (current only available with AutoComplete, Date, MultipleSelect & SingleSelect Editors).`);i.changeEditorOption(a,u)}disableFormInput(e,a=!0){const u=this._editors?.[e];u?.disable&&Array.isArray(this._editorContainers)&&u.disable(a)}openDetails(e){const a=e.onError??OK,u={backdrop:"static",showCloseButtonOutside:!0,shouldClearRowSelectionAfterMassAction:!0,viewColumnLayout:"auto",modalType:"edit"};try{if(!this.grid||this.grid.getEditorLock().isActive()&&!this.grid.getEditorLock().commitCurrentEdit())return null;this._formValues=null,this._options={...u,...this.gridOptions.compositeEditorOptions,...e,labels:{...this.gridOptions.compositeEditorOptions?.labels,...e?.labels}},this._options.backdrop=void 0!==e.backdrop?e.backdrop:"static";const i=this._options.viewColumnLayout||1,r=this.grid.getActiveCell(),o=r?.cell??0,d=r?.row??0,h=this.grid.getUID()||"";let m=e.headerTitle||"";"function"==typeof this._options.onBeforeOpen&&this._options.onBeforeOpen(),this.hasRowSelectionEnabled()&&"auto-mass"===this._options.modalType&&this.grid.getSelectedRows&&((this.grid.getSelectedRows()||[]).length>0?(this._options.modalType="mass-selection",e?.headerTitleMassSelection&&(m=e?.headerTitleMassSelection)):(this._options.modalType="mass-update",e?.headerTitleMassUpdate&&(m=e?.headerTitleMassUpdate)));const E=this._options.modalType||"edit";if(!this.gridOptions.editable)return a({type:"error",code:"EDITABLE_GRID_REQUIRED",message:"Your grid must be editable in order to use the Composite Editor Modal."}),null;if(!this.gridOptions.enableCellNavigation)return a({type:"error",code:"ENABLE_CELL_NAVIGATION_REQUIRED",message:'Composite Editor requires the flag "enableCellNavigation" to be set to True in your Grid Options.'}),null;if(!this.gridOptions.enableAddRow&&("clone"===E||"create"===E))return a({type:"error",code:"ENABLE_ADD_ROW_REQUIRED",message:'Composite Editor requires the flag "enableAddRow" to be set to True in your Grid Options when cloning/creating a new item.'}),null;if(!r&&("clone"===E||"edit"===E))return a({type:"warning",code:"NO_RECORD_FOUND",message:"No records selected for edit or clone operation."}),null;{const v="mass-update"===E||"mass-selection"===E,k=v?{}:this.grid.getDataItem(d);this._originalDataContext=su(!0,{},k),this._columnDefinitions=this.grid.getColumns();const x=this.hasRowSelectionEnabled()?this.grid.getSelectedRows():[],f=this.dataView?.getItemCount()??0;this._lastActiveRowNumber=d;const C=this.dataView.getAllSelectedIds(),A="create"===E?this.dataViewLength:d;if(!this.focusOnFirstColumnCellWithEditor(this._columnDefinitions,k,o,A,v))return null;if("edit"===E&&!k)return a({type:"warning",code:"ROW_NOT_EDITABLE",message:"Current row is not editable."}),null;if("mass-selection"===E&&x.length<1)return a({type:"warning",code:"ROW_SELECTION_REQUIRED",message:"You must select some rows before trying to apply new value(s)."}),null;let z=[];z=v?this._columnDefinitions.filter(Pe=>Pe.editorClass&&!0===Pe.editor?.massUpdate):this._columnDefinitions.filter(Pe=>Pe.editorClass),z.some(Pe=>void 0!==Pe.editor?.compositeEditorFormOrder)&&z.sort((Pe,Ra)=>jj(Pe?.editor?.compositeEditorFormOrder??1/0,Ra?.editor?.compositeEditorFormOrder??1/0,eu.asc));const L=m.replace(/\{\{(.*?)\}\}/g,(Pe,Ra)=>Xu(k,Ra)),M="auto"===i?this.autoCalculateLayoutColumnCount(z.length):i;this._modalElm=T("div",{className:`slick-editor-modal ${h}`});const j=T("div",{className:"slick-editor-modal-content"});if(this.gridOptions?.darkMode&&j.classList.add("slick-dark-mode"),!isNaN(i)&&+i>1||"auto"===i&&M>1){const Pe=2===M?"split-view":"triple-split-view";j.classList.add(Pe)}const $=T("div",{className:"slick-editor-modal-title"});this.grid.applyHtmlCode($,L);const oe=T("button",{type:"button",ariaLabel:"Close",textContent:"\xd7",className:"close",dataset:{action:"close"}});this._options.showCloseButtonOutside&&($?.classList?.add("outside"),oe?.classList?.add("outside"));const ee=T("div",{ariaLabel:"Close",className:"slick-editor-modal-header"});ee.appendChild($),ee.appendChild(oe);const ne=T("div",{className:"slick-editor-modal-body"});this._modalBodyTopValidationElm=T("div",{className:"validation-summary",style:{display:"none"}},ne);const Ne=T("div",{className:"slick-editor-modal-footer"}),Ie=T("button",{type:"button",ariaLabel:this.getLabelText("cancelButton","TEXT_CANCEL","Cancel"),className:"btn btn-cancel btn-default btn-sm",textContent:this.getLabelText("cancelButton","TEXT_CANCEL","Cancel"),dataset:{action:"cancel"}});let Se="",ga="";switch(E){case"clone":ga=this.getLabelText("cloneButton","TEXT_CLONE","Clone");break;case"mass-update":const Pe=this.getLabelText("massUpdateStatus","TEXT_ALL_X_RECORDS_SELECTED","All {{x}} records selected");Se=this.parseText(Pe,{x:f}),ga=this.getLabelText("massUpdateButton","TEXT_APPLY_MASS_UPDATE","Mass Update");break;case"mass-selection":const Ra=this.getLabelText("massSelectionStatus","TEXT_X_OF_Y_MASS_SELECTED","{{x}} of {{y}} selected");Se=this.parseText(Ra,{x:C.length,y:f}),ga=this.getLabelText("massSelectionButton","TEXT_APPLY_TO_SELECTION","Update Selection");break;default:ga=this.getLabelText("saveButton","TEXT_SAVE","Save")}const _t=T("div",{className:"footer-status-text",textContent:Se});this._modalSaveButtonElm=T("button",{type:"button",className:"btn btn-save btn-primary btn-sm",ariaLabel:ga,textContent:ga,dataset:{action:"create"===E||"edit"===E?"save":E,ariaLabel:ga}});const ht=T("div",{className:"footer-buttons"});("mass-update"===E||"mass-selection"===E)&&Ne.appendChild(_t),ht.appendChild(Ie),ht.appendChild(this._modalSaveButtonElm),Ne.appendChild(ht),j.appendChild(ee),j.appendChild(ne),j.appendChild(Ne),this._modalElm.appendChild(j);for(const Pe of z)if(Pe.editorClass){const Ra=T("div",{className:`item-details-container editor-${Pe.id}`});1===M?Ra.classList.add("slick-col-medium-12"):Ra.classList.add("slick-col-medium-6","slick-col-xlarge-"+12/M);const au=T("div",{className:`item-details-label editor-${Pe.id}`});this.grid.applyHtmlCode(au,this.getColumnLabel(Pe)||"n/a");const ol=T("div",{className:"item-details-editor-container slick-cell",dataset:{editorid:`${Pe.id}`}}),Zi=T("div",{className:`item-details-validation editor-${Pe.id}`});if(this._options?.showResetButtonOnEachEditor){const Zn=this.createEditorResetButtonElement(`${Pe.id}`);this._bindEventService.bind(Zn,"click",this.handleResetInputValue.bind(this)),au.appendChild(Zn)}Ra.appendChild(au),Ra.appendChild(ol),Ra.appendChild(Zi),ne.appendChild(Ra)}if(this._options?.showFormResetButton){const Pe=this.createFormResetButtonElement();this._bindEventService.bind(Pe,"click",this.handleResetFormClicked.bind(this)),ne.appendChild(Pe)}document.body.appendChild(this._modalElm),document.body.classList.add("slick-modal-open"),this._bindEventService.bind(document.body,"click",this.handleBodyClicked.bind(this)),"function"==typeof this._options.onRendered&&this._options.onRendered(this._modalElm),this._editors={},this._editorContainers=z.map(Pe=>ne.querySelector(`[data-editorid=${Pe.id}]`))||[],this._compositeOptions={destroy:this.disposeComponent.bind(this),modalType:E,validationMsgPrefix:"* ",formValues:{},editors:this._editors};const Oa=new jK(z,this._editorContainers,this._compositeOptions);this.grid.editActiveCell(Oa),this._bindEventService.bind(oe,"click",this.cancelEditing.bind(this)),this._bindEventService.bind(Ie,"click",this.cancelEditing.bind(this)),this._bindEventService.bind(this._modalSaveButtonElm,"click",this.handleSaveClicked.bind(this)),this._bindEventService.bind(this._modalElm,"keydown",this.handleKeyDown.bind(this)),this._bindEventService.bind(this._modalElm,"focusout",this.validateCurrentEditor.bind(this)),this._bindEventService.bind(this._modalElm,"blur",this.validateCurrentEditor.bind(this)),this._eventHandler.subscribe(this.grid.onCompositeEditorChange,this.handleOnCompositeEditorChange.bind(this)),this._eventHandler.subscribe(this.grid.onAddNewRow,(Pe,Ra)=>{this._originalDataContext=this.insertNewItemInDataView(Ra.item)})}return this}catch(i){this.dispose();const r="string"==typeof i?i:i?.message??i?.body?.message??"";return a({type:"error",code:"string"==typeof i?i:i?.status??i?.body?.status??r,message:r}),null}}cancelEditing(){var e=this;return Au(function*(){let a=!0;e.formValues&&Object.keys(e.formValues).length>0&&"function"==typeof e._options.onClose&&(a=yield e._options.onClose()),a&&(e.grid.getEditController()?.cancelCurrentEdit(),("edit"===e._options?.modalType||"clone"===e._options?.modalType)&&e.resetCurrentRowDataContext(),e.grid.setActiveRow(e._lastActiveRowNumber),e.dispose())})()}showValidationSummaryText(e,a=""){e&&""!==a?(this._modalBodyTopValidationElm.textContent=a,this._modalBodyTopValidationElm.style.display="block",this._modalBodyTopValidationElm.scrollIntoView?.(),this._modalSaveButtonElm.disabled=!1,this._modalSaveButtonElm.classList.remove("saving")):(this._modalBodyTopValidationElm.style.display="none",this._modalBodyTopValidationElm.textContent=a)}applySaveMassUpdateChanges(e,a,u=!0){const i=u?this.dataView.getItems():su(!0,[],this.dataView.getItems());return Object.keys(e).forEach(r=>{r in e&&i.forEach(o=>{r in e&&(void 0===this._options?.validateMassUpdateChange||!1!==this._options.validateMassUpdateChange(r,o,e))&&(o[r]=e[r])})}),u&&(this.dataView.setItems(i,this.gridOptions.datasetIdPropertyName),this.grid.invalidate()),i}applySaveMassSelectionChanges(e,a,u=!0){const r=(a?.dataContextIds??[]).map(d=>this.dataView.getItemById(d)),o=u?r:su(!0,[],r);return Object.keys(e).forEach(d=>{d in e&&o.forEach(h=>{d in e&&(void 0===this._options?.validateMassUpdateChange||!1!==this._options.validateMassUpdateChange(d,h,e))&&(h[d]=e[d])})}),u&&this.gridService?.updateItems(o),o}autoCalculateLayoutColumnCount(e){return e>=15?3:e>=8?2:1}createEditorResetButtonElement(e){const a=T("button",{type:"button",name:e,ariaLabel:"Reset",title:this._options?.labels?.resetFormButton??"Reset Form Input",className:"btn btn-xs btn-editor-reset"});if(this._options?.resetEditorButtonCssClass){const u=Vt(this._options?.resetEditorButtonCssClass);for(const i of u)a.classList.add(i)}return a}createFormResetButtonElement(){const e=T("div",{className:"reset-container"}),a=T("button",{type:"button",className:"btn btn-sm reset-form"},e);return T("span",{className:this._options?.resetFormButtonIconCssClass??""},a),a.appendChild(document.createTextNode(" Reset Form")),e}executeOnError(e){(this._options?.onError??OK)(e)}executeOnSave(e,a,u,i){var r=this;return Au(function*(){try{if(r.showValidationSummaryText(!1,""),r.validateCompositeEditors().valid){if(r._modalSaveButtonElm.classList.add("saving"),r._modalSaveButtonElm.disabled=!0,"function"==typeof r._options?.onSave){const d="mass-update"===r._options.modalType||"mass-selection"===r._options.modalType;let h;d&&r._options?.shouldPreviewMassChangeDataset&&(h=e(r.formValues,r.getCurrentRowSelections(),!1));const m=d?h:i;(yield r._options?.onSave(r.formValues,r.getCurrentRowSelections(),m))&&(e(r.formValues,r.getCurrentRowSelections()),a())}else e(r.formValues,r.getCurrentRowSelections()),a();"function"==typeof u&&u(),r.dispose()}}catch(o){const d="string"==typeof o?o:o?.message??o?.body?.message??"";r.showValidationSummaryText(!0,d)}})()}focusOnFirstColumnCellWithEditor(e,a,u,i,r){const o=r&&!this.gridOptions.enableAddRow&&i>=this.dataViewLength?this.dataViewLength-1:i;let d=u;const h=e[u].editorClass;let m=this.grid.getCellNode(o,u);if(!h||!m||!this.getActiveCellEditor(o,u)){if(d=this.findNextAvailableEditorColumnIndex(e,a,i,r),-1===d)return this.executeOnError({type:"error",code:"NO_EDITOR_FOUND",message:"We could not find any Editor in your Column Definition"}),!1;this.grid.setActiveCell(o,d,!1),r&&this.grid.setActiveRow(this.dataViewLength,d,!0)}return m=this.grid.getCellNode(o,d),!!m}findNextAvailableEditorColumnIndex(e,a,u,i){let r=-1;for(let o=0;ou.id===e)),a}getActiveCellEditor(e,a){return this.grid.setActiveCell(e,a,!1),this.grid.getCellEditor()}getColumnLabel(e){const a=this.gridOptions.columnGroupSeparator||" - ";let u=e.nameCompositeEditor||e.name||"",i=e.columnGroup||"";if(this.gridOptions.enableTranslate&&this.translaterService){const o=e.nameCompositeEditorKey||e.nameKey;o&&(u=this.translaterService.translate(o)),e.columnGroupKey&&this.translaterService?.translate&&(i=this.translaterService.translate(e.columnGroupKey))}return hn(i?`${i}${a}${u}`:u,"innerHTML")}getLabelText(e,a,u){const i={...this.gridOptions.compositeEditorOptions?.labels,...this._options?.labels};if(this.gridOptions?.enableTranslate&&this.translaterService?.translate&&i.hasOwnProperty(`${e}Key`)){const r=i[`${e}Key`];return this.translaterService.translate(r||"")}return i?.[e]??this._locales?.[a]??u}getCurrentRowSelections(){const e=this.dataView.getAllSelectedIds();return{gridRowIndexes:this.dataView.mapIdsToRows(e),dataContextIds:e}}handleBodyClicked(e){e.target?.classList?.contains("slick-editor-modal")&&"static"!==this._options?.backdrop&&this.dispose()}handleKeyDown(e){"Escape"===e.code?(this.cancelEditing(),e.stopPropagation(),e.preventDefault()):"Tab"===e.code&&this.validateCurrentEditor()}handleResetInputValue(e){const a=e.target.name,u=this._editors?.[a];"function"==typeof u?.reset&&u.reset(),delete this._formValues?.[a]}handleMassSaving(e,a){var u=this;return Au(function*(){if(u.formValues&&0!==Object.keys(u.formValues).length){const i="mass-update"===e?"applySaveMassUpdateChanges":"applySaveMassSelectionChanges";u.executeOnSave(u[i].bind(u),a.bind(u))}else u.executeOnError({type:"warning",code:"NO_CHANGES_DETECTED",message:"Sorry we could not detect any changes."})})()}handleOnCompositeEditorChange(e,a){const u=a.column?.id??"";this._formValues={...this._formValues,...a.formValues};const i=this._editors?.[u],r=i?.isValueTouched?.()??i?.isValueChanged?.()??!1;this._itemDataContext=i?.dataContext??{};const o=this._modalElm.querySelector(`[data-editorid=${u}]`);o?.classList&&(r?o.classList.add("modified"):o.classList.remove("modified")),this.validateCompositeEditors()}hasRowSelectionEnabled(){const e=this.grid.getSelectionModel();return!(!this.gridOptions.enableRowSelection&&!this.gridOptions.enableCheckboxSelector||!e)}handleResetFormClicked(){for(const e of Object.keys(this._editors)){const a=this._editors[e];a?.reset&&a.reset()}this._formValues=Nj(this._formValues)}handleSaveClicked(){var e=this;return Au(function*(){const a=e._options?.modalType;switch(a){case"mass-update":e.handleMassSaving(a,()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveCell(0,0,!1),e._options.shouldClearRowSelectionAfterMassAction&&e.grid.setSelectedRows([])});break;case"mass-selection":e.handleMassSaving(a,()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveRow(e._lastActiveRowNumber),e._options.shouldClearRowSelectionAfterMassAction&&e.grid.setSelectedRows([])});break;case"clone":const u={...e._originalDataContext,...e.formValues},i=()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveCell(0,0,!1)};e.executeOnSave(e.insertNewItemInDataView.bind(e,u),i,e.resetCurrentRowDataContext.bind(e),u);break;default:let r=e.grid.getEditController()?.commitCurrentEdit();if(r&&"function"==typeof e._options?.onSave){const o="create"===a?e._originalDataContext:e.grid.getDataItem(e._lastActiveRowNumber);r=yield e._options?.onSave(e.formValues,e.getCurrentRowSelections(),o)}r&&e.dispose()}})()}insertNewItemInDataView(e){const a=this.dataView?.getItemCount()||0,u=this._options.insertNewId??a+1;return e[this.gridOptions.datasetIdPropertyName||"id"]=u,this.dataView.getItemById(u)?this.executeOnError({type:"error",code:"ITEM_ALREADY_EXIST",message:`The item object which you are trying to add already exist with the same Id:: ${u}`}):this.gridService?.addItem(e,this._options.insertOptions),e}parseText(e,a){return e.replace(/\{\{(.*?)\}\}/g,(u,i)=>void 0!==a[i]?a[i]:u)}resetCurrentRowDataContext(){const e=this.gridOptions.datasetIdPropertyName||"id";this.grid.getData().updateItem(this._originalDataContext[e],this._originalDataContext)}validateCompositeEditors(e){let a={valid:!0,msg:""};const u=this.grid.getCellEditor();return u&&(a=u.validate(e)),a}validateCurrentEditor(){const e=this.grid.getCellEditor();e?.validate&&e.validate()}}const Ghe=(t,e,a,u,i,r)=>(a=a??"",(r&&r.getOptions&&r.getOptions()).editable&&u.editor?{text:a,addClasses:"editable-field"}:a),Khe=(t,e)=>null!=t&&t.length||!(e.compositeEditorOptions&&"create"===e.compositeEditorOptions.modalType||"edit"===e.compositeEditorOptions.modalType)?/^(task\s\d+)*$/i.test(t)?{valid:!0,msg:""}:{valid:!1,msg:'Your title is invalid, it must start with "Task" followed by a number.'}:{valid:!1,msg:"This is a required field."};let SF=class{constructor(e){this.http=e,this._darkMode=!1,this.title="Example 30: Composite Editor Modal",this.subTitle='Composite Editor allows you to Create, Clone, Edit, Mass Update & Mass Selection Changes inside a nice Modal Window.\n
The modal is simply populated by looping through your column definition list and also uses a lot of the same logic as inline editing (see Composite Editor - Wiki.)',this.columnDefinitions=[],this.dataset=[],this.editQueue=[],this.editedItems={},this.isGridEditable=!0,this.isCompositeDisabled=!1,this.isMassSelectionDisabled=!0,this.cellCssStyleQueue=[],this.complexityLevelList=[{value:0,label:"Very Simple"},{value:1,label:"Simple"},{value:2,label:"Straightforward"},{value:3,label:"Complex"},{value:4,label:"Very Complex"}],this.compositeEditorInstance=new Hhe}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.prepareGrid(),this.dataset=this.loadData(500)}ngOnDestroy(){document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"}prepareGrid(){this.columnDefinitions=[{id:"title",name:' Title ',field:"title",sortable:!0,type:F.string,minWidth:75,cssClass:"text-uppercase fw-bold",columnGroup:"Common Factor",filterable:!0,filter:{model:ie.compoundInputText},editor:{model:qe.longText,massUpdate:!1,required:!0,alwaysSaveOnEnterKey:!0,maxLength:12,editorOptions:{cols:45,rows:6,buttonTexts:{cancel:"Close",save:"Done"}},validator:Khe}},{id:"duration",name:"Duration",field:"duration",sortable:!0,filterable:!0,minWidth:75,type:F.number,columnGroup:"Common Factor",formatter:(e,a,u)=>null==u||""===u?"":u>1?`${u} days`:`${u} day`,editor:{model:qe.float,massUpdate:!0,decimal:2,valueStep:1,minValue:0,maxValue:1e4,alwaysSaveOnEnterKey:!0,required:!0}},{id:"cost",name:"Cost",field:"cost",width:90,minWidth:70,sortable:!0,filterable:!0,type:F.number,columnGroup:"Analysis",filter:{model:ie.compoundInputNumber},formatter:G.dollar},{id:"percentComplete",name:"% Complete",field:"percentComplete",minWidth:100,type:F.number,sortable:!0,filterable:!0,columnGroup:"Analysis",filter:{model:ie.compoundSlider,operator:">="},editor:{model:qe.slider,massUpdate:!0,minValue:0,maxValue:100},customTooltip:{position:"center"}},{id:"complexity",name:"Complexity",field:"complexity",minWidth:100,type:F.number,sortable:!0,filterable:!0,columnGroup:"Analysis",formatter:(e,a,u)=>this.complexityLevelList[u]?.label,exportCustomFormatter:(e,a,u)=>this.complexityLevelList[u]?.label,filter:{model:ie.multipleSelect,collection:this.complexityLevelList},editor:{model:qe.singleSelect,collection:this.complexityLevelList,massUpdate:!0}},{id:"start",name:"Start",field:"start",sortable:!0,minWidth:100,formatter:G.dateUs,columnGroup:"Period",exportCustomFormatter:G.dateUs,type:F.date,outputType:F.dateUs,saveOutputType:F.dateUtc,filterable:!0,filter:{model:ie.compoundDate},editor:{model:qe.date,massUpdate:!0,editorOptions:{hideClearButton:!1}}},{id:"completed",name:"Completed",field:"completed",width:80,minWidth:75,maxWidth:100,cssClass:"text-center",columnGroup:"Period",formatter:G.checkmarkMaterial,exportWithFormatter:!1,filterable:!0,sortable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ie.singleSelect},editor:{model:qe.checkbox,massUpdate:!0}},{id:"finish",name:"Finish",field:"finish",sortable:!0,minWidth:100,formatter:G.dateUs,columnGroup:"Period",type:F.date,outputType:F.dateUs,saveOutputType:F.dateUtc,filterable:!0,filter:{model:ie.compoundDate},exportCustomFormatter:G.dateUs,editor:{model:qe.date,editorOptions:{range:{min:"today"}},massUpdate:!0,validator:(e,a)=>{const u=a&&a.item;return u&&u.completed&&!e?{valid:!1,msg:'You must provide a "Finish" date when "Completed" is checked.'}:{valid:!0,msg:""}}}},{id:"product",name:"Product",field:"product",filterable:!0,columnGroup:"Item",minWidth:100,exportWithFormatter:!0,dataKey:"id",labelKey:"itemName",formatter:G.complexObject,exportCustomFormatter:G.complex,type:F.object,sortComparer:L0.objectString,editor:{model:qe.autocompleter,alwaysSaveOnEnterKey:!0,massUpdate:!0,editorOptions:{minLength:1,fetch:(e,a)=>{a(this.mockProducts().filter(i=>i.itemName.toLowerCase().includes(e.toLowerCase())))},renderItem:{layout:"fourCorners",templateCallback:e=>this.renderItemCallbackWith4Corners(e)}}},filter:{model:ie.inputText,type:F.string,queryField:"product.itemName"}},{id:"origin",name:"Country of Origin",field:"origin",formatter:G.complexObject,columnGroup:"Item",exportCustomFormatter:G.complex,dataKey:"code",labelKey:"name",type:F.object,sortComparer:L0.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:qe.autocompleter,massUpdate:!0,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get("assets/data/countries.json"),editorOptions:{minLength:0}},filter:{model:ie.inputText,type:"string",queryField:"origin.name"}},{id:"action",name:"Action",field:"action",width:70,minWidth:70,maxWidth:70,excludeFromExport:!0,formatter:()=>'
',cellMenu:{hideCloseButton:!1,commandTitle:"Commands",commandItems:[{command:"edit",title:"Edit Row",iconCssClass:"mdi mdi-pencil",positionOrder:66,action:()=>this.openCompositeModal("edit")},{command:"clone",title:"Clone Row",iconCssClass:"mdi mdi-content-copy",positionOrder:66,action:()=>this.openCompositeModal("clone")},"divider",{command:"delete-row",title:"Delete Row",positionOrder:64,iconCssClass:"mdi mdi-close color-danger",cssClass:"red",textCssClass:"text-italic color-danger-light",itemVisibilityOverride:e=>!e.dataContext?.completed,action:(e,a)=>{const u=a.dataContext;confirm(`Do you really want to delete row (${(a?.row??0)+1}) with "${u.title}"`)&&this.angularGrid.gridService.deleteItemById(u.id)}}]}}],this.gridOptions={enableAddRow:!0,enableCellNavigation:!0,asyncEditorLoading:!1,autoEdit:!0,autoCommitEdit:!0,editable:!0,autoAddCustomEditorFormatter:Ghe,autoResize:{container:"#demo-container",rightPadding:10},darkMode:this._darkMode,enableAutoSizeColumns:!0,enableAutoResize:!0,showCustomFooter:!0,enablePagination:!0,pagination:{pageSize:10,pageSizes:[10,200,250,500,5e3]},enableExcelExport:!0,excelExportOptions:{exportWithFormatter:!1},externalResources:[new rl,new lF,this.compositeEditorInstance],enableFiltering:!0,rowSelectionOptions:{selectActiveRow:!1},createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:28,enableCheckboxSelector:!0,enableRowSelection:!0,multiSelect:!1,checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},enableCompositeEditor:!0,editCommandHandler:(e,a,u)=>{const i=Array.isArray(u.prevSerializedValue)?u.prevSerializedValue:[u.prevSerializedValue],r=Array.isArray(u.serializedValue)?u.serializedValue:[u.serializedValue],o=this.columnDefinitions.filter(h=>void 0!==h.editor),d=[];i.forEach((h,m)=>{const E=i[m],v=r[m];if(E!==v||""===v){const k=Array.isArray(u.prevSerializedValue)?o[m]:a;this.editedItems[this.gridOptions.datasetIdPropertyName||"id"]=e,this.angularGrid.slickGrid.invalidate(),u.execute(),this.renderUnsavedCellStyling(e,k,u),d.push(k)}}),this.editQueue.push({item:e,columns:d,editCommand:u})},enableCellMenu:!0,gridMenu:{hideToggleDarkModeCommand:!1,onCommand:(e,a)=>{"toggle-dark-mode"===a.command&&(this._darkMode=!this._darkMode,this.toggleBodyBackground())}}}}loadData(e){const a=[];for(let u=0;u100?u>5?100:88:v,x=100===k;a[u]={id:u,title:"Task "+u,duration:Math.floor(100*Math.random())+10,percentComplete:k,analysis:{percentComplete:k},complexity:u%3?0:2,start:new Date(r,d,h,h,m,m,m),finish:x||u%3==0&&E>new Date&&u>3?x?new Date:E:"",cost:u%33==0?null:Math.round(1e4*Math.random())/100,completed:x||u%3==0&&E>new Date&&u>3,product:{id:this.mockProducts()[i]?.id,itemName:this.mockProducts()[i]?.itemName},origin:u%2?{code:"CA",name:"Canada"}:{code:"US",name:"United States"}},u%8||(delete a[u].finish,delete a[u].percentComplete)}return a}handleValidationError(e,a){if(a.validationResults){let u=a.validationResults.msg||"";if(a.editor&&a.editor instanceof jK){if(a.validationResults.errors){u+="\n";for(const i of a.validationResults.errors){u+=`${i.editor.args.column.name.toUpperCase()}: ${i.msg}`}}console.log(u)}}else alert(a.validationResults.msg);return!1}handleItemDeleted(e){console.log("item deleted with id:",e)}handleOnBeforeEditCell(e,a){const{column:u,item:i,grid:r}=a;return!(u&&i&&!function Ohe(t,e,a){const u=a?.getOptions(),i=e.editor;let o=!(!u.editable||!i);t&&e&&u&&u.editable&&"finish"===e.id&&(o=!!t?.completed);return o}(i,u,r))||(e.preventDefault(),!1)}handleOnCellChange(e,a){const u=a?.item;u&&!u.completed&&(u.finish=null,this.angularGrid.gridService.updateItem(u))}handleOnCellClicked(e,a){console.log(e,a)}handleOnCompositeEditorChange(e,a){const u=a.column,i=a.formValues;"percentComplete"===u.id&&100===i.percentComplete&&(this.compositeEditorInstance.changeFormInputValue("completed",!0),this.compositeEditorInstance.changeFormInputValue("finish",new Date))}handleReRenderUnsavedStyling(){this.removeAllUnsavedStylingFromCell(),this.renderUnsavedStylingOnAllVisibleCells()}handleOnGridStateChanged(e){Array.isArray(e.gridState?.rowSelection?.dataContextIds)&&(this.isMassSelectionDisabled=0===e.gridState?.rowSelection?.dataContextIds.length)}openCompositeModal(e){let a="";switch(e){case"create":a="Inserting New Task";break;case"clone":a="Clone - {{title}}";break;case"edit":a='Editing - {{title}} (id: {{id}})';break;case"mass-update":a="Mass Update All Records";break;case"mass-selection":a="Update Selected Records"}this.compositeEditorInstance?.openDetails({headerTitle:a,modalType:e,insertOptions:{highlightRow:!1},showFormResetButton:!0,resetFormButtonIconCssClass:"mdi mdi-undo",onClose:()=>Promise.resolve(confirm("You have unsaved changes, are you sure you want to close this window?")),onError:u=>alert(u.message),onRendered:u=>{u.dataset.bsTheme=this._darkMode?"dark":"light"},onSave:(u,i,r)=>"mass-update"===e||"mass-selection"===e?new Promise((d,h)=>{setTimeout(()=>{u.percentComplete>=50?d(!0):h("Unfortunately we only accept a minimum of 50% Completion...")},50)}):(console.log(`${e} item data context`,r),new Promise(d=>setTimeout(()=>d(!0),50)))})}toggleGridEditReadonly(){this.undoAllEdits(),this.isGridEditable=!this.isGridEditable,this.isCompositeDisabled=!this.isGridEditable,this.isGridEditable||(this.isMassSelectionDisabled=!0),this.angularGrid.slickGrid.setOptions({editable:this.isGridEditable})}removeUnsavedStylingFromCell(e,a,u){const i=`unsaved_highlight_${[a.id]}${u}`;this.angularGrid.slickGrid.removeCellCssStyles(i);const r=this.cellCssStyleQueue.findIndex(o=>o===i);r>=0&&this.cellCssStyleQueue.splice(r,1)}removeAllUnsavedStylingFromCell(){for(const e of this.cellCssStyleQueue)this.angularGrid.slickGrid.removeCellCssStyles(e);this.cellCssStyleQueue=[]}renderUnsavedStylingOnAllVisibleCells(){for(const e of this.editQueue)if(e){const{item:a,columns:u,editCommand:i}=e;Array.isArray(u)&&u.forEach(r=>{this.renderUnsavedCellStyling(a,r,i)})}}renderUnsavedCellStyling(e,a,u){if(u&&e&&a){const i=this.angularGrid.dataView?.getRowByItem(e);if(void 0!==i&&i>=0){const r={[i]:{[a.id]:"unsaved-editable-field"}},o=`unsaved_highlight_${[a.id]}${i}`;this.angularGrid.slickGrid.setCellCssStyles(o,r),this.cellCssStyleQueue.push(o)}}}saveAll(){console.log(this.editQueue),console.log(this.editedItems),this.removeAllUnsavedStylingFromCell(),this.editQueue=[],this.editedItems={}}undoLastEdit(e=!1){const a=this.editQueue.pop(),u=a?.editCommand;if(a&&u&&Gs.cancelCurrentEdit()){u.undo();for(const i of a.columns)this.removeUnsavedStylingFromCell(a.item,i,u.row);this.angularGrid.slickGrid.invalidate(),e&&this.angularGrid.slickGrid.gotoCell(u.row,u.cell,!1)}}undoAllEdits(){for(const e of this.editQueue){const a=e?.editCommand;if(a&&Gs.cancelCurrentEdit()){a.undo();for(const u of e.columns)this.removeUnsavedStylingFromCell(e.item,u,a.row)}}this.angularGrid.slickGrid.invalidate(),this.editQueue=[]}toggleDarkMode(){this._darkMode=!this._darkMode,this.toggleBodyBackground(),this.angularGrid.slickGrid?.setOptions({darkMode:this._darkMode})}toggleBodyBackground(){this._darkMode?(document.querySelector(".panel-wm-content").classList.add("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="dark"):(document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light")}mockProducts(){return[{id:0,itemName:"Sleek Metal Computer",itemNameTranslated:"some fantastic sleek metal computer description",listPrice:2100.23,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:this.getRandomIcon(0)},{id:1,itemName:"Tasty Granite Table",itemNameTranslated:"an extremely huge and heavy table",listPrice:3200.12,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:this.getRandomIcon(1)},{id:2,itemName:"Awesome Wooden Mouse",itemNameTranslated:"super old mouse",listPrice:15,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:this.getRandomIcon(2)},{id:3,itemName:"Gorgeous Fresh Shirt",itemNameTranslated:"what a gorgeous shirt seriously",listPrice:25.76,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:this.getRandomIcon(3)},{id:4,itemName:"Refined Cotton Table",itemNameTranslated:"super light table that will fall apart amazingly fast",listPrice:13.35,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:this.getRandomIcon(4)},{id:5,itemName:"Intelligent Wooden Pizza",itemNameTranslated:"wood not included",listPrice:23.33,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:this.getRandomIcon(5)},{id:6,itemName:"Licensed Cotton Chips",itemNameTranslated:"not sure what that is",listPrice:71.21,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:this.getRandomIcon(6)},{id:7,itemName:"Ergonomic Rubber Soap",itemNameTranslated:"so good you'll want to use it every night",listPrice:2.43,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:this.getRandomIcon(7)},{id:8,itemName:"Handcrafted Steel Car",itemNameTranslated:"aka tesla truck",listPrice:31288.39,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:this.getRandomIcon(8)}]}getRandomIcon(e){const a=["mdi-arrow-collapse","mdi-arrow-expand","mdi-cancel","mdi-check","mdi-checkbox-blank-outline","mdi-check-box-outline","mdi-checkbox-marked","mdi-close","mdi-close-circle","mdi-close-circle-outline","mdi-close-thick","mdi-content-copy","mdi-database-refresh","mdi-download","mdi-file-document-outline","mdi-file-excel-outline","mdi-file-music-outline","mdi-file-pdf-outline","mdi-filter-remove-outline","mdi-flip-vertical","mdi-folder","mdi-folder-open","mdi-help-circle","mdi-help-circle-outline","mdi-history","mdi-information","mdi-information-outline","mdi-link","mdi-link-variant","mdi-menu","mdi-microsoft-excel","mdi-minus","mdi-page-first","mdi-page-last","mdi-paperclip","mdi-pin-off-outline","mdi-pin-outline","mdi-playlist-plus","mdi-playlist-remove","mdi-plus","mdi-redo","mdi-refresh","mdi-shape-square-plus","mdi-sort-ascending","mdi-sort-descending","mdi-swap-horizontal","mdi-swap-vertical","mdi-sync","mdi-table-edit","mdi-table-refresh","mdi-undo"],u=Math.floor(Math.random()*a.length-1);return a[e??u]}renderItemCallbackWith2Rows(e){return`
\n
\n \x3c!----\x3e\n \n
\n
\n \n \n ${e.itemName}\n \n
\n
\n
\n
${e.itemNameTranslated}
\n
`}renderItemCallbackWith4Corners(e){return`
\n
\n \x3c!----\x3e\n \n
\n
\n \n \n ${e.itemName}\n \n ${Bu(e.listPrice,2,2,!1,"$")}\n
\n
\n
\n
${e.itemNameTranslated}
\n Type: ${"I"===e.itemTypeName?"Item":"C"===e.itemTypeName?"PdCat":"Cat"}\n
`}static#e=this.ctorParameters=()=>[{type:xu}]};SF=Ye([xa({template:'
\n

\n {{title}}\n \n \n \n code\n \n \n

\n
\n\n
\n
\n \n \n \n \n \n
\n
\n\n
\n
\n \n \n \n \n \n
\n
\n\n \n \n
',encapsulation:Tt.None,styles:[Rhe()]}),Nt("design:paramtypes",[xu])],SF);var Uhe=W(998),Jhe=W.n(Uhe);const Zhe=(t,e,a,u,i)=>3===i.priority?'
Action
':'
Action
',$he=(t,e,a,u,i)=>{if(!a)return"";let r="";const o=+(a>=3?3:a),h=``;for(let m=1;m<=o;m++)r+=h;return r},qhe=(t,e,a,u,i,r)=>{if(!a)return"";const d=r.getOptions().i18n,h=+(a>=3?3:a),m=3===h?"HIGH":2===h?"MEDIUM":"LOW";return d&&d.instant&&d.instant(m)},Yhe=(t,e,a,u,i,r)=>{const d=r.getOptions().i18n;return d&&d.instant&&d.instant("TASK_X",{x:a})};let zF=class{constructor(e){this.translate=e,this.title="Example 26: Cell Menu & Context Menu Plugins",this.subTitle='Add Cell Menu and Context Menu\n
    \n
  • This example demonstrates 2 SlickGrid plugins\n
      \n
    1. Using the Slick.Plugins.CellMenu plugin, often used for an Action Menu(s), 1 or more per grid\n (Wiki docs).\n
    2. \n
    3. Using the Slick.Plugins.ContextMenu plugin, shown after a mouse right+click, only 1 per grid.\n (Wiki docs).\n
    4. \n
    \n
  • It will also "autoAdjustDrop" (bottom/top) and "autoAlignSide" (left/right) by default but could be turned off
  • \n
  • Both plugins have 2 sections, 1st section can have an array of Options (to change value of a field) and 2nd section an array of Commands (execute a command)
  • \n
  • There are 2 ways to execute a Command/Option
  • \n
      \n
    1. via onCommand/onOptionSelected (use a switch/case to parse command/option and do something with it)
    2. \n
    3. via action callback (that can be defined on each command/option)
    4. \n
    \n
  • Use override callback functions to change the properties of show/hide, enable/disable the menu or certain item(s) from the list
  • \n
      \n
    1. These callbacks are: "menuUsabilityOverride", "itemVisibilityOverride", "itemUsabilityOverride"
    2. \n
    3. ... e.g. in the demo, the "Action" Cell Menu is only available when Priority is set to "High" via "menuUsabilityOverride"
    4. \n
    5. ... e.g. in the demo, the Context Menu is only available on the first 20 Tasks via "menuUsabilityOverride"
    6. \n
    \n
',this._darkModeGrid=!1,this.subscriptions=[];this.translate.use("en"),this.selectedLanguage="en"}angularGridReady(e){this.angularGrid=e}get cellMenuInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(oa.cellMenu)}get contextMenuInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(oa.contextMenu)}ngOnInit(){this.prepareGrid(),this.dataset=this.getData(1e3)}ngOnDestroy(){kc(this.subscriptions),document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"}prepareGrid(){this.columnDefinitions=[{id:"id",name:"#",field:"id",maxWidth:45,sortable:!0,filterable:!0},{id:"title",name:"Title",field:"id",nameKey:"TITLE",minWidth:100,formatter:Yhe,sortable:!0,filterable:!0,params:{useFormatterOuputToFilter:!0}},{id:"percentComplete",nameKey:"PERCENT_COMPLETE",field:"percentComplete",minWidth:100,exportWithFormatter:!1,sortable:!0,filterable:!0,filter:{model:ie.slider,operator:">="},formatter:G.percentCompleteBar,type:F.number},{id:"start",name:"Start",field:"start",nameKey:"START",minWidth:100,formatter:G.dateIso,outputType:F.dateIso,type:F.date,filterable:!0,filter:{model:ie.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:G.dateIso,outputType:F.dateIso,type:F.date,minWidth:100,filterable:!0,filter:{model:ie.compoundDate}},{id:"priority",nameKey:"PRIORITY",field:"priority",exportCustomFormatter:qhe,formatter:$he,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:1,labelKey:"LOW"},{value:2,labelKey:"MEDIUM"},{value:3,labelKey:"HIGH"}],model:ie.singleSelect,enableTranslateLabel:!0}},{id:"completed",nameKey:"COMPLETED",field:"completed",exportCustomFormatter:G.translateBoolean,formatter:G.checkmarkMaterial,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,labelKey:"TRUE"},{value:!1,labelKey:"FALSE"}],model:ie.singleSelect,enableTranslateLabel:!0}},{id:"action",name:"Action",field:"action",width:100,maxWidth:110,excludeFromExport:!0,formatter:Zhe,cellMenu:{hideCloseButton:!1,menuUsabilityOverride:e=>3===e.dataContext.priority,commandTitleKey:"COMMANDS",commandItems:[{command:"command2",title:"Command 2",positionOrder:62,action:(e,a)=>{console.log(a.dataContext,a.column)},itemUsabilityOverride:e=>!e.dataContext.completed},{command:"command1",title:"Command 1",cssClass:"orange",positionOrder:61},{command:"delete-row",titleKey:"DELETE_ROW",positionOrder:64,iconCssClass:"mdi mdi-close",cssClass:"red",textCssClass:"bold",itemVisibilityOverride:e=>!e.dataContext.completed},{divider:!0,command:"",positionOrder:63},{command:"help",titleKey:"HELP",iconCssClass:"mdi mdi-help-circle",positionOrder:66},{command:"something",titleKey:"DISABLED_COMMAND",disabled:!0,positionOrder:67},{command:"",divider:!0,positionOrder:98},{command:"export",title:"Exports",positionOrder:99,commandItems:[{command:"exports-txt",title:"Text (tab delimited)"},{command:"sub-menu",title:"Excel",cssClass:"green",subMenuTitle:"available formats",subMenuTitleCssClass:"text-italic orange",commandItems:[{command:"exports-csv",title:"Excel (csv)"},{command:"exports-xlsx",title:"Excel (xlsx)"}]}]},{command:"feedback",title:"Feedback",positionOrder:100,commandItems:[{command:"request-update",title:"Request update from supplier",iconCssClass:"mdi mdi-star",tooltip:"this will automatically send an alert to the shipping team to contact the user for an update"},"divider",{command:"sub-menu",title:"Contact Us",iconCssClass:"mdi mdi-account",subMenuTitle:"contact us...",subMenuTitleCssClass:"italic",commandItems:[{command:"contact-email",title:"Email us",iconCssClass:"mdi mdi-pencil-outline"},{command:"contact-chat",title:"Chat with us",iconCssClass:"mdi mdi-message-text-outline"},{command:"contact-meeting",title:"Book an appointment",iconCssClass:"mdi mdi-coffee"}]}]}],optionTitleKey:"CHANGE_COMPLETED_FLAG",optionItems:[{option:!0,titleKey:"TRUE",iconCssClass:"mdi mdi-check-box-outline"},{option:!1,titleKey:"FALSE",iconCssClass:"mdi mdi-checkbox-blank-outline"},{option:null,title:"null",cssClass:"italic",action:(e,a)=>{},itemUsabilityOverride:e=>3===e.dataContext.priority,itemVisibilityOverride:e=>!e.dataContext.completed}]}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},darkMode:this._darkModeGrid,enableCellNavigation:!0,enableFiltering:!0,enableSorting:!0,enableTranslate:!0,enableExcelExport:!0,excelExportOptions:{exportWithFormatter:!0,customColumnWidth:15,columnHeaderStyle:{font:{bold:!0,italic:!0}}},i18n:this.translate,externalResources:[new rl],enableContextMenu:!0,enableCellMenu:!0,cellMenu:{onCommand:(e,a)=>this.executeCommand(e,a),onOptionSelected:(e,a)=>{const u=a&&a.dataContext;u&&u.hasOwnProperty("completed")&&(u.completed=a.item.option,this.angularGrid.gridService.updateItem(u))},onBeforeMenuShow:(e,a)=>{console.log("Before the Cell Menu is shown",a)},onBeforeMenuClose:(e,a)=>console.log("Cell Menu is closing",a)},contextMenu:this.getContextMenuOptions()}}executeCommand(e,a){a.column;const i=a.command,r=a.dataContext;switch(i){case"contact-email":case"contact-chat":case"contact-meeting":alert("Command: "+a?.command);break;case"exports-csv":case"exports-txt":case"exports-xlsx":alert(`Exporting as ${a.item.title}`);break;case"command1":alert("Command 1");break;case"command2":alert("Command 2");break;case"help":alert("Please help!");break;case"delete-row":confirm(`Do you really want to delete row ${a.row+1} with ${this.translate.instant("TASK_X",{x:r.id})}`)&&this.angularGrid.dataView.deleteItem(r.id)}}getData(e){const a=[];for(let u=0;u(e&&e.dataContext).id<21,commandShownOverColumnIds:["id","title","percentComplete","start","finish","completed"],commandTitleKey:"COMMANDS",commandItems:[{divider:!0,command:"",positionOrder:61},{command:"delete-row",titleKey:"DELETE_ROW",iconCssClass:"mdi mdi-close",cssClass:"red",textCssClass:"bold",positionOrder:62},{divider:!0,command:"",positionOrder:63},{command:"help",titleKey:"HELP",iconCssClass:"mdi mdi-help-circle",positionOrder:64,action:(e,a)=>{},itemVisibilityOverride:e=>!(e&&e.dataContext).completed},{command:"something",titleKey:"DISABLED_COMMAND",disabled:!0,positionOrder:65},{command:"",divider:!0,positionOrder:98},{command:"export",title:"Exports",positionOrder:99,commandItems:[{command:"exports-txt",title:"Text (tab delimited)"},{command:"sub-menu",title:"Excel",cssClass:"green",subMenuTitle:"available formats",subMenuTitleCssClass:"text-italic orange",commandItems:[{command:"exports-csv",title:"Excel (csv)"},{command:"exports-xlsx",title:"Excel (xlsx)"}]}]},{command:"feedback",title:"Feedback",positionOrder:100,commandItems:[{command:"request-update",title:"Request update from supplier",iconCssClass:"mdi mdi-star",tooltip:"this will automatically send an alert to the shipping team to contact the user for an update"},"divider",{command:"sub-menu",title:"Contact Us",iconCssClass:"mdi mdi-account",subMenuTitle:"contact us...",subMenuTitleCssClass:"italic",commandItems:[{command:"contact-email",title:"Email us",iconCssClass:"mdi mdi-pencil-outline"},{command:"contact-chat",title:"Chat with us",iconCssClass:"mdi mdi-message-text-outline"},{command:"contact-meeting",title:"Book an appointment",iconCssClass:"mdi mdi-coffee"}]}]}],optionTitleKey:"CHANGE_PRIORITY",optionShownOverColumnIds:["priority"],optionItems:[{option:0,title:"n/a",textCssClass:"italic",itemUsabilityOverride:e=>!(e&&e.dataContext).completed,action:(e,a)=>{}},{option:1,iconCssClass:"mdi mdi-star-outline yellow",titleKey:"LOW"},{option:2,iconCssClass:"mdi mdi-star orange",titleKey:"MEDIUM"},{option:3,iconCssClass:"mdi mdi-star red",titleKey:"HIGH"},"divider",{option:4,title:"Extreme",iconCssClass:"mdi mdi-fire",disabled:!0,itemVisibilityOverride:e=>!(e&&e.dataContext).completed},{option:null,title:"Sub-Options (demo)",subMenuTitleKey:"CHANGE_PRIORITY",optionItems:[{option:1,iconCssClass:"mdi mdi-star-outline yellow",titleKey:"LOW"},{option:2,iconCssClass:"mdi mdi-star orange",titleKey:"MEDIUM"},{option:3,iconCssClass:"mdi mdi-star red",titleKey:"HIGH"}]}],onBeforeMenuShow:(e,a)=>{this.angularGrid.slickGrid.setActiveCell(a.row,a.cell,!1),console.log("Before the global Context Menu is shown",a)},onBeforeMenuClose:(e,a)=>console.log("Global Context Menu is closing",a),onCommand:(e,a)=>this.executeCommand(e,a),onOptionSelected:(e,a)=>{const u=a&&a.dataContext;u?.hasOwnProperty("priority")&&(u.priority=a.item.option,this.angularGrid.gridService.updateItem(u))}}}showContextCommandsAndOptions(e){const a=e?[]:["id","title","complete","start","finish","completed","action"];this.contextMenuInstance?.setOptions({commandShownOverColumnIds:a})}showCellMenuCommandsAndOptions(e){this.cellMenuInstance?.setOptions({hideOptionSection:!e})}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}toggleDarkMode(){this._darkModeGrid=!this._darkModeGrid,this._darkModeGrid?(document.querySelector(".panel-wm-content").classList.add("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="dark"):(document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"),this.angularGrid.slickGrid?.setOptions({darkMode:this._darkModeGrid})}static#e=this.ctorParameters=()=>[{type:it}]};zF=Ye([xa({template:'
\n

\n {{title}}\n \n \n \n code\n \n \n

\n
\n\n
\n
\n \n Context Menu:\n \n \n \n\n \n Cell Menu:\n \n \n \n
\n
\n
\n
\n \n Locale:\n \n {{selectedLanguage + \'.json\'}}\n \n
\n
\n\n
\n \n \n
\n
',encapsulation:Tt.None,styles:[Jhe()]}),Nt("design:paramtypes",[it])],zF);var Xhe=W(999),eme=W.n(Xhe);let MF=class{constructor(){this.title="Example 32: Regular & Custom Tooltips",this.subTitle='\n This demo shows how to create Regular & Custom Tooltips (Wiki docs)\n
\n
    \n
  • optionally parse regular [title] attributes and transform them into tooltips
  • \n
  • create your own Custom Tooltip via a Custom Formatter
  • \n
  • create an Async Custom Tooltip (Promise/Observable) to allowing fetching data from an API
  • \n
  • optionally add Custom Tooltip on Column Header & Column Header-Row (filters)
  • \n
\n ',this.editCommandQueue=[],this.serverApiDelay=500}ngOnInit(){this.initializeGrid(),this.dataset=this.loadData(500)}angularGridReady(e){this.angularGrid=e}initializeGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:F.string,editor:{model:qe.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},filterable:!0,customTooltip:{position:"right-align",formatter:()=>'
loading...
',asyncProcess:()=>new Promise(e=>{setTimeout(()=>e({ratio:10*Math.random()/10,lifespan:100*Math.random()}),this.serverApiDelay)}),asyncPostFormatter:this.tooltipTaskAsyncFormatter}},{id:"duration",name:"Duration",field:"duration",sortable:!0,filterable:!0,editor:{model:qe.float,decimal:2,valueStep:1,maxValue:1e4,alwaysSaveOnEnterKey:!0},formatter:(e,a,u)=>u>1?`${u} days`:`${u} day`,type:F.number},{id:"desc",name:"Description",field:"description",width:100,filterable:!0,editor:{model:qe.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},formatter:(e,a,u,i,r)=>`${u||""}`,customTooltip:{useRegularTooltip:!0,useRegularTooltipFromCellTextOnly:!0}},{id:"desc2",name:"Description 2",field:"description",width:100,filterable:!0,editor:{model:qe.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},formatter:(e,a,u,i,r)=>`${u||""}`,customTooltip:{useRegularTooltip:!0,useRegularTooltipFromFormatterOnly:!0}},{id:"cost",name:'Cost',field:"cost",width:90,sortable:!0,filterable:!0,formatter:G.multiple,params:{formatters:[G.dollar,(e,a,u)=>`${u||""}`]},customTooltip:{useRegularTooltip:!0,useRegularTooltipFromFormatterOnly:!0},type:F.number},{id:"percentComplete",name:"% Complete",field:"percentComplete",type:F.number,editor:{model:qe.slider,minValue:0,maxValue:100},formatter:G.percentCompleteBar,sortable:!0,filterable:!0,filter:{model:ie.slider,operator:">="},customTooltip:{position:"center",formatter:(e,a,u)=>"string"==typeof u&&u.includes("%")?u:`${u}%`,headerFormatter:void 0,headerRowFormatter:void 0}},{id:"start",name:"Start",field:"start",sortable:!0,type:F.date,outputType:F.dateIso,filterable:!0,filter:{model:ie.compoundDate},formatter:G.dateIso,editor:{model:qe.date},customTooltip:{formatter:()=>"",asyncProcess:()=>new Promise(e=>{setTimeout(()=>e({}),this.serverApiDelay)}),asyncPostFormatter:this.tooltipFormatter.bind(this)}},{id:"finish",name:"Finish",field:"finish",sortable:!0,editor:{model:qe.date,editorOptions:{range:{min:"today"}}},type:F.date,outputType:F.dateIso,formatter:G.dateIso,filterable:!0,filter:{model:ie.dateRange},disableTooltip:!0},{id:"effortDriven",name:"Effort Driven",field:"effortDriven",width:80,minWidth:20,maxWidth:100,cssClass:"cell-effort-driven",sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ie.singleSelect},exportWithFormatter:!1,formatter:G.checkmarkMaterial},{id:"prerequisites",name:"Prerequisites",field:"prerequisites",filterable:!0,formatter:(e,a,u)=>{if(u&&Array.isArray(u)){const i=u.map(r=>`Task ${r}`).join(", ");return`${i}`}return""},customTooltip:{useRegularTooltip:!0,maxWidth:500},exportWithFormatter:!0,sanitizeDataExport:!0,minWidth:100,sortable:!0,type:F.string,editor:{collectionAsync:new Promise(e=>{setTimeout(()=>{e(Array.from(Array(this.dataset.length).keys()).map(a=>({value:a,label:a,prefix:"Task",suffix:"days"})))},500)}),customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:qe.multipleSelect},filter:{collectionAsync:new Promise(e=>{setTimeout(()=>{e(Array.from(Array(this.dataset.length).keys()).map(a=>({value:a,label:`Task ${a}`})))})}),customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:ie.multipleSelect,operator:re.inContains}},{id:"action",name:"Action",field:"action",width:70,minWidth:70,maxWidth:70,formatter:()=>'
',excludeFromExport:!0,cellMenu:{hideCloseButton:!1,commandTitle:"Commands",commandItems:[{command:"command2",title:"Command 2",positionOrder:62,action:(e,a)=>{console.log(a.dataContext,a.column)},itemUsabilityOverride:e=>!e.dataContext.completed},{command:"command1",title:"Command 1",cssClass:"orange",positionOrder:61},{command:"delete-row",title:"Delete Row",positionOrder:64,iconCssClass:"mdi mdi-close",cssClass:"red",textCssClass:"bold",itemVisibilityOverride:e=>!e.dataContext.completed},{divider:!0,command:"",positionOrder:63},{command:"help",title:"Help",iconCssClass:"mdi mdi-help-circle-outline",positionOrder:66},{command:"something",title:"Disabled Command",disabled:!0,positionOrder:67}]}}],this.gridOptions={autoEdit:!0,autoCommitEdit:!0,editable:!0,autoResize:{container:"#demo-container"},enableAutoSizeColumns:!0,enableAutoResize:!0,enableCellNavigation:!0,enableExcelExport:!0,excelExportOptions:{exportWithFormatter:!0},externalResources:[new lF,new rl],customTooltip:{formatter:this.tooltipFormatter.bind(this),headerFormatter:this.headerFormatter,headerRowFormatter:this.headerRowFormatter,usabilityOverride:e=>0!==e.cell&&"action"!==e?.column?.id},presets:{filters:[{columnId:"prerequisites",searchTerms:[1,3,5,7,9,12,15,18,21,25,28,29,30,32,34]}]},rowHeight:33,enableFiltering:!0,rowSelectionOptions:{selectActiveRow:!1},showCustomFooter:!0,enableCheckboxSelector:!0,enableRowSelection:!0,checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},editCommandHandler:(e,a,u)=>{this.editCommandQueue.push(u),u.execute()},enableCellMenu:!0,cellMenu:{onCommand:(e,a)=>this.executeCommand(e,a),onOptionSelected:(e,a)=>{const u=a&&a.dataContext;u&&u.hasOwnProperty("completed")&&(u.completed=a.item.option,this.angularGrid.gridService.updateItem(u))}}}}loadData(e){const a=[];for(let u=0;uCustom Tooltip - Header
\n
Column:
${i.name}
`}headerRowFormatter(e,a,u,i){return`
Custom Tooltip - Header Row (filter)
\n
Column:
${i.field}
`}tooltipFormatter(e,a,u,i,r,o){const h=G.checkmarkMaterial(e,a,r.effortDriven,i,r,o);return`
Custom Tooltip
\n
Id:
${r.id}
\n
Title:
${r.title}
\n
Effort Driven:
${h.outerHTML||""}
\n
Completion:
${this.loadCompletionIcons(r.percentComplete)}
\n `}tooltipTaskAsyncFormatter(e,a,u,i,r,o){return`
${`Task ${r.id} - (async tooltip)`}
\n
Completion:
${G.percentCompleteBarWithText(e,a,r.percentComplete,i,r,o).outerHTML||""}
\n
Lifespan:
${r.__params.lifespan.toFixed(2)}
\n
Ratio:
${r.__params.ratio.toFixed(2)}
\n `}loadCompletionIcons(e){let a="",u=0;e>5&&e<25?u=1:e>=25&&e<50?u=2:e>=50&&e<75?u=3:e>=75&&e<100?u=4:100===e&&(u=5);for(let i=0;i=3?"text-warning":"text-secondary"}">`}return a}};MF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n \n \n
\n\n \n \n
',encapsulation:Tt.None,styles:[eme()]})],MF);function fc(t,e,a){return e<=t&&t<=a}function LF(t){if(void 0===t)return{};if(t===Object(t))return t;throw TypeError("Could not convert argument to dictionary")}function FL(t){this.tokens=[].slice.call(t)}FL.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():-1},prepend:function(t){if(Array.isArray(t))for(var e=t;e.length;)this.tokens.unshift(e.pop());else this.tokens.unshift(t)},push:function(t){if(Array.isArray(t))for(var e=t;e.length;)this.tokens.push(e.shift());else this.tokens.push(t)}};function AL(t,e){if(t)throw TypeError("Decoder error");return e||65533}(function nme(){}).prototype={handler:function(t,e){}},function rme(){}.prototype={handler:function(t,e){}};var PF="utf-8";function NF(t,e){if(!(this instanceof NF))return new NF(t,e);if((t=void 0!==t?String(t).toLowerCase():PF)!==PF)throw new Error("Encoding not supported. Only utf-8 is supported");e=LF(e),this._streaming=!1,this._encoder=null,this._options={fatal:!!e.fatal},Object.defineProperty(this,"encoding",{value:"utf-8"})}function ome(t){var e=t.fatal,a=0,u=0,i=0,r=128,o=191;this.handler=function(d,h){if(-1===h&&0!==i)return i=0,AL(e);if(-1===h)return-1;if(0===i){if(fc(h,0,127))return h;if(fc(h,194,223))i=1,a=h-192;else if(fc(h,224,239))224===h&&(r=160),237===h&&(o=159),i=2,a=h-224;else{if(!fc(h,240,244))return AL(e);240===h&&(r=144),244===h&&(o=143),i=3,a=h-240}return a<<=6*i,null}if(!fc(h,r,o))return a=i=u=0,r=128,o=191,d.prepend(h),AL(e);if(r=128,o=191,a+=h-128<<6*(i-(u+=1)),u!==i)return null;var m=a;return a=i=u=0,m}}function lme(t){t.fatal;this.handler=function(a,u){if(-1===u)return-1;if(fc(u,0,127))return u;var i,r;fc(u,128,2047)?(i=1,r=192):fc(u,2048,65535)?(i=2,r=224):fc(u,65536,1114111)&&(i=3,r=240);for(var o=[(u>>6*i)+r];i>0;){var d=u>>6*(i-1);o.push(128|63&d),i-=1}return o}}(function wL(t,e){if(!(this instanceof wL))return new wL(t,e);if((t=void 0!==t?String(t).toLowerCase():PF)!==PF)throw new Error("Encoding not supported. Only utf-8 is supported");e=LF(e),this._streaming=!1,this._BOMseen=!1,this._decoder=null,this._fatal=!!e.fatal,this._ignoreBOM=!!e.ignoreBOM,Object.defineProperty(this,"encoding",{value:"utf-8"}),Object.defineProperty(this,"fatal",{value:this._fatal}),Object.defineProperty(this,"ignoreBOM",{value:this._ignoreBOM})}).prototype={decode:function(e,a){var u;u="object"==typeof e&&e instanceof ArrayBuffer?new Uint8Array(e):"object"==typeof e&&"buffer"in e&&e.buffer instanceof ArrayBuffer?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0),a=LF(a),this._streaming||(this._decoder=new ome({fatal:this._fatal}),this._BOMseen=!1),this._streaming=!!a.stream;for(var o,i=new FL(u),r=[];!i.endOfStream()&&-1!==(o=this._decoder.handler(i,i.read()));)null!==o&&(Array.isArray(o)?r.push.apply(r,o):r.push(o));if(!this._streaming){do{if(-1===(o=this._decoder.handler(i,i.read())))break;null!==o&&(Array.isArray(o)?r.push.apply(r,o):r.push(o))}while(!i.endOfStream());this._decoder=null}return r.length&&-1!==["utf-8"].indexOf(this.encoding)&&!this._ignoreBOM&&!this._BOMseen&&(65279===r[0]?(this._BOMseen=!0,r.shift()):this._BOMseen=!0),function ime(t){for(var e="",a=0;a>10),56320+(1023&u)))}return e}(r)}},NF.prototype={encode:function(e,a){e=e?String(e):"",a=LF(a),this._streaming||(this._encoder=new lme(this._options)),this._streaming=!!a.stream;for(var r,u=[],i=new FL(function ume(t){for(var e=String(t),a=e.length,u=0,i=[];u57343)i.push(r);else if(56320<=r&&r<=57343)i.push(65533);else if(55296<=r&&r<=56319)if(u===a-1)i.push(65533);else{var o=t.charCodeAt(u+1);if(56320<=o&&o<=57343){var d=1023&r,h=1023&o;i.push(65536+(d<<10)+h),u+=1}else i.push(65533)}u+=1}return i}(e));!i.endOfStream()&&-1!==(r=this._encoder.handler(i,i.read()));)Array.isArray(r)?u.push.apply(u,r):u.push(r);if(!this._streaming){for(;-1!==(r=this._encoder.handler(i,i.read()));)Array.isArray(r)?u.push.apply(u,r):u.push(r);this._encoder=null}return new Uint8Array(u)}};const sme={delimiter:Qr.comma,filename:"export",format:ft.csv,useUtf8WithBom:!0};class BL{constructor(){this._delimiter=",",this._exportQuoteWrapper="",this._fileFormat=ft.csv,this._lineCarriageReturn="\n",this._columnHeaders=[],this._hasGroupedItems=!1,this.className="TextExportService"}get _datasetIdPropName(){return this._gridOptions&&this._gridOptions.datasetIdPropertyName||"id"}get _dataView(){return this._grid?.getData()}get _gridOptions(){return this._grid?.getOptions()??{}}dispose(){this._pubSubService?.unsubscribeAll()}init(e,a){if(this._grid=e,this._pubSubService=a.get("PubSubService"),this._locales=this._gridOptions&&this._gridOptions.locales||ae.locales,this._translaterService=this._gridOptions?.translater,this._gridOptions.enableTranslate&&(!this._translaterService||!this._translaterService.translate))throw new Error('[Slickgrid-Universal] requires a Translate Service to be passed in the "translater" Grid Options when "enableTranslate" is enabled. (example: this.gridOptions = { enableTranslate: true, translater: this.translaterService })')}exportToFile(e){if(!this._grid||!this._dataView||!this._pubSubService)throw new Error('[Slickgrid-Universal] it seems that the SlickGrid & DataView objects and/or PubSubService are not initialized did you forget to enable the grid option flag "enableTextExport"?');return new Promise(a=>{this._pubSubService?.publish("onBeforeExportToTextFile",!0),this._exportOptions=su(!0,{},{...sme,...this._gridOptions.textExportOptions,...e}),this._delimiter=this._exportOptions.delimiterOverride||this._exportOptions.delimiter||"",this._fileFormat=this._exportOptions.format||ft.csv;const u=this.getDataOutput();setTimeout(()=>{const i={filename:`${this._exportOptions.filename}.${this._fileFormat}`,format:this._fileFormat||ft.csv,mimeType:this._exportOptions.mimeType||"text/plain",useUtf8WithBom:!this._exportOptions||!this._exportOptions.hasOwnProperty("useUtf8WithBom")||this._exportOptions.useUtf8WithBom};this.startDownloadFile({...i,content:u}),this._pubSubService?.publish("onAfterExportToTextFile",i),a(!0)},0)})}startDownloadFile(e){const a=yj(e.content);let u;u=e.format===ft.csv?new NF("utf-8").encode(a):a;const i=new Blob([e.useUtf8WithBom?"\ufeff":"",u],{type:e.mimeType});if("function"==typeof navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(i,e.filename);else{const r=document.createElement("a"),o=URL.createObjectURL(i);r.textContent="download",r.href=o,r.setAttribute("download",e.filename),r.style.visibility="hidden",document.body.appendChild(r),r.click(),document.body.removeChild(r)}}getDataOutput(){const e=this._grid.getColumns()||[];let a=this._exportOptions.groupingColumnHeaderTitle;!a&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?a=this._translaterService.translate(`${Gl(this._gridOptions)}GROUP_BY`):a||(a=this._locales&&this._locales.TEXT_GROUP_BY),this._exportQuoteWrapper=this._fileFormat===ft.csv?'"':"";let u="";const i=this._dataView.getGrouping();if(i&&Array.isArray(i)&&i.length>0?(this._hasGroupedItems=!0,u+=this._fileFormat===ft.csv?`"${a}"${this._delimiter}`:`${a}${this._delimiter}`):this._hasGroupedItems=!1,this._gridOptions.createPreHeaderPanel&&this._gridOptions.showPreHeaderPanel&&!this._gridOptions.enableDraggableGrouping&&(this._groupedColumnHeaders=this.getColumnGroupedHeaderTitles(e)||[],this._groupedColumnHeaders&&Array.isArray(this._groupedColumnHeaders)&&this._groupedColumnHeaders.length>0)){u+=this._groupedColumnHeaders.map(o=>`${this._exportQuoteWrapper}${o.title}${this._exportQuoteWrapper}`).join(this._delimiter)+this._lineCarriageReturn}if(this._columnHeaders=this.getColumnHeaders(e)||[],this._columnHeaders&&Array.isArray(this._columnHeaders)&&this._columnHeaders.length>0){u+=this._columnHeaders.map(o=>zu(`${this._exportQuoteWrapper}${o.title}${this._exportQuoteWrapper}`)).join(this._delimiter)+this._lineCarriageReturn}return u+=this.getAllGridRowData(e,this._lineCarriageReturn),u}getAllGridRowData(e,a){const u=[],i=this._dataView.getLength();for(let r=0;r{let i="";i=u.columnGroupKey&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?this._translaterService.translate(u.columnGroupKey):u.columnGroup||"";const r=u.excludeFromExport||!1;(void 0===u.width||u.width>0)&&!r&&a.push({key:u.field||u.id,title:i||""})}),a}getColumnHeaders(e){const a=[];return e&&Array.isArray(e)&&e.forEach(u=>{let i="";i=(u.nameKey||u.nameKey)&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?this._translaterService.translate(u.nameKey||u.nameKey):hn(u.name||"","innerHTML")||wo(u.field);const r=u.excludeFromExport||!1;(void 0===u.width||u.width>0)&&!r&&a.push({key:u.field||u.id,title:i||""})}),a}readRegularRowData(e,a,u){let i=0;const r=[],o=this._exportQuoteWrapper;let d=1;const h=this._dataView.getItemMetadata(a);for(let m=0,E=e.length;m1||"*"===d&&m>0||(d=f?.colspan??1),"*"!==d&&v.id in x&&(k=v.id)}if("*"===d&&m>0||!isNaN(d)&&+d>1&&v.id!==k)r.push(""),!isNaN(d)&&+d>1&&d--;else{let x=jM(a,m,v,u,this._grid,this._exportOptions);(v.sanitizeDataExport||this._exportOptions.sanitizeDataExport)&&(x=zu(x)),this._fileFormat===ft.csv&&x&&(x=x.toString().replace(/"/gi,'""'));const f=v?.exportCsvForceToKeepAsString?"=":"";r.push(f+o+x+o)}i++}return r.join(this._delimiter)}readGroupedTitleRow(e){let a=zu(e.title);const u=this._exportQuoteWrapper;return a=Dv(5*e.level)+a,this._fileFormat===ft.csv&&(a=a.toString().replace(/"/gi,'""')),u+a+u}readGroupedTotalRow(e,a){const u=this._exportOptions.delimiter,i=this._exportOptions.format,r=this._exportOptions.groupingAggregatorRowText||"",o=this._exportQuoteWrapper,d=[`${o}${r}${o}`];return e.forEach(h=>{let m="";const E=h.excludeFromExport||!1;if(h.groupTotalsFormatter){const v=h.groupTotalsFormatter(a,h,this._grid);m=v instanceof HTMLElement?v.textContent||"":v}(h.sanitizeDataExport||this._exportOptions.sanitizeDataExport)&&(m=zu(m)),i===ft.csv&&(m=m.toString().replace(/"/gi,'""')),(void 0===h.width||h.width>0)&&!E&&d.push(o+m+o)}),d.join(u)}}let IF=class{constructor(){this._darkMode=!1,this.title="Example 19: Draggable Grouping & Aggregators",this.subTitle='\n
    \n
  • Wiki docs
  • \n
  • This example shows 3 ways of grouping
  • \n
      \n
    1. Drag any Column Header on the top placeholder to group by that column (support moti-columns grouping by adding more columns to the drop area).
    2. \n
    3. Use buttons and defined functions to group by wichever field you want
    4. \n
    5. Use the Select dropdown to group, the position of the Selects represent the grouping level
    6. \n
    \n
  • Fully dynamic and interactive multi-level grouping with filtering and aggregates ovor 50\'000 items
  • \n
  • Each grouping level can have its own aggregates (over child rows, child groups, or all descendant rows)..
  • \n
  • Use "Aggregators" and "GroupTotalFormatters" directly from Angular-Slickgrid
  • \n
\n ',this.durationOrderByCount=!1,this.processing=!1,this.selectedGroupingFields=["","",""],this.excelExportService=new rl,this.textExportService=new BL,this.loadData(500),this.defineGrid()}ngOnInit(){this.defineGrid()}ngOnDestroy(){document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid,this.dataviewObj=e.dataView}defineGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",width:70,minWidth:50,cssClass:"cell-title",filterable:!0,sortable:!0,grouping:{getter:"title",formatter:e=>`Title: ${e.value} (${e.count} items)`,aggregators:[new cu_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"duration",name:"Duration",field:"duration",width:70,sortable:!0,filterable:!0,editor:{model:qe.float,decimal:2,valueStep:1,maxValue:1e4,alwaysSaveOnEnterKey:!0},filter:{model:ie.slider,operator:">="},type:F.number,groupTotalsFormatter:nt.sumTotals,grouping:{getter:"duration",formatter:e=>`Duration: ${e.value} (${e.count} items)`,comparer:(e,a)=>this.durationOrderByCount?e.count-a.count:L0.numeric(e.value,a.value,eu.asc),aggregators:[new cu_Sum("duration"),new cu_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"percentComplete",name:"% Complete",field:"percentComplete",minWidth:70,width:90,formatter:G.percentCompleteBar,type:F.number,filterable:!0,filter:{model:ie.compoundSlider},sortable:!0,groupTotalsFormatter:nt.avgTotalsPercentage,grouping:{getter:"percentComplete",formatter:e=>`% Complete: ${e.value} (${e.count} items)`,aggregators:[new cu_Sum("cost")],aggregateCollapsed:!1,collapsed:!1},params:{groupFormatterPrefix:"Avg: "}},{id:"start",name:"Start",field:"start",minWidth:60,sortable:!0,filterable:!0,filter:{model:ie.compoundDate},formatter:G.dateIso,type:F.dateUtc,outputType:F.dateIso,exportWithFormatter:!0,grouping:{getter:"start",formatter:e=>`Start: ${e.value} (${e.count} items)`,aggregators:[new cu_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"finish",name:"Finish",field:"finish",minWidth:60,sortable:!0,filterable:!0,filter:{model:ie.compoundDate},formatter:G.dateIso,type:F.dateUtc,outputType:F.dateIso,exportWithFormatter:!0,grouping:{getter:"finish",formatter:e=>`Finish: ${e.value} (${e.count} items)`,aggregators:[new cu_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"cost",name:"Cost",field:"cost",width:90,sortable:!0,filterable:!0,filter:{model:ie.compoundInput},formatter:G.dollar,groupTotalsFormatter:nt.sumTotalsDollar,type:F.number,grouping:{getter:"cost",formatter:e=>`Cost: ${e.value} (${e.count} items)`,aggregators:[new cu_Sum("cost")],aggregateCollapsed:!0,collapsed:!0}},{id:"effortDriven",name:"Effort-Driven",field:"effortDriven",width:80,minWidth:20,maxWidth:100,cssClass:"cell-effort-driven",sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ie.singleSelect},formatter:G.checkmarkMaterial,grouping:{getter:"effortDriven",formatter:e=>`Effort-Driven: ${e.value?"True":"False"} (${e.count} items)`,aggregators:[new cu_Sum("duration"),new cu_Sum("cost")],collapsed:!1}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableDraggableGrouping:!0,autoEdit:!0,autoCommitEdit:!0,editable:!0,enableCellNavigation:!0,createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:40,showCustomFooter:!0,enableFiltering:!0,enableSorting:!0,textExportOptions:{sanitizeDataExport:!0},gridMenu:{onCommand:(e,a)=>{"toggle-preheader"===a.command&&this.clearGrouping()}},draggableGrouping:{dropPlaceHolderText:"Drop a column header here to group by the column",deleteIconCssClass:"mdi mdi-close",onGroupChanged:(e,a)=>this.onGroupChanged(a),onExtensionRegistered:e=>this.draggableGroupingPlugin=e},darkMode:this._darkMode,enableTextExport:!0,enableExcelExport:!0,excelExportOptions:{sanitizeDataExport:!0},externalResources:[this.excelExportService,this.textExportService]},this.loadData(500)}loadData(e){const a=[];for(let u=0;uthis.selectedGroupingFields[a]="")}collapseAllGroups(){this.dataviewObj.collapseAllGroups()}expandAllGroups(){this.dataviewObj.expandAllGroups()}exportToExcel(){this.excelExportService.exportToExcel({filename:"Export",format:ft.xlsx})}exportToCsv(e="csv"){this.textExportService.exportToFile({delimiter:"csv"===e?Qr.comma:Qr.tab,filename:"myExport",format:"csv"===e?ft.csv:ft.txt})}groupByDuration(){this.clearGrouping(),this.draggableGroupingPlugin&&this.draggableGroupingPlugin.setDroppedGroups&&(this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups("duration"),this.gridObj.invalidate())}groupByDurationOrderByCount(e=!1){this.durationOrderByCount=e,this.clearGrouping(),this.groupByDuration();const a=e?[]:[{columnId:"duration",sortAsc:!0}];this.angularGrid.filterService.setSortColumnIcons(a)}groupByDurationEffortDriven(){this.clearGrouping(),this.draggableGroupingPlugin&&this.draggableGroupingPlugin.setDroppedGroups&&(this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups(["duration","effortDriven"]),this.gridObj.invalidate())}groupByFieldName(e,a){if(this.clearGrouping(),this.draggableGroupingPlugin&&this.draggableGroupingPlugin.setDroppedGroups){const u=this.selectedGroupingFields.filter(i=>""!==i);this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups(u),this.gridObj.invalidate()}}onGroupChanged(e){const a=e&&e.caller||[],u=e&&e.groupColumns||[];Array.isArray(this.selectedGroupingFields)&&Array.isArray(u)&&u.length>0?this.selectedGroupingFields.forEach((i,r)=>this.selectedGroupingFields[r]=u[r]&&u[r].getter||""):0===u.length&&"remove-group"===a&&this.clearGroupingSelects()}onCellChanged(){this.angularGrid.dataView?.refresh()}showPreHeader(){this.gridObj.setPreHeaderPanelVisibility(!0)}selectTrackByFn(e,a){return e}setFiltersDynamically(){this.angularGrid.filterService.updateFilters([{columnId:"percentComplete",operator:">=",searchTerms:["55"]},{columnId:"cost",operator:"<",searchTerms:["80"]}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"percentComplete",direction:"ASC"}])}toggleDraggableGroupingRow(){this.clearGrouping(),this.gridObj.setPreHeaderPanelVisibility(!this.gridObj.getOptions().showPreHeaderPanel)}toggleDarkMode(){this._darkMode=!this._darkMode,this.toggleBodyBackground(),this.angularGrid.slickGrid?.setOptions({darkMode:this._darkMode})}toggleBodyBackground(){this._darkMode?(document.querySelector(".panel-wm-content").classList.add("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="dark"):(document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light")}static#e=this.ctorParameters=()=>[]};IF=Ye([xa({template:'
\n

\n {{title}}\n \n \n \n code\n \n \n

\n
\n\n
\n
\n
\n \n \n \n \n \n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n \n \n
'}),Nt("design:paramtypes",[])],IF);var cme=W(195),GK=W.n(cme);class hme{constructor(e){this.args=e,this.init()}get columnDef(){return this.args?.column??{}}get columnEditor(){return this.columnDef?.editor??{}}get hasAutoCommitEdit(){return this.args.grid.getOptions().autoCommitEdit??!1}get validator(){return this.columnEditor.validator||this.columnDef.validator}init(){const e=this.columnEditor?.placeholder||"",a=this.columnEditor?.title||"";this.inputElm=document.createElement("input"),this.inputElm.type="text",this.inputElm.className="editor-text",this.inputElm.placeholder=e,this.inputElm.title=a,this.args.container.appendChild(this.inputElm),this.inputElm.addEventListener("keydown",this.onKeydown.bind(this)),this.hasAutoCommitEdit&&this.inputElm.addEventListener("focusout",this.save.bind(this)),setTimeout(()=>{this.inputElm.focus(),this.inputElm.select()},50)}onKeydown(e){this._lastInputEvent=e,("ArrowLeft"===e.key||"ArrowRight"===e.key)&&e.stopImmediatePropagation()}destroy(){this.inputElm.removeEventListener("keydown",this.onKeydown.bind(this)),this.inputElm.removeEventListener("focusout",this.save.bind(this)),this.inputElm.remove()}focus(){this.inputElm.focus()}getValue(){return this.inputElm.value}setValue(e){this.inputElm.value=e}loadValue(e){this.defaultValue=e[this.args.column.field]||"",this.inputElm.value=this.defaultValue,this.inputElm.defaultValue=this.defaultValue,this.inputElm.select()}serializeValue(){return this.inputElm.value}applyValue(e,a){const u=this.validate(a);e[this.args.column.field]=u&&u.valid?a:""}isValueChanged(){const e=this._lastInputEvent?.key;return!(!this.columnEditor?.alwaysSaveOnEnterKey||"Enter"!==e)||!(""===this.inputElm.value&&null===this.defaultValue)&&this.inputElm.value!==this.defaultValue}save(){this.validate()?.valid&&(this.hasAutoCommitEdit?this.args.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges())}validate(e){if(this.validator){const a=void 0!==e?e:this.inputElm?.value;return this.validator(a,this.args)}return{valid:!0,msg:null}}}const KK="assets/data/collection_100_numbers.json",WK="assets/data/countries.json",UK="assets/data/country_names.json",SL=(t,e)=>{((e&&e.grid)?.getOptions()??{}).i18n;return null!=t&&t.length?/^Task\s\d+$/.test(t)?{valid:!0,msg:""}:{valid:!1,msg:'Your title is invalid, it must start with "Task" followed by a number'}:{valid:!1,msg:"This is a required field"}},pme=(t,e,a,u,i)=>{if(a&&Array.isArray(a)){const o=a.map(d=>`Task ${d}`).join(", ");return`${o}`}return""};let RF=class{constructor(e,a){this.http=e,this.translate=a,this.title="Example 3: Editors / Delete",this.subTitle='\n Grid with Inline Editors and onCellClick actions (Wiki docs).\n
    \n
  • Multiple Editors & Filters are available: AutoComplete, Checkbox, Date, Slider, SingleSelect, MultipleSelect, Float, Text, LongText... even Custom Editor
  • \n
  • When using "enableCellNavigation: true", clicking on a cell will automatically make it active & selected.
  • \n
    • If you don\'t want this behavior, then you should disable "enableCellNavigation"
    \n
  • Inline Editors requires "enableCellNavigation: true" (not sure why though)
  • \n
  • \n Support Excel Copy Buffer (SlickGrid Copy Manager Plugin), you can use it by simply enabling "enableExcelCopyBuffer" flag.\n Note that it will only evaluate Formatter when the "exportWithFormatter" flag is enabled (through "ExportOptions" or the column definition)\n
  • \n
  • MultipleSelect & SingeSelect Editors & Filters can use a regular "collection" or "collectionAsync" to load it asynchronously
  • \n
      \n
    • Click on "Add Item" and see the Editor/Filter or the "Prerequesites" column change
    • \n
    • Any Editor/Filter with a "collection" can be changed dynamically later in the future
    • \n
    \n
\n ',this._commandQueue=[],this.isAutoEdit=!0,this.selectedLanguage="en",this.duplicateTitleHeaderCount=1}ngOnInit(){this.prepareGrid()}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid}prepareGrid(){this.columnDefinitions=[{id:"edit",field:"id",excludeFromColumnPicker:!0,excludeFromGridMenu:!0,excludeFromHeaderMenu:!0,formatter:G.icon,params:{iconCssClass:"mdi mdi-pencil pointer"},minWidth:30,maxWidth:30,onCellClick:(e,a)=>{console.log(a),this.alertWarning=`Editing: ${a.dataContext.title}`,this.angularGrid.gridService.highlightRow(a.row,1500),this.angularGrid.gridService.setSelectedRow(a.row)}},{id:"delete",field:"id",excludeFromColumnPicker:!0,excludeFromGridMenu:!0,excludeFromHeaderMenu:!0,formatter:G.icon,params:{iconCssClass:"mdi mdi-trash-can pointer"},minWidth:30,maxWidth:30},{id:"title",name:"Title",field:"title",minWidth:100,filterable:!0,sortable:!0,type:F.string,editor:{model:qe.longText,required:!0,maxLength:12,editorOptions:{cols:42,rows:5,buttonTexts:{}},validator:SL},onCellChange:(e,a)=>{console.log(a),this.alertWarning=`Updated Title: ${a.dataContext.title}`}},{id:"title2",name:"Title, Custom Editor",field:"title",minWidth:70,filterable:!0,sortable:!0,type:F.string,editor:{model:hme,placeholder:"custom",validator:SL},filter:{model:_L,placeholder:"\u{1f50e}\ufe0e custom"}},{id:"duration",name:"Duration (days)",field:"duration",minWidth:100,filterable:!0,sortable:!0,formatter:G.complexObject,type:F.number,exportWithFormatter:!0,filter:{model:ie.slider,filterOptions:{hideSliderNumber:!1}},editor:{model:qe.slider,minValue:0,maxValue:100}},{id:"complete",name:"% Complete",field:"percentComplete",minWidth:100,filterable:!0,formatter:G.multiple,type:F.number,editor:{model:qe.singleSelect,enableRenderHtml:!0,collection:Array.from(Array(101).keys()).map(e=>({value:e,label:e,symbol:''})),customStructure:{value:"value",label:"label",labelSuffix:"symbol"},collectionSortBy:{property:"label",sortDesc:!0},collectionFilterBy:{property:"value",value:0,operator:re.notEqual},editorOptions:{maxHeight:400}},params:{formatters:[G.collectionEditor,G.percentCompleteBar]}},{id:"start",name:"Start",field:"start",minWidth:100,filterable:!0,filter:{model:ie.compoundDate},formatter:G.multiple,params:{formatters:[G.complexObject,G.dateIso]},exportWithFormatter:!0,sortable:!0,type:F.date,editor:{model:qe.date}},{id:"finish",name:"Finish",field:"finish",minWidth:100,filterable:!0,sortable:!0,filter:{model:ie.compoundDate},formatter:G.dateIso,exportWithFormatter:!0,type:F.date,saveOutputType:F.dateUtc,editor:{model:qe.date,editorOptions:{range:{min:"today"}}}},{id:"cityOfOrigin",name:"City of Origin",field:"cityOfOrigin",filterable:!0,minWidth:100,editor:{model:qe.autocompleter,placeholder:"\u{1f50e}\ufe0e search city",editorOptions:{forceUserInput:!0,minLength:3,fetch:(e,a)=>{GK()(`http://gd.geobytes.com/AutoCompleteCity?q=${e}`).then(u=>u.json()).then(u=>a(u)).catch(u=>console.log("invalid JSONP response",u))}}},filter:{model:ie.autocompleter,filterOptions:{minLength:3,fetch:(e,a)=>{GK()(`http://gd.geobytes.com/AutoCompleteCity?q=${e}`).then(u=>u.json()).then(u=>a(u)).catch(u=>console.log("invalid JSONP response",u))}}}},{id:"countryOfOrigin",name:"Country of Origin",field:"countryOfOrigin",formatter:G.complexObject,exportWithFormatter:!0,dataKey:"code",labelKey:"name",type:F.object,sortComparer:L0.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:qe.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get(WK)},filter:{model:ie.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get(WK)}},{id:"countryOfOriginName",name:"Country of Origin Name",field:"countryOfOriginName",filterable:!0,sortable:!0,minWidth:100,editor:{model:qe.autocompleter,collectionAsync:this.http.get(UK)},filter:{model:ie.autocompleter,collectionAsync:this.http.get(UK)}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",minWidth:70,filterable:!0,type:F.boolean,filter:{model:ie.singleSelect,collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}]},formatter:G.checkmarkMaterial,editor:{model:qe.checkbox}},{id:"prerequisites",name:"Prerequisites",field:"prerequisites",minWidth:100,filterable:!0,formatter:pme,exportWithFormatter:!0,sanitizeDataExport:!0,sortable:!0,type:F.string,editor:{placeholder:"choose option",collectionAsync:this.http.get(KK),collectionSortBy:{property:"label",sortDesc:!0},customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:qe.multipleSelect,required:!0},filter:{collectionAsync:this.http.get(KK),collectionSortBy:{property:"label",sortDesc:!0},customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:ie.multipleSelect,operator:re.inContains}}],this.gridOptions={asyncEditorLoading:!1,autoEdit:this.isAutoEdit,autoCommitEdit:!1,autoResize:{container:"#demo-container",rightPadding:10},editable:!0,enableCellNavigation:!0,enableColumnPicker:!0,enableExcelCopyBuffer:!0,enableFiltering:!0,editCommandHandler:(e,a,u)=>{this._commandQueue.push(u),u.execute()},i18n:this.translate},this.dataset=this.mockData(100)}addItem(){const e=this.dataset.length,a=this.mockData(1,e);setTimeout(()=>{const u=this.columnDefinitions.find(i=>"prerequisites"===i.id);if(u){const i=u.filter.collectionAsync,r=u.editor.collection;Array.isArray(r)&&(this.angularGrid.gridService.addItem(a[0]),r.push({value:e,label:e,prefix:"Task"}),i instanceof Gt&&i.next(r))}},250)}deleteItem(){const e=this.columnDefinitions.find(a=>"prerequisites"===a.id);if(e){const a=e.filter.collectionAsync,u=e.filter.collection;if(Array.isArray(u)){const i=this.sortCollectionDescending(u).pop();this.angularGrid.gridService.deleteItemById(i.value),a instanceof Gt&&a.next(u)}}}sortCollectionDescending(e){return e.sort((a,u)=>a.value-u.value)}mockData(e,a=0){const u=[];for(let i=a;i[{type:xu},{type:it}]};RF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n \n \n \n \n \n
\n \n \n \n \n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n
\n
\n Updated Item: {{updatedObject | json}}\n
\n
\n Updated Item: {{alertWarning}}\n
\n
\n
\n\n
\n \n \n
\n
'}),Nt("design:paramtypes",[xu,it])],RF);const gme=(t,e,a)=>a?'':{text:'',addClasses:"lightblue",toolTip:"Freezing"},vme=(t,e,a)=>`\n \n `;let HF=class{constructor(){this.title="Example 2: Grid with Formatters",this.subTitle='\n Grid with Custom and/or included Slickgrid Formatters (Wiki docs).\n
    \n
  • The 2 last columns are using Custom Formatters
  • \n
    • The "Completed" column uses a the "onCellClick" event and a formatter to simulate a toggle action
    \n
  • \n Support Excel Copy Buffer (SlickGrid Copy Manager Plugin), you can use it by simply enabling "enableExcelCopyBuffer" flag.\n Note that it will only evaluate Formatter when the "exportWithFormatter" flag is enabled (through "ExportOptions" or the column definition)\n
  • \n
  • This example also has auto-resize enabled, and we also demo how you can pause the resizer if you wish to
  • \n
\n ',this.columnDefinitions=[],this.resizerPaused=!1}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:F.string,width:70},{id:"phone",name:"Phone Number using mask",field:"phone",sortable:!0,type:F.number,minWidth:100,formatter:G.mask,params:{mask:"(000) 000-0000"}},{id:"duration",name:"Duration (days)",field:"duration",formatter:G.decimal,params:{minDecimal:1,maxDecimal:2},sortable:!0,type:F.number,minWidth:90,exportWithFormatter:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,type:F.number,sortable:!0,minWidth:100},{id:"percent2",name:"% Complete",field:"percentComplete2",formatter:G.progressBar,type:F.number,sortable:!0,minWidth:100},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,type:F.date,minWidth:90,exportWithFormatter:!0},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,type:F.date,minWidth:90,exportWithFormatter:!0},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:gme,type:F.number,sortable:!0,minWidth:100},{id:"completed",name:"Completed",field:"completed",type:F.number,sortable:!0,minWidth:100,formatter:vme,onCellClick:(a,u)=>{this.toggleCompletedProperty(u&&u.dataContext)}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableAutoResize:!0,enableCellNavigation:!0,showCustomFooter:!0,customFooterOptions:{leftFooterText:"custom footer text",hideTotalItemCount:!0,hideLastUpdateTimestamp:!0},enableExcelCopyBuffer:!0};const e=[];for(let a=0;a<500;a++){const u=2e3+Math.floor(10*Math.random()),i=Math.floor(11*Math.random()),r=Math.floor(29*Math.random()),o=Math.round(100*Math.random());e[a]={id:a,title:"Task "+a,phone:this.generatePhoneNumber(),duration:a%33==0?null:100*Math.random()+"",percentComplete:o,percentComplete2:o,percentCompleteNumber:o,start:new Date(u,i,r),finish:new Date(u,i+1,r),effortDriven:a%5==0}}this.dataset=e}generatePhoneNumber(){let e="";for(let a=0;a<10;a++)e+=Math.round(9*Math.random())+"";return e}togglePauseResizer(){this.resizerPaused=!this.resizerPaused,this.angularGrid.resizerService.pauseResizer(this.resizerPaused)}toggleCompletedProperty(e){"object"==typeof e&&(e.completed=!e.completed,setTimeout(()=>{this.angularGrid.gridService.updateItemById(e.id,e,{highlightRow:!1})},250))}};HF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n \n\n \n \n
'})],HF);var kme=W(942),xme=W.n(kme);let VF=class{constructor(){this.title="Example 20: Pinned (frozen) Columns/Rows",this.subTitle='\n This example demonstrates the use of Pinned (aka frozen) Columns and/or Rows (Wiki docs)\n
    \n
  • Option to pin any number of columns (left only) or rows
  • \n
  • Option to pin the rows at the bottom instead of the top (default)
  • \n
  • You can also dynamically any of these options, through SlickGrid "setOptions()"
  • \n
  • Possibility to change the styling of the line border between pinned columns/rows
  • \n
\n ',this.frozenColumnCount=2,this.frozenRowCount=3,this.isFrozenBottom=!1,this.slickEventHandler=new Ot}ngOnInit(){this.prepareDataGrid()}ngOnDestroy(){this.slickEventHandler.unsubscribeAll()}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid,this.slickEventHandler.subscribe(this.gridObj.onMouseEnter,a=>this.colorizeHoveringRow(a,!0)),this.slickEventHandler.subscribe(this.gridObj.onMouseLeave,a=>this.colorizeHoveringRow(a,!1))}colorizeHoveringRow(e,a){const u=this.gridObj.getCellFromEvent(e),i=a?[u?.row??0]:[];this.gridObj.setSelectedRows(i),e.preventDefault()}prepareDataGrid(){this.columnDefinitions=[{id:"sel",name:"#",field:"id",minWidth:40,width:40,maxWidth:40,cannotTriggerInsert:!0,resizable:!1,unselectable:!0},{id:"title",name:"Title",field:"title",minWidth:100,width:120,filterable:!0,sortable:!0},{id:"percentComplete",name:"% Complete",field:"percentComplete",resizable:!1,minWidth:130,width:140,formatter:G.percentCompleteBar,type:F.number,filterable:!0,filter:{model:ie.slider,operator:">="},sortable:!0},{id:"start",name:"Start",field:"start",minWidth:100,width:120,filterable:!0,sortable:!0,formatter:G.dateIso},{id:"finish",name:"Finish",field:"finish",minWidth:100,width:120,filterable:!0,sortable:!0,formatter:G.dateIso},{id:"cost",name:"Cost | Duration",field:"cost",formatter:this.costDurationFormatter.bind(this),minWidth:150,width:170,sortable:!0,filter:{model:ie.compoundSlider},editor:{model:qe.dualInput,params:{leftInput:{field:"cost",type:"float",decimal:2,minValue:0,maxValue:5e4,placeholder:"< 50K",errorMessage:"Cost must be positive and below $50K."},rightInput:{field:"duration",type:"float",minValue:0,maxValue:100,title:"make sure Duration is withing its range of 0 to 100",errorMessage:"Duration must be between 0 and 100."}}}},{id:"effortDriven",name:"Effort Driven",field:"effortDriven",minWidth:100,width:120,formatter:G.checkmarkMaterial,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ie.singleSelect},sortable:!0},{id:"title1",name:"Title 1",field:"title1",minWidth:100,width:120,filterable:!0,sortable:!0},{id:"title2",name:"Title 2",field:"title2",minWidth:100,width:120,filterable:!0,sortable:!0},{id:"title3",name:"Title 3",field:"title3",minWidth:100,width:120,filterable:!0,sortable:!0},{id:"title4",name:"Title 4",field:"title4",minWidth:100,width:120,filterable:!0,sortable:!0}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableExcelCopyBuffer:!0,enableCellNavigation:!0,editable:!0,autoEdit:!0,asyncEditorLoading:!0,frozenColumn:this.frozenColumnCount,frozenRow:this.frozenRowCount,gridMenu:{hideClearFrozenColumnsCommand:!1},headerMenu:{hideFreezeColumnsCommand:!1}},this.dataset=this.getData()}getData(){const e=[];for(let a=0;a<500;a++)e[a]={id:a,title:"Task "+a,cost:a%33==0?null:1e4*Math.random(),duration:a%8?Math.round(100*Math.random())+"":null,percentComplete:Math.round(100*Math.random()),start:new Date(2009,0,1),finish:new Date(2009,4,5),effortDriven:a%5==0,title1:`Some Text ${Math.round(25*Math.random())}`,title2:`Some Text ${Math.round(25*Math.random())}`,title3:`Some Text ${Math.round(25*Math.random())}`,title4:`Some Text ${Math.round(25*Math.random())}`};return e}changeFrozenColumnCount(){this.gridObj&&this.gridObj.setOptions&&this.gridObj.setOptions({frozenColumn:this.frozenColumnCount})}changeFrozenRowCount(){this.gridObj&&this.gridObj.setOptions&&this.gridObj.setOptions({frozenRow:this.frozenRowCount})}costDurationFormatter(e,a,u,i,r){const o=this.isNullUndefinedOrEmpty(r.cost)?"n/a":Bu(r.cost,0,2,!1,"$","",".",",");let d="n/a";return!this.isNullUndefinedOrEmpty(r.duration)&&r.duration>=0&&(d=`${r.duration} ${r.duration>1?"days":"day"}`),`${o} | ${d}`}isNullUndefinedOrEmpty(e){return""===e||null==e}onValidationError(e,a){alert(a.validationResults.msg)}setFrozenColumns(e){this.gridObj.setOptions({frozenColumn:e}),this.gridOptions=this.gridObj.getOptions()}toggleFrozenBottomRows(){this.gridObj&&this.gridObj.setOptions&&(this.gridObj.setOptions({frozenBottom:!this.isFrozenBottom}),this.isFrozenBottom=!this.isFrozenBottom)}static#e=this.ctorParameters=()=>[]};VF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n \n
\n
\n \n
\n
\n\n
\n
\n \n \n\n \n \n : {{ isFrozenBottom ? \'Bottom\' : \'Top\' }}\n \n
\n
\n
\n
\n
\n \n \n
',encapsulation:Tt.None,styles:[xme()]}),Nt("design:paramtypes",[])],VF);class Wh{constructor(e,a){if(this.queryFnName=e,this.head=[],"string"==typeof a)this.alias=a;else if("object"==typeof a)this.filter(a);else{if(void 0===a&&2===arguments.length)throw new TypeError('You have passed undefined as Second argument to "Query"');if(void 0!==a)throw new TypeError(`Second argument to "Query" should be an alias name(String) or filter arguments(Object). What was passed is: ${a}`)}}filter(e){for(const a of Object.keys(e)){if("function"==typeof e[a])continue;const u=this.getGraphQLValue(e[a]);"{}"!==u&&this.head.push(`${a}:${u}`)}return this}find(...e){if(!e||!Array.isArray(e)||0===e.length)throw new TypeError("find value can not be >>falsy<<");const a=1===e.length&&Array.isArray(e[0])?e[0]:e;return this.body=this.parceFind(a),this}setAlias(e){this.alias=e}toString(){if(void 0===this.body)throw new ReferenceError("return properties are not defined. use the 'find' function to defined them");return`${this.alias?this.alias+":":""} ${this.queryFnName} ${this.head.length>0?"("+this.head.join(",")+")":""} { ${this.body} }`}parceFind(e){return e.map((u,i)=>{const r=e[i];if(r instanceof Wh)return r.toString();if(Array.isArray(r)||"object"!=typeof r){if("string"==typeof r)return r;throw new RangeError(`cannot handle Find value of ${r}`)}{const o=Object.keys(r);if(1!==o.length)throw new RangeError(`Alias objects should only have one value. was passed: ${JSON.stringify(r)}`);const d=o[0],h=r[d];return Array.isArray(h)?new Wh(d).find(h):`${d} : ${h} `}}).join(",")}getGraphQLValue(e){return"string"==typeof e?e=JSON.stringify(e):Array.isArray(e)?e=`[${e=e.map(a=>this.getGraphQLValue(a)).join()}]`:e instanceof Date?e=JSON.stringify(e):null!==e&&"object"==typeof e&&(e=this.objectToString(e)),e}objectToString(e){const a=[];for(const u of Object.keys(e))"function"!=typeof e[u]&&a.push(`${u}:${this.getGraphQLValue(e[u])}`);return`{${a.join()}}`}}class $K{constructor(){this._currentFilters=[],this._currentPagination=null,this._currentSorters=[],this._datasetIdPropName="id",this.defaultPaginationOptions={first:25,offset:0}}get columnDefinitions(){return this._columnDefinitions}get _gridOptions(){return this._grid?.getOptions()??{}}init(e,a,u,i){this._grid=u,this.options=e||{datasetName:""},this.pagination=a,this._datasetIdPropName=this._gridOptions.datasetIdPropertyName||"id",u?.getColumns&&(this._columnDefinitions=i?.allColumns??u.getColumns()??[])}buildQuery(){if(!this.options||!this.options.datasetName||!Array.isArray(this._columnDefinitions))throw new Error('GraphQL Service requires the "datasetName" property to properly build the GraphQL query');let e=this._columnDefinitions||[];e=e.filter(E=>!E.excludeFromQuery);const a=new Wh(`query ${this.options.operationName??""}`),u=new Wh(this.options.datasetName),i=new Wh("nodes"),r=[];if(e&&Array.isArray(e))for(const E of e)E.excludeFieldFromQuery||r.push(E.field),E.fields&&r.push(...E.fields);-1===r.indexOf(this._datasetIdPropName)&&r.unshift(this._datasetIdPropName);const o=this.buildFilterQuery(r);let d=[];if(!1!==this._gridOptions.enablePagination){if(this.options.useCursor){const E=new Wh("edges"),v=new Wh("pageInfo");v.find("hasNextPage","hasPreviousPage","endCursor","startCursor"),i.find(o),E.find(["cursor"]),d=["totalCount",i,v,E]}else i.find(o),d=["totalCount",i];u.find(d)}else u.find(o);let h={};if(!1!==this._gridOptions.enablePagination)if(h={},this.options.useCursor&&this.options.paginationOptions)h={...this.options.paginationOptions};else{const E=this.options?.paginationOptions;h.first=this.options?.paginationOptions?.first??this.pagination?.pageSize??this.defaultPaginationOptions.first,h.offset=E?.hasOwnProperty("offset")?+E.offset:0}if(this.options.sortingOptions&&Array.isArray(this.options.sortingOptions)&&this.options.sortingOptions.length>0&&(h.orderBy=this.options.sortingOptions),this.options.filteringOptions&&Array.isArray(this.options.filteringOptions)&&this.options.filteringOptions.length>0&&(h.filterBy=this.options.filteringOptions),this.options.addLocaleIntoQuery&&(h.locale=this._gridOptions.translater?.getCurrentLanguage()||this._gridOptions.locale||"en"),this.options.extraQueryArguments)for(const E of this.options.extraQueryArguments)h[E.field]=E.value;u.filter(h),a.find(u);return this.trimDoubleQuotesOnEnumField(a.toString(),["direction:","field:","operator:"],this.options.keepArgumentFieldDoubleQuotes||!1)}buildFilterQuery(e){const a=(i={},r)=>{const o=r.shift();return i[o]=r.length?a(i[o]??{},r):null,i},u=e.reduce((i,r)=>a(i,r.split(".")),{});return JSON.stringify(u).replace(/"|:|null/g,"").replace(/^\{/,"").replace(/\}$/,"")}clearFilters(){this._currentFilters=[],this.updateOptions({filteringOptions:[]})}clearSorters(){this._currentSorters=[],this.updateOptions({sortingOptions:[]})}getInitPaginationOptions(){const e=this.pagination?this.pagination.pageSize:25;return this.options?.useCursor?{first:e}:{first:e,offset:0}}getDatasetName(){return this.options?.datasetName||""}getCurrentFilters(){return this._currentFilters}getCurrentPagination(){return this._currentPagination}getCurrentSorters(){return this._currentSorters}resetPaginationOptions(){let e;this.options?.useCursor?e=this.getInitPaginationOptions():(e=this.options&&this.options.paginationOptions||this.getInitPaginationOptions(),e.offset=0),this._currentPagination={pageNumber:1,pageSize:e.first||20},this._gridOptions&&(this._gridOptions.enablePagination||!this._gridOptions.hasOwnProperty("enablePagination"))&&this.updateOptions({paginationOptions:e})}updateOptions(e){this.options={...this.options,...e}}processOnFilterChanged(e,a){if(void 0===this._gridOptions.backendServiceApi)throw new Error('Something went wrong in the GraphqlService, "backendServiceApi" is not initialized');if(this._currentFilters=this.castFilterToColumnFilters(a.columnFilters),!a||!a.grid)throw new Error('Something went wrong when trying create the GraphQL Backend Service, it seems that "args" is not populated correctly');return this.updateFilters(a.columnFilters,!1),this.resetPaginationOptions(),this.buildQuery()}processOnPaginationChanged(e,a){const u=+(a.pageSize||(this.pagination?this.pagination.pageSize:20));return"first"in a||"last"in a?this.updatePagination(a.newPage,u,a):this.updatePagination(a.newPage,u),this.buildQuery()}processOnSortChanged(e,a){const u=a.multiColumnSort?a.sortCols:new Array({columnId:a.sortCol?.id??"",sortCol:a.sortCol,sortAsc:a.sortAsc});return this.updateSorters(u),this.buildQuery()}updateFilters(e,a){const u=[];let i;a&&(this._currentFilters=this.castFilterToColumnFilters(e));for(const r in e)if(e.hasOwnProperty(r)){const o=e[r];let d;if(d=a&&Array.isArray(this._columnDefinitions)?this._columnDefinitions.find(A=>A.id===o.columnId):o.columnDef,!d)throw new Error("[GraphQL Service]: Something went wrong in trying to get the column definition of the specified filter (or preset filters). Did you make a typo on the filter columnId?");let h=d.filter?.queryField||d.queryFieldFilter||d.queryField||d.field||d.name||"";h instanceof HTMLElement&&(h=zu(h.innerHTML));const m=d.type||F.string;let E=o?.searchTerms??[],v=Array.isArray(E)&&1===E.length?E[0]:"";if(typeof v>"u"&&(v=""),!h)throw new Error('GraphQL filter could not find the field name to query the search, your column definition must include a valid "field" or "name" (optionally you can also use the "queryfield").');if(this.options?.useVerbatimSearchTerms||o.verbatimSearchTerms){u.push({field:hn(h),operator:o.operator,value:JSON.stringify(o.searchTerms)});continue}v=null==v?"":`${v}`;const x=!1!==(d.autoParseInputFilterOperator??this._gridOptions.autoParseInputFilterOperator)?v.match(/^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/):[v,"",v,""];let f=o.operator||x?.[1]||"";i=x?.[2]||"";const C=x?.[3]||("*z"===f?"*":"");if(h&&""===i&&0===E.length)continue;if(Array.isArray(E)&&1===E.length&&"string"==typeof E[0]&&E[0].indexOf("..")>=0&&(f!==re.rangeInclusive&&f!==re.rangeExclusive&&(f=this._gridOptions.defaultFilterRangeOperator??re.rangeInclusive),E=E[0].split("..",2),""===E[0]?(f=f===re.rangeInclusive?"<=":f===re.rangeExclusive?"<":f,E=E.slice(1),i=E[0]):""===E[1]&&(f=f===re.rangeInclusive?">=":f===re.rangeExclusive?">":f,E=E.slice(0,1),i=E[0])),"string"==typeof i&&("*"===f||"a*"===f||"*z"===f||"*"===C)&&(f="*"===f||"*z"===f?"EndsWith":"StartsWith"),!f&&d.filter&&d.filter.operator&&(f=d.filter.operator),!f&&Array.isArray(E)&&2===E.length&&E[0]&&E[1]&&(f=this._gridOptions.defaultFilterRangeOperator),(f===re.rangeInclusive||f===re.rangeExclusive)&&Array.isArray(E)&&1===E.length&&m===F.date&&(f=re.equal),i=this.normalizeSearchValue(m,i),Array.isArray(E)&&E.forEach((A,w)=>{E[w]=this.normalizeSearchValue(m,E[w])}),E&&E.length>1&&("IN"===f||"NIN"===f||"NOT_IN"===f))i=E.join(",");else if(E&&2===E.length&&(f===re.rangeExclusive||f===re.rangeInclusive)){u.push({field:hn(h),operator:f===re.rangeInclusive?"GE":"GT",value:E[0]}),u.push({field:hn(h),operator:f===re.rangeInclusive?"LE":"LT",value:E[1]});continue}f||(f=x2(m)),u.push({field:hn(h),operator:kj(f),value:i})}this.updateOptions({filteringOptions:u})}updatePagination(e,a,u){this._currentPagination={pageNumber:e,pageSize:a};let i={};if(this.options?.useCursor)if(u&&u instanceof Object){const{pageSize:r,newPage:o,...d}=u;i=d}else i={first:a};else i={first:a,offset:e>1?(e-1)*a:0};this.updateOptions({paginationOptions:i})}updateSorters(e,a){let u=[];const i=[];if(!e&&a){u=a,u.forEach(o=>o.direction=o.direction.toUpperCase());const r=u.map(o=>{const d=this._columnDefinitions?.find(h=>h.id===o.columnId);return i.push({field:d?(d.queryFieldSorter||d.queryField||d.field)+"":o.columnId+"",direction:o.direction}),d?{columnId:o.columnId,sortAsc:o.direction.toUpperCase()===gi.ASC}:null});Array.isArray(r)&&this._grid&&this._grid.setSortColumns(r.filter(o=>o)||[])}else if(e&&!a&&Array.isArray(e)&&e.length>0)for(const r of e)if(r&&r.sortCol){u.push({columnId:r.sortCol.id+"",direction:r.sortAsc?gi.ASC:gi.DESC});const o=(r.sortCol.queryFieldSorter||r.sortCol.queryField||r.sortCol.field||"")+"";o&&i.push({field:o,direction:r.sortAsc?gi.ASC:gi.DESC})}this._currentSorters=u,this.updateOptions({sortingOptions:i})}trimDoubleQuotesOnEnumField(e,a,u){const i='s?((field:s*)?".*?")';let r=a.join(i+"|");r+=i;const o=new RegExp(r,"g");return e.replace(o,d=>{let h=!0;return d.startsWith("field:")&&u&&(h=!1),h?d.replace(/"/g,""):d})}castFilterToColumnFilters(e){const a="object"==typeof e?Object.keys(e).map(u=>e[u]):e;return Array.isArray(a)?a.map(u=>{const i={columnId:u.columnId||""};return u.operator&&(i.operator=u.operator),u.targetSelector&&(i.targetSelector=u.targetSelector),Array.isArray(u.searchTerms)&&(i.searchTerms=u.searchTerms),i}):[]}normalizeSearchValue(e,a){switch(e){case F.date:case F.string:case F.text:case F.readonly:"string"==typeof a&&(a=a.replace(/'/g,"''"));break;case F.integer:case F.number:case F.float:"string"==typeof a&&((""===(a=(a=(a=(a=(a=a.replace(/\.\./g,".")).replace(/\.+$/g,"")).replace(/^\.+/g,"0.")).replace(/^-+\.+/g,"-0.")).replace(/(?!^-)[^\d.]/g,""))||"-"===a)&&(a="0"))}return a}}const zL="users",qK="gridStateGraphql";let jF=class{constructor(e,a){this.cd=e,this.translate=a,this.title="Example 6: Grid connected to Backend Server with GraphQL",this.subTitle='\n Sorting/Paging connected to a Backend GraphQL Service (Wiki docs).\n
\n
    \n
  • (*) NO DATA SHOWING - just change Filters & Pages and look at the "GraphQL Query" changing :)
  • \n
  • This example also demos the Grid State feature, open the console log to see the changes
  • \n
  • String column also support operator (>, >=, <, <=, <>, !=, =, ==, *)\n
      \n
    • The (*) can be used as startsWith (ex.: "abc*" => startsWith "abc") / endsWith (ex.: "*xyz" => endsWith "xyz")
    • \n
    • The other operators can be used on column type number for example: ">=100" (bigger or equal than 100)
    • \n
    \n
  • You can also preload a grid with certain "presets" like Filters / Sorters / Pagination Wiki - Grid Preset\n
\n ',this.subscriptions=[],this.dataset=[],this.isWithCursor=!1,this.graphqlQuery="",this.processing=!0,this.status={text:"processing...",class:"alert alert-danger"},this.serverWaitDelay=250;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){kc(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"name",field:"name",nameKey:"NAME",width:60,columnGroupKey:"CUSTOMER_INFORMATION",type:F.string,sortable:!0,filterable:!0,filter:{model:ie.compoundInput}},{id:"gender",field:"gender",nameKey:"GENDER",filterable:!0,sortable:!0,width:60,columnGroupKey:"CUSTOMER_INFORMATION",filter:{model:ie.singleSelect,collection:[{value:"",label:""},{value:"male",label:"male",labelKey:"MALE"},{value:"female",label:"female",labelKey:"FEMALE"}]}},{id:"company",field:"company",nameKey:"COMPANY",width:60,columnGroupKey:"CUSTOMER_INFORMATION",sortable:!0,filterable:!0,filter:{model:ie.multipleSelect,collection:[{value:"acme",label:"Acme"},{value:"abc",label:"Company ABC"},{value:"xyz",label:"Company XYZ"}],filterOptions:{filter:!0}}},{id:"billingAddressStreet",field:"billing.address.street",nameKey:"BILLING.ADDRESS.STREET",width:60,filterable:!0,sortable:!0,columnGroupKey:"BILLING.INFORMATION"},{id:"billingAddressZip",field:"billing.address.zip",nameKey:"BILLING.ADDRESS.ZIP",width:60,type:F.number,columnGroupKey:"BILLING.INFORMATION",filterable:!0,sortable:!0,filter:{model:ie.compoundInput},formatter:G.multiple,params:{formatters:[G.complexObject,G.translate]}},{id:"finish",field:"finish",name:"Date",formatter:G.dateIso,sortable:!0,minWidth:90,width:120,exportWithFormatter:!0,type:F.date,columnGroupKey:"BILLING.INFORMATION",filterable:!0,filter:{model:ie.dateRange}}];const e=ai(Vs(new Date,-2),"YYYY-MM-DD"),a=ai(Vs(new Date,20),"YYYY-MM-DD");this.gridOptions={gridHeight:200,gridWidth:900,enableFiltering:!0,enableCellNavigation:!0,enableTranslate:!0,createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:28,i18n:this.translate,gridMenu:{resizeOnShowHeaderRow:!0,commandItems:[{iconCssClass:"mdi mdi-close text-danger",title:"Reset Grid",disabled:!1,command:"reset-grid",positionOrder:60}],onCommand:(u,i)=>{"reset-grid"===i.command&&(this.angularGrid.gridService.resetGrid(this.columnDefinitions),localStorage[qK]=null)}},enablePagination:!0,pagination:{pageSizes:[10,15,20,25,30,40,50,75,100],pageSize:20,totalItems:0},presets:{columns:[{columnId:"name",width:100},{columnId:"gender",width:55},{columnId:"company"},{columnId:"billingAddressZip"},{columnId:"billingAddressStreet",width:120},{columnId:"finish",width:130}],filters:[{columnId:"gender",searchTerms:["male"],operator:re.equal},{columnId:"name",searchTerms:["John Doe"],operator:re.contains},{columnId:"company",searchTerms:["xyz"],operator:"IN"},{columnId:"finish",searchTerms:[e,a],operator:re.rangeInclusive}],sorters:[{columnId:"name",direction:"asc"},{columnId:"company",direction:gi.DESC}],pagination:{pageNumber:this.isWithCursor?1:2,pageSize:20}},backendServiceApi:{service:new $K,options:{datasetName:zL,addLocaleIntoQuery:!0,extraQueryArguments:[{field:"userId",value:123}],useCursor:this.isWithCursor,keepArgumentFieldDoubleQuotes:!0},preProcess:()=>this.displaySpinner(!0),process:u=>this.getCustomerApiCall(u),postProcess:u=>{this.metrics=u.metrics,this.displaySpinner(!1),this.cd.detectChanges()}}}}angularGridReady(e){this.angularGrid=e}displaySpinner(e){this.processing=e,this.status=e?{text:"processing...",class:"alert alert-danger"}:{text:"finished",class:"alert alert-success"}}getCustomerApiCall(e){let a;if(this.angularGrid?.paginationService){const{paginationService:i}=this.angularGrid,r=i._initialized?i.getCurrentPageNumber():1,o=String.fromCharCode(65+r-1),d=String.fromCharCode(o.charCodeAt(0)+1);a={hasPreviousPage:0===i.dataFrom,hasNextPage:100===i.dataTo,startCursor:o,endCursor:d}}else a={hasPreviousPage:!1,hasNextPage:!0,startCursor:"A",endCursor:"B"};const u={data:{[zL]:{nodes:[],totalCount:100,pageInfo:a}}};return new Promise(i=>{setTimeout(()=>{this.graphqlQuery=this.angularGrid.backendService.buildQuery(),this.isWithCursor&&this.angularGrid?.paginationService?.setCursorPageInfo(u.data[zL].pageInfo),i(u)},this.serverWaitDelay)})}goToFirstPage(){this.angularGrid.paginationService.goToFirstPage()}goToLastPage(){this.angularGrid.paginationService.goToLastPage()}gridStateChanged(e){console.log("GraphQL Example, Grid State changed:: ",e),localStorage[qK]=JSON.stringify(e.gridState)}clearAllFiltersAndSorts(){this.angularGrid?.gridService&&this.angularGrid.gridService.clearAllFiltersAndSorts()}saveCurrentGridState(){console.log("GraphQL current grid state",this.angularGrid.gridStateService.getCurrentGridState())}setFiltersDynamically(){const e=ai(Vs(new Date,-2),"YYYY-MM-DD"),a=ai(Vs(new Date,20),"YYYY-MM-DD");this.angularGrid.filterService.updateFilters([{columnId:"gender",searchTerms:["female"],operator:re.equal},{columnId:"name",searchTerms:["Jane"],operator:re.startsWith},{columnId:"company",searchTerms:["acme"],operator:"IN"},{columnId:"billingAddressZip",searchTerms:["11"],operator:re.greaterThanOrEqual},{columnId:"finish",searchTerms:[e,a],operator:re.rangeInclusive}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"billingAddressZip",direction:"DESC"},{columnId:"company",direction:"ASC"}])}resetToOriginalPresets(){const e=ai(Vs(new Date,-2),"YYYY-MM-DD"),a=ai(Vs(new Date,20),"YYYY-MM-DD");this.angularGrid.filterService.updateFilters([{columnId:"gender",searchTerms:["male"],operator:re.equal},{columnId:"name",searchTerms:["John Doe"],operator:re.contains},{columnId:"company",searchTerms:["xyz"],operator:"IN"},{columnId:"finish",searchTerms:[e,a],operator:re.rangeInclusive}]),this.angularGrid.sortService.updateSorting([{columnId:"name",direction:"asc"},{columnId:"company",direction:gi.DESC}]),setTimeout(()=>{this.angularGrid.paginationService?.changeItemPerPage(20),this.angularGrid.paginationService?.goToPageNumber(2)})}setIsWithCursor(e){return this.isWithCursor=e,this.resetOptions({useCursor:this.isWithCursor}),!0}resetOptions(e){const a=this.gridOptions.backendServiceApi.service;this.angularGrid.paginationService.setCursorBased(e.useCursor),a.updateOptions(e),this.gridOptions={...this.gridOptions},this.angularGrid.paginationService?.goToFirstPage()}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}static#e=this.ctorParameters=()=>[{type:dn},{type:it}]};jF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n
\n Status: {{status.text}}\n \n \n \n
\n\n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n \n Locale:\n \n {{selectedLanguage + \'.json\'}}\n \n
\n\n \n \n \n \n
\n
\n
\n Metrics: {{metrics.endTime | date: \'yyyy-MM-dd hh:mm aaaaa\\\'m\\\'\'}} | {{metrics.executionTime}}ms\n | {{metrics.totalItemCount}} items\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n
\n
\n GraphQL Query:\n
\n
\n
\n
\n\n
\n \n \n
'}),Nt("design:paramtypes",[dn,it])],jF);var _me=W(220),Fme=W.n(_me);const ML="https://countries.trevorblades.com/";let OF=class{constructor(e){this.http=e,this.title="Example 27: GraphQL Basic API without Pagination",this.subTitle='\n Use basic GraphQL query with any external public APIs (Wiki docs).\n
    \n
  • This Examples uses a Public GraphQL API that you can find at this link https://countries.trevorblades.com/
  • \n
  • Compare to the regular and default GraphQL implementation, you will find the following differences
  • \n
      \n
    • There are no Pagination and we only use GraphQL once to load the data, then we use the grid as a regular local in-memory grid
    • \n
    • We enabled the following 2 flags "useLocalFiltering" and "useLocalSorting" to use regular (in memory) DataView filtering/sorting
    • \n
    \n
  • NOTE - This Example calls multiple GraphQL queries, this is ONLY for demo purposes, you would typically only call 1 query (which is what GraphQL is good at)
  • \n
  • This example is mainly to demo the use of GraphqlService to build the query and retrieve the data but also to demo how to mix that with local (in-memory) Filtering/Sorting strategies
  • \n
\n ',this.dataset=[],this.graphqlQuery="",this.processing=!0,this.status={text:"processing...",class:"alert alert-danger"},this.isDataLoaded=!1}ngOnInit(){this.columnDefinitions=[{id:"countryCode",field:"code",name:"Code",maxWidth:90,sortable:!0,filterable:!0,columnGroup:"Country"},{id:"countryName",field:"name",name:"Name",width:60,sortable:!0,filterable:!0,columnGroup:"Country"},{id:"countryNative",field:"native",name:"Native",width:60,sortable:!0,filterable:!0,columnGroup:"Country"},{id:"countryPhone",field:"phone",name:"Phone Area Code",maxWidth:110,sortable:!0,filterable:!0,columnGroup:"Country"},{id:"countryCurrency",field:"currency",name:"Currency",maxWidth:90,sortable:!0,filterable:!0,columnGroup:"Country"},{id:"countryEmoji",field:"emoji",name:"Emoji",maxWidth:90,sortable:!0,columnGroup:"Country"},{id:"languageName",field:"languages.name",name:"Names",width:60,formatter:G.arrayObjectToCsv,columnGroup:"Language",params:{propertyNames:["name"],useFormatterOuputToFilter:!0},filterable:!0,filter:{model:ie.multipleSelect,collectionAsync:this.getLanguages(),operator:re.inContains,collectionOptions:{addBlankEntry:!0,collectionInsideObjectProperty:"data.languages"},collectionFilterBy:[{property:"name",value:"",operator:"NE"},{property:"name",value:null,operator:"NE"}],collectionSortBy:{property:"name"},customStructure:{value:"name",label:"name"},filterOptions:{filter:!0}}},{id:"languageNative",field:"languages.native",name:"Native",width:60,formatter:G.arrayObjectToCsv,params:{propertyNames:["native"],useFormatterOuputToFilter:!0},columnGroup:"Language",filterable:!0,filter:{model:ie.multipleSelect,collectionAsync:this.getLanguages(),operator:re.inContains,collectionOptions:{addBlankEntry:!0,collectionInsideObjectProperty:"data.languages"},collectionFilterBy:[{property:"native",value:"",operator:"NE"},{property:"native",value:null,operator:"NE"}],collectionSortBy:{property:"native"},customStructure:{value:"native",label:"native"},filterOptions:{filter:!0}}},{id:"languageCode",field:"languages.code",name:"Codes",maxWidth:100,formatter:G.arrayObjectToCsv,params:{propertyNames:["code"],useFormatterOuputToFilter:!0},columnGroup:"Language",filterable:!0},{id:"continentName",field:"continent.name",name:"Name",width:60,sortable:!0,filterable:!0,formatter:G.complexObject,columnGroup:"Continent"},{id:"continentCode",field:"continent.code",name:"Code",maxWidth:90,sortable:!0,filterable:!0,filter:{model:ie.singleSelect,collectionAsync:this.getContinents(),collectionOptions:{collectionInsideObjectProperty:"data.continents",addBlankEntry:!0,separatorBetweenTextLabels:": "},customStructure:{value:"code",label:"code",labelSuffix:"name"}},formatter:G.complexObject,columnGroup:"Continent"}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!0,enableCellNavigation:!0,enablePagination:!1,createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:28,datasetIdPropertyName:"code",showCustomFooter:!0,backendServiceApi:{service:new $K,useLocalFiltering:!0,useLocalSorting:!0,options:{datasetName:"countries"},preProcess:()=>this.isDataLoaded?"":this.displaySpinner(!0),process:e=>this.getCountries(e),postProcess:e=>{this.metrics=e.metrics,this.displaySpinner(!1),this.isDataLoaded=!0}}}}displaySpinner(e){this.processing=e,this.status=e?{text:"processing...",class:"alert alert-danger"}:{text:"finished",class:"alert alert-success"}}getCountries(e){return this.http.post(ML,{query:e})}getContinents(){return this.http.post(ML,{query:"query { continents { code, name }}"})}getLanguages(){return this.http.post(ML,{query:"query { languages { code, name, native }}"})}static#e=this.ctorParameters=()=>[{type:xu}]};OF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n
\n
\n
\n\n
\n
\n
\n Status: {{status.text}}\n \n \n \n
\n
\n
\n\n \n \n
',encapsulation:Tt.None,styles:[Fme()]}),Nt("design:paramtypes",[xu])],OF);let GF=class{constructor(){this.title="Example 14: Grouping & Aggregators",this.subTitle='\n (Wiki docs)\n
    \n
  • \n Fully dynamic and interactive multi-level grouping with filtering and aggregates over 50\'000 items\n
  • \n
  • Each grouping level can have its own aggregates (over child rows, child groups, or all descendant rows)..
  • \n
\n ',this.processing=!1,this.excelExportService=new rl,this.textExportService=new BL}ngOnInit(){this.columnDefinitions=[{id:"sel",name:"#",field:"num",width:40,excludeFromExport:!0,maxWidth:70,resizable:!0,filterable:!0,selectable:!1,focusable:!1},{id:"title",name:"Title",field:"title",width:50,minWidth:50,cssClass:"cell-title",filterable:!0,sortable:!0},{id:"duration",name:"Duration",field:"duration",minWidth:50,width:60,filterable:!0,filter:{model:ie.slider,operator:">="},sortable:!0,type:F.number,groupTotalsFormatter:nt.sumTotals,params:{groupFormatterPrefix:"Total: "}},{id:"%",name:"% Complete",field:"percentComplete",minWidth:70,width:90,formatter:G.percentCompleteBar,filterable:!0,filter:{model:ie.compoundSlider},sortable:!0,type:F.number,groupTotalsFormatter:nt.avgTotalsPercentage,params:{groupFormatterPrefix:"Avg: "}},{id:"start",name:"Start",field:"start",minWidth:60,filterable:!0,filter:{model:ie.compoundDate},sortable:!0,type:F.dateIso,formatter:G.dateIso,exportWithFormatter:!0},{id:"finish",name:"Finish",field:"finish",minWidth:60,filterable:!0,filter:{model:ie.compoundDate},sortable:!0,type:F.dateIso,formatter:G.dateIso,exportWithFormatter:!0},{id:"cost",name:"Cost",field:"cost",minWidth:70,width:80,sortable:!0,filterable:!0,filter:{model:ie.compoundInputNumber},type:F.number,formatter:G.currency,groupTotalsFormatter:nt.sumTotalsCurrency,params:{displayNegativeNumberWithParentheses:!0,currencyPrefix:"\u20ac",groupFormatterCurrencyPrefix:"\u20ac",minDecimal:2,maxDecimal:4,groupFormatterPrefix:"Total: "},excelExportOptions:{style:{font:{outline:!0,italic:!0},format:"\u20ac0.00##;[Red](\u20ac0.00##)"},width:18},groupTotalsExcelExportOptions:{style:{alignment:{horizontal:"center"},font:{bold:!0,color:"FF005289",underline:"single",fontName:"Consolas",size:10},fill:{type:"pattern",patternType:"solid",fgColor:"FFE6F2F6"},border:{top:{color:"FFa500ff",style:"thick"},left:{color:"FFa500ff",style:"medium"},right:{color:"FFa500ff",style:"dotted"},bottom:{color:"FFa500ff",style:"double"}},format:'"Total: "\u20ac0.00##;[Red]"Total: "(\u20ac0.00##)'}}},{id:"effort-driven",name:"Effort Driven",minWidth:20,width:80,maxWidth:80,cssClass:"cell-effort-driven",field:"effortDriven",formatter:G.checkmarkMaterial,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ie.singleSelect}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableExcelExport:!0,enableFiltering:!0,enableGrouping:!0,enableTextExport:!0,gridMenu:{hideExportTextDelimitedCommand:!1},excelExportOptions:{sanitizeDataExport:!0},textExportOptions:{sanitizeDataExport:!0},externalResources:[this.excelExportService,this.textExportService]},this.loadData(500)}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid,this.dataviewObj=e.dataView}loadData(e){const a=[];for(let u=0;u`Duration: ${e.value} (${e.count} items)`,aggregators:[new cu_Avg("percentComplete"),new cu_Sum("cost")],comparer:(e,a)=>L0.numeric(e.value,a.value,eu.asc),aggregateCollapsed:!1,lazyTotalsCalculation:!0}),this.angularGrid.filterService.setSortColumnIcons([{columnId:"duration",sortAsc:!0}]),this.gridObj.invalidate()}groupByDurationOrderByCount(e){this.angularGrid.filterService.setSortColumnIcons([]),this.dataviewObj.setGrouping({getter:"duration",formatter:a=>`Duration: ${a.value} (${a.count} items)`,comparer:(a,u)=>a.count-u.count,aggregators:[new cu_Avg("percentComplete"),new cu_Sum("cost")],aggregateCollapsed:e,lazyTotalsCalculation:!0}),this.gridObj.invalidate()}groupByDurationEffortDriven(){this.angularGrid.filterService.setSortColumnIcons([]),this.dataviewObj.setGrouping([{getter:"duration",formatter:e=>`Duration: ${e.value} (${e.count} items)`,aggregators:[new cu_Sum("duration"),new cu_Sum("cost")],aggregateCollapsed:!0,lazyTotalsCalculation:!0},{getter:"effortDriven",formatter:e=>`Effort-Driven: ${e.value?"True":"False"} (${e.count} items)`,aggregators:[new cu_Avg("percentComplete"),new cu_Sum("cost")],collapsed:!0,lazyTotalsCalculation:!0}]),this.gridObj.invalidate()}groupByDurationEffortDrivenPercent(){this.angularGrid.filterService.setSortColumnIcons([]),this.dataviewObj.setGrouping([{getter:"duration",formatter:e=>`Duration: ${e.value} (${e.count} items)`,aggregators:[new cu_Sum("duration"),new cu_Sum("cost")],aggregateCollapsed:!0,lazyTotalsCalculation:!0},{getter:"effortDriven",formatter:e=>`Effort-Driven: ${e.value?"True":"False"} (${e.count} items)`,aggregators:[new cu_Sum("duration"),new cu_Sum("cost")],lazyTotalsCalculation:!0},{getter:"percentComplete",formatter:e=>`% Complete: ${e.value} (${e.count} items)`,aggregators:[new cu_Avg("percentComplete")],aggregateCollapsed:!0,collapsed:!0,lazyTotalsCalculation:!0}]),this.gridObj.invalidate()}};GF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n\n \n \n
'})],GF);var wme=W(71),Bme=W.n(wme);let KF={},WF={},UF=class{constructor(){this.title="Example 7: Header Button Plugin",this.subTitle='\n This example demonstrates using the Slick.Plugins.HeaderButtons plugin to easily add buttons to colum headers.\n These buttons can be specified directly in the column definition, and are very easy to configure and use.\n (Wiki docs)\n
    \n
  • Resize the 1st column to see all icon/command
  • \n
  • Mouse hover the 2nd column to see it\'s icon/command
  • \n
  • For all the other columns, click on top-right red circle icon to enable highlight of negative numbers.
  • \n
  • Use override callback functions to change the properties of show/hide, enable/disable the menu or certain item(s) from the list
  • \n
      \n
    1. These callbacks are: "itemVisibilityOverride", "itemUsabilityOverride"
    2. \n
    3. for example the "Column E" does not show the header button via "itemVisibilityOverride"
    4. \n
    5. for example the "Column J" header button is displayed but it not usable via "itemUsabilityOverride"
    6. \n
    \n
\n ',this.columnDefinitions1=[],this.columnDefinitions2=[],this.dataset1=[],this.dataset2=[],KF={},WF={}}ngOnInit(){this.defineGrid(),this.dataset1=this.loadData(200,1),this.dataset2=this.loadData(200,2)}angularGrid1Ready(e){this.angularGrid1=e}angularGrid2Ready(e){this.angularGrid2=e}defineGrid(){this.gridOptions1={enableAutoResize:!0,enableHeaderButton:!0,enableHeaderMenu:!1,autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!1,enableExcelCopyBuffer:!0,excelCopyBufferOptions:{onCopyCells:(e,a)=>console.log("onCopyCells",e,a),onPasteCells:(e,a)=>console.log("onPasteCells",e,a),onCopyCancelled:(e,a)=>console.log("onCopyCancelled",e,a)},enableCellNavigation:!0,gridHeight:275,headerButton:{onCommand:(e,a)=>this.handleOnCommand(e,a,1)}},this.gridOptions2={...this.gridOptions1,enableHeaderMenu:!0,enableFiltering:!0,headerButton:{onCommand:(e,a)=>this.handleOnCommand(e,a,2)}}}handleOnCommand(e,a,u){const i=a.column,r=a.button;"toggle-highlight"===a.command&&("mdi mdi-lightbulb-on text-danger"===r.cssClass?(1===u?delete KF[i.id]:delete WF[i.id],r.cssClass="mdi mdi-lightbulb-outline text-warning faded",r.tooltip="Highlight negative numbers."):(1===u?KF[i.id]=!0:WF[i.id]=!0,r.cssClass="mdi mdi-lightbulb-on text-danger",r.tooltip="Remove highlight."),this[`angularGrid${u}`].slickGrid.invalidate())}loadData(e,a){for(let i=0;i<10;i++)this[`columnDefinitions${a}`].push({id:i,name:"Column "+String.fromCharCode(65+i),field:i+"",width:0===i?70:100,filterable:!0,sortable:!0,formatter:(r,o,d,h)=>1===a&&KF[h.id]&&d<0||2===a&&WF[h.id]&&d<0?`
${d}
`:d,header:{buttons:[{cssClass:"mdi mdi-lightbulb-outline text-warning faded",command:"toggle-highlight",tooltip:"Highlight negative numbers.",itemVisibilityOverride:r=>"Column E"!==r.column.name,itemUsabilityOverride:r=>"Column J"!==r.column.name,action:(r,o)=>{console.log(`execute a callback action to "${o.command}" on ${o.column.name}`)}}]}});this[`columnDefinitions${a}`][0].name="Resize me!",this[`columnDefinitions${a}`][0].header={buttons:[{cssClass:"mdi mdi-message-text",handler:()=>{alert("Tag")}},{cssClass:"mdi mdi-forum-outline",handler:()=>{alert("Comment")}},{cssClass:"mdi mdi-information",handler:()=>{alert("Info")}},{cssClass:"mdi mdi-help-circle",handler:()=>{alert("Help")}}]},2===a&&this.columnDefinitions2[0].header?.buttons?.reverse(),this[`columnDefinitions${a}`][1].name="Hover me!",this[`columnDefinitions${a}`][1].header={buttons:[{cssClass:"mdi mdi-help-circle",showOnHover:!0,tooltip:"This button only appears on hover.",handler:()=>{alert("Help")}}]};const u=[];for(let i=0;i[]};UF=Ye([xa({encapsulation:Tt.None,template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
Grid 1
\n \n \n\n
\n
Grid 2 - with both Header Buttons & Menus
\n \n \n\n
',styles:[Bme()]}),Nt("design:paramtypes",[])],UF);let LL=class{constructor(){this.clickedTimes=0}clickMe(){this.clickedTimes++}};LL=Ye([xa({template:'\n
You\'ve clicked me {{clickedTimes}} time(s)
',selector:"custom-footer"})],LL);let JF=class{constructor(){this.title="Example 34: Custom header & footer Templates",this.subTitle="\n Basic Grid with templates for custom headers and footers\n
    \n
  • Pass in custom templates to be rendered at predefined header and footer destinations
  • \n
\n ",this.columnDefinitions=[]}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0},{id:"%",name:"% Complete",field:"percentComplete",sortable:!0},{id:"start",name:"Start",field:"start",formatter:G.dateIso},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",sortable:!0}],this.gridOptions={enableAutoResize:!1,enableSorting:!0,gridHeight:225,gridWidth:800},this.dataset=this.mockData(995)}mockData(e){const a=[];for(let u=0;u\n

\n {{ title }}\n \n \n code\n \n \n

\n
\n\n \n \n

Grid with header and footer slot

\n
\n\n \n \n \n \n
\n'})],JF);var Tme=W(482),Pme=W.n(Tme);let ZF=class{constructor(e){this.translate=e,this.title="Example 8: Header Menu Plugin",this.subTitle='\n This example demonstrates using the Slick.Plugins.HeaderMenu plugin to easily add menus to colum headers.
\n These menus can be specified directly in the column definition, and are very easy to configure and use.\n (Wiki docs)\n
    \n
  • Now enabled by default in the Global Grid Options, it will add the default commands of (hide column, sort asc/desc)
  • \n
  • Hover over any column header to see an arrow showing up on the right
  • \n
  • Try Sorting (multi-sort) the 2 columns "Duration" and "% Complete" (the other ones are disabled)
  • \n
  • Try hiding any columns (you use the "Column Picker" plugin by doing a right+click on the header to show the column back)
  • \n
  • Note: The "Header Button" & "Header Menu" Plugins cannot be used at the same time
  • \n
  • You can change the menu icon via SASS variables as shown in this demo (check all SASS variables)
  • \n
  • Use override callback functions to change the properties of show/hide, enable/disable the menu or certain item(s) from the list
  • \n
      \n
    1. These callbacks are: "itemVisibilityOverride", "itemUsabilityOverride"
    2. \n
    3. for example if we want to disable the "Help" command over the "Title" and "Completed" column
    4. \n
    5. for example don\'t show Help on column "% Complete"
    6. \n
    \n
\n ',this.subscriptions=[];this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){kc(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",nameKey:"TITLE"},{id:"duration",name:"Duration",field:"duration",nameKey:"DURATION",sortable:!0},{id:"percentComplete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",sortable:!0},{id:"start",name:"Start",field:"start",nameKey:"START"},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH"},{id:"completed",name:"Completed",field:"completed",nameKey:"COMPLETED"}],this.columnDefinitions.forEach(e=>{e.header={menu:{commandItems:[{iconCssClass:"mdi mdi-help-circle",titleKey:"HELP",command:"help",tooltip:"Need assistance?",cssClass:"bold",textCssClass:"title"===e.id||"completed"===e.id?"":"blue",positionOrder:99,itemUsabilityOverride:a=>!("title"===a.column.id||"completed"===a.column.id),itemVisibilityOverride:a=>"percentComplete"!==a.column.id,action:(a,u)=>{console.log("execute an action on Help",u)}},{divider:!0,command:"",positionOrder:98},{command:"custom-actions",title:"Hello",positionOrder:99,commandItems:[{command:"hello-world",title:"Hello World"},{command:"hello-slickgrid",title:"Hello SlickGrid"},{command:"sub-menu",title:"Let's play",cssClass:"green",subMenuTitle:"choose your game",subMenuTitleCssClass:"text-italic salmon",commandItems:[{command:"sport-badminton",title:"Badminton"},{command:"sport-tennis",title:"Tennis"},{command:"sport-racquetball",title:"Racquetball"},{command:"sport-squash",title:"Squash"}]}]},{command:"feedback",title:"Feedback",positionOrder:100,commandItems:[{command:"request-update",title:"Request update from supplier",iconCssClass:"mdi mdi-star",tooltip:"this will automatically send an alert to the shipping team to contact the user for an update"},"divider",{command:"sub-menu",title:"Contact Us",iconCssClass:"mdi mdi-account",subMenuTitle:"contact us...",subMenuTitleCssClass:"italic",commandItems:[{command:"contact-email",title:"Email us",iconCssClass:"mdi mdi-pencil-outline"},{command:"contact-chat",title:"Chat with us",iconCssClass:"mdi mdi-message-text-outline"},{command:"contact-meeting",title:"Book an appointment",iconCssClass:"mdi mdi-coffee"}]}]}]}}}),this.gridOptions={enableAutoResize:!0,enableHeaderMenu:!0,autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!1,enableCellNavigation:!0,headerMenu:{hideSortCommands:!1,hideColumnHideCommand:!1,subItemChevronClass:"mdi mdi-chevron-down mdi-rotate-270",onCommand:(e,a)=>{const u=a.item?.command;u.includes("hello-")?alert(a?.item.title):u.includes("sport-")?alert("Just do it, play "+a?.item?.title):u.includes("contact-")?alert("Command: "+a?.item?.command):"help"===a.command&&alert("Please help!!!")}},enableTranslate:!0,i18n:this.translate},this.getData()}getData(){const e=[];for(let a=0;a<1e3;a++)e[a]={id:a,title:"Task "+a,duration:Math.round(25*Math.random())+" days",percentComplete:Math.round(100*Math.random()),start:"01/01/2009",finish:"01/05/2009",completed:a%5==0};this.dataset=e}angularGridReady(e){this.angularGrid=e}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}static#e=this.ctorParameters=()=>[{type:it}]};ZF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n \n Locale:\n \n {{selectedLanguage + \'.json\'}}\n \n\n
\n \n \n
\n
',encapsulation:Tt.None,styles:[Pme()]}),Nt("design:paramtypes",[it])],ZF);const YK=(t,e,a,u,i,r)=>r.getOptions().i18n.instant("TASK_X",{x:a});let $F=class{constructor(e){this.translate=e,this.title="Example 12: Localization (i18n)",this.subTitle='Support multiple locales with the ngx-translate plugin, following these steps (Wiki docs)\n
    \n
  1. You first need to "enableTranslate" in the Grid Options
  2. \n
  3. In the Column Definitions, you have following options
  4. \n
      \n
    • To translate a header title, use "nameKey" with a translate key (nameKey: \'TITLE\')
    • \n
    • For the cell values, you need to use a Formatter, there\'s 2 ways of doing it
    • \n
        \n
      • formatter: myCustomTranslateFormatter <= "Title" column uses it
      • \n
      • formatter: Formatters.translate, i18n: this.translateService <= "Completed" column uses it
      • \n
      \n
    \n
  5. For date localization, you need to create your own custom formatter.
  6. \n
      \n
    • You can easily implement logic to switch between Formatters "dateIso" or "dateUs", depending on current locale.
    • \n
    \n
  7. For the Select (dropdown) filter, you can fill in the "labelKey" property, if found it will use it, else it will use "label"
  8. \n
      \n
    • What if your select options have totally different value/label pair? In this case, you can use the customStructure: { label: \'customLabel\', value: \'customValue\'} to change the property name(s) to use.\'
    • \n
    • What if you want to use "customStructure" and translation? Simply pass this flag enableTranslateLabel: true
    • \n
    • More info on the Select Filter Wiki page\n
    \n
  9. For more info about "Download to File", read the Wiki page
  10. \n
\n ',this.subscriptions=[],this.duplicateTitleHeaderCount=1,this.excelExportService=new rl,this.textExportService=new BL;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){kc(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"id",nameKey:"TITLE",minWidth:100,formatter:YK,sortable:!0,filterable:!0,params:{useFormatterOuputToFilter:!0}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80},{id:"duration",name:"Duration (days)",field:"duration",nameKey:"DURATION",sortable:!0,formatter:G.percentCompleteBar,minWidth:100,exportWithFormatter:!1,filterable:!0,type:F.number,filter:{model:ie.slider,filterOptions:{hideSliderNumber:!0}}},{id:"start",name:"Start",field:"start",nameKey:"START",minWidth:100,formatter:G.dateIso,outputType:F.dateIso,type:F.date,exportWithFormatter:!0,filterable:!0,filter:{model:ie.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:G.dateIso,outputType:F.dateIso,type:F.date,minWidth:100,filterable:!0,filter:{model:ie.compoundDate}},{id:"completedBool",name:"Completed",field:"completedBool",nameKey:"COMPLETED",minWidth:100,sortable:!0,formatter:G.checkmarkMaterial,exportCustomFormatter:G.translateBoolean,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,labelKey:"TRUE"},{value:!1,labelKey:"FALSE"}],model:ie.singleSelect,enableTranslateLabel:!0}},{id:"completed",name:"Completed",field:"completed",nameKey:"COMPLETED",formatter:G.translate,sortable:!0,minWidth:100,exportWithFormatter:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:"TRUE",labelKey:"TRUE"},{value:"FALSE",labelKey:"FALSE"}],collectionSortBy:{property:"labelKey"},enableTranslateLabel:!0,model:ie.singleSelect}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableAutoResize:!0,enableExcelCopyBuffer:!0,enableFiltering:!0,enableTranslate:!0,i18n:this.translate,checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},enableCheckboxSelector:!0,enableRowSelection:!0,showCustomFooter:!0,customFooterOptions:{metricTexts:{itemsKey:"ITEMS",ofKey:"OF",lastUpdateKey:"LAST_UPDATE"},dateFormat:"YYYY-MM-DD, hh:mm a",hideTotalItemCount:!1,hideLastUpdateTimestamp:!1},excelExportOptions:{customExcelHeader:(e,a)=>{const u="fr"===this.translate.currentLang?"Titre qui est suffisament long pour \xeatre coup\xe9":"My header that is long enough to wrap",o=e.getStyleSheet().createFormat({font:{size:12,fontName:"Calibri",bold:!0,color:"FF0000FF"},alignment:{wrapText:!0}});a.setRowInstructions(0,{height:30}),a.mergeCells("B1","D1");const d=[];d.push({value:""}),d.push({value:u,metadata:{style:o.id}}),a.data.push(d)}},gridMenu:{hideExportCsvCommand:!1,hideExportTextDelimitedCommand:!1},enableExcelExport:!0,enableTextExport:!0,textExportOptions:{exportWithFormatter:!0,sanitizeDataExport:!0},externalResources:[this.excelExportService,this.textExportService]},this.loadData(1500)}loadData(e){const a=[];for(let u=0;u{this.selectedLanguage=e}))}static#e=this.ctorParameters=()=>[{type:it}]};$F=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n\n
\n
\n \n Locale: {{selectedLanguage + \'.json\'}}\n\n \n \n \n \n \n \n
\n
\n\n
\n \n \n
\n
'}),Nt("design:paramtypes",[it])],$F);var Hme=W(997),Vme=W.n(Hme);let qF=class{constructor(e){this.translate=e,this.title="Example 9: Grid Menu Control",this.subTitle='\n This example demonstrates using the Slick.Controls.GridMenu plugin to easily add a Grid Menu (aka hamburger menu) on the top right corner of the grid.\n (Wiki docs)\n
\n
    \n
  • You can change the Grid Menu icon, for example "mdi-dots-vertical"    (which is shown in this example)
  • \n
  • By default the Grid Menu shows all columns which you can show/hide them
  • \n
  • You can configure multiple custom "commands" to show up in the Grid Menu and use the "onGridMenuCommand()" callback
  • \n
  • Doing a "right + click" over any column header will also provide a way to show/hide a column (via the Column Picker Plugin)
  • \n
  • You can change the icons of both picker via SASS variables as shown in this demo (check all SASS variables)
  • \n
  • You can also show the Grid Menu anywhere on your page
  • \n
\n ',this.subscriptions=[];this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){kc(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",nameKey:"TITLE",filterable:!0,type:F.string},{id:"duration",name:"Duration",field:"duration",nameKey:"DURATION",sortable:!0,filterable:!0,type:F.string},{id:"percentComplete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",sortable:!0,filterable:!0,type:F.number,formatter:G.percentCompleteBar,filter:{model:ie.compoundSlider,filterOptions:{hideSliderNumber:!1}}},{id:"start",name:"Start",field:"start",nameKey:"START",filterable:!0,type:F.string},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",filterable:!0,type:F.string},{id:"effort-driven",name:"Completed",field:"effortDriven",nameKey:"COMPLETED",maxWidth:80,formatter:G.checkmarkMaterial,type:F.boolean,minWidth:100,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:ie.singleSelect}}],this.gridOptions={columnPicker:{hideForceFitButton:!0,hideSyncResizeButton:!0,onColumnsChanged:(e,a)=>{console.log("Column selection changed from Column Picker, visible columns: ",a.visibleColumns)}},enableAutoResize:!0,enableGridMenu:!0,autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!0,enableCellNavigation:!0,gridMenu:{menuUsabilityOverride:()=>!0,commandTitleKey:"CUSTOM_COMMANDS",iconCssClass:"mdi mdi-dots-vertical",hideForceFitButton:!0,hideSyncResizeButton:!0,hideToggleFilterCommand:!1,menuWidth:17,resizeOnShowHeaderRow:!0,subItemChevronClass:"mdi mdi-chevron-down mdi-rotate-270",commandItems:[{iconCssClass:"mdi mdi-help-circle",titleKey:"HELP",disabled:!1,command:"help",positionOrder:90,cssClass:"bold",textCssClass:"blue"},{divider:!0,command:"",positionOrder:89},{title:"Command 1",command:"command1",positionOrder:91,cssClass:"orange",iconCssClass:"mdi mdi-alert",action:(e,a)=>alert(a.command),itemUsabilityOverride:e=>!e||!Array.isArray(e.columns)||e.columns.length===e.visibleColumns.length},{title:"Command 2",command:"command2",positionOrder:92,cssClass:"red",textCssClass:"italic",action:(e,a)=>alert(a.command),itemVisibilityOverride:()=>!this.angularGrid||this.isObjectEmpty(this.angularGrid.filterService.getColumnFilters())},{title:"Disabled command",disabled:!0,command:"disabled-command",positionOrder:98},{command:"",divider:!0,positionOrder:98},{command:"export",title:"Exports",positionOrder:99,commandItems:[{command:"exports-txt",title:"Text (tab delimited)"},{command:"sub-menu",title:"Excel",cssClass:"green",subMenuTitle:"available formats",subMenuTitleCssClass:"text-italic orange",commandItems:[{command:"exports-csv",title:"Excel (csv)"},{command:"exports-xlsx",title:"Excel (xlsx)"}]}]},{command:"feedback",title:"Feedback",positionOrder:100,commandItems:[{command:"request-update",title:"Request update from supplier",iconCssClass:"mdi mdi-star",tooltip:"this will automatically send an alert to the shipping team to contact the user for an update"},"divider",{command:"sub-menu",title:"Contact Us",iconCssClass:"mdi mdi-account",subMenuTitle:"contact us...",subMenuTitleCssClass:"italic",commandItems:[{command:"contact-email",title:"Email us",iconCssClass:"mdi mdi-pencil-outline"},{command:"contact-chat",title:"Chat with us",iconCssClass:"mdi mdi-message-text-outline"},{command:"contact-meeting",title:"Book an appointment",iconCssClass:"mdi mdi-coffee"}]}]}],onCommand:(e,a)=>{const u=a.item?.command;u.includes("exports-")?alert("Exporting as "+a?.item.title):u.includes("contact-")||"help"===u?alert("Command: "+a.command):console.log("onGridMenuCommand",a.command)},onColumnsChanged:(e,a)=>{console.log("Column selection changed from Grid Menu, visible columns: ",a.visibleColumns)}},enableTranslate:!0,i18n:this.translate},this.getData()}angularGridReady(e){this.angularGrid=e}getData(){const e=[];for(let a=0;a<500;a++)e[a]={id:a,title:"Task "+a,phone:this.generatePhoneNumber(),duration:Math.round(25*Math.random())+" days",percentComplete:Math.round(100*Math.random()),start:"01/01/2009",finish:"01/05/2009",effortDriven:a%5==0};this.dataset=e}generatePhoneNumber(){let e="";for(let a=0;a<10;a++)e+=Math.round(9*Math.random())+"";return e}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}toggleGridMenu(e){this.angularGrid&&this.angularGrid.extensionService&&this.angularGrid.extensionService.getExtensionInstanceByName(oa.gridMenu).showGridMenu(e,{dropSide:"right"})}isObjectEmpty(e){for(const a in e)if(e.hasOwnProperty(a)&&""!==e[a])return!1;return!0}static#e=this.ctorParameters=()=>[{type:it}]};qF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n \n \n\n Locale:\n {{selectedLanguage + \'.json\'}}\n \n\n
\n \n \n
\n
',encapsulation:Tt.None,styles:[Vme()]}),Nt("design:paramtypes",[it])],qF);class Ome{set columnDefinitions(e){this._columnDefinitions=e}set datasetIdPropName(e){this._datasetIdPropName=e}constructor(){this._filterCount=0,this._columnDefinitions=[],this._datasetIdPropName="id",this._odataOptions={filterQueue:[],orderBy:""},this._defaultSortBy="",this._columnFilters={}}buildQuery(){if(!this._odataOptions)throw new Error('Odata Service requires certain options like "top" for it to work');this._odataOptions.filterQueue=[];const e=[];if(this._odataOptions&&!0===this._odataOptions.enableCount){const a=this._odataOptions.version&&this._odataOptions.version>=4?"$count=true":"$inlinecount=allpages";e.push(a)}if(this._odataOptions.top&&e.push(`$top=${this._odataOptions.top}`),this._odataOptions.skip&&e.push(`$skip=${this._odataOptions.skip}`),this._odataOptions.orderBy){let a="";a=Array.isArray(this._odataOptions.orderBy)?this._odataOptions.orderBy.join(","):this._odataOptions.orderBy,e.push(`$orderby=${a}`)}if(this._odataOptions.filterBy||this._odataOptions.filter){const a=this._odataOptions.filter||this._odataOptions.filterBy;if(a){this._filterCount=1,this._odataOptions.filterQueue=[];let u=a;Array.isArray(a)&&(this._filterCount=a.length,u=a.join(` ${this._odataOptions.filterBySeparator||"and"} `)),"string"==typeof u&&("("===u[0]&&")"===u.slice(-1)?this.addToFilterQueueWhenNotExists(u):this.addToFilterQueueWhenNotExists(`(${u})`))}}if(this._odataOptions.filterQueue.length>0){const a=this._odataOptions.filterQueue.join(` ${this._odataOptions.filterBySeparator||"and"} `);this._odataOptions.filter=a,e.push(`$filter=${a}`)}if(this._odataOptions.enableSelect||this._odataOptions.enableExpand){const a=this._columnDefinitions.flatMap(i=>i.fields??[i.field]);a.unshift(this._datasetIdPropName);const u=this.buildSelectExpand([...new Set(a)]);if(this._odataOptions.enableSelect){const i=u.selectParts.join(",");e.push(`$select=${i}`)}if(this._odataOptions.enableExpand){const i=u.expandParts.join(",");e.push(`$expand=${i}`)}}return e.join("&")}getFilterCount(){return this._filterCount}get columnFilters(){return this._columnFilters}get options(){return this._odataOptions}set options(e){this._odataOptions=e}removeColumnFilter(e){this._columnFilters&&this._columnFilters.hasOwnProperty(e)&&delete this._columnFilters[e]}saveColumnFilter(e,a,u){this._columnFilters[e]={search:u,value:a}}updateOptions(e){for(const a of Object.keys(e))if(e.hasOwnProperty(a)&&(this._odataOptions[a]=e[a]),"orderBy"===a||"sortBy"===a){let u=e[a];this._odataOptions.caseType===D3.pascalCase&&(Array.isArray(u)?u.forEach((i,r,o)=>{o[r]=wo(i)}):u=wo(e[a])),this._odataOptions.orderBy=u,this._defaultSortBy=u}}addToFilterQueueWhenNotExists(e){this._odataOptions.filterQueue&&-1===this._odataOptions.filterQueue.indexOf(e)&&this._odataOptions.filterQueue.push(e)}buildSelectExpand(e){const a={},u=new Set;for(const i of e){const r=i.split("/");if(1===r.length)u.add(i);else{const o=r[0],d=r.splice(1).join("/");a[o]||(a[o]=[]),a[o].push(d),this._odataOptions.enableExpand&&!(this._odataOptions.version&&this._odataOptions.version>=4)&&u.add(o)}}return{selectParts:[...u],expandParts:this._odataOptions.enableExpand?this.buildExpand(a):[]}}buildExpand(e){const a=[];for(const u of Object.keys(e))if(this._odataOptions.enableSelect&&this._odataOptions.version&&this._odataOptions.version>=4){const i=this.buildSelectExpand(e[u]);let r=i.selectParts.join(",");r.length>0&&(r="$select="+r),this._odataOptions.enableExpand&&i.expandParts.length>0&&(r+=(r.length>0?";":"")+"$expand="+i.expandParts.join(",")),r.length>0&&(r="("+r+")"),a.push(u+r)}else a.push(u);return a}}class Kme{get columnDefinitions(){return this._columnDefinitions}get odataService(){return this._odataService}get _gridOptions(){return this._grid?.getOptions()??{}}constructor(){this._currentFilters=[],this._currentPagination=null,this._currentSorters=[],this._columnDefinitions=[],this.defaultOptions={top:25,orderBy:"",caseType:D3.pascalCase},this._odataService=new Ome}init(e,a,u,i){this._grid=u;const r={...this.defaultOptions,...e};if(this._gridOptions&&!this._gridOptions.enablePagination)this._odataService.options={...r,top:void 0},this._currentPagination=null;else{const o=a&&a.pageSize?a.pageSize:this.defaultOptions.top;this._odataService.options={...r,top:o},this._currentPagination={pageNumber:1,pageSize:this._odataService.options.top||this.defaultOptions.top||20}}if(this.options=this._odataService.options,this.pagination=a,u?.getColumns){const o=i?.allColumns??u.getColumns()??[];this._columnDefinitions=o.filter(d=>!d.excludeFromQuery)}this._odataService.columnDefinitions=this._columnDefinitions,this._odataService.datasetIdPropName=this._gridOptions.datasetIdPropertyName||"id"}buildQuery(){return this._odataService.buildQuery()}postProcess(e){const a=this._odataService?.options?.version??2;if(this.pagination&&this._odataService?.options?.enableCount){const i=(this._odataService?.options?.countExtractor??a>=4?r=>r?.["@odata.count"]:3===a?r=>r?.__count:r=>r?.d?.__count)(e);"number"==typeof i&&(this.pagination.totalItems=i)}if(this._odataService?.options?.enableExpand){const i=(this._odataService?.options?.datasetExtractor??a>=4?r=>r?.value:3===a?r=>r?.results:r=>r?.d?.results)(e);if(Array.isArray(i)){const r=new Set(this._columnDefinitions.flatMap(o=>o.fields??[o.field]).filter(o=>o.includes("/")));if(r.size>0){const o=new Set;for(const d of i){for(const h of r){const m=h.split("/"),E=m[0];o.add(E);let v=d[E];for(let k=1;k":a="gt";break;case">=":a="ge";break;case"<>":case"!=":a="ne";break;default:a="eq"}return a}resetPaginationOptions(){this._odataService.updateOptions({skip:0})}saveColumnFilter(e,a,u){this._odataService.saveColumnFilter(e,a,u)}processOnFilterChanged(e,a){if(void 0===this._gridOptions.backendServiceApi)throw new Error('Something went wrong in the GridOdataService, "backendServiceApi" is not initialized');if(this._currentFilters=this.castFilterToColumnFilters(a.columnFilters),!a||!a.grid)throw new Error('Something went wrong when trying create the GridOdataService, it seems that "args" is not populated correctly');return this.updateFilters(a.columnFilters),this.resetPaginationOptions(),this._odataService.buildQuery()}processOnPaginationChanged(e,a){const u=+(a.pageSize||(this.pagination?this.pagination.pageSize:20));return this.updatePagination(a.newPage,u),this._odataService.buildQuery()}processOnSortChanged(e,a){const u=a.multiColumnSort?a.sortCols:new Array({columnId:a.sortCol?.id??"",sortCol:a.sortCol,sortAsc:a.sortAsc});return this.updateSorters(u),this._odataService.buildQuery()}updateFilters(e,a){let u="";const i=[],r=this._odataService?.options?.version??2;a&&(this._currentFilters=this.castFilterToColumnFilters(e));for(const o in e)if(e.hasOwnProperty(o)){const d=e[o];let h;if(h=a&&Array.isArray(this._columnDefinitions)?this._columnDefinitions.find(L=>L.id===d.columnId):d.columnDef,!h)throw new Error("[GridOData Service]: Something went wrong in trying to get the column definition of the specified filter (or preset filters). Did you make a typo on the filter columnId?");let m=h.filter?.queryField||h.queryFieldFilter||h.queryField||h.field||h.name||"";m instanceof HTMLElement&&(m=zu(m.innerHTML));const E=h.type||F.string;let v=(d?.searchTerms?[...d.searchTerms]:null)||[],k=Array.isArray(v)&&1===v.length?v[0]:"";if(typeof k>"u"&&(k=""),!m)throw new Error('GridOData filter could not find the field name to query the search, your column definition must include a valid "field" or "name" (optionally you can also use the "queryfield").');if(this._odataService.options.useVerbatimSearchTerms||d.verbatimSearchTerms){i.push(`${m} ${d.operator} ${JSON.stringify(d.searchTerms)}`.trim());continue}k=null==k?"":`${k}`;const f=!1!==(h.autoParseInputFilterOperator??this._gridOptions.autoParseInputFilterOperator)?k.match(/^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/):[k,"",k,""];let C=d.operator||f?.[1],A=f?.[2]||"";const w=f?.[3]||"*z"===C||C===re.endsWith?"*":"",z=d.bypassBackendQuery||!1;if(m&&""===A&&v.length<=1){this.removeColumnFilter(hn(m));continue}if(Array.isArray(v)&&1===v.length&&"string"==typeof v[0]&&v[0].indexOf("..")>=0&&(C!==re.rangeInclusive&&C!==re.rangeExclusive&&(C=this._gridOptions.defaultFilterRangeOperator??re.rangeInclusive),v=v[0].split("..",2),""===v[0]?(C=C===re.rangeInclusive?"<=":C===re.rangeExclusive?"<":C,v=v.slice(1),A=v[0]):""===v[1]&&(C=C===re.rangeInclusive?">=":C===re.rangeExclusive?">":C,v=v.slice(0,1),A=v[0])),!C&&h.filter&&(C=h.filter.operator),!C&&Array.isArray(v)&&2===v.length&&v[0]&&v[1]&&(C=this._gridOptions.defaultFilterRangeOperator),(C===re.rangeInclusive||C===re.rangeExclusive)&&Array.isArray(v)&&1===v.length&&E===F.date&&(C=re.equal),C||(C=x2(E)),z)m&&this.saveColumnFilter(hn(m),k,v);else{if(A=this.normalizeSearchValue(E,A,r),Array.isArray(v)&&v.forEach((L,M)=>{v[M]=this.normalizeSearchValue(E,v[M],r)}),u="",this._odataService.options.caseType===D3.pascalCase&&(m=wo(hn(m||""))),v&&v.length>1&&("IN"===C||"NIN"===C||"NOTIN"===C||"NOT IN"===C||"NOT_IN"===C)){const L=[];if("IN"===C){for(let M=0,j=v.length;M=4?`contains(${m}, ${A})`:`substringof(${A}, ${m})`,C===re.notContains&&(u=`not ${u}`));""!==u&&(i.push(u.trim()),this.saveColumnFilter(hn(m||""),k,A))}}this._odataService.updateOptions({filter:i.length>0?i.join(" and "):"",skip:void 0})}updatePagination(e,a){this._currentPagination={pageNumber:e,pageSize:a},this._gridOptions&&(this._gridOptions.enablePagination||!this._gridOptions.hasOwnProperty("enablePagination"))&&this._odataService.updateOptions({top:a,skip:(e-1)*a})}updateSorters(e,a){let u=[];const i=[];if(!e&&a){u=a,u.forEach(d=>d.direction=d.direction.toLowerCase());const o=u.map(d=>{const h=this._columnDefinitions.find(m=>m.id===d.columnId);return i.push({field:h?(h.queryFieldSorter||h.queryField||h.field)+"":d.columnId+"",direction:d.direction}),h?{columnId:d.columnId,sortAsc:d.direction.toUpperCase()===gi.ASC}:null});Array.isArray(o)&&this._grid&&this._grid.setSortColumns(o)}else if(e&&!a&&0!==e?.length&&e)for(const o of e)if(o.sortCol){let d=(o.sortCol.queryFieldSorter||o.sortCol.queryField||o.sortCol.field)+"",h=(o.sortCol.field||o.sortCol.id)+"",m=(o.sortCol.queryFieldSorter||o.sortCol.queryField||o.sortCol.field||"")+"";this._odataService.options.caseType===D3.pascalCase&&(d=wo(d),h=wo(h),m=wo(m)),u.push({columnId:o.sortCol.id,direction:o.sortAsc?gi.asc:gi.desc}),""!==m&&i.push({field:m,direction:o.sortAsc?gi.ASC:gi.DESC})}u=u||[];const r=i.map(o=>{let d="";return o&&o.field&&(d=`${this._odataService.options.caseType===D3.pascalCase?wo(o.field):o.field} ${o&&o.direction&&o.direction.toLowerCase()||""}`),d}).join(",");return this._odataService.updateOptions({orderBy:r}),this._currentSorters=u,this._odataService.buildQuery()}castFilterToColumnFilters(e){const a="object"==typeof e?Object.keys(e).map(u=>e[u]):e;return Array.isArray(a)?a.map(u=>{const i={columnId:u.columnId||""};return u.operator&&(i.operator=u.operator),u.targetSelector&&(i.targetSelector=u.targetSelector),Array.isArray(u.searchTerms)&&(i.searchTerms=u.searchTerms),i}):[]}filterBySearchTermRange(e,a,u){let i="";return Array.isArray(u)&&2===u.length&&(a===re.rangeInclusive?(i=`(${e} ge ${u[0]}`,""!==u[1]&&(i+=` and ${e} le ${u[1]}`),i+=")"):a===re.rangeExclusive&&(i=`(${e} gt ${u[0]}`,""!==u[1]&&(i+=` and ${e} lt ${u[1]}`),i+=")")),i}normalizeSearchValue(e,a,u){switch(e){case F.date:a=o0e(a),a=u>=4?a:`DateTime'${a}'`;break;case F.string:case F.text:case F.readonly:"string"==typeof a&&(a=a.replace(/'/g,"''"),a=`'${a=encodeURIComponent(a)}'`);break;case F.integer:case F.number:case F.float:"string"==typeof a&&((""===(a=(a=(a=(a=(a=a.replace(/\.\./g,".")).replace(/\.+$/g,"")).replace(/^\.+/g,"0.")).replace(/^-+\.+/g,"-0.")).replace(/(?!^-)[^\d.]/g,""))||"-"===a)&&(a="0"))}return a}}let YF=class{constructor(e,a){this.cd=e,this.http=a,this.title="Example 5: Grid connected to Backend Server with OData",this.subTitle='\n Sorting/Paging connected to a Backend OData Service (Docs).\n
\n
    \n
  • Only "Name" field is sortable for the demo (because we use JSON files), however "multiColumnSort: true" is also supported
  • \n
  • This example also demos the Grid State feature, open the console log to see the changes
  • \n
  • String column also support operator (>, >=, <, <=, <>, !=, =, ==, *)\n
      \n
    • The (*) can be used as startsWith (ex.: "abc*" => startsWith "abc") / endsWith (ex.: "*xyz" => endsWith "xyz")
    • \n
    • The other operators can be used on column type number for example: ">=100" (bigger or equal than 100)
    • \n
    \n
  • OData Service could be replaced by other Service type in the future (GraphQL or whichever you provide)
  • \n
  • You can also preload a grid with certain "presets" like Filters / Sorters / Pagination Docs - Grid Preset\n
  • NOTE: For demo purposes, the last column (filter & sort) will always throw an\n error and its only purpose is to demo what would happen when you encounter a backend server error\n (the UI should rollback to previous state before you did the action).\n Also changing Page Size to 50,000 will also throw which again is for demo purposes.\n
  • \n
\n ',this.dataset=[],this.isCountEnabled=!0,this.isSelectEnabled=!1,this.isExpandEnabled=!1,this.odataVersion=2,this.odataQuery="",this.processing=!0,this.errorStatus="",this.isPageErrorTest=!1,this.status={text:"processing...",class:"alert alert-danger"}}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.columnDefinitions=[{id:"name",name:"Name",field:"name",sortable:!0,type:F.string,filterable:!0,filter:{model:ie.compoundInput}},{id:"gender",name:"Gender",field:"gender",filterable:!0,sortable:!0,filter:{model:ie.singleSelect,collection:[{value:"",label:""},{value:"male",label:"male"},{value:"female",label:"female"}]}},{id:"company",name:"Company",field:"company",filterable:!0,sortable:!0},{id:"category_name",name:"Category",field:"category/name",filterable:!0,sortable:!0}],this.gridOptions={enableAutoResize:!0,autoResize:{container:"#demo-container",rightPadding:10},checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},enableCellNavigation:!0,enableFiltering:!0,enableCheckboxSelector:!0,enableRowSelection:!0,enablePagination:!0,pagination:{pageSizes:[10,20,50,100,500,5e4],pageSize:20,totalItems:0},presets:{filters:[{columnId:"gender",searchTerms:["male"],operator:re.equal}],sorters:[{columnId:"name",direction:"asc"}],pagination:{pageNumber:2,pageSize:20}},backendServiceApi:{service:new Kme,options:{enableCount:this.isCountEnabled,enableSelect:this.isSelectEnabled,enableExpand:this.isExpandEnabled,version:this.odataVersion},onError:e=>{this.errorStatus=e.message,this.displaySpinner(!1,!0)},preProcess:()=>{this.errorStatus="",this.displaySpinner(!0)},process:e=>this.getCustomerApiCall(e),postProcess:e=>{this.metrics=e.metrics,this.displaySpinner(!1),this.getCustomerCallback(e),this.cd.detectChanges()}}}}displaySpinner(e,a){this.processing=e,this.status=a?{text:"ERROR!!!",class:"alert alert-danger"}:e?{text:"loading",class:"alert alert-warning"}:{text:"finished",class:"alert alert-success"},this.cd.detectChanges()}getCustomerCallback(e){let a=e.totalRecordCount;this.isCountEnabled&&(a=4===this.odataVersion?e["@odata.count"]:e.d.__count),this.metrics&&(this.metrics.totalItemCount=a),this.paginationOptions={...this.gridOptions.pagination,totalItems:a},this.dataset=4===this.odataVersion?e.value:e.d.results,this.odataQuery=e.query}getCustomerApiCall(e){return this.getCustomerDataApiMock(e)}goToFirstPage(){this.angularGrid.paginationService.goToFirstPage()}goToLastPage(){this.angularGrid.paginationService.goToLastPage()}setFiltersDynamically(){this.angularGrid.filterService.updateFilters([{columnId:"name",searchTerms:["A"],operator:"a*"}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"name",direction:"DESC"}])}getCustomerDataApiMock(e){return new Promise((a,u)=>{const i=e.toLowerCase().split("&");let r,o=0,d="",h=100;const m={};if(this.isPageErrorTest)throw this.isPageErrorTest=!1,new Error("Server timed out trying to retrieve data for the last page");for(const E of i){if(E.includes("$top=")&&(r=+E.substring(5),5e4===r))throw new Error("Server timed out retrieving 50,000 rows");if(E.includes("$skip=")&&(o=+E.substring(6)),E.includes("$orderby=")&&(d=E.substring(9)),E.includes("$filter=")){const v=E.substring(8).replace("%20"," ");if(v.includes("contains")){const k=v.match(/contains\(([a-zA-Z\/]+),\s?'(.*?)'/),x=k[1].trim();m[x]={type:"substring",term:k[2].trim()}}if(v.includes("substringof")){const k=v.match(/substringof\('(.*?)',\s([a-zA-Z\/]+)/),x=k[2].trim();m[x]={type:"substring",term:k[1].trim()}}for(const k of["eq","ne","le","lt","gt","ge"])if(v.includes(k)){const f=new RegExp(`([a-zA-Z ]*) ${k} '(.*?)'`).exec(v);if(Array.isArray(f)){const C=f[1].trim();m[C]={type:k,term:f[2].trim()}}}if(v.includes("startswith")){const k=v.match(/startswith\(([a-zA-Z ]*),\s?'(.*?)'/),x=k[1].trim();m[x]={type:"starts",term:k[2].trim()}}if(v.includes("endswith")){const k=v.match(/endswith\(([a-zA-Z ]*),\s?'(.*?)'/),x=k[1].trim();m[x]={type:"ends",term:k[2].trim()}}if(v.includes("company"))throw new Error('Server could not filter using the field "Company"')}}if(d.includes("company"))throw new Error('Server could not sort using the field "Company"');this.http.get("assets/data/customers_100.json").subscribe(E=>{let v=E;if(d?.length>0){const C=d.split(",");for(const A of C){const w=A.split(" "),z=w[0];let L=j=>j;for(const j of z.split("/")){const $=L;L=oe=>$(oe)[j]}switch((w[1]??"asc").toLocaleLowerCase()){case"asc":v=v.sort((j,$)=>L(j).localeCompare(L($)));break;case"desc":v=v.sort((j,$)=>L($).localeCompare(L(j)))}}}const k=o;let x=v;if(m){for(const C in m)m.hasOwnProperty(C)&&(x=x.filter(A=>{const w=m[C].type,z=m[C].term;let L=C;if(C&&-1!==C.indexOf(" ")){const $=C.split(" ");L=$[$.length-1]}let M,j=A;for(const $ of L.split("/"))M=j[$],j=M;if(M)switch(w){case"eq":return M.toLowerCase()===z;case"ne":return M.toLowerCase()!==z;case"le":return M.toLowerCase()<=z;case"lt":return M.toLowerCase()z;case"ge":return M.toLowerCase()>=z;case"ends":return M.toLowerCase().endsWith(z);case"starts":return M.toLowerCase().startsWith(z);case"substring":return M.toLowerCase().includes(z)}}));h=x.length}const f=x.slice(k,k+r);setTimeout(()=>{const C={query:e};this.isCountEnabled||(C.totalRecordCount=h),4===this.odataVersion?(C.value=f,this.isCountEnabled&&(C["@odata.count"]=h)):(C.d={results:f},this.isCountEnabled&&(C.d.__count=h)),a(C)},100)})})}gridStateChanged(e){console.log("Client sample, Grid State changed:: ",e.change)}throwPageChangeError(){this.isPageErrorTest=!0,this.angularGrid?.paginationService?.goToLastPage()}handleOnBeforeSort(e){return!0}handleOnBeforeSearchChange(e){return!0}handleOnBeforePaginationChange(e){return!0}changeCountEnableFlag(){return this.isCountEnabled=!this.isCountEnabled,this.resetOptions({enableCount:this.isCountEnabled}),!0}changeEnableSelectFlag(){return this.isSelectEnabled=!this.isSelectEnabled,this.resetOptions({enableSelect:this.isSelectEnabled}),!0}changeEnableExpandFlag(){return this.isExpandEnabled=!this.isExpandEnabled,this.resetOptions({enableExpand:this.isExpandEnabled}),!0}setOdataVersion(e){return this.odataVersion=e,this.resetOptions({version:this.odataVersion}),!0}resetOptions(e){const a=this.gridOptions.backendServiceApi.service;a.updateOptions(e),a.clearFilters(),this.angularGrid?.filterService.clearFilters()}static#e=this.ctorParameters=()=>[{type:dn},{type:xu}]};YF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n
\n
\n
\n
\n
\n Backend Error: \n
\n
\n
\n\n
\n
\n
\n Status: {{status.text}}\n \n \n \n
\n
\n
\n
\n OData Query: {{odataQuery}}\n
\n
\n
\n\n
\n
\n \n \n
\n \n Metrics: {{metrics.endTime | date: \'yyyy-MM-dd hh:mm aaaaa\\\'m\\\'\'}} | {{metrics.executionTime}}ms\n | {{metrics.totalItemCount}} items\n \n
\n\n
\n \n \n \n \n \n \n \n \n
\n
\n
\n
\n \n\n \n \n
\n \n \n
\n
\n
\n
\n\n \n \n
'}),Nt("design:paramtypes",[dn,xu])],YF);function uD(t,e){return Math.floor(Math.random()*(e-t+1)+t)}const Zme=(t,e,a,u,i,r)=>r.getOptions().i18n.instant("TASK_X",{x:a});let QF=class{constructor(e){this.translate=e,this.title="Example 25: Filtering from Range of Search Values",this.subTitle='\n This demo shows how to use Filters with Range of Search Values (Wiki docs)\n
\n
    \n
  • All input filters support the following operators: (>, >=, <, <=, <>, !=, =, ==, *) and now also the (..) for an input range
  • \n
  • All filters (which support ranges) can be defined via the 2 dots (..) which represents a range, this also works for dates and slider in the "presets"
  • \n
      \n
    • For a numeric range defined in an input filter (must be of type text), you can use 2 dots (..) to represent a range
    • \n
    • example: typing "10..90" will filter values between 10 and 90 (but excluding the number 10 and 90)
    • \n
    \n
      \n
    • note that the examples shown below for the operator, are case sensitive
    • \n
    • by default the range is inclusive which would be the same as defining the filter options to "operator: \'RangeInclusive\'" or "operator: OperatoryType.rangeInclusive"
    • \n
    • you can also set the inverse (exclusive) by defining the filter options to "operator: \'RangeExclusive\'" or "operator: OperatoryType.rangeExclusive"
    • \n
    \n
  • Date Range with Vanilla Calendar Date Picker, they will also use the locale, choose a start date then drag or click on the end date
  • \n
\n ',this.subscriptions=[],this.filterList=[{value:"",label:""},{value:"currentYearTasks",label:"Current Year Completed Tasks"},{value:"nextYearTasks",label:"Next Year Active Tasks"}];this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){kc(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"id",nameKey:"TITLE",minWidth:100,formatter:Zme,sortable:!0,filterable:!0,params:{useFormatterOuputToFilter:!0}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,type:F.string,filter:{model:_L,enableTrimWhiteSpace:!0}},{id:"percentComplete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",minWidth:120,sortable:!0,customTooltip:{position:"center"},formatter:G.progressBar,type:F.number,filterable:!0,filter:{model:ie.sliderRange,maxValue:100,operator:re.rangeInclusive,filterOptions:{hideSliderNumbers:!1,min:0,step:5}}},{id:"start",name:"Start",field:"start",nameKey:"START",formatter:G.dateIso,sortable:!0,minWidth:75,width:100,exportWithFormatter:!0,type:F.date,filterable:!0,filter:{model:ie.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:G.dateIso,sortable:!0,minWidth:75,width:120,exportWithFormatter:!0,type:F.date,filterable:!0,filter:{model:ie.dateRange}},{id:"duration",field:"duration",nameKey:"DURATION",maxWidth:90,type:F.number,sortable:!0,filterable:!0,filter:{model:ie.input,operator:re.rangeExclusive}},{id:"completed",name:"Completed",field:"completed",nameKey:"COMPLETED",minWidth:85,maxWidth:90,formatter:G.checkmarkMaterial,exportWithFormatter:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ie.singleSelect,filterOptions:{autoAdjustDropHeight:!0}}}];const e=new Date,a=ai(Vs(new Date,-2),"YYYY-MM-DD"),u=ai(Vs(new Date,e.getDate()<14?30:25),"YYYY-MM-DD");this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableExcelCopyBuffer:!0,enableFiltering:!0,enableTranslate:!0,i18n:this.translate,presets:{filters:[{columnId:"duration",searchTerms:["4..88"]},{columnId:"percentComplete",operator:"RangeInclusive",searchTerms:[5,80]},{columnId:"finish",operator:"RangeInclusive",searchTerms:[a,u]}],sorters:[{columnId:"percentComplete",direction:"DESC"},{columnId:"duration",direction:"ASC"}]},externalResources:[new lF,new rl]},this.dataset=this.mockData(1500)}angularGridReady(e){this.angularGrid=e}mockData(e,a=0){const u=[];for(let i=a;i=0&&setTimeout(()=>{this.metrics={startTime:new Date,itemCount:a&&a.current||0,totalItemCount:this.dataset.length||0}})}setFiltersDynamically(){const e=ai(Vs(new Date,-5),"YYYY-MM-DD"),a=ai(Vs(new Date,25),"YYYY-MM-DD");this.angularGrid.filterService.updateFilters([{columnId:"duration",searchTerms:["14..78"],operator:"RangeInclusive"},{columnId:"percentComplete",operator:"RangeExclusive",searchTerms:[15,85]},{columnId:"finish",operator:"RangeInclusive",searchTerms:[e,a]}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"finish",direction:"DESC"},{columnId:"percentComplete",direction:"ASC"}])}usePredefinedFilter(e){let a=[];const u=(new Date).getFullYear();switch(e){case"currentYearTasks":a=[{columnId:"finish",operator:re.rangeInclusive,searchTerms:[`${u}-01-01`,`${u}-12-31`]},{columnId:"completed",operator:re.equal,searchTerms:[!0]}];break;case"nextYearTasks":a=[{columnId:"start",operator:">=",searchTerms:[`${u+1}-01-01`]}]}this.angularGrid.filterService.updateFilters(a)}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}static#e=this.ctorParameters=()=>[{type:it}]};QF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n\n \n Metrics: {{metrics.startTime | date: \'yyyy-MM-dd hh:mm aaaaa\\\'m\\\'\'}} | {{metrics.itemCount}} of\n {{metrics.totalItemCount}} items\n \n\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n Locale: {{selectedLanguage + \'.json\'}}\n
\n
\n\n \n \n
'}),Nt("design:paramtypes",[it])],QF);const qme=(t,e,a,u,i)=>i&&i.brand&&i.brand.name||"",Yme=(t,e,a,u,i)=>{let r="";return i&&i.octopart_url&&i.mpn&&(r=`${i.mpn}`),r};let XF=class{constructor(){this._eventHandler=new Ot,this.title="Example 18: Octopart Catalog Search - Remote Model Plugin",this.subTitle='\n This example demonstrates how to use "slick.remotemodel.js" or any Remote implementation through an external Remote Service\n
    \n
  • \n Your browser (Chrome) might block access to the Octopart query, if you get "block content" then just unblock it\n or try with different browser like Firefox or Edge\n
  • \n
  • If the demo throws some errors, try again later (there\'s a limit per day).
  • \n
  • \n Uses slick.remotemodel.js\n which is hooked up to load search results from Octopart, but can easily be extended\n to support any JSONP-compatible backend that accepts paging parameters.\n
  • \n
  • \n This demo implements a custom DataView, however please note that you are on your own to implement all necessary DataView methods\n for Sorting, Filtering, etc...\n
  • \n
  • \n Soure code for this example is available here\n
  • \n
\n ',this.dataset=[],this.loading=!1,this.search=""}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid,this.loaderDataView?.setSort("score",-1),this.gridObj?.setSortColumn("score",!1),this.gridObj.onViewportChanged.notify()}ngOnDestroy(){this._eventHandler.unsubscribeAll()}ngOnInit(){this.defineGrid(),this.hookAllLoaderEvents()}defineGrid(){this.columnDefinitions=[{id:"mpn",name:"MPN",field:"mpn",formatter:Yme,width:100,sortable:!0},{id:"brand",name:"Brand",field:"brand.name",formatter:qme,width:100,sortable:!0},{id:"short_description",name:"Description",field:"short_description",width:520}],this.gridOptions={enableAutoResize:!0,autoResize:{container:"#demo-container",rightPadding:10},enableCellNavigation:!0,enableColumnReorder:!1,enableGridMenu:!1,multiColumnSort:!1}}hookAllLoaderEvents(){this._eventHandler&&this._eventHandler.subscribe&&this.loaderDataView&&this.loaderDataView.onDataLoading&&this.loaderDataView.onDataLoaded&&(this._eventHandler.subscribe(this.loaderDataView.onDataLoading,(e,a)=>{this.loading=!0}),this._eventHandler.subscribe(this.loaderDataView.onDataLoaded,(e,a)=>{if(a&&this.gridObj&&this.gridObj.invalidateRow&&this.gridObj.updateRowCount&&this.gridObj.render){for(let u=a.from;u<=a.to;u++)this.gridObj.invalidateRow(u);this.gridObj.updateRowCount(),this.gridObj.render(),this.loading=!1}}))}onSort(e,a){if(this.gridObj&&this.gridObj.getViewport&&this.loaderDataView&&this.loaderDataView.ensureData&&this.loaderDataView.setSort){const u=this.gridObj.getViewport();a&&a.sortCol&&a.sortCol.field&&this.loaderDataView.setSort(a.sortCol.field,a.sortAsc?1:-1),this.loaderDataView.ensureData(u.top,u.bottom)}}onViewportChanged(){if(this.gridObj&&this.gridObj.getViewport&&this.loaderDataView&&this.loaderDataView.ensureData){const e=this.gridObj.getViewport();this.loaderDataView.ensureData(e.top,e.bottom)}}searchChanged(e){if(e&&this.gridObj&&this.gridObj.getViewport&&this.loaderDataView&&this.loaderDataView.ensureData&&this.loaderDataView.setSearch){const a=this.gridObj.getViewport();this.loaderDataView.setSearch(e),this.loaderDataView.ensureData(a.top,a.bottom)}}static#e=this.ctorParameters=()=>[]};XF=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n \n \n
\n\n \n\n \n\n \n \n
'}),Nt("design:paramtypes",[])],XF);var Xme=W(44),e4e=W.n(Xme);const u4e=(t,e,a,u,i,r)=>(a=a??"",(r&&r.getOptions&&r.getOptions()).editable&&u.editor?{text:a,addClasses:"editable-field",toolTip:"Click to Edit"}:a),i4e=t=>null!=t&&t.length?/^(task\s\d+)*$/i.test(t)?{valid:!0,msg:""}:{valid:!1,msg:'Your title is invalid, it must start with "Task" followed by a number.'}:{valid:!1,msg:"This is a required field."};let e9=class{constructor(e){this.http=e,this.title="Example 31: Columns Resize by Content",this.subTitle='The grid below uses the optional resize by cell content (with a fixed 950px for demo purposes), you can click on the 2 buttons to see the difference. The "autosizeColumns" is really the default option used by Angular-SlickGrid, the resize by cell content is optional because it requires to read the first thousand rows and do extra width calculation.',this.columnDefinitions=[],this.dataset=[],this.editQueue=[],this.editedItems={},this.isUsingDefaultResize=!1,this.isGridEditable=!0,this.isMassSelectionDisabled=!0,this.complexityLevelList=[{value:0,label:"Very Simple"},{value:1,label:"Simple"},{value:2,label:"Straightforward"},{value:3,label:"Complex"},{value:4,label:"Very Complex"}]}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.defineGrid(),this.dataset=this.loadData(400)}defineGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:F.string,minWidth:65,resizeExtraWidthPadding:4,resizeCharWidthInPx:7.6,resizeCalcWidthRatio:1,resizeMaxWidthThreshold:200,cssClass:"text-uppercase fw-bold",columnGroup:"Common Factor",filterable:!0,filter:{model:ie.compoundInputText},editor:{model:qe.longText,required:!0,alwaysSaveOnEnterKey:!0,maxLength:12,editorOptions:{cols:45,rows:6,buttonTexts:{cancel:"Close",save:"Done"}},validator:i4e}},{id:"duration",name:"Duration",field:"duration",sortable:!0,filterable:!0,minWidth:65,type:F.number,columnGroup:"Common Factor",formatter:(e,a,u)=>null==u||""===u?"":u>1?`${u} days`:`${u} day`,editor:{model:qe.float,decimal:2,valueStep:1,minValue:0,maxValue:1e4,alwaysSaveOnEnterKey:!0,required:!0}},{id:"cost",name:"Cost",field:"cost",minWidth:65,sortable:!0,filterable:!0,type:F.number,columnGroup:"Analysis",filter:{model:ie.compoundInputNumber},formatter:G.dollar},{id:"percentComplete",name:"% Complete",field:"percentComplete",minWidth:100,type:F.number,sortable:!0,filterable:!0,columnGroup:"Analysis",filter:{model:ie.compoundSlider,operator:">="},editor:{model:qe.slider,minValue:0,maxValue:100}},{id:"complexity",name:"Complexity",field:"complexity",resizeCalcWidthRatio:.82,sortable:!0,filterable:!0,columnGroup:"Analysis",formatter:(e,a,u)=>this.complexityLevelList[u]?.label,exportCustomFormatter:(e,a,u)=>this.complexityLevelList[u]?.label,filter:{model:ie.multipleSelect,collection:this.complexityLevelList},editor:{model:qe.singleSelect,collection:this.complexityLevelList}},{id:"start",name:"Start",field:"start",sortable:!0,formatter:G.dateUs,columnGroup:"Period",exportCustomFormatter:G.dateUs,type:F.date,outputType:F.dateUs,saveOutputType:F.dateUtc,filterable:!0,filter:{model:ie.compoundDate},editor:{model:qe.date,params:{hideClearButton:!1}}},{id:"completed",name:"Completed",field:"completed",width:80,minWidth:75,maxWidth:100,cssClass:"text-center",columnGroup:"Period",formatter:G.checkmarkMaterial,exportWithFormatter:!1,filterable:!0,sortable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ie.singleSelect},editor:{model:qe.checkbox}},{id:"finish",name:"Finish",field:"finish",sortable:!0,formatter:G.dateUs,columnGroup:"Period",type:F.date,outputType:F.dateUs,saveOutputType:F.dateUtc,filterable:!0,filter:{model:ie.compoundDate},exportCustomFormatter:G.dateUs,editor:{model:qe.date,editorOptions:{range:{min:"today"}},validator:(e,a)=>{const u=a&&a.item;return u&&u.completed&&!e?{valid:!1,msg:'You must provide a "Finish" date when "Completed" is checked.'}:{valid:!0,msg:""}}}},{id:"product",name:"Product",field:"product",filterable:!0,columnGroup:"Item",minWidth:100,resizeCharWidthInPx:8,exportWithFormatter:!0,dataKey:"id",labelKey:"itemName",formatter:G.complexObject,exportCustomFormatter:G.complex,type:F.object,sortComparer:L0.objectString,editor:{model:qe.autocompleter,alwaysSaveOnEnterKey:!0,editorOptions:{minLength:1,fetch:(e,a)=>{a(this.mockProducts().filter(i=>i.itemName.toLowerCase().includes(e.toLowerCase())))},renderItem:{layout:"fourCorners",templateCallback:e=>this.renderItemCallbackWith4Corners(e)}}},filter:{model:ie.inputText,type:F.string,queryField:"product.itemName"}},{id:"origin",name:"Country of Origin",field:"origin",formatter:G.complexObject,columnGroup:"Item",exportCustomFormatter:G.complex,dataKey:"code",labelKey:"name",type:F.object,sortComparer:L0.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:qe.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get("assets/data/countries.json")},filter:{model:ie.inputText,type:F.string,queryField:"origin.name"}},{id:"action",name:"Action",field:"action",width:70,minWidth:70,maxWidth:70,excludeFromExport:!0,formatter:()=>'
',cellMenu:{hideCloseButton:!1,commandTitle:"Commands",commandItems:[{command:"help",title:"Help!",iconCssClass:"mdi mdi-help-circle",positionOrder:66,action:()=>alert("Please Help!")},"divider",{command:"delete-row",title:"Delete Row",positionOrder:64,iconCssClass:"mdi mdi-close color-danger",cssClass:"red",textCssClass:"text-italic color-danger-light",itemVisibilityOverride:e=>!e.dataContext?.completed,action:(e,a)=>{const u=a.dataContext;confirm(`Do you really want to delete row (${(a?.row??0)+1}) with "${u.title}"`)&&this.angularGrid.gridService.deleteItemById(u.id)}}]}}],this.gridOptions={editable:!0,autoAddCustomEditorFormatter:u4e,enableCellNavigation:!0,autoEdit:!0,autoCommitEdit:!0,autoResize:{container:"#smaller-container",rightPadding:10},enableAutoResize:!0,enablePagination:!0,pagination:{pageSize:10,pageSizes:[10,200,500,5e3]},autoFitColumnsOnFirstLoad:!1,enableAutoSizeColumns:!1,autosizeColumnsByCellContentOnFirstLoad:!0,enableAutoResizeColumnsByCellContent:!0,resizeByContentOptions:{defaultRatioForStringType:.92,formatterPaddingWidthInPx:8},enableExcelExport:!0,excelExportOptions:{exportWithFormatter:!1},externalResources:[new rl],enableFiltering:!0,enableRowSelection:!0,enableCheckboxSelector:!0,checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},rowSelectionOptions:{selectActiveRow:!1},createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:28,rowHeight:33,headerRowHeight:35,editCommandHandler:(e,a,u)=>{const i=Array.isArray(u.prevSerializedValue)?u.prevSerializedValue:[u.prevSerializedValue],r=Array.isArray(u.serializedValue)?u.serializedValue:[u.serializedValue],o=this.columnDefinitions.filter(h=>void 0!==h.editor),d=[];i.forEach((h,m)=>{if(i[m]!==r[m]){const k=Array.isArray(u.prevSerializedValue)?o[m]:a;this.editedItems[this.gridOptions.datasetIdPropertyName||"id"]=e,this.angularGrid.slickGrid.invalidate(),u.execute(),this.renderUnsavedCellStyling(e,k,u),d.push(k)}}),this.editQueue.push({item:e,columns:d,editCommand:u})},enableCellMenu:!0}}loadData(e){const a=[];for(let u=0;u100?u>5?100:88:v,x=100===k;a[u]={id:u,title:"Task "+u,duration:Math.floor(100*Math.random())+10,percentComplete:k,analysis:{percentComplete:k},complexity:u%3?0:2,start:new Date(r,d,h,h,m,m,m),finish:x||u%3==0&&E>new Date&&u>3?x?new Date:E:"",cost:u%33==0?null:Math.round(1e4*Math.random())/100,completed:x||u%3==0&&E>new Date&&u>3,product:{id:this.mockProducts()[i]?.id,itemName:this.mockProducts()[i]?.itemName},origin:u%2?{code:"CA",name:"Canada"}:{code:"US",name:"United States"}},u%8||(delete a[u].finish,delete a[u].percentComplete)}return a}handleValidationError(e,a){return a.validationResults&&alert(a.validationResults.msg),!1}handleItemDeleted(e,a){console.log("item deleted with id:",a.itemId)}handleOnBeforeEditCell(e,a){const{column:u,item:i,grid:r}=a;return u&&i&&!function t4e(t,e,a){const u=a&&a.getOptions&&a.getOptions(),i=e.editor;let o=!(!u.editable||!i);t&&e&&u&&u.editable&&"finish"===e.id&&(o=!!t?.completed);return o}(i,u,r)&&e.preventDefault(),!1}handleOnCellChange(e,a){const u=a?.item;u&&!u.completed&&(u.finish=null,this.angularGrid.gridService.updateItem(u))}handlePaginationChanged(){this.removeAllUnsavedStylingFromCell(),this.renderUnsavedStylingOnAllVisibleCells()}handleDefaultResizeColumns(){const e=this.angularGrid.slickGrid.getColumns();e.forEach(a=>a.width=a.originalWidth),this.angularGrid.slickGrid.setColumns(e),this.angularGrid.slickGrid.autosizeColumns(),this.isUsingDefaultResize=!0}handleNewResizeColumns(){this.angularGrid.resizerService.resizeColumnsByCellContent(!0),this.isUsingDefaultResize=!1}handleOnSelectedRowIdsChanged(e){console.log("Selected Ids:",e.selectedRowIds)}toggleGridEditReadonly(){this.undoAllEdits(),this.isGridEditable=!this.isGridEditable,this.isGridEditable||(this.isMassSelectionDisabled=!0),this.angularGrid.slickGrid.setOptions({editable:this.isGridEditable})}removeUnsavedStylingFromCell(e,a,u){this.angularGrid.slickGrid.removeCellCssStyles(`unsaved_highlight_${[a.id]}${u}`)}removeAllUnsavedStylingFromCell(){for(const e of this.editQueue){const a=e?.editCommand;if(a)for(const u of e.columns)this.removeUnsavedStylingFromCell(e.item,u,a.row)}}renderUnsavedStylingOnAllVisibleCells(){for(const e of this.editQueue)if(e){const{item:a,columns:u,editCommand:i}=e;Array.isArray(u)&&u.forEach(r=>{this.renderUnsavedCellStyling(a,r,i)})}}renderUnsavedCellStyling(e,a,u){if(u&&e&&a){const i=this.angularGrid.dataView.getRowByItem(e);if(i>=0){const r={[i]:{[a.id]:"unsaved-editable-field"}};this.angularGrid.slickGrid.setCellCssStyles(`unsaved_highlight_${[a.id]}${i}`,r)}}}setSelectedRowIds(){this.angularGrid.dataView?.setSelectedIds([3,4,11])}saveAll(){console.log(this.editQueue),console.log(this.editedItems),this.removeAllUnsavedStylingFromCell(),this.editQueue=[],this.editedItems={}}undoLastEdit(e=!1){const a=this.editQueue.pop(),u=a?.editCommand;if(a&&u&&Gs.cancelCurrentEdit()){u.undo();for(const i of a.columns)this.removeUnsavedStylingFromCell(a.item,i,u.row);this.angularGrid.slickGrid.invalidate(),e&&this.angularGrid?.slickGrid.gotoCell(u.row,u.cell,!1)}}undoAllEdits(){for(const e of this.editQueue){const a=e?.editCommand;if(a&&Gs.cancelCurrentEdit()){a.undo();for(const u of e.columns)this.removeUnsavedStylingFromCell(e.item,u,a.row)}}this.angularGrid.slickGrid.invalidate(),this.editQueue=[]}mockProducts(){return[{id:0,itemName:"Sleek Metal Computer",itemNameTranslated:"some fantastic sleek metal computer description",listPrice:2100.23,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:`mdi ${this.getRandomIcon(0)}`},{id:1,itemName:"Tasty Granite Table",itemNameTranslated:"an extremely huge and heavy table",listPrice:3200.12,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:`mdi ${this.getRandomIcon(1)}`},{id:2,itemName:"Awesome Wooden Mouse",itemNameTranslated:"super old mouse",listPrice:15,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:`mdi ${this.getRandomIcon(2)}`},{id:3,itemName:"Gorgeous Fresh Shirt",itemNameTranslated:"what a gorgeous shirt seriously",listPrice:25.76,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:`mdi ${this.getRandomIcon(3)}`},{id:4,itemName:"Refined Cotton Table",itemNameTranslated:"super light table that will fall apart amazingly fast",listPrice:13.35,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:`mdi ${this.getRandomIcon(4)}`},{id:5,itemName:"Intelligent Wooden Pizza",itemNameTranslated:"wood not included",listPrice:23.33,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:`mdi ${this.getRandomIcon(5)}`},{id:6,itemName:"Licensed Cotton Chips",itemNameTranslated:"not sure what that is",listPrice:71.21,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:`mdi ${this.getRandomIcon(6)}`},{id:7,itemName:"Ergonomic Rubber Soap",itemNameTranslated:"so good you'll want to use it every night",listPrice:2.43,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:`mdi ${this.getRandomIcon(7)}`},{id:8,itemName:"Handcrafted Steel Car",itemNameTranslated:"aka tesla truck",listPrice:31288.39,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:`mdi ${this.getRandomIcon(8)}`}]}getRandomIcon(e){const a=["mdi-arrow-collapse","mdi-arrow-expand","mdi-cancel","mdi-check","mdi-checkbox-blank-outline","mdi-check-box-outline","mdi-checkbox-marked","mdi-close","mdi-close-circle","mdi-close-circle-outline","mdi-close-thick","mdi-content-copy","mdi-database-refresh","mdi-download","mdi-file-document-outline","mdi-file-excel-outline","mdi-file-music-outline","mdi-file-pdf-outline","mdi-filter-remove-outline","mdi-flip-vertical","mdi-folder","mdi-folder-open","mdi-help-circle","mdi-help-circle-outline","mdi-history","mdi-information","mdi-information-outline","mdi-link","mdi-link-variant","mdi-menu","mdi-microsoft-excel","mdi-minus","mdi-page-first","mdi-page-last","mdi-paperclip","mdi-pin-off-outline","mdi-pin-outline","mdi-playlist-plus","mdi-playlist-remove","mdi-plus","mdi-redo","mdi-refresh","mdi-shape-square-plus","mdi-sort-ascending","mdi-sort-descending","mdi-swap-horizontal","mdi-swap-vertical","mdi-sync","mdi-table-edit","mdi-table-refresh","mdi-undo"],u=Math.floor(Math.random()*a.length-1);return a[e??u]}renderItemCallbackWith2Rows(e){return`
\n
\n \x3c!----\x3e\n \n
\n
\n \n \n ${e.itemName}\n \n
\n
\n
\n
${e.itemNameTranslated}
\n
`}renderItemCallbackWith4Corners(e){return`
\n
\n \x3c!----\x3e\n \n
\n
\n \n \n ${e.itemName}\n \n ${Bu(e.listPrice,2,2,!1,"$")}\n
\n
\n
\n
${e.itemNameTranslated}
\n Type: ${"I"===e.itemTypeName?"Item":"C"===e.itemTypeName?"PdCat":"Cat"}\n
`}static#e=this.ctorParameters=()=>[{type:xu}]};e9=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n

Container Width (950px)

\n\n
\n
\n
\n \n \n
\n
\n\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n \n \n
\n
',encapsulation:Tt.None,styles:[e4e()]}),Nt("design:paramtypes",[xu])],e9);let a9=class{alertAssignee(e){alert("string"==typeof e?`Assignee on this task is: ${e.toUpperCase()}`:"No one is assigned to this task.")}deleteRow(e){confirm(`Are you sure that you want to delete ${e.title}?`)&&(this.addon.collapseAll(),this.dataView.deleteItem(e.rowId),this.parent.showFlashMessage(`Deleted row with ${e.title}`,"danger"))}callParentMethod(e){this.parent.showFlashMessage(`We just called Parent Method from the Row Detail Child Component on ${e.title}`)}};a9=Ye([xa({template:'
\n

{{model?.title}}

\n
\n
\n
{{model?.reporter}}
\n
{{model?.duration | number : \'1.2-2\'}}
\n
{{model?.percentComplete}}
\n
\n\n
\n
{{model?.start | date: \'yyyy-MM-dd\'}}
\n
{{model?.finish | date: \'yyyy-MM-dd\'}}
\n
\n
\n\n
\n\n
\n

\n Find out who is the Assignee\n \n \n \n

\n
\n
\n \n \n
\n
\n'})],a9);let t9=class{};t9=Ye([xa({template:'

\n \n Loading...\n

'})],t9);let u9=class{constructor(){this._darkMode=!1,this.title="Example 21: Row Detail View",this.subTitle='\n Add functionality to show extra information with a Row Detail View, (Wiki docs)\n
    \n
  • Click on the row "+" icon or anywhere on the row to open it (the latter can be changed via property "useRowClick: false")
  • \n
  • Pass a View/Model as a Template to the Row Detail
  • \n
  • You can use "expandableOverride()" callback to override logic to display expand icon on every row (for example only show it every 2nd row)
  • \n
\n ',this.columnDefinitions=[],this.dataset=[],this.detailViewRowCount=9,this.flashAlertType="info",this.message=""}angularGridReady(e){this.angularGrid=e}get rowDetailInstance(){return this.angularGrid.extensions.rowDetailView?.instance||{}}ngOnInit(){this.defineGrid()}ngOnDestroy(){document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"}defineGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:F.string,width:70,filterable:!0,editor:{model:qe.text}},{id:"duration",name:"Duration (days)",field:"duration",formatter:G.decimal,params:{minDecimal:1,maxDecimal:2},sortable:!0,type:F.number,minWidth:90,filterable:!0},{id:"percent2",name:"% Complete",field:"percentComplete2",editor:{model:qe.slider},formatter:G.progressBar,type:F.number,sortable:!0,minWidth:100,filterable:!0,filter:{model:ie.slider,operator:">"}},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,type:F.date,minWidth:90,exportWithFormatter:!0,filterable:!0,filter:{model:ie.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,type:F.date,minWidth:90,exportWithFormatter:!0,filterable:!0,filter:{model:ie.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",minWidth:100,formatter:G.checkmarkMaterial,type:F.boolean,filterable:!0,sortable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ie.singleSelect}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!0,enableRowDetailView:!0,rowSelectionOptions:{selectActiveRow:!0},darkMode:this._darkMode,datasetIdPropertyName:"rowId",rowDetailView:{process:e=>this.simulateServerAsyncCall(e),loadOnce:!0,singleRowExpand:!1,useRowClick:!0,panelRows:this.detailViewRowCount,preloadComponent:t9,viewComponent:a9,parent:this,onBeforeRowDetailToggle:(e,a)=>(console.log("before toggling row detail",a.item),!0)}},this.getData()}getData(){const e=[];for(let a=0;a<1e3;a++){const u=2e3+Math.floor(10*Math.random()),i=Math.floor(11*Math.random()),r=Math.floor(29*Math.random()),o=Math.round(100*Math.random());e[a]={rowId:a,title:"Task "+a,duration:a%33==0?null:100*Math.random()+"",percentComplete:o,percentComplete2:o,percentCompleteNumber:o,start:new Date(u,i,r),finish:new Date(u,i+1,r),effortDriven:a%5==0}}this.dataset=e}changeDetailViewRowCount(){if(this.angularGrid?.extensionService){const e=this.rowDetailInstance.getOptions();e?.panelRows&&(e.panelRows=this.detailViewRowCount,this.rowDetailInstance.setOptions(e))}}changeEditableGrid(){return this.rowDetailInstance.collapseAll(),this.rowDetailInstance.addonOptions.useRowClick=!1,this.gridOptions.autoCommitEdit=!this.gridOptions.autoCommitEdit,this.angularGrid?.slickGrid.setOptions({editable:!0,autoEdit:!0,enableCellNavigation:!0}),!0}closeAllRowDetail(){this.angularGrid&&this.angularGrid.extensionService&&this.rowDetailInstance.collapseAll()}showFlashMessage(e,a="info"){this.message=e,this.flashAlertType=a}simulateServerAsyncCall(e){const a=["John Doe","Jane Doe","Chuck Norris","Bumblebee","Jackie Chan","Elvis Presley","Bob Marley","Mohammed Ali","Bruce Lee","Rocky Balboa"];return new Promise(u=>{setTimeout(()=>{const i=e;i.assignee=a[this.randomNumber(0,10)],i.reporter=a[this.randomNumber(0,10)],u(i)},1e3)})}toggleDarkMode(){this._darkMode=!this._darkMode,this.toggleBodyBackground(),this.angularGrid.slickGrid?.setOptions({darkMode:this._darkMode}),this.closeAllRowDetail()}toggleBodyBackground(){this._darkMode?(document.querySelector(".panel-wm-content").classList.add("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="dark"):(document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light")}randomNumber(e,a){return Math.floor(Math.random()*(a-e+1)+e)}};u9=Ye([xa({template:'
\n

\n {{title}}\n \n \n \n code\n \n \n

\n
\n\n
\n \n \n   \n\n \n \n \n \n \n
\n
{{message}}
\n\n
\n\n \n \n
'})],u9);let i9=class{constructor(){this.title="Example 17: Row Move & Checkbox Selector",this.subTitle='This example demonstrates using the Slick.Plugins.RowMoveManager plugin to easily move a row in the grid.
\n
    \n
  • Click to select, Ctrl+Click to toggle selection, Shift+Click to select a range.
  • \n
  • Drag one or more rows by the handle (icon) to reorder
  • \n
  • If you plan to use Row Selection + Row Move, then use "singleRowMove: true" and "disableRowSelection: true"
  • \n
  • You can change "columnIndexPosition" to move the icon position of any extension (RowMove, RowDetail or RowSelector icon)
  • \n
      \n
    • You will also want to enable the DataView "syncGridSelection: true" to keep row selection even after a row move
    • \n
    \n
  • If you plan to use only Row Move, then you could keep default values (or omit them completely) of "singleRowMove: false" and "disableRowSelection: false"
  • \n
      \n
    • SingleRowMove has the name suggest will only move 1 row at a time, by default it will move any row(s) that are selected unless you disable the flag
    • \n
    \n
\n '}angularGridReady(e){this.angularGrid=e}get rowMoveInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(oa.rowMoveManager)??{}}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",filterable:!0},{id:"duration",name:"Duration",field:"duration",filterable:!0,sortable:!0},{id:"%",name:"% Complete",field:"percentComplete",filterable:!0,sortable:!0},{id:"start",name:"Start",field:"start",filterable:!0,sortable:!0,filter:{model:ie.compoundDate}},{id:"finish",name:"Finish",field:"finish",filterable:!0,sortable:!0,filter:{model:ie.compoundDate}},{id:"effort-driven",name:"Completed",field:"effortDriven",formatter:G.checkmarkMaterial,filterable:!0,sortable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ie.singleSelect}}],this.gridOptions={enableAutoResize:!0,autoResize:{container:"#demo-container",rightPadding:10},enableCellNavigation:!0,enableFiltering:!0,enableCheckboxSelector:!0,checkboxSelector:{columnIndexPosition:1,hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},enableRowSelection:!0,rowSelectionOptions:{selectActiveRow:!1},dataView:{syncGridSelection:!0},enableRowMoveManager:!0,rowMoveManager:{singleRowMove:!0,disableRowSelection:!0,cancelEditOnDrag:!0,hideRowMoveShadow:!1,width:30,onBeforeMoveRows:this.onBeforeMoveRow.bind(this),onMoveRows:this.onMoveRows.bind(this),columnIndexPosition:0},showCustomFooter:!0,presets:{rowSelection:{dataContextIds:[1,2,6,7]}}},this.getData()}getData(){const e=[];for(let a=0;a<500;a++)e[a]={id:a,title:"Task "+a,duration:Math.round(25*Math.random())+" days",percentComplete:Math.round(100*Math.random()),start:"01/01/2009",finish:"01/05/2009",effortDriven:a%5==0};this.dataset=e}onBeforeMoveRow(e,a){for(const u of a.rows)if(u===a.insertBefore||u===a.insertBefore-1&&a.insertBefore-1!==this.angularGrid.dataView.getItemCount())return e.stopPropagation(),!1;return!0}onMoveRows(e,a){const u=a.rows,i=a.insertBefore,r=[];this.angularGrid.dataView.sort(void 0,!0);const o=this.angularGrid.dataView.getItems(),d=this.angularGrid.dataView.getFilteredItems(),h=this.angularGrid.dataView.getItem(i),m=h?this.angularGrid.dataView.getIdxById(h.id):this.angularGrid.dataView.getItemCount(),E=[];u.forEach(C=>E.push(d[C]));const v=E.map(C=>this.angularGrid.dataView.getIdxById(C.id)),k=o.slice(0,m),x=o.slice(m,o.length);u.sort((C,A)=>C-A);for(const C of v)void 0!==C&&r.push(o[C]);v.reverse();for(const C of v)void 0!==C&&void 0!==m&&(C{alert(`Technically we should Edit "Task ${u.dataContext.id}"`)}},{id:"delete-symbol",field:"id",excludeFromColumnPicker:!0,excludeFromGridMenu:!0,excludeFromHeaderMenu:!0,formatter:G.icon,params:{iconCssClass:"mdi mdi-trash-can pointer"},minWidth:30,maxWidth:30,onCellClick:(a,u)=>{confirm("Are you sure?")&&this.angularGrid.gridService.deleteItemById(u.dataContext.id)}}];this.columnDefinitions.splice(0,0,e[0],e[1]),this.columnDefinitions=this.columnDefinitions.slice()}}toggleFilter(){this.angularGrid.filterService.toggleFilterFunctionality()}toggleSorting(){this.angularGrid.sortService.toggleSortFunctionality()}};i9=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
'})],i9);var d4e=W(18),c4e=W.n(d4e),h4e=W(322),m4e=W.n(h4e);let n9=class{constructor(e){this.cd=e,this.title="Example 10: Multiple Grids with Row Selection",this.subTitle='\n Row selection, single or multi-select (Wiki docs).\n
    \n
  • Single Select, you can click on any cell to make the row active
  • \n
  • Multiple Selections, you need to specifically click on the checkbox to make 1 or more selections
  • \n
  • You can use "selectableOverride()" callback to override logic to display checkbox on every row (for example only show it every 2nd row)
  • \n
  • NOTE: Any Row Selection(s) will be reset when using Pagination and changing Page (you will need to set it back manually if you want it back)
  • \n
\n ',this.isGrid2WithPagination=!0,this.selectedTitles="",this.selectedTitle=""}ngOnInit(){this.prepareGrid()}angularGridReady1(e){this.angularGrid1=e,this.gridObj1=e&&e.slickGrid||{}}angularGridReady2(e){this.angularGrid2=e,this.gridObj2=e&&e.slickGrid||{}}prepareGrid(){this.columnDefinitions1=[{id:"title",name:"Title",field:"title",sortable:!0,type:F.string,filterable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:F.number,filterable:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,type:F.number,filterable:!0,sortable:!0},{id:"start",name:"Start",field:"start",formatter:G.dateIso,exportWithFormatter:!0,type:F.date,filterable:!0,sortable:!0,filter:{model:ie.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,exportWithFormatter:!0,type:F.date,filterable:!0,sortable:!0,filter:{model:ie.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:G.checkmarkMaterial,type:F.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:ie.singleSelect}}],this.columnDefinitions2=[{id:"title",name:"Title",field:"title",sortable:!0,type:F.string,filterable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:F.number,filterable:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,type:F.number,filterable:!0,sortable:!0},{id:"start",name:"Start",field:"start",formatter:G.dateIso,exportWithFormatter:!0,type:F.date,filterable:!0,sortable:!0,filter:{model:ie.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,exportWithFormatter:!0,type:F.date,filterable:!0,sortable:!0,filter:{model:ie.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:G.checkmarkMaterial,type:F.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:ie.singleSelect}}],this.gridOptions1={gridHeight:225,gridWidth:800,enableAutoResize:!1,enableCellNavigation:!0,enableRowSelection:!0,enableCheckboxSelector:!0,enableFiltering:!0,checkboxSelector:{hideSelectAllCheckbox:!0},multiSelect:!1,rowSelectionOptions:{selectActiveRow:!0},columnPicker:{hideForceFitButton:!0},gridMenu:{hideForceFitButton:!0},enablePagination:!0,pagination:{pageSizes:[5,10,15,20,25,50,75,100],pageSize:5},presets:{pagination:{pageNumber:2,pageSize:5}}},this.gridOptions2={gridHeight:255,gridWidth:800,enableAutoResize:!1,enableCellNavigation:!0,enableFiltering:!0,checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0,applySelectOnAllPages:!0},rowSelectionOptions:{selectActiveRow:!1},enableCheckboxSelector:!0,enableRowSelection:!0,enablePagination:!0,pagination:{pageSizes:[5,10,15,20,25,50,75,100],pageSize:5},presets:{rowSelection:{dataContextIds:[3,12,13,522]}}},this.dataset1=this.prepareData(495),this.dataset2=this.prepareData(525)}prepareData(e){const a=[];for(let u=0;ua-u),this.selectedTitles=this.selectedGrid2IDs.map(a=>`Task ${a}`).join(","),this.selectedTitles.length>293&&(this.selectedTitles=this.selectedTitles.substring(0,293)+"..."),this.cd.detectChanges())}togglePaginationGrid2(){this.isGrid2WithPagination=!this.isGrid2WithPagination,this.angularGrid2.paginationService.togglePaginationVisibility(this.isGrid2WithPagination)}handleSelectedRowsChanged1(e,a){Array.isArray(a.rows)&&this.gridObj1&&(this.selectedTitle=a.rows.map(u=>this.gridObj1.getDataItem(u).title||""))}static#e=this.ctorParameters=()=>[{type:dn}]};n9=Ye([xa({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n Pagination\n
\n \n \n
\n
\n
\n
\n (single select) Selected Row:\n \n
\n
\n
\n\n
\n \n \n
\n\n
\n\n
\n
\n Pagination: \n \n
\n \n \n
\n
\n
\n
\n
\n (multi-select) Selected Row(s):\n \n
\n
\n
\n\n
\n \n \n
\n
',styles:[c4e(),m4e()]}),Nt("design:paramtypes",[dn])],n9);function L3(t,e){return Math.floor(Math.random()*(e-t+1)+t)}const r9="gridState";let o9=class{constructor(e){this.translate=e,this.title="Example 16: Grid State & Presets using Local Storage",this.subTitle='\n Grid State & Preset (Wiki docs)\n
\n
    \n
  • Uses Local Storage to persist the Grid State and uses Grid Options "presets" to put the grid back to it\'s previous state
  • \n
      \n
    • to demo this, simply change any columns (position reorder, visibility, size, filter, sort), then refresh your browser with (F5)
    • \n
    \n
  • Local Storage is just one option, you can use whichever is more convenient for you (Local Storage, Session Storage, DB, ...)
  • \n
\n ',this.subscriptions=[],this.selectedLanguage=this.translate.getDefaultLang()}angularGridReady(e){this.angularGrid=e}ngOnDestroy(){kc(this.subscriptions)}ngOnInit(){const e=JSON.parse(localStorage[r9]||null);this.defineGrid(e);this.translate.use("en"),this.selectedLanguage="en"}clearGridStateFromLocalStorage(){this.angularGrid.gridService.resetGrid(this.columnDefinitions),this.angularGrid.paginationService.changeItemPerPage(25),setTimeout(()=>localStorage[r9]=null)}defineGrid(e){const a=[];for(let u=0;u<500;u++)a.push({value:u,label:u});this.columnDefinitions=[{id:"title",name:"Title",field:"title",nameKey:"TITLE",filterable:!0,sortable:!0,type:F.string,minWidth:45,width:100,filter:{model:ie.compoundInput}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,width:100,type:F.string,filter:{model:ie.input}},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:F.number,exportCsvForceToKeepAsString:!0,minWidth:55,width:100,nameKey:"DURATION",filterable:!0,filter:{collection:a,model:ie.multipleSelect,filterOptions:{maxHeight:250,width:175}}},{id:"complete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",minWidth:70,type:F.number,sortable:!0,width:100,formatter:G.percentCompleteBar,filterable:!0,filter:{model:ie.slider,operator:">"}},{id:"start",name:"Start",field:"start",nameKey:"START",formatter:G.dateIso,sortable:!0,minWidth:75,exportWithFormatter:!0,width:100,type:F.date,filterable:!0,filter:{model:ie.compoundDate}},{id:"completed",field:"completed",nameKey:"COMPLETED",minWidth:85,maxWidth:85,formatter:G.checkmarkMaterial,width:100,type:F.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ie.singleSelect,filterOptions:{autoAdjustDropHeight:!0}}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableCheckboxSelector:!0,enableFiltering:!0,enableTranslate:!0,i18n:this.translate,columnPicker:{hideForceFitButton:!0},gridMenu:{hideForceFitButton:!0,hideClearFrozenColumnsCommand:!1},headerMenu:{hideFreezeColumnsCommand:!1},enablePagination:!0,pagination:{pageSizes:[5,10,15,20,25,30,40,50,75,100],pageSize:25}},e&&(this.gridOptions.presets=e),this.dataset=this.getData(500)}getData(e){const a=[];for(let u=0;u
',styles:[npe()]})],GF);var ope=W(127),lpe=W.n(ope);function _U(t,e,a){let u;a={modalType:"edit",validationFailedMsg:"Some of the fields have failed validation",validationMsgPrefix:null,show:null,hide:null,position:null,destroy:null,formValues:{},editors:{},...a};const r=()=>{},o=h=>{const m=e[h],E=hu(m),v=m?.clientWidth??0,k=m?.clientHeight??0;return{top:E?.top??0,left:E?.left??0,bottom:(E?.top??0)+k,right:(E?.left??0)+v,width:v,height:k,visible:!0}};function d(h){const m=this;let E=[];m.getEditors=()=>E,m.destroy=()=>{let k=E.pop();for(;k;)k?.destroy(),k=E.pop();let x=e.pop();for(;x;)bt(x),x?.remove(),x=e.pop();a?.destroy?.(),E=[],e=null},m.focus=()=>{(u||E[0]).focus()},m.isValueChanged=()=>{let k=0;for(;k{const k=[];let x=0;for(;x{let f=0;for(;f{let x=0;for(;x{let x;u=null;const f=[];let C=0;for(;C{let k=0;for(;k{let k=0;for(;k{a?.position?.(k)},function v(){let k={},x=0;for(;x{Array.isArray(E)&&E.length>0&&"function"==typeof E[0].focus&&E[0].focus()},0)}()}return d.prototype=this,d}const FU=t=>console.log(t.message);class spe{get eventHandler(){return this._eventHandler}get dataView(){return this.grid?.getData()}get dataViewLength(){return this.dataView.getLength()}get formValues(){return this._formValues}get editors(){return this._editors}set editors(e){this._editors=e}get gridOptions(){return this.grid?.getOptions()}constructor(){this._columnDefinitions=[],this._lastActiveRowNumber=-1,this._formValues=null,this.gridService=null,this._eventHandler=new Rt,this._bindEventService=new Li}init(e,a){if(this.grid=e,this.gridService=a.get("GridService"),this.translaterService=a.get("TranslaterService"),!this.gridService)throw new Error("[Slickgrid-Universal] it seems that the GridService is not being loaded properly, make sure the Container Service is properly implemented.");if(this.gridOptions.enableTranslate&&(!this.translaterService||!this.translaterService.translate))throw new Error('[Slickgrid-Universal] requires a Translate Service to be installed and configured when the grid option "enableTranslate" is enabled.');this._locales=this.gridOptions?.locales??ue.locales}dispose(){this._eventHandler.unsubscribeAll(),this._bindEventService.unbindAll(),this._formValues=null,this.disposeComponent()}disposeComponent(){this._modalBodyTopValidationElm?.remove(),this._modalSaveButtonElm?.remove(),"function"==typeof this._modalElm?.remove&&(this._modalElm.remove(),document.body.classList.remove("slick-modal-open")),this._editorContainers=[]}changeFormInputValue(e,a,u=!1,i=!0){const r=this.getColumnByObjectOrId(e),o="string"==typeof e?e:r?.id??"",d=this._editors?.[o];let h=a;if(!d&&!u)throw new Error(`Composite Editor with column id "${o}" not found.`);if("function"==typeof d?.setValue&&Array.isArray(this._editorContainers)){d.setValue(a,!0,i);const E=this._editorContainers.find(k=>k.dataset.editorid===o),v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;!d.disabled||d.disabled&&!v?E?.classList?.add("modified"):(h="",E?.classList?.remove("modified")),d.disabled&&(""!==h||null!==h||void 0!==h||0!==h)&&(h="")}const m=r?.field??"";if(r&&m?.includes(".")){const E=r.editor?.complexObjectPath??m??"";vr(this._formValues??{},E,a)}else this._formValues={...this._formValues,[o]:h}}changeFormValue(e,a){const u=this.getColumnByObjectOrId(e),i="string"==typeof e?e:u?.id??"",r=u?.field??e;if(r?.includes(".")){const o=u?.editor?.complexObjectPath??r??"";vr(this._formValues,o,a)}else this._formValues={...this._formValues,[i]:a};this._formValues=Lp({},this._itemDataContext,this._formValues)}changeFormEditorOption(e,a,u){const i=this._editors?.[e];if(!i?.changeEditorOption)throw new Error(`Editor with column id "${e}" not found OR the Editor does not support "changeEditorOption" (current only available with AutoComplete, Date, MultipleSelect & SingleSelect Editors).`);i.changeEditorOption(a,u)}disableFormInput(e,a=!0){const u=this._editors?.[e];u?.disable&&Array.isArray(this._editorContainers)&&u.disable(a)}openDetails(e){const a=e.onError??FU,u={backdrop:"static",showCloseButtonOutside:!0,shouldClearRowSelectionAfterMassAction:!0,viewColumnLayout:"auto",modalType:"edit"};try{if(!this.grid||this.grid.getEditorLock().isActive()&&!this.grid.getEditorLock().commitCurrentEdit())return null;this._formValues=null,this._options={...u,...this.gridOptions.compositeEditorOptions,...e,labels:{...this.gridOptions.compositeEditorOptions?.labels,...e?.labels}},this._options.backdrop=void 0!==e.backdrop?e.backdrop:"static";const i=this._options.viewColumnLayout||1,r=this.grid.getActiveCell(),o=r?.cell??0,d=r?.row??0,h=this.grid.getUID()||"";let m=e.headerTitle||"";"function"==typeof this._options.onBeforeOpen&&this._options.onBeforeOpen(),this.hasRowSelectionEnabled()&&"auto-mass"===this._options.modalType&&this.grid.getSelectedRows&&((this.grid.getSelectedRows()||[]).length>0?(this._options.modalType="mass-selection",e?.headerTitleMassSelection&&(m=e?.headerTitleMassSelection)):(this._options.modalType="mass-update",e?.headerTitleMassUpdate&&(m=e?.headerTitleMassUpdate)));const E=this._options.modalType||"edit";if(!this.gridOptions.editable)return a({type:"error",code:"EDITABLE_GRID_REQUIRED",message:"Your grid must be editable in order to use the Composite Editor Modal."}),null;if(!this.gridOptions.enableCellNavigation)return a({type:"error",code:"ENABLE_CELL_NAVIGATION_REQUIRED",message:'Composite Editor requires the flag "enableCellNavigation" to be set to True in your Grid Options.'}),null;if(!this.gridOptions.enableAddRow&&("clone"===E||"create"===E))return a({type:"error",code:"ENABLE_ADD_ROW_REQUIRED",message:'Composite Editor requires the flag "enableAddRow" to be set to True in your Grid Options when cloning/creating a new item.'}),null;if(!r&&("clone"===E||"edit"===E))return a({type:"warning",code:"NO_RECORD_FOUND",message:"No records selected for edit or clone operation."}),null;{const v="mass-update"===E||"mass-selection"===E,k=v?{}:this.grid.getDataItem(d);this._originalDataContext=iu(!0,{},k),this._columnDefinitions=this.grid.getColumns();const x=this.hasRowSelectionEnabled()?this.grid.getSelectedRows():[],f=this.dataView?.getItemCount()??0;this._lastActiveRowNumber=d;const C=this.dataView.getAllSelectedIds(),F="create"===E?this.dataViewLength:d;if(!this.focusOnFirstColumnCellWithEditor(this._columnDefinitions,k,o,F,v))return null;if("edit"===E&&!k)return a({type:"warning",code:"ROW_NOT_EDITABLE",message:"Current row is not editable."}),null;if("mass-selection"===E&&x.length<1)return a({type:"warning",code:"ROW_SELECTION_REQUIRED",message:"You must select some rows before trying to apply new value(s)."}),null;let z=[];z=v?this._columnDefinitions.filter(Pe=>Pe.editorClass&&!0===Pe.editor?.massUpdate):this._columnDefinitions.filter(Pe=>Pe.editorClass),z.some(Pe=>void 0!==Pe.editor?.compositeEditorFormOrder)&&z.sort((Pe,Ha)=>FG(Pe?.editor?.compositeEditorFormOrder??1/0,Ha?.editor?.compositeEditorFormOrder??1/0,jt.asc));const L=m.replace(/\{\{(.*?)\}\}/g,(Pe,Ha)=>Xu(k,Ha)),M="auto"===i?this.autoCalculateLayoutColumnCount(z.length):i;this._modalElm=T("div",{className:`slick-editor-modal ${h}`});const H=T("div",{className:"slick-editor-modal-content"});if(this.gridOptions?.darkMode&&H.classList.add("slick-dark-mode"),!isNaN(i)&&+i>1||"auto"===i&&M>1){const Pe=2===M?"split-view":"triple-split-view";H.classList.add(Pe)}const j=T("div",{className:"slick-editor-modal-title"});this.grid.applyHtmlCode(j,L);const $=T("button",{type:"button",ariaLabel:"Close",textContent:"\xd7",className:"close",dataset:{action:"close"}});this._options.showCloseButtonOutside&&(j?.classList?.add("outside"),$?.classList?.add("outside"));const Y=T("div",{ariaLabel:"Close",className:"slick-editor-modal-header"});Y.appendChild(j),Y.appendChild($);const ne=T("div",{className:"slick-editor-modal-body"});this._modalBodyTopValidationElm=T("div",{className:"validation-summary",style:{display:"none"}},ne);const Ne=T("div",{className:"slick-editor-modal-footer"}),Ie=T("button",{type:"button",ariaLabel:this.getLabelText("cancelButton","TEXT_CANCEL","Cancel"),className:"btn btn-cancel btn-default btn-sm",textContent:this.getLabelText("cancelButton","TEXT_CANCEL","Cancel"),dataset:{action:"cancel"}});let Se="",xa="";switch(E){case"clone":xa=this.getLabelText("cloneButton","TEXT_CLONE","Clone");break;case"mass-update":const Pe=this.getLabelText("massUpdateStatus","TEXT_ALL_X_RECORDS_SELECTED","All {{x}} records selected");Se=this.parseText(Pe,{x:f}),xa=this.getLabelText("massUpdateButton","TEXT_APPLY_MASS_UPDATE","Mass Update");break;case"mass-selection":const Ha=this.getLabelText("massSelectionStatus","TEXT_X_OF_Y_MASS_SELECTED","{{x}} of {{y}} selected");Se=this.parseText(Ha,{x:C.length,y:f}),xa=this.getLabelText("massSelectionButton","TEXT_APPLY_TO_SELECTION","Update Selection");break;default:xa=this.getLabelText("saveButton","TEXT_SAVE","Save")}const xt=T("div",{className:"footer-status-text",textContent:Se});this._modalSaveButtonElm=T("button",{type:"button",className:"btn btn-save btn-primary btn-sm",ariaLabel:xa,textContent:xa,dataset:{action:"create"===E||"edit"===E?"save":E,ariaLabel:xa}});const ct=T("div",{className:"footer-buttons"});("mass-update"===E||"mass-selection"===E)&&Ne.appendChild(xt),ct.appendChild(Ie),ct.appendChild(this._modalSaveButtonElm),Ne.appendChild(ct),H.appendChild(Y),H.appendChild(ne),H.appendChild(Ne),this._modalElm.appendChild(H);for(const Pe of z)if(Pe.editorClass){const Ha=T("div",{className:`item-details-container editor-${Pe.id}`});1===M?Ha.classList.add("slick-col-medium-12"):Ha.classList.add("slick-col-medium-6","slick-col-xlarge-"+12/M);const Qt=T("div",{className:`item-details-label editor-${Pe.id}`});this.grid.applyHtmlCode(Qt,this.getColumnLabel(Pe)||"n/a");const dl=T("div",{className:"item-details-editor-container slick-cell",dataset:{editorid:`${Pe.id}`}}),$i=T("div",{className:`item-details-validation editor-${Pe.id}`});if(this._options?.showResetButtonOnEachEditor){const Gn=this.createEditorResetButtonElement(`${Pe.id}`);this._bindEventService.bind(Gn,"click",this.handleResetInputValue.bind(this)),Qt.appendChild(Gn)}Ha.appendChild(Qt),Ha.appendChild(dl),Ha.appendChild($i),ne.appendChild(Ha)}if(this._options?.showFormResetButton){const Pe=this.createFormResetButtonElement();this._bindEventService.bind(Pe,"click",this.handleResetFormClicked.bind(this)),ne.appendChild(Pe)}document.body.appendChild(this._modalElm),document.body.classList.add("slick-modal-open"),this._bindEventService.bind(document.body,"click",this.handleBodyClicked.bind(this)),"function"==typeof this._options.onRendered&&this._options.onRendered(this._modalElm),this._editors={},this._editorContainers=z.map(Pe=>ne.querySelector(`[data-editorid=${Pe.id}]`))||[],this._compositeOptions={destroy:this.disposeComponent.bind(this),modalType:E,validationMsgPrefix:"* ",formValues:{},editors:this._editors};const Wa=new _U(z,this._editorContainers,this._compositeOptions);this.grid.editActiveCell(Wa),this._bindEventService.bind($,"click",this.cancelEditing.bind(this)),this._bindEventService.bind(Ie,"click",this.cancelEditing.bind(this)),this._bindEventService.bind(this._modalSaveButtonElm,"click",this.handleSaveClicked.bind(this)),this._bindEventService.bind(this._modalElm,"keydown",this.handleKeyDown.bind(this)),this._bindEventService.bind(this._modalElm,"focusout",this.validateCurrentEditor.bind(this)),this._bindEventService.bind(this._modalElm,"blur",this.validateCurrentEditor.bind(this)),this._eventHandler.subscribe(this.grid.onCompositeEditorChange,this.handleOnCompositeEditorChange.bind(this)),this._eventHandler.subscribe(this.grid.onAddNewRow,(Pe,Ha)=>{this._originalDataContext=this.insertNewItemInDataView(Ha.item)})}return this}catch(i){this.dispose();const r="string"==typeof i?i:i?.message??i?.body?.message??"";return a({type:"error",code:"string"==typeof i?i:i?.status??i?.body?.status??r,message:r}),null}}cancelEditing(){var e=this;return Fu(function*(){let a=!0;e.formValues&&Object.keys(e.formValues).length>0&&"function"==typeof e._options.onClose&&(a=yield e._options.onClose()),a&&(e.grid.getEditController()?.cancelCurrentEdit(),("edit"===e._options?.modalType||"clone"===e._options?.modalType)&&e.resetCurrentRowDataContext(),e.grid.setActiveRow(e._lastActiveRowNumber),e.dispose())})()}showValidationSummaryText(e,a=""){e&&""!==a?(this._modalBodyTopValidationElm.textContent=a,this._modalBodyTopValidationElm.style.display="block",this._modalBodyTopValidationElm.scrollIntoView?.(),this._modalSaveButtonElm.disabled=!1,this._modalSaveButtonElm.classList.remove("saving")):(this._modalBodyTopValidationElm.style.display="none",this._modalBodyTopValidationElm.textContent=a)}applySaveMassUpdateChanges(e,a,u=!0){const i=u?this.dataView.getItems():iu(!0,[],this.dataView.getItems());return Object.keys(e).forEach(r=>{r in e&&i.forEach(o=>{r in e&&(void 0===this._options?.validateMassUpdateChange||!1!==this._options.validateMassUpdateChange(r,o,e))&&(o[r]=e[r])})}),u&&(this.dataView.setItems(i,this.gridOptions.datasetIdPropertyName),this.grid.invalidate()),i}applySaveMassSelectionChanges(e,a,u=!0){const r=(a?.dataContextIds??[]).map(d=>this.dataView.getItemById(d)),o=u?r:iu(!0,[],r);return Object.keys(e).forEach(d=>{d in e&&o.forEach(h=>{d in e&&(void 0===this._options?.validateMassUpdateChange||!1!==this._options.validateMassUpdateChange(d,h,e))&&(h[d]=e[d])})}),u&&this.gridService?.updateItems(o),o}autoCalculateLayoutColumnCount(e){return e>=15?3:e>=8?2:1}createEditorResetButtonElement(e){const a=T("button",{type:"button",name:e,ariaLabel:"Reset",title:this._options?.labels?.resetFormButton??"Reset Form Input",className:"btn btn-xs btn-editor-reset"});if(this._options?.resetEditorButtonCssClass){const u=Nt(this._options?.resetEditorButtonCssClass);for(const i of u)a.classList.add(i)}return a}createFormResetButtonElement(){const e=T("div",{className:"reset-container"}),a=T("button",{type:"button",className:"btn btn-sm reset-form"},e);return T("span",{className:this._options?.resetFormButtonIconCssClass??""},a),a.appendChild(document.createTextNode(" Reset Form")),e}executeOnError(e){(this._options?.onError??FU)(e)}executeOnSave(e,a,u,i){var r=this;return Fu(function*(){try{if(r.showValidationSummaryText(!1,""),r.validateCompositeEditors().valid){if(r._modalSaveButtonElm.classList.add("saving"),r._modalSaveButtonElm.disabled=!0,"function"==typeof r._options?.onSave){const d="mass-update"===r._options.modalType||"mass-selection"===r._options.modalType;let h;d&&r._options?.shouldPreviewMassChangeDataset&&(h=e(r.formValues,r.getCurrentRowSelections(),!1));const m=d?h:i;(yield r._options?.onSave(r.formValues,r.getCurrentRowSelections(),m))&&(e(r.formValues,r.getCurrentRowSelections()),a())}else e(r.formValues,r.getCurrentRowSelections()),a();"function"==typeof u&&u(),r.dispose()}}catch(o){const d="string"==typeof o?o:o?.message??o?.body?.message??"";r.showValidationSummaryText(!0,d)}})()}focusOnFirstColumnCellWithEditor(e,a,u,i,r){const o=r&&!this.gridOptions.enableAddRow&&i>=this.dataViewLength?this.dataViewLength-1:i;let d=u;const h=e[u].editorClass;let m=this.grid.getCellNode(o,u);if(!h||!m||!this.getActiveCellEditor(o,u)){if(d=this.findNextAvailableEditorColumnIndex(e,a,i,r),-1===d)return this.executeOnError({type:"error",code:"NO_EDITOR_FOUND",message:"We could not find any Editor in your Column Definition"}),!1;this.grid.setActiveCell(o,d,!1),r&&this.grid.setActiveRow(this.dataViewLength,d,!0)}return m=this.grid.getCellNode(o,d),!!m}findNextAvailableEditorColumnIndex(e,a,u,i){let r=-1;for(let o=0;ou.id===e)),a}getActiveCellEditor(e,a){return this.grid.setActiveCell(e,a,!1),this.grid.getCellEditor()}getColumnLabel(e){const a=this.gridOptions.columnGroupSeparator||" - ";let u=e.nameCompositeEditor||e.name||"",i=e.columnGroup||"";if(this.gridOptions.enableTranslate&&this.translaterService){const o=e.nameCompositeEditorKey||e.nameKey;o&&(u=this.translaterService.translate(o)),e.columnGroupKey&&this.translaterService?.translate&&(i=this.translaterService.translate(e.columnGroupKey))}return ei(i?`${i}${a}${u}`:u,"innerHTML")}getLabelText(e,a,u){const i={...this.gridOptions.compositeEditorOptions?.labels,...this._options?.labels};if(this.gridOptions?.enableTranslate&&this.translaterService?.translate&&i.hasOwnProperty(`${e}Key`)){const r=i[`${e}Key`];return this.translaterService.translate(r||"")}return i?.[e]??this._locales?.[a]??u}getCurrentRowSelections(){const e=this.dataView.getAllSelectedIds();return{gridRowIndexes:this.dataView.mapIdsToRows(e),dataContextIds:e}}handleBodyClicked(e){e.target?.classList?.contains("slick-editor-modal")&&"static"!==this._options?.backdrop&&this.dispose()}handleKeyDown(e){"Escape"===e.code?(this.cancelEditing(),e.stopPropagation(),e.preventDefault()):"Tab"===e.code&&this.validateCurrentEditor()}handleResetInputValue(e){const a=e.target.name,u=this._editors?.[a];"function"==typeof u?.reset&&u.reset(),delete this._formValues?.[a]}handleMassSaving(e,a){var u=this;return Fu(function*(){if(u.formValues&&0!==Object.keys(u.formValues).length){const i="mass-update"===e?"applySaveMassUpdateChanges":"applySaveMassSelectionChanges";u.executeOnSave(u[i].bind(u),a.bind(u))}else u.executeOnError({type:"warning",code:"NO_CHANGES_DETECTED",message:"Sorry we could not detect any changes."})})()}handleOnCompositeEditorChange(e,a){const u=a.column?.id??"";this._formValues={...this._formValues,...a.formValues};const i=this._editors?.[u],r=i?.isValueTouched?.()??i?.isValueChanged?.()??!1;this._itemDataContext=i?.dataContext??{};const o=this._modalElm.querySelector(`[data-editorid=${u}]`);o?.classList&&(r?o.classList.add("modified"):o.classList.remove("modified")),this.validateCompositeEditors()}hasRowSelectionEnabled(){const e=this.grid.getSelectionModel();return!(!this.gridOptions.enableRowSelection&&!this.gridOptions.enableCheckboxSelector||!e)}handleResetFormClicked(){for(const e of Object.keys(this._editors)){const a=this._editors[e];a?.reset&&a.reset()}this._formValues=DG(this._formValues)}handleSaveClicked(){var e=this;return Fu(function*(){const a=e._options?.modalType;switch(a){case"mass-update":e.handleMassSaving(a,()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveCell(0,0,!1),e._options.shouldClearRowSelectionAfterMassAction&&e.grid.setSelectedRows([])});break;case"mass-selection":e.handleMassSaving(a,()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveRow(e._lastActiveRowNumber),e._options.shouldClearRowSelectionAfterMassAction&&e.grid.setSelectedRows([])});break;case"clone":const u={...e._originalDataContext,...e.formValues},i=()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveCell(0,0,!1)};e.executeOnSave(e.insertNewItemInDataView.bind(e,u),i,e.resetCurrentRowDataContext.bind(e),u);break;default:let r=e.grid.getEditController()?.commitCurrentEdit();if(r&&"function"==typeof e._options?.onSave){const o="create"===a?e._originalDataContext:e.grid.getDataItem(e._lastActiveRowNumber);r=yield e._options?.onSave(e.formValues,e.getCurrentRowSelections(),o)}r&&e.dispose()}})()}insertNewItemInDataView(e){const a=this.dataView?.getItemCount()||0,u=this._options.insertNewId??a+1;return e[this.gridOptions.datasetIdPropertyName||"id"]=u,this.dataView.getItemById(u)?this.executeOnError({type:"error",code:"ITEM_ALREADY_EXIST",message:`The item object which you are trying to add already exist with the same Id:: ${u}`}):this.gridService?.addItem(e,this._options.insertOptions),e}parseText(e,a){return e.replace(/\{\{(.*?)\}\}/g,(u,i)=>void 0!==a[i]?a[i]:u)}resetCurrentRowDataContext(){const e=this.gridOptions.datasetIdPropertyName||"id";this.grid.getData().updateItem(this._originalDataContext[e],this._originalDataContext)}validateCompositeEditors(e){let a={valid:!0,msg:""};const u=this.grid.getCellEditor();return u&&(a=u.validate(e)),a}validateCurrentEditor(){const e=this.grid.getCellEditor();e?.validate&&e.validate()}}const mpe=(t,e,a,u,i,r)=>(a=a??"",(r&&r.getOptions&&r.getOptions()).editable&&u.editor?{text:a,addClasses:"editable-field"}:a),ppe=(t,e)=>null!=t&&t.length||!(e.compositeEditorOptions&&"create"===e.compositeEditorOptions.modalType||"edit"===e.compositeEditorOptions.modalType)?/^(task\s\d+)*$/i.test(t)?{valid:!0,msg:""}:{valid:!1,msg:'Your title is invalid, it must start with "Task" followed by a number.'}:{valid:!1,msg:"This is a required field."};let KF=class{constructor(e){this.http=e,this._darkMode=!1,this.title="Example 30: Composite Editor Modal",this.subTitle='Composite Editor allows you to Create, Clone, Edit, Mass Update & Mass Selection Changes inside a nice Modal Window.\n
The modal is simply populated by looping through your column definition list and also uses a lot of the same logic as inline editing (see Composite Editor - Wiki.)',this.columnDefinitions=[],this.dataset=[],this.editQueue=[],this.editedItems={},this.isGridEditable=!0,this.isCompositeDisabled=!1,this.isMassSelectionDisabled=!0,this.cellCssStyleQueue=[],this.complexityLevelList=[{value:0,label:"Very Simple"},{value:1,label:"Simple"},{value:2,label:"Straightforward"},{value:3,label:"Complex"},{value:4,label:"Very Complex"}],this.compositeEditorInstance=new spe}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.prepareGrid(),this.dataset=this.loadData(500)}ngOnDestroy(){document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"}prepareGrid(){this.columnDefinitions=[{id:"title",name:' Title ',field:"title",sortable:!0,type:w.string,minWidth:75,cssClass:"text-uppercase fw-bold",columnGroup:"Common Factor",filterable:!0,filter:{model:re.compoundInputText},editor:{model:Ye.longText,massUpdate:!1,required:!0,alwaysSaveOnEnterKey:!0,maxLength:12,editorOptions:{cols:45,rows:6,buttonTexts:{cancel:"Close",save:"Done"}},validator:ppe}},{id:"duration",name:"Duration",field:"duration",sortable:!0,filterable:!0,minWidth:75,type:w.number,columnGroup:"Common Factor",formatter:(e,a,u)=>null==u||""===u?"":u>1?`${u} days`:`${u} day`,editor:{model:Ye.float,massUpdate:!0,decimal:2,valueStep:1,minValue:0,maxValue:1e4,alwaysSaveOnEnterKey:!0,required:!0}},{id:"cost",name:"Cost",field:"cost",width:90,minWidth:70,sortable:!0,filterable:!0,type:w.number,columnGroup:"Analysis",filter:{model:re.compoundInputNumber},formatter:O.dollar},{id:"percentComplete",name:"% Complete",field:"percentComplete",minWidth:100,type:w.number,sortable:!0,filterable:!0,columnGroup:"Analysis",filter:{model:re.compoundSlider,operator:">="},editor:{model:Ye.slider,massUpdate:!0,minValue:0,maxValue:100},customTooltip:{position:"center"}},{id:"complexity",name:"Complexity",field:"complexity",minWidth:100,type:w.number,sortable:!0,filterable:!0,columnGroup:"Analysis",formatter:(e,a,u)=>this.complexityLevelList[u]?.label,exportCustomFormatter:(e,a,u)=>this.complexityLevelList[u]?.label,filter:{model:re.multipleSelect,collection:this.complexityLevelList},editor:{model:Ye.singleSelect,collection:this.complexityLevelList,massUpdate:!0}},{id:"start",name:"Start",field:"start",sortable:!0,minWidth:100,formatter:O.dateUs,columnGroup:"Period",exportCustomFormatter:O.dateUs,type:w.date,outputType:w.dateUs,saveOutputType:w.dateUtc,filterable:!0,filter:{model:re.compoundDate},editor:{model:Ye.date,massUpdate:!0,editorOptions:{hideClearButton:!1}}},{id:"completed",name:"Completed",field:"completed",width:80,minWidth:75,maxWidth:100,cssClass:"text-center",columnGroup:"Period",formatter:O.checkmarkMaterial,exportWithFormatter:!1,filterable:!0,sortable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:re.singleSelect},editor:{model:Ye.checkbox,massUpdate:!0}},{id:"finish",name:"Finish",field:"finish",sortable:!0,minWidth:100,formatter:O.dateUs,columnGroup:"Period",type:w.date,outputType:w.dateUs,saveOutputType:w.dateUtc,filterable:!0,filter:{model:re.compoundDate},exportCustomFormatter:O.dateUs,editor:{model:Ye.date,editorOptions:{range:{min:"today"}},massUpdate:!0,validator:(e,a)=>{const u=a&&a.item;return u&&u.completed&&!e?{valid:!1,msg:'You must provide a "Finish" date when "Completed" is checked.'}:{valid:!0,msg:""}}}},{id:"product",name:"Product",field:"product",filterable:!0,columnGroup:"Item",minWidth:100,exportWithFormatter:!0,dataKey:"id",labelKey:"itemName",formatter:O.complexObject,exportCustomFormatter:O.complex,type:w.object,sortComparer:H0.objectString,editor:{model:Ye.autocompleter,alwaysSaveOnEnterKey:!0,massUpdate:!0,editorOptions:{minLength:1,fetch:(e,a)=>{a(this.mockProducts().filter(i=>i.itemName.toLowerCase().includes(e.toLowerCase())))},renderItem:{layout:"fourCorners",templateCallback:e=>this.renderItemCallbackWith4Corners(e)}}},filter:{model:re.inputText,type:w.string,queryField:"product.itemName"}},{id:"origin",name:"Country of Origin",field:"origin",formatter:O.complexObject,columnGroup:"Item",exportCustomFormatter:O.complex,dataKey:"code",labelKey:"name",type:w.object,sortComparer:H0.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:Ye.autocompleter,massUpdate:!0,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get("assets/data/countries.json"),editorOptions:{minLength:0}},filter:{model:re.inputText,type:"string",queryField:"origin.name"}},{id:"action",name:"Action",field:"action",width:70,minWidth:70,maxWidth:70,excludeFromExport:!0,formatter:()=>'
',cellMenu:{hideCloseButton:!1,commandTitle:"Commands",commandItems:[{command:"edit",title:"Edit Row",iconCssClass:"mdi mdi-pencil",positionOrder:66,action:()=>this.openCompositeModal("edit")},{command:"clone",title:"Clone Row",iconCssClass:"mdi mdi-content-copy",positionOrder:66,action:()=>this.openCompositeModal("clone")},"divider",{command:"delete-row",title:"Delete Row",positionOrder:64,iconCssClass:"mdi mdi-close color-danger",cssClass:"red",textCssClass:"text-italic color-danger-light",itemVisibilityOverride:e=>!e.dataContext?.completed,action:(e,a)=>{const u=a.dataContext;confirm(`Do you really want to delete row (${(a?.row??0)+1}) with "${u.title}"`)&&this.angularGrid.gridService.deleteItemById(u.id)}}]}}],this.gridOptions={enableAddRow:!0,enableCellNavigation:!0,asyncEditorLoading:!1,autoEdit:!0,autoCommitEdit:!0,editable:!0,autoAddCustomEditorFormatter:mpe,autoResize:{container:"#demo-container",rightPadding:10},darkMode:this._darkMode,enableAutoSizeColumns:!0,enableAutoResize:!0,showCustomFooter:!0,enablePagination:!0,pagination:{pageSize:10,pageSizes:[10,200,250,500,5e3]},enableExcelExport:!0,excelExportOptions:{exportWithFormatter:!1},externalResources:[new fo,new fF,this.compositeEditorInstance],enableFiltering:!0,rowSelectionOptions:{selectActiveRow:!1},createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:28,enableCheckboxSelector:!0,enableRowSelection:!0,multiSelect:!1,checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},enableCompositeEditor:!0,editCommandHandler:(e,a,u)=>{const i=Array.isArray(u.prevSerializedValue)?u.prevSerializedValue:[u.prevSerializedValue],r=Array.isArray(u.serializedValue)?u.serializedValue:[u.serializedValue],o=this.columnDefinitions.filter(h=>void 0!==h.editor),d=[];i.forEach((h,m)=>{const E=i[m],v=r[m];if(E!==v||""===v){const k=Array.isArray(u.prevSerializedValue)?o[m]:a;this.editedItems[this.gridOptions.datasetIdPropertyName||"id"]=e,this.angularGrid.slickGrid.invalidate(),u.execute(),this.renderUnsavedCellStyling(e,k,u),d.push(k)}}),this.editQueue.push({item:e,columns:d,editCommand:u})},enableCellMenu:!0,gridMenu:{hideToggleDarkModeCommand:!1,onCommand:(e,a)=>{"toggle-dark-mode"===a.command&&(this._darkMode=!this._darkMode,this.toggleBodyBackground())}}}}loadData(e){const a=[];for(let u=0;u100?u>5?100:88:v,x=100===k;a[u]={id:u,title:"Task "+u,duration:Math.floor(100*Math.random())+10,percentComplete:k,analysis:{percentComplete:k},complexity:u%3?0:2,start:new Date(r,d,h,h,m,m,m),finish:x||u%3==0&&E>new Date&&u>3?x?new Date:E:"",cost:u%33==0?null:Math.round(1e4*Math.random())/100,completed:x||u%3==0&&E>new Date&&u>3,product:{id:this.mockProducts()[i]?.id,itemName:this.mockProducts()[i]?.itemName},origin:u%2?{code:"CA",name:"Canada"}:{code:"US",name:"United States"}},u%8||(delete a[u].finish,delete a[u].percentComplete)}return a}handleValidationError(e,a){if(a.validationResults){let u=a.validationResults.msg||"";if(a.editor&&a.editor instanceof _U){if(a.validationResults.errors){u+="\n";for(const i of a.validationResults.errors){u+=`${i.editor.args.column.name.toUpperCase()}: ${i.msg}`}}console.log(u)}}else alert(a.validationResults.msg);return!1}handleItemDeleted(e){console.log("item deleted with id:",e)}handleOnBeforeEditCell(e,a){const{column:u,item:i,grid:r}=a;return!(u&&i&&!function hpe(t,e,a){const u=a?.getOptions(),i=e.editor;let o=!(!u.editable||!i);t&&e&&u&&u.editable&&"finish"===e.id&&(o=!!t?.completed);return o}(i,u,r))||(e.preventDefault(),!1)}handleOnCellChange(e,a){const u=a?.item;u&&!u.completed&&(u.finish=null,this.angularGrid.gridService.updateItem(u))}handleOnCellClicked(e,a){console.log(e,a)}handleOnCompositeEditorChange(e,a){const u=a.column,i=a.formValues;"percentComplete"===u.id&&100===i.percentComplete&&(this.compositeEditorInstance.changeFormInputValue("completed",!0),this.compositeEditorInstance.changeFormInputValue("finish",new Date))}handleReRenderUnsavedStyling(){this.removeAllUnsavedStylingFromCell(),this.renderUnsavedStylingOnAllVisibleCells()}handleOnGridStateChanged(e){Array.isArray(e.gridState?.rowSelection?.dataContextIds)&&(this.isMassSelectionDisabled=0===e.gridState?.rowSelection?.dataContextIds.length)}openCompositeModal(e){let a="";switch(e){case"create":a="Inserting New Task";break;case"clone":a="Clone - {{title}}";break;case"edit":a='Editing - {{title}} (id: {{id}})';break;case"mass-update":a="Mass Update All Records";break;case"mass-selection":a="Update Selected Records"}this.compositeEditorInstance?.openDetails({headerTitle:a,modalType:e,insertOptions:{highlightRow:!1},showFormResetButton:!0,resetFormButtonIconCssClass:"mdi mdi-undo",onClose:()=>Promise.resolve(confirm("You have unsaved changes, are you sure you want to close this window?")),onError:u=>alert(u.message),onRendered:u=>{u.dataset.bsTheme=this._darkMode?"dark":"light"},onSave:(u,i,r)=>"mass-update"===e||"mass-selection"===e?new Promise((d,h)=>{setTimeout(()=>{u.percentComplete>=50?d(!0):h("Unfortunately we only accept a minimum of 50% Completion...")},50)}):(console.log(`${e} item data context`,r),new Promise(d=>setTimeout(()=>d(!0),50)))})}toggleGridEditReadonly(){this.undoAllEdits(),this.isGridEditable=!this.isGridEditable,this.isCompositeDisabled=!this.isGridEditable,this.isGridEditable||(this.isMassSelectionDisabled=!0),this.angularGrid.slickGrid.setOptions({editable:this.isGridEditable})}removeUnsavedStylingFromCell(e,a,u){const i=`unsaved_highlight_${[a.id]}${u}`;this.angularGrid.slickGrid.removeCellCssStyles(i);const r=this.cellCssStyleQueue.findIndex(o=>o===i);r>=0&&this.cellCssStyleQueue.splice(r,1)}removeAllUnsavedStylingFromCell(){for(const e of this.cellCssStyleQueue)this.angularGrid.slickGrid.removeCellCssStyles(e);this.cellCssStyleQueue=[]}renderUnsavedStylingOnAllVisibleCells(){for(const e of this.editQueue)if(e){const{item:a,columns:u,editCommand:i}=e;Array.isArray(u)&&u.forEach(r=>{this.renderUnsavedCellStyling(a,r,i)})}}renderUnsavedCellStyling(e,a,u){if(u&&e&&a){const i=this.angularGrid.dataView?.getRowByItem(e);if(void 0!==i&&i>=0){const r={[i]:{[a.id]:"unsaved-editable-field"}},o=`unsaved_highlight_${[a.id]}${i}`;this.angularGrid.slickGrid.setCellCssStyles(o,r),this.cellCssStyleQueue.push(o)}}}saveAll(){console.log(this.editQueue),console.log(this.editedItems),this.removeAllUnsavedStylingFromCell(),this.editQueue=[],this.editedItems={}}undoLastEdit(e=!1){const a=this.editQueue.pop(),u=a?.editCommand;if(a&&u&&Xs.cancelCurrentEdit()){u.undo();for(const i of a.columns)this.removeUnsavedStylingFromCell(a.item,i,u.row);this.angularGrid.slickGrid.invalidate(),e&&this.angularGrid.slickGrid.gotoCell(u.row,u.cell,!1)}}undoAllEdits(){for(const e of this.editQueue){const a=e?.editCommand;if(a&&Xs.cancelCurrentEdit()){a.undo();for(const u of e.columns)this.removeUnsavedStylingFromCell(e.item,u,a.row)}}this.angularGrid.slickGrid.invalidate(),this.editQueue=[]}toggleDarkMode(){this._darkMode=!this._darkMode,this.toggleBodyBackground(),this.angularGrid.slickGrid?.setOptions({darkMode:this._darkMode})}toggleBodyBackground(){this._darkMode?(document.querySelector(".panel-wm-content").classList.add("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="dark"):(document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light")}mockProducts(){return[{id:0,itemName:"Sleek Metal Computer",itemNameTranslated:"some fantastic sleek metal computer description",listPrice:2100.23,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:this.getRandomIcon(0)},{id:1,itemName:"Tasty Granite Table",itemNameTranslated:"an extremely huge and heavy table",listPrice:3200.12,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:this.getRandomIcon(1)},{id:2,itemName:"Awesome Wooden Mouse",itemNameTranslated:"super old mouse",listPrice:15,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:this.getRandomIcon(2)},{id:3,itemName:"Gorgeous Fresh Shirt",itemNameTranslated:"what a gorgeous shirt seriously",listPrice:25.76,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:this.getRandomIcon(3)},{id:4,itemName:"Refined Cotton Table",itemNameTranslated:"super light table that will fall apart amazingly fast",listPrice:13.35,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:this.getRandomIcon(4)},{id:5,itemName:"Intelligent Wooden Pizza",itemNameTranslated:"wood not included",listPrice:23.33,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:this.getRandomIcon(5)},{id:6,itemName:"Licensed Cotton Chips",itemNameTranslated:"not sure what that is",listPrice:71.21,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:this.getRandomIcon(6)},{id:7,itemName:"Ergonomic Rubber Soap",itemNameTranslated:"so good you'll want to use it every night",listPrice:2.43,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:this.getRandomIcon(7)},{id:8,itemName:"Handcrafted Steel Car",itemNameTranslated:"aka tesla truck",listPrice:31288.39,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:this.getRandomIcon(8)}]}getRandomIcon(e){const a=["mdi-arrow-collapse","mdi-arrow-expand","mdi-cancel","mdi-check","mdi-checkbox-blank-outline","mdi-check-box-outline","mdi-checkbox-marked","mdi-close","mdi-close-circle","mdi-close-circle-outline","mdi-close-thick","mdi-content-copy","mdi-database-refresh","mdi-download","mdi-file-document-outline","mdi-file-excel-outline","mdi-file-music-outline","mdi-file-pdf-outline","mdi-filter-remove-outline","mdi-flip-vertical","mdi-folder","mdi-folder-open","mdi-help-circle","mdi-help-circle-outline","mdi-history","mdi-information","mdi-information-outline","mdi-link","mdi-link-variant","mdi-menu","mdi-microsoft-excel","mdi-minus","mdi-page-first","mdi-page-last","mdi-paperclip","mdi-pin-off-outline","mdi-pin-outline","mdi-playlist-plus","mdi-playlist-remove","mdi-plus","mdi-redo","mdi-refresh","mdi-shape-square-plus","mdi-sort-ascending","mdi-sort-descending","mdi-swap-horizontal","mdi-swap-vertical","mdi-sync","mdi-table-edit","mdi-table-refresh","mdi-undo"],u=Math.floor(Math.random()*a.length-1);return a[e??u]}renderItemCallbackWith2Rows(e){return`
\n
\n \x3c!----\x3e\n \n
\n
\n \n \n ${e.itemName}\n \n
\n
\n
\n
${e.itemNameTranslated}
\n
`}renderItemCallbackWith4Corners(e){return`
\n
\n \x3c!----\x3e\n \n
\n
\n \n \n ${e.itemName}\n \n ${wu(e.listPrice,2,2,!1,"$")}\n
\n
\n
\n
${e.itemNameTranslated}
\n Type: ${"I"===e.itemTypeName?"Item":"C"===e.itemTypeName?"PdCat":"Cat"}\n
`}static#e=this.ctorParameters=()=>[{type:cu}]};KF=ua([ba({template:'
\n

\n {{title}}\n \n \n \n code\n \n \n

\n
\n\n
\n
\n \n \n \n \n \n
\n
\n\n
\n
\n \n \n \n \n \n
\n
\n\n \n \n
',encapsulation:Na.None,styles:[lpe()]}),wt("design:paramtypes",[cu])],KF);var gpe=W(968),vpe=W.n(gpe);const bpe=(t,e,a,u,i)=>3===i.priority?'
Action
':'
Action
',kpe=(t,e,a,u,i)=>{if(!a)return"";let r="";const o=+(a>=3?3:a),h=``;for(let m=1;m<=o;m++)r+=h;return r},xpe=(t,e,a,u,i,r)=>{if(!a)return"";const d=r.getOptions().i18n,h=+(a>=3?3:a),m=3===h?"HIGH":2===h?"MEDIUM":"LOW";return d&&d.instant&&d.instant(m)},Dpe=(t,e,a,u,i,r)=>{const d=r.getOptions().i18n;return d&&d.instant&&d.instant("TASK_X",{x:a})};let WF=class{constructor(e){this.translate=e,this.title="Example 26: Cell Menu & Context Menu Plugins",this.subTitle='Add Cell Menu and Context Menu\n
    \n
  • This example demonstrates 2 SlickGrid plugins\n
      \n
    1. Using the Slick.Plugins.CellMenu plugin, often used for an Action Menu(s), 1 or more per grid\n (Wiki docs).\n
    2. \n
    3. Using the Slick.Plugins.ContextMenu plugin, shown after a mouse right+click, only 1 per grid.\n (Wiki docs).\n
    4. \n
    \n
  • It will also "autoAdjustDrop" (bottom/top) and "autoAlignSide" (left/right) by default but could be turned off
  • \n
  • Both plugins have 2 sections, 1st section can have an array of Options (to change value of a field) and 2nd section an array of Commands (execute a command)
  • \n
  • There are 2 ways to execute a Command/Option
  • \n
      \n
    1. via onCommand/onOptionSelected (use a switch/case to parse command/option and do something with it)
    2. \n
    3. via action callback (that can be defined on each command/option)
    4. \n
    \n
  • Use override callback functions to change the properties of show/hide, enable/disable the menu or certain item(s) from the list
  • \n
      \n
    1. These callbacks are: "menuUsabilityOverride", "itemVisibilityOverride", "itemUsabilityOverride"
    2. \n
    3. ... e.g. in the demo, the "Action" Cell Menu is only available when Priority is set to "High" via "menuUsabilityOverride"
    4. \n
    5. ... e.g. in the demo, the Context Menu is only available on the first 20 Tasks via "menuUsabilityOverride"
    6. \n
    \n
',this._darkModeGrid=!1,this.subscriptions=[];this.translate.use("en"),this.selectedLanguage="en"}angularGridReady(e){this.angularGrid=e}get cellMenuInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(pa.cellMenu)}get contextMenuInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(pa.contextMenu)}ngOnInit(){this.prepareGrid(),this.dataset=this.getData(1e3)}ngOnDestroy(){Bc(this.subscriptions),document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"}prepareGrid(){this.columnDefinitions=[{id:"id",name:"#",field:"id",maxWidth:45,sortable:!0,filterable:!0},{id:"title",name:"Title",field:"id",nameKey:"TITLE",minWidth:100,formatter:Dpe,sortable:!0,filterable:!0,params:{useFormatterOuputToFilter:!0}},{id:"percentComplete",nameKey:"PERCENT_COMPLETE",field:"percentComplete",minWidth:100,exportWithFormatter:!1,sortable:!0,filterable:!0,filter:{model:re.slider,operator:">="},formatter:O.percentCompleteBar,type:w.number},{id:"start",name:"Start",field:"start",nameKey:"START",minWidth:100,formatter:O.dateIso,outputType:w.dateIso,type:w.date,filterable:!0,filter:{model:re.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:O.dateIso,outputType:w.dateIso,type:w.date,minWidth:100,filterable:!0,filter:{model:re.compoundDate}},{id:"priority",nameKey:"PRIORITY",field:"priority",exportCustomFormatter:xpe,formatter:kpe,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:1,labelKey:"LOW"},{value:2,labelKey:"MEDIUM"},{value:3,labelKey:"HIGH"}],model:re.singleSelect,enableTranslateLabel:!0}},{id:"completed",nameKey:"COMPLETED",field:"completed",exportCustomFormatter:O.translateBoolean,formatter:O.checkmarkMaterial,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,labelKey:"TRUE"},{value:!1,labelKey:"FALSE"}],model:re.singleSelect,enableTranslateLabel:!0}},{id:"action",name:"Action",field:"action",width:100,maxWidth:110,excludeFromExport:!0,formatter:bpe,cellMenu:{hideCloseButton:!1,menuUsabilityOverride:e=>3===e.dataContext.priority,commandTitleKey:"COMMANDS",commandItems:[{command:"command2",title:"Command 2",positionOrder:62,action:(e,a)=>{console.log(a.dataContext,a.column)},itemUsabilityOverride:e=>!e.dataContext.completed},{command:"command1",title:"Command 1",cssClass:"orange",positionOrder:61},{command:"delete-row",titleKey:"DELETE_ROW",positionOrder:64,iconCssClass:"mdi mdi-close",cssClass:"red",textCssClass:"bold",itemVisibilityOverride:e=>!e.dataContext.completed},{divider:!0,command:"",positionOrder:63},{command:"help",titleKey:"HELP",iconCssClass:"mdi mdi-help-circle",positionOrder:66},{command:"something",titleKey:"DISABLED_COMMAND",disabled:!0,positionOrder:67},{command:"",divider:!0,positionOrder:98},{command:"export",title:"Exports",positionOrder:99,commandItems:[{command:"exports-txt",title:"Text (tab delimited)"},{command:"sub-menu",title:"Excel",cssClass:"green",subMenuTitle:"available formats",subMenuTitleCssClass:"text-italic orange",commandItems:[{command:"exports-csv",title:"Excel (csv)"},{command:"exports-xlsx",title:"Excel (xlsx)"}]}]},{command:"feedback",title:"Feedback",positionOrder:100,commandItems:[{command:"request-update",title:"Request update from supplier",iconCssClass:"mdi mdi-star",tooltip:"this will automatically send an alert to the shipping team to contact the user for an update"},"divider",{command:"sub-menu",title:"Contact Us",iconCssClass:"mdi mdi-account",subMenuTitle:"contact us...",subMenuTitleCssClass:"italic",commandItems:[{command:"contact-email",title:"Email us",iconCssClass:"mdi mdi-pencil-outline"},{command:"contact-chat",title:"Chat with us",iconCssClass:"mdi mdi-message-text-outline"},{command:"contact-meeting",title:"Book an appointment",iconCssClass:"mdi mdi-coffee"}]}]}],optionTitleKey:"CHANGE_COMPLETED_FLAG",optionItems:[{option:!0,titleKey:"TRUE",iconCssClass:"mdi mdi-check-box-outline"},{option:!1,titleKey:"FALSE",iconCssClass:"mdi mdi-checkbox-blank-outline"},{option:null,title:"null",cssClass:"italic",action:(e,a)=>{},itemUsabilityOverride:e=>3===e.dataContext.priority,itemVisibilityOverride:e=>!e.dataContext.completed}]}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},darkMode:this._darkModeGrid,enableCellNavigation:!0,enableFiltering:!0,enableSorting:!0,enableTranslate:!0,enableExcelExport:!0,excelExportOptions:{exportWithFormatter:!0,customColumnWidth:15,columnHeaderStyle:{font:{bold:!0,italic:!0}}},i18n:this.translate,externalResources:[new fo],enableContextMenu:!0,enableCellMenu:!0,cellMenu:{onCommand:(e,a)=>this.executeCommand(e,a),onOptionSelected:(e,a)=>{const u=a&&a.dataContext;u&&u.hasOwnProperty("completed")&&(u.completed=a.item.option,this.angularGrid.gridService.updateItem(u))},onBeforeMenuShow:(e,a)=>{console.log("Before the Cell Menu is shown",a)},onBeforeMenuClose:(e,a)=>console.log("Cell Menu is closing",a)},contextMenu:this.getContextMenuOptions()}}executeCommand(e,a){a.column;const i=a.command,r=a.dataContext;switch(i){case"contact-email":case"contact-chat":case"contact-meeting":alert("Command: "+a?.command);break;case"exports-csv":case"exports-txt":case"exports-xlsx":alert(`Exporting as ${a.item.title}`);break;case"command1":alert("Command 1");break;case"command2":alert("Command 2");break;case"help":alert("Please help!");break;case"delete-row":confirm(`Do you really want to delete row ${a.row+1} with ${this.translate.instant("TASK_X",{x:r.id})}`)&&this.angularGrid.dataView.deleteItem(r.id)}}getData(e){const a=[];for(let u=0;u(e&&e.dataContext).id<21,commandShownOverColumnIds:["id","title","percentComplete","start","finish","completed"],commandTitleKey:"COMMANDS",commandItems:[{divider:!0,command:"",positionOrder:61},{command:"delete-row",titleKey:"DELETE_ROW",iconCssClass:"mdi mdi-close",cssClass:"red",textCssClass:"bold",positionOrder:62},{divider:!0,command:"",positionOrder:63},{command:"help",titleKey:"HELP",iconCssClass:"mdi mdi-help-circle",positionOrder:64,action:(e,a)=>{},itemVisibilityOverride:e=>!(e&&e.dataContext).completed},{command:"something",titleKey:"DISABLED_COMMAND",disabled:!0,positionOrder:65},{command:"",divider:!0,positionOrder:98},{command:"export",title:"Exports",positionOrder:99,commandItems:[{command:"exports-txt",title:"Text (tab delimited)"},{command:"sub-menu",title:"Excel",cssClass:"green",subMenuTitle:"available formats",subMenuTitleCssClass:"text-italic orange",commandItems:[{command:"exports-csv",title:"Excel (csv)"},{command:"exports-xlsx",title:"Excel (xlsx)"}]}]},{command:"feedback",title:"Feedback",positionOrder:100,commandItems:[{command:"request-update",title:"Request update from supplier",iconCssClass:"mdi mdi-star",tooltip:"this will automatically send an alert to the shipping team to contact the user for an update"},"divider",{command:"sub-menu",title:"Contact Us",iconCssClass:"mdi mdi-account",subMenuTitle:"contact us...",subMenuTitleCssClass:"italic",commandItems:[{command:"contact-email",title:"Email us",iconCssClass:"mdi mdi-pencil-outline"},{command:"contact-chat",title:"Chat with us",iconCssClass:"mdi mdi-message-text-outline"},{command:"contact-meeting",title:"Book an appointment",iconCssClass:"mdi mdi-coffee"}]}]}],optionTitleKey:"CHANGE_PRIORITY",optionShownOverColumnIds:["priority"],optionItems:[{option:0,title:"n/a",textCssClass:"italic",itemUsabilityOverride:e=>!(e&&e.dataContext).completed,action:(e,a)=>{}},{option:1,iconCssClass:"mdi mdi-star-outline yellow",titleKey:"LOW"},{option:2,iconCssClass:"mdi mdi-star orange",titleKey:"MEDIUM"},{option:3,iconCssClass:"mdi mdi-star red",titleKey:"HIGH"},"divider",{option:4,title:"Extreme",iconCssClass:"mdi mdi-fire",disabled:!0,itemVisibilityOverride:e=>!(e&&e.dataContext).completed},{option:null,title:"Sub-Options (demo)",subMenuTitleKey:"CHANGE_PRIORITY",optionItems:[{option:1,iconCssClass:"mdi mdi-star-outline yellow",titleKey:"LOW"},{option:2,iconCssClass:"mdi mdi-star orange",titleKey:"MEDIUM"},{option:3,iconCssClass:"mdi mdi-star red",titleKey:"HIGH"}]}],onBeforeMenuShow:(e,a)=>{this.angularGrid.slickGrid.setActiveCell(a.row,a.cell,!1),console.log("Before the global Context Menu is shown",a)},onBeforeMenuClose:(e,a)=>console.log("Global Context Menu is closing",a),onCommand:(e,a)=>this.executeCommand(e,a),onOptionSelected:(e,a)=>{const u=a&&a.dataContext;u?.hasOwnProperty("priority")&&(u.priority=a.item.option,this.angularGrid.gridService.updateItem(u))}}}showContextCommandsAndOptions(e){const a=e?[]:["id","title","complete","start","finish","completed","action"];this.contextMenuInstance?.setOptions({commandShownOverColumnIds:a})}showCellMenuCommandsAndOptions(e){this.cellMenuInstance?.setOptions({hideOptionSection:!e})}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}toggleDarkMode(){this._darkModeGrid=!this._darkModeGrid,this._darkModeGrid?(document.querySelector(".panel-wm-content").classList.add("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="dark"):(document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"),this.angularGrid.slickGrid?.setOptions({darkMode:this._darkModeGrid})}static#e=this.ctorParameters=()=>[{type:rt}]};WF=ua([ba({template:'
\n

\n {{title}}\n \n \n \n code\n \n \n

\n
\n\n
\n
\n \n Context Menu:\n \n \n \n\n \n Cell Menu:\n \n \n \n
\n
\n
\n
\n \n Locale:\n \n {{selectedLanguage + \'.json\'}}\n \n
\n
\n\n
\n \n \n
\n
',encapsulation:Na.None,styles:[vpe()]}),wt("design:paramtypes",[rt])],WF);var Cpe=W(177),ype=W.n(Cpe);let UF=class{constructor(){this.title="Example 32: Regular & Custom Tooltips",this.subTitle='\n This demo shows how to create Regular & Custom Tooltips (Wiki docs)\n
\n
    \n
  • optionally parse regular [title] attributes and transform them into tooltips
  • \n
  • create your own Custom Tooltip via a Custom Formatter
  • \n
  • create an Async Custom Tooltip (Promise/Observable) to allowing fetching data from an API
  • \n
  • optionally add Custom Tooltip on Column Header & Column Header-Row (filters)
  • \n
\n ',this.editCommandQueue=[],this.serverApiDelay=500}ngOnInit(){this.initializeGrid(),this.dataset=this.loadData(500)}angularGridReady(e){this.angularGrid=e}initializeGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:w.string,editor:{model:Ye.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},filterable:!0,customTooltip:{position:"right-align",formatter:()=>'
loading...
',asyncProcess:()=>new Promise(e=>{setTimeout(()=>e({ratio:10*Math.random()/10,lifespan:100*Math.random()}),this.serverApiDelay)}),asyncPostFormatter:this.tooltipTaskAsyncFormatter}},{id:"duration",name:"Duration",field:"duration",sortable:!0,filterable:!0,editor:{model:Ye.float,decimal:2,valueStep:1,maxValue:1e4,alwaysSaveOnEnterKey:!0},formatter:(e,a,u)=>u>1?`${u} days`:`${u} day`,type:w.number},{id:"desc",name:"Description",field:"description",width:100,filterable:!0,editor:{model:Ye.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},formatter:(e,a,u,i,r)=>`${u||""}`,customTooltip:{useRegularTooltip:!0,useRegularTooltipFromCellTextOnly:!0}},{id:"desc2",name:"Description 2",field:"description",width:100,filterable:!0,editor:{model:Ye.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},formatter:(e,a,u,i,r)=>`${u||""}`,customTooltip:{useRegularTooltip:!0,useRegularTooltipFromFormatterOnly:!0}},{id:"cost",name:'Cost',field:"cost",width:90,sortable:!0,filterable:!0,formatter:O.multiple,params:{formatters:[O.dollar,(e,a,u)=>`${u||""}`]},customTooltip:{useRegularTooltip:!0,useRegularTooltipFromFormatterOnly:!0},type:w.number},{id:"percentComplete",name:"% Complete",field:"percentComplete",type:w.number,editor:{model:Ye.slider,minValue:0,maxValue:100},formatter:O.percentCompleteBar,sortable:!0,filterable:!0,filter:{model:re.slider,operator:">="},customTooltip:{position:"center",formatter:(e,a,u)=>"string"==typeof u&&u.includes("%")?u:`${u}%`,headerFormatter:void 0,headerRowFormatter:void 0}},{id:"start",name:"Start",field:"start",sortable:!0,type:w.date,outputType:w.dateIso,filterable:!0,filter:{model:re.compoundDate},formatter:O.dateIso,editor:{model:Ye.date},customTooltip:{formatter:()=>"",asyncProcess:()=>new Promise(e=>{setTimeout(()=>e({}),this.serverApiDelay)}),asyncPostFormatter:this.tooltipFormatter.bind(this)}},{id:"finish",name:"Finish",field:"finish",sortable:!0,editor:{model:Ye.date,editorOptions:{range:{min:"today"}}},type:w.date,outputType:w.dateIso,formatter:O.dateIso,filterable:!0,filter:{model:re.dateRange},disableTooltip:!0},{id:"effortDriven",name:"Effort Driven",field:"effortDriven",width:80,minWidth:20,maxWidth:100,cssClass:"cell-effort-driven",sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:re.singleSelect},exportWithFormatter:!1,formatter:O.checkmarkMaterial},{id:"prerequisites",name:"Prerequisites",field:"prerequisites",filterable:!0,formatter:(e,a,u)=>{if(u&&Array.isArray(u)){const i=u.map(r=>`Task ${r}`).join(", ");return`${i}`}return""},customTooltip:{useRegularTooltip:!0,maxWidth:500},exportWithFormatter:!0,sanitizeDataExport:!0,minWidth:100,sortable:!0,type:w.string,editor:{collectionAsync:new Promise(e=>{setTimeout(()=>{e(Array.from(Array(this.dataset.length).keys()).map(a=>({value:a,label:a,prefix:"Task",suffix:"days"})))},500)}),customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:Ye.multipleSelect},filter:{collectionAsync:new Promise(e=>{setTimeout(()=>{e(Array.from(Array(this.dataset.length).keys()).map(a=>({value:a,label:`Task ${a}`})))})}),customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:re.multipleSelect,operator:ee.inContains}},{id:"action",name:"Action",field:"action",width:70,minWidth:70,maxWidth:70,formatter:()=>'
',excludeFromExport:!0,cellMenu:{hideCloseButton:!1,commandTitle:"Commands",commandItems:[{command:"command2",title:"Command 2",positionOrder:62,action:(e,a)=>{console.log(a.dataContext,a.column)},itemUsabilityOverride:e=>!e.dataContext.completed},{command:"command1",title:"Command 1",cssClass:"orange",positionOrder:61},{command:"delete-row",title:"Delete Row",positionOrder:64,iconCssClass:"mdi mdi-close",cssClass:"red",textCssClass:"bold",itemVisibilityOverride:e=>!e.dataContext.completed},{divider:!0,command:"",positionOrder:63},{command:"help",title:"Help",iconCssClass:"mdi mdi-help-circle-outline",positionOrder:66},{command:"something",title:"Disabled Command",disabled:!0,positionOrder:67}]}}],this.gridOptions={autoEdit:!0,autoCommitEdit:!0,editable:!0,autoResize:{container:"#demo-container"},enableAutoSizeColumns:!0,enableAutoResize:!0,enableCellNavigation:!0,enableExcelExport:!0,excelExportOptions:{exportWithFormatter:!0},externalResources:[new fF,new fo],customTooltip:{formatter:this.tooltipFormatter.bind(this),headerFormatter:this.headerFormatter,headerRowFormatter:this.headerRowFormatter,usabilityOverride:e=>0!==e.cell&&"action"!==e?.column?.id},presets:{filters:[{columnId:"prerequisites",searchTerms:[1,3,5,7,9,12,15,18,21,25,28,29,30,32,34]}]},rowHeight:33,enableFiltering:!0,rowSelectionOptions:{selectActiveRow:!1},showCustomFooter:!0,enableCheckboxSelector:!0,enableRowSelection:!0,checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},editCommandHandler:(e,a,u)=>{this.editCommandQueue.push(u),u.execute()},enableCellMenu:!0,cellMenu:{onCommand:(e,a)=>this.executeCommand(e,a),onOptionSelected:(e,a)=>{const u=a&&a.dataContext;u&&u.hasOwnProperty("completed")&&(u.completed=a.item.option,this.angularGrid.gridService.updateItem(u))}}}}loadData(e){const a=[];for(let u=0;uCustom Tooltip - Header
\n
Column:
${i.name}
`}headerRowFormatter(e,a,u,i){return`
Custom Tooltip - Header Row (filter)
\n
Column:
${i.field}
`}tooltipFormatter(e,a,u,i,r,o){const h=O.checkmarkMaterial(e,a,r.effortDriven,i,r,o);return`
Custom Tooltip
\n
Id:
${r.id}
\n
Title:
${r.title}
\n
Effort Driven:
${h.outerHTML||""}
\n
Completion:
${this.loadCompletionIcons(r.percentComplete)}
\n `}tooltipTaskAsyncFormatter(e,a,u,i,r,o){return`
${`Task ${r.id} - (async tooltip)`}
\n
Completion:
${O.percentCompleteBarWithText(e,a,r.percentComplete,i,r,o).outerHTML||""}
\n
Lifespan:
${r.__params.lifespan.toFixed(2)}
\n
Ratio:
${r.__params.ratio.toFixed(2)}
\n `}loadCompletionIcons(e){let a="",u=0;e>5&&e<25?u=1:e>=25&&e<50?u=2:e>=50&&e<75?u=3:e>=75&&e<100?u=4:100===e&&(u=5);for(let i=0;i=3?"text-warning":"text-secondary"}">`}return a}};UF=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n \n \n
\n\n \n \n
',encapsulation:Na.None,styles:[ype()]})],UF);function Mc(t,e,a){return e<=t&&t<=a}function JF(t){if(void 0===t)return{};if(t===Object(t))return t;throw TypeError("Could not convert argument to dictionary")}function lT(t){this.tokens=[].slice.call(t)}lT.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():-1},prepend:function(t){if(Array.isArray(t))for(var e=t;e.length;)this.tokens.unshift(e.pop());else this.tokens.unshift(t)},push:function(t){if(Array.isArray(t))for(var e=t;e.length;)this.tokens.push(e.shift());else this.tokens.push(t)}};function sT(t,e){if(t)throw TypeError("Decoder error");return e||65533}(function Bpe(){}).prototype={handler:function(t,e){}},function Spe(){}.prototype={handler:function(t,e){}};var $F="utf-8";function qF(t,e){if(!(this instanceof qF))return new qF(t,e);if((t=void 0!==t?String(t).toLowerCase():$F)!==$F)throw new Error("Encoding not supported. Only utf-8 is supported");e=JF(e),this._streaming=!1,this._encoder=null,this._options={fatal:!!e.fatal},Object.defineProperty(this,"encoding",{value:"utf-8"})}function zpe(t){var e=t.fatal,a=0,u=0,i=0,r=128,o=191;this.handler=function(d,h){if(-1===h&&0!==i)return i=0,sT(e);if(-1===h)return-1;if(0===i){if(Mc(h,0,127))return h;if(Mc(h,194,223))i=1,a=h-192;else if(Mc(h,224,239))224===h&&(r=160),237===h&&(o=159),i=2,a=h-224;else{if(!Mc(h,240,244))return sT(e);240===h&&(r=144),244===h&&(o=143),i=3,a=h-240}return a<<=6*i,null}if(!Mc(h,r,o))return a=i=u=0,r=128,o=191,d.prepend(h),sT(e);if(r=128,o=191,a+=h-128<<6*(i-(u+=1)),u!==i)return null;var m=a;return a=i=u=0,m}}function Mpe(t){t.fatal;this.handler=function(a,u){if(-1===u)return-1;if(Mc(u,0,127))return u;var i,r;Mc(u,128,2047)?(i=1,r=192):Mc(u,2048,65535)?(i=2,r=224):Mc(u,65536,1114111)&&(i=3,r=240);for(var o=[(u>>6*i)+r];i>0;){var d=u>>6*(i-1);o.push(128|63&d),i-=1}return o}}(function dT(t,e){if(!(this instanceof dT))return new dT(t,e);if((t=void 0!==t?String(t).toLowerCase():$F)!==$F)throw new Error("Encoding not supported. Only utf-8 is supported");e=JF(e),this._streaming=!1,this._BOMseen=!1,this._decoder=null,this._fatal=!!e.fatal,this._ignoreBOM=!!e.ignoreBOM,Object.defineProperty(this,"encoding",{value:"utf-8"}),Object.defineProperty(this,"fatal",{value:this._fatal}),Object.defineProperty(this,"ignoreBOM",{value:this._ignoreBOM})}).prototype={decode:function(e,a){var u;u="object"==typeof e&&e instanceof ArrayBuffer?new Uint8Array(e):"object"==typeof e&&"buffer"in e&&e.buffer instanceof ArrayBuffer?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0),a=JF(a),this._streaming||(this._decoder=new zpe({fatal:this._fatal}),this._BOMseen=!1),this._streaming=!!a.stream;for(var o,i=new lT(u),r=[];!i.endOfStream()&&-1!==(o=this._decoder.handler(i,i.read()));)null!==o&&(Array.isArray(o)?r.push.apply(r,o):r.push(o));if(!this._streaming){do{if(-1===(o=this._decoder.handler(i,i.read())))break;null!==o&&(Array.isArray(o)?r.push.apply(r,o):r.push(o))}while(!i.endOfStream());this._decoder=null}return r.length&&-1!==["utf-8"].indexOf(this.encoding)&&!this._ignoreBOM&&!this._BOMseen&&(65279===r[0]?(this._BOMseen=!0,r.shift()):this._BOMseen=!0),function wpe(t){for(var e="",a=0;a>10),56320+(1023&u)))}return e}(r)}},qF.prototype={encode:function(e,a){e=e?String(e):"",a=JF(a),this._streaming||(this._encoder=new Mpe(this._options)),this._streaming=!!a.stream;for(var r,u=[],i=new lT(function Ape(t){for(var e=String(t),a=e.length,u=0,i=[];u57343)i.push(r);else if(56320<=r&&r<=57343)i.push(65533);else if(55296<=r&&r<=56319)if(u===a-1)i.push(65533);else{var o=t.charCodeAt(u+1);if(56320<=o&&o<=57343){var d=1023&r,h=1023&o;i.push(65536+(d<<10)+h),u+=1}else i.push(65533)}u+=1}return i}(e));!i.endOfStream()&&-1!==(r=this._encoder.handler(i,i.read()));)Array.isArray(r)?u.push.apply(u,r):u.push(r);if(!this._streaming){for(;-1!==(r=this._encoder.handler(i,i.read()));)Array.isArray(r)?u.push.apply(u,r):u.push(r);this._encoder=null}return new Uint8Array(u)}};const Lpe={delimiter:qr.comma,filename:"export",format:vt.csv,useUtf8WithBom:!0};class cT{constructor(){this._delimiter=",",this._exportQuoteWrapper="",this._fileFormat=vt.csv,this._lineCarriageReturn="\n",this._columnHeaders=[],this._hasGroupedItems=!1,this.className="TextExportService"}get _datasetIdPropName(){return this._gridOptions&&this._gridOptions.datasetIdPropertyName||"id"}get _dataView(){return this._grid?.getData()}get _gridOptions(){return this._grid?.getOptions()??{}}dispose(){this._pubSubService?.unsubscribeAll()}init(e,a){if(this._grid=e,this._pubSubService=a.get("PubSubService"),this._locales=this._gridOptions&&this._gridOptions.locales||ue.locales,this._translaterService=this._gridOptions?.translater,this._gridOptions.enableTranslate&&(!this._translaterService||!this._translaterService.translate))throw new Error('[Slickgrid-Universal] requires a Translate Service to be passed in the "translater" Grid Options when "enableTranslate" is enabled. (example: this.gridOptions = { enableTranslate: true, translater: this.translaterService })')}exportToFile(e){if(!this._grid||!this._dataView||!this._pubSubService)throw new Error('[Slickgrid-Universal] it seems that the SlickGrid & DataView objects and/or PubSubService are not initialized did you forget to enable the grid option flag "enableTextExport"?');return new Promise(a=>{this._pubSubService?.publish("onBeforeExportToTextFile",!0),this._exportOptions=iu(!0,{},{...Lpe,...this._gridOptions.textExportOptions,...e}),this._delimiter=this._exportOptions.delimiterOverride||this._exportOptions.delimiter||"",this._fileFormat=this._exportOptions.format||vt.csv;const u=this.getDataOutput();setTimeout(()=>{const i={filename:`${this._exportOptions.filename}.${this._fileFormat}`,format:this._fileFormat||vt.csv,mimeType:this._exportOptions.mimeType||"text/plain",useUtf8WithBom:!this._exportOptions||!this._exportOptions.hasOwnProperty("useUtf8WithBom")||this._exportOptions.useUtf8WithBom};this.startDownloadFile({...i,content:u}),this._pubSubService?.publish("onAfterExportToTextFile",i),a(!0)},0)})}startDownloadFile(e){const a=sG(e.content);let u;u=e.format===vt.csv?new qF("utf-8").encode(a):a;const i=new Blob([e.useUtf8WithBom?"\ufeff":"",u],{type:e.mimeType});if("function"==typeof navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(i,e.filename);else{const r=document.createElement("a"),o=URL.createObjectURL(i);r.textContent="download",r.href=o,r.setAttribute("download",e.filename),r.style.visibility="hidden",document.body.appendChild(r),r.click(),document.body.removeChild(r)}}getDataOutput(){const e=this._grid.getColumns()||[];let a=this._exportOptions.groupingColumnHeaderTitle;!a&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?a=this._translaterService.translate(`${jl(this._gridOptions)}GROUP_BY`):a||(a=this._locales&&this._locales.TEXT_GROUP_BY),this._exportQuoteWrapper=this._fileFormat===vt.csv?'"':"";let u="";const i=this._dataView.getGrouping();if(i&&Array.isArray(i)&&i.length>0?(this._hasGroupedItems=!0,u+=this._fileFormat===vt.csv?`"${a}"${this._delimiter}`:`${a}${this._delimiter}`):this._hasGroupedItems=!1,this._gridOptions.createPreHeaderPanel&&this._gridOptions.showPreHeaderPanel&&!this._gridOptions.enableDraggableGrouping&&(this._groupedColumnHeaders=this.getColumnGroupedHeaderTitles(e)||[],this._groupedColumnHeaders&&Array.isArray(this._groupedColumnHeaders)&&this._groupedColumnHeaders.length>0)){u+=this._groupedColumnHeaders.map(o=>`${this._exportQuoteWrapper}${o.title}${this._exportQuoteWrapper}`).join(this._delimiter)+this._lineCarriageReturn}if(this._columnHeaders=this.getColumnHeaders(e)||[],this._columnHeaders&&Array.isArray(this._columnHeaders)&&this._columnHeaders.length>0){u+=this._columnHeaders.map(o=>Su(`${this._exportQuoteWrapper}${o.title}${this._exportQuoteWrapper}`)).join(this._delimiter)+this._lineCarriageReturn}return u+=this.getAllGridRowData(e,this._lineCarriageReturn),u}getAllGridRowData(e,a){const u=[],i=this._dataView.getLength();for(let r=0;r{let i="";i=u.columnGroupKey&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?this._translaterService.translate(u.columnGroupKey):u.columnGroup||"";const r=u.excludeFromExport||!1;(void 0===u.width||u.width>0)&&!r&&a.push({key:u.field||u.id,title:i||""})}),a}getColumnHeaders(e){const a=[];return e&&Array.isArray(e)&&e.forEach(u=>{let i="";i=(u.nameKey||u.nameKey)&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?this._translaterService.translate(u.nameKey||u.nameKey):ei(u.name||"","innerHTML")||ko(u.field);const r=u.excludeFromExport||!1;(void 0===u.width||u.width>0)&&!r&&a.push({key:u.field||u.id,title:i||""})}),a}readRegularRowData(e,a,u){let i=0;const r=[],o=this._exportQuoteWrapper;let d=1;const h=this._dataView.getItemMetadata(a);for(let m=0,E=e.length;m1||"*"===d&&m>0||(d=f?.colspan??1),"*"!==d&&v.id in x&&(k=v.id)}if("*"===d&&m>0||!isNaN(d)&&+d>1&&v.id!==k)r.push(""),!isNaN(d)&&+d>1&&d--;else{let x=CL(a,m,v,u,this._grid,this._exportOptions);(v.sanitizeDataExport||this._exportOptions.sanitizeDataExport)&&(x=Su(x)),this._fileFormat===vt.csv&&x&&(x=x.toString().replace(/"/gi,'""'));const f=v?.exportCsvForceToKeepAsString?"=":"";r.push(f+o+x+o)}i++}return r.join(this._delimiter)}readGroupedTitleRow(e){let a=Su(e.title);const u=this._exportQuoteWrapper;return a=wv(5*e.level)+a,this._fileFormat===vt.csv&&(a=a.toString().replace(/"/gi,'""')),u+a+u}readGroupedTotalRow(e,a){const u=this._exportOptions.delimiter,i=this._exportOptions.format,r=this._exportOptions.groupingAggregatorRowText||"",o=this._exportQuoteWrapper,d=[`${o}${r}${o}`];return e.forEach(h=>{let m="";const E=h.excludeFromExport||!1;if(h.groupTotalsFormatter){const v=h.groupTotalsFormatter(a,h,this._grid);m=v instanceof HTMLElement?v.textContent||"":v}(h.sanitizeDataExport||this._exportOptions.sanitizeDataExport)&&(m=Su(m)),i===vt.csv&&(m=m.toString().replace(/"/gi,'""')),(void 0===h.width||h.width>0)&&!E&&d.push(o+m+o)}),d.join(u)}}let YF=class{constructor(){this._darkMode=!1,this.title="Example 19: Draggable Grouping & Aggregators",this.subTitle='\n
    \n
  • Wiki docs
  • \n
  • This example shows 3 ways of grouping
  • \n
      \n
    1. Drag any Column Header on the top placeholder to group by that column (support moti-columns grouping by adding more columns to the drop area).
    2. \n
    3. Use buttons and defined functions to group by wichever field you want
    4. \n
    5. Use the Select dropdown to group, the position of the Selects represent the grouping level
    6. \n
    \n
  • Fully dynamic and interactive multi-level grouping with filtering and aggregates ovor 50\'000 items
  • \n
  • Each grouping level can have its own aggregates (over child rows, child groups, or all descendant rows)..
  • \n
  • Use "Aggregators" and "GroupTotalFormatters" directly from Angular-Slickgrid
  • \n
\n ',this.durationOrderByCount=!1,this.processing=!1,this.selectedGroupingFields=["","",""],this.excelExportService=new fo,this.textExportService=new cT,this.loadData(500),this.defineGrid()}ngOnInit(){this.defineGrid()}ngOnDestroy(){document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid,this.dataviewObj=e.dataView}defineGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",columnGroup:"Common Factor",width:70,minWidth:50,cssClass:"cell-title",filterable:!0,sortable:!0,grouping:{getter:"title",formatter:e=>`Title: ${e.value} (${e.count} items)`,aggregators:[new Gt_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"duration",name:"Duration",field:"duration",columnGroup:"Common Factor",width:70,sortable:!0,filterable:!0,editor:{model:Ye.float,decimal:2,valueStep:1,maxValue:1e4,alwaysSaveOnEnterKey:!0},filter:{model:re.slider,operator:">="},type:w.number,groupTotalsFormatter:Ra.sumTotals,grouping:{getter:"duration",formatter:e=>`Duration: ${e.value} (${e.count} items)`,comparer:(e,a)=>this.durationOrderByCount?e.count-a.count:H0.numeric(e.value,a.value,jt.asc),aggregators:[new Gt_Sum("duration"),new Gt_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"start",name:"Start",field:"start",columnGroup:"Period",minWidth:60,sortable:!0,filterable:!0,filter:{model:re.compoundDate},formatter:O.dateIso,type:w.dateUtc,outputType:w.dateIso,exportWithFormatter:!0,grouping:{getter:"start",formatter:e=>`Start: ${e.value} (${e.count} items)`,aggregators:[new Gt_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"finish",name:"Finish",field:"finish",columnGroup:"Period",minWidth:60,sortable:!0,filterable:!0,filter:{model:re.compoundDate},formatter:O.dateIso,type:w.dateUtc,outputType:w.dateIso,exportWithFormatter:!0,grouping:{getter:"finish",formatter:e=>`Finish: ${e.value} (${e.count} items)`,aggregators:[new Gt_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"cost",name:"Cost",field:"cost",columnGroup:"Analysis",width:90,sortable:!0,filterable:!0,filter:{model:re.compoundInput},formatter:O.dollar,groupTotalsFormatter:Ra.sumTotalsDollar,type:w.number,grouping:{getter:"cost",formatter:e=>`Cost: ${e.value} (${e.count} items)`,aggregators:[new Gt_Sum("cost")],aggregateCollapsed:!0,collapsed:!0}},{id:"percentComplete",name:"% Complete",field:"percentComplete",columnGroup:"Analysis",minWidth:70,width:90,formatter:O.percentCompleteBar,type:w.number,filterable:!0,filter:{model:re.compoundSlider},sortable:!0,groupTotalsFormatter:Ra.avgTotalsPercentage,grouping:{getter:"percentComplete",formatter:e=>`% Complete: ${e.value} (${e.count} items)`,aggregators:[new Gt_Sum("cost")],aggregateCollapsed:!1,collapsed:!1},params:{groupFormatterPrefix:"Avg: "}},{id:"effortDriven",name:"Effort-Driven",field:"effortDriven",columnGroup:"Analysis",width:80,minWidth:20,maxWidth:100,cssClass:"cell-effort-driven",sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:re.singleSelect},formatter:O.checkmarkMaterial,grouping:{getter:"effortDriven",formatter:e=>`Effort-Driven: ${e.value?"True":"False"} (${e.count} items)`,aggregators:[new Gt_Sum("duration"),new Gt_Sum("cost")],collapsed:!1}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableDraggableGrouping:!0,autoEdit:!0,autoCommitEdit:!0,editable:!0,enableCellNavigation:!0,createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:30,createTopHeaderPanel:!0,showTopHeaderPanel:!0,topHeaderPanelHeight:35,showCustomFooter:!0,enableFiltering:!0,enableSorting:!0,textExportOptions:{sanitizeDataExport:!0},gridMenu:{onCommand:(e,a)=>{"toggle-preheader"===a.command&&this.clearGrouping()}},draggableGrouping:{dropPlaceHolderText:"Drop a column header here to group by the column",deleteIconCssClass:"mdi mdi-close text-color-danger",sortAscIconCssClass:"mdi mdi-arrow-up",sortDescIconCssClass:"mdi mdi-arrow-down",onGroupChanged:(e,a)=>this.onGroupChanged(a),onExtensionRegistered:e=>this.draggableGroupingPlugin=e},darkMode:this._darkMode,enableTextExport:!0,enableExcelExport:!0,excelExportOptions:{sanitizeDataExport:!0},externalResources:[this.excelExportService,this.textExportService]},this.loadData(500)}loadData(e){const a=[];for(let u=0;uthis.selectedGroupingFields[a]="")}collapseAllGroups(){this.dataviewObj.collapseAllGroups()}expandAllGroups(){this.dataviewObj.expandAllGroups()}exportToExcel(){this.excelExportService.exportToExcel({filename:"Export",format:vt.xlsx})}exportToCsv(e="csv"){this.textExportService.exportToFile({delimiter:"csv"===e?qr.comma:qr.tab,filename:"myExport",format:"csv"===e?vt.csv:vt.txt})}groupByDuration(){this.clearGrouping(),this.draggableGroupingPlugin&&this.draggableGroupingPlugin.setDroppedGroups&&(this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups("duration"),this.gridObj.invalidate())}groupByDurationOrderByCount(e=!1){this.durationOrderByCount=e,this.clearGrouping(),this.groupByDuration();const a=e?[]:[{columnId:"duration",sortAsc:!0}];this.angularGrid.filterService.setSortColumnIcons(a)}groupByDurationEffortDriven(){this.clearGrouping(),this.draggableGroupingPlugin&&this.draggableGroupingPlugin.setDroppedGroups&&(this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups(["duration","effortDriven"]),this.gridObj.invalidate())}groupByFieldName(e,a){if(this.clearGrouping(),this.draggableGroupingPlugin&&this.draggableGroupingPlugin.setDroppedGroups){const u=this.selectedGroupingFields.filter(i=>""!==i);this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups(u),this.gridObj.invalidate()}}onGroupChanged(e){const a=e&&e.caller||[],u=e&&e.groupColumns||[];Array.isArray(this.selectedGroupingFields)&&Array.isArray(u)&&u.length>0?this.selectedGroupingFields.forEach((i,r)=>this.selectedGroupingFields[r]=u[r]&&u[r].getter||""):0===u.length&&"remove-group"===a&&this.clearGroupingSelects()}onCellChanged(){this.angularGrid.dataView?.refresh()}showPreHeader(){this.gridObj.setPreHeaderPanelVisibility(!0)}selectTrackByFn(e,a){return e}setFiltersDynamically(){this.angularGrid.filterService.updateFilters([{columnId:"percentComplete",operator:">=",searchTerms:["55"]},{columnId:"cost",operator:"<",searchTerms:["80"]}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"percentComplete",direction:"ASC"}])}toggleDraggableGroupingRow(){this.clearGrouping(),this.gridObj.setPreHeaderPanelVisibility(!this.gridObj.getOptions().showPreHeaderPanel)}toggleDarkMode(){this._darkMode=!this._darkMode,this.toggleBodyBackground(),this.angularGrid.slickGrid?.setOptions({darkMode:this._darkMode})}toggleBodyBackground(){this._darkMode?(document.querySelector(".panel-wm-content").classList.add("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="dark"):(document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light")}static#e=this.ctorParameters=()=>[]};YF=ua([ba({template:'
\n

\n {{title}}\n \n \n \n code\n \n \n

\n
\n\n
\n
\n
\n \n \n \n \n \n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n \n \n
'}),wt("design:paramtypes",[])],YF);var Ppe=W(195),AU=W.n(Ppe);class Npe{constructor(e){this.args=e,this.init()}get columnDef(){return this.args?.column??{}}get columnEditor(){return this.columnDef?.editor??{}}get hasAutoCommitEdit(){return this.args.grid.getOptions().autoCommitEdit??!1}get validator(){return this.columnEditor.validator||this.columnDef.validator}init(){const e=this.columnEditor?.placeholder||"",a=this.columnEditor?.title||"";this.inputElm=document.createElement("input"),this.inputElm.type="text",this.inputElm.className="editor-text",this.inputElm.placeholder=e,this.inputElm.title=a,this.args.container.appendChild(this.inputElm),this.inputElm.addEventListener("keydown",this.onKeydown.bind(this)),this.hasAutoCommitEdit&&this.inputElm.addEventListener("focusout",this.save.bind(this)),setTimeout(()=>{this.inputElm.focus(),this.inputElm.select()},50)}onKeydown(e){this._lastInputEvent=e,("ArrowLeft"===e.key||"ArrowRight"===e.key)&&e.stopImmediatePropagation()}destroy(){this.inputElm.removeEventListener("keydown",this.onKeydown.bind(this)),this.inputElm.removeEventListener("focusout",this.save.bind(this)),this.inputElm.remove()}focus(){this.inputElm.focus()}getValue(){return this.inputElm.value}setValue(e){this.inputElm.value=e}loadValue(e){this.defaultValue=e[this.args.column.field]||"",this.inputElm.value=this.defaultValue,this.inputElm.defaultValue=this.defaultValue,this.inputElm.select()}serializeValue(){return this.inputElm.value}applyValue(e,a){const u=this.validate(a);e[this.args.column.field]=u&&u.valid?a:""}isValueChanged(){const e=this._lastInputEvent?.key;return!(!this.columnEditor?.alwaysSaveOnEnterKey||"Enter"!==e)||!(""===this.inputElm.value&&null===this.defaultValue)&&this.inputElm.value!==this.defaultValue}save(){this.validate()?.valid&&(this.hasAutoCommitEdit?this.args.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges())}validate(e){if(this.validator){const a=void 0!==e?e:this.inputElm?.value;return this.validator(a,this.args)}return{valid:!0,msg:null}}}const wU="assets/data/collection_100_numbers.json",BU="assets/data/countries.json",SU="assets/data/country_names.json",hT=(t,e)=>{((e&&e.grid)?.getOptions()??{}).i18n;return null!=t&&t.length?/^Task\s\d+$/.test(t)?{valid:!0,msg:""}:{valid:!1,msg:'Your title is invalid, it must start with "Task" followed by a number'}:{valid:!1,msg:"This is a required field"}},Rpe=(t,e,a,u,i)=>{if(a&&Array.isArray(a)){const o=a.map(d=>`Task ${d}`).join(", ");return`${o}`}return""};let QF=class{constructor(e,a){this.http=e,this.translate=a,this.title="Example 3: Editors / Delete",this.subTitle='\n Grid with Inline Editors and onCellClick actions (Wiki docs).\n
    \n
  • Multiple Editors & Filters are available: AutoComplete, Checkbox, Date, Slider, SingleSelect, MultipleSelect, Float, Text, LongText... even Custom Editor
  • \n
  • When using "enableCellNavigation: true", clicking on a cell will automatically make it active & selected.
  • \n
    • If you don\'t want this behavior, then you should disable "enableCellNavigation"
    \n
  • Inline Editors requires "enableCellNavigation: true" (not sure why though)
  • \n
  • \n Support Excel Copy Buffer (SlickGrid Copy Manager Plugin), you can use it by simply enabling "enableExcelCopyBuffer" flag.\n Note that it will only evaluate Formatter when the "exportWithFormatter" flag is enabled (through "ExportOptions" or the column definition)\n
  • \n
  • MultipleSelect & SingeSelect Editors & Filters can use a regular "collection" or "collectionAsync" to load it asynchronously
  • \n
      \n
    • Click on "Add Item" and see the Editor/Filter or the "Prerequesites" column change
    • \n
    • Any Editor/Filter with a "collection" can be changed dynamically later in the future
    • \n
    \n
\n ',this._commandQueue=[],this.isAutoEdit=!0,this.selectedLanguage="en",this.duplicateTitleHeaderCount=1}ngOnInit(){this.prepareGrid()}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid}prepareGrid(){this.columnDefinitions=[{id:"edit",field:"id",excludeFromColumnPicker:!0,excludeFromGridMenu:!0,excludeFromHeaderMenu:!0,formatter:O.icon,params:{iconCssClass:"mdi mdi-pencil pointer"},minWidth:30,maxWidth:30,onCellClick:(e,a)=>{console.log(a),this.alertWarning=`Editing: ${a.dataContext.title}`,this.angularGrid.gridService.highlightRow(a.row,1500),this.angularGrid.gridService.setSelectedRow(a.row)}},{id:"delete",field:"id",excludeFromColumnPicker:!0,excludeFromGridMenu:!0,excludeFromHeaderMenu:!0,formatter:O.icon,params:{iconCssClass:"mdi mdi-trash-can pointer"},minWidth:30,maxWidth:30},{id:"title",name:"Title",field:"title",minWidth:100,filterable:!0,sortable:!0,type:w.string,editor:{model:Ye.longText,required:!0,maxLength:12,editorOptions:{cols:42,rows:5,buttonTexts:{}},validator:hT},onCellChange:(e,a)=>{console.log(a),this.alertWarning=`Updated Title: ${a.dataContext.title}`}},{id:"title2",name:"Title, Custom Editor",field:"title",minWidth:70,filterable:!0,sortable:!0,type:w.string,editor:{model:Npe,placeholder:"custom",validator:hT},filter:{model:oT,placeholder:"\u{1f50e}\ufe0e custom"}},{id:"duration",name:"Duration (days)",field:"duration",minWidth:100,filterable:!0,sortable:!0,formatter:O.complexObject,type:w.number,exportWithFormatter:!0,filter:{model:re.slider,filterOptions:{hideSliderNumber:!1}},editor:{model:Ye.slider,minValue:0,maxValue:100}},{id:"complete",name:"% Complete",field:"percentComplete",minWidth:100,filterable:!0,formatter:O.multiple,type:w.number,editor:{model:Ye.singleSelect,enableRenderHtml:!0,collection:Array.from(Array(101).keys()).map(e=>({value:e,label:e,symbol:''})),customStructure:{value:"value",label:"label",labelSuffix:"symbol"},collectionSortBy:{property:"label",sortDesc:!0},collectionFilterBy:{property:"value",value:0,operator:ee.notEqual},editorOptions:{maxHeight:400}},params:{formatters:[O.collectionEditor,O.percentCompleteBar]}},{id:"start",name:"Start",field:"start",minWidth:100,filterable:!0,filter:{model:re.compoundDate},formatter:O.multiple,params:{formatters:[O.complexObject,O.dateIso]},exportWithFormatter:!0,sortable:!0,type:w.date,editor:{model:Ye.date}},{id:"finish",name:"Finish",field:"finish",minWidth:100,filterable:!0,sortable:!0,filter:{model:re.compoundDate},formatter:O.dateIso,exportWithFormatter:!0,type:w.date,saveOutputType:w.dateUtc,editor:{model:Ye.date,editorOptions:{range:{min:"today"}}}},{id:"cityOfOrigin",name:"City of Origin",field:"cityOfOrigin",filterable:!0,minWidth:100,editor:{model:Ye.autocompleter,placeholder:"\u{1f50e}\ufe0e search city",editorOptions:{forceUserInput:!0,minLength:3,fetch:(e,a)=>{AU()(`http://gd.geobytes.com/AutoCompleteCity?q=${e}`).then(u=>u.json()).then(u=>a(u)).catch(u=>console.log("invalid JSONP response",u))}}},filter:{model:re.autocompleter,filterOptions:{minLength:3,fetch:(e,a)=>{AU()(`http://gd.geobytes.com/AutoCompleteCity?q=${e}`).then(u=>u.json()).then(u=>a(u)).catch(u=>console.log("invalid JSONP response",u))}}}},{id:"countryOfOrigin",name:"Country of Origin",field:"countryOfOrigin",formatter:O.complexObject,exportWithFormatter:!0,dataKey:"code",labelKey:"name",type:w.object,sortComparer:H0.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:Ye.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get(BU)},filter:{model:re.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get(BU)}},{id:"countryOfOriginName",name:"Country of Origin Name",field:"countryOfOriginName",filterable:!0,sortable:!0,minWidth:100,editor:{model:Ye.autocompleter,collectionAsync:this.http.get(SU)},filter:{model:re.autocompleter,collectionAsync:this.http.get(SU)}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",minWidth:70,filterable:!0,type:w.boolean,filter:{model:re.singleSelect,collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}]},formatter:O.checkmarkMaterial,editor:{model:Ye.checkbox}},{id:"prerequisites",name:"Prerequisites",field:"prerequisites",minWidth:100,filterable:!0,formatter:Rpe,exportWithFormatter:!0,sanitizeDataExport:!0,sortable:!0,type:w.string,editor:{placeholder:"choose option",collectionAsync:this.http.get(wU),collectionSortBy:{property:"label",sortDesc:!0},customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:Ye.multipleSelect,required:!0},filter:{collectionAsync:this.http.get(wU),collectionSortBy:{property:"label",sortDesc:!0},customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:re.multipleSelect,operator:ee.inContains}}],this.gridOptions={asyncEditorLoading:!1,autoEdit:this.isAutoEdit,autoCommitEdit:!1,autoResize:{container:"#demo-container",rightPadding:10},editable:!0,enableCellNavigation:!0,enableColumnPicker:!0,enableExcelCopyBuffer:!0,enableFiltering:!0,editCommandHandler:(e,a,u)=>{this._commandQueue.push(u),u.execute()},i18n:this.translate},this.dataset=this.mockData(100)}addItem(){const e=this.dataset.length,a=this.mockData(1,e);setTimeout(()=>{const u=this.columnDefinitions.find(i=>"prerequisites"===i.id);if(u){const i=u.filter.collectionAsync,r=u.editor.collection;Array.isArray(r)&&(this.angularGrid.gridService.addItem(a[0]),r.push({value:e,label:e,prefix:"Task"}),i instanceof Qe&&i.next(r))}},250)}deleteItem(){const e=this.columnDefinitions.find(a=>"prerequisites"===a.id);if(e){const a=e.filter.collectionAsync,u=e.filter.collection;if(Array.isArray(u)){const i=this.sortCollectionDescending(u).pop();this.angularGrid.gridService.deleteItemById(i.value),a instanceof Qe&&a.next(u)}}}sortCollectionDescending(e){return e.sort((a,u)=>a.value-u.value)}mockData(e,a=0){const u=[];for(let i=a;i[{type:cu},{type:rt}]};QF=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n \n \n \n \n \n
\n \n \n \n \n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n
\n
\n Updated Item: {{updatedObject | json}}\n
\n
\n Updated Item: {{alertWarning}}\n
\n
\n
\n\n
\n \n \n
\n
'}),wt("design:paramtypes",[cu,rt])],QF);var Vpe=W(236),Ope=W.n(Vpe);const Gpe=(t,e,a,u,i,r)=>{const o=function jpe(t,e,a){const u=a.getOptions(),i=e.editor;return u.editable&&i}(0,u,r);a=a??"";const d=document.createElement("div");return d.className="editing-field",a instanceof HTMLElement?d.appendChild(a):d.textContent=a,o?d:a};class mT{constructor(e,a){this.field=e,this.taxRate=a,this._sum=0,this._type="sum"}get type(){return this._type}init(){this._sum=0}accumulate(e){if("taxes"===this.field&&e.taxable&&(this._sum+=e.price*e.qty*(this.taxRate/100)),"subTotal"===this.field&&(this._sum+=e.price*e.qty),"total"===this.field){let a=0;e.taxable&&(a=e.price*e.qty*(this.taxRate/100)),this._sum+=e.price*e.qty+a}}storeResult(e){(!e||void 0===e[this._type])&&(e[this._type]={}),e[this._type][this.field]=this._sum}}let XF=class{constructor(){this.columnDefinitions=[],this.dataset=[],this.isDataGrouped=!1,this.taxRate=7.5,this.excelExportService=new fo}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.prepareGrid(),this.dataset=this.getData()}prepareGrid(){this.columnDefinitions=[{id:"sel",name:"#",field:"id",headerCssClass:"header-centered",cssClass:"cell-unselectable",excludeFromExport:!0,maxWidth:30},{id:"name",name:"Name",field:"name",sortable:!0,width:140,filterable:!0,excelExportOptions:{width:18}},{id:"price",name:"Price",field:"price",type:w.number,editor:{model:Ye.float,decimal:2},sortable:!0,width:70,filterable:!0,formatter:O.dollar,groupTotalsFormatter:Ra.sumTotalsDollarBold,groupTotalsExcelExportOptions:{style:{font:{bold:!0,size:11.5},format:"$0.00",border:{top:{color:"FF747474",style:"thick"}}},valueParserCallback:this.excelGroupCellParser.bind(this)}},{id:"qty",name:"Quantity",field:"qty",type:w.number,groupTotalsFormatter:Ra.sumTotalsBold,groupTotalsExcelExportOptions:{style:{font:{bold:!0,size:11.5},border:{top:{color:"FF747474",style:"thick"}}},valueParserCallback:this.excelGroupCellParser.bind(this)},params:{minDecimal:0,maxDecimal:0},editor:{model:Ye.integer},sortable:!0,width:60,filterable:!0},{id:"subTotal",name:"Sub-Total",field:"subTotal",cssClass:"text-sub-total",type:w.number,sortable:!0,width:70,filterable:!0,exportWithFormatter:!1,formatter:O.multiple,groupTotalsFormatter:Ra.sumTotalsDollarBold,params:{formatters:[(e,a,u,i,r)=>r.price*r.qty,O.dollar]},excelExportOptions:{style:{font:{outline:!0,italic:!0,color:"FF215073"},format:"$0.00"},width:12,valueParserCallback:this.excelRegularCellParser.bind(this)},groupTotalsExcelExportOptions:{style:{font:{bold:!0,italic:!0,size:11.5},format:"$0.00",border:{top:{color:"FF747474",style:"thick"}}},valueParserCallback:this.excelGroupCellParser.bind(this)}},{id:"taxable",name:"Taxable",field:"taxable",cssClass:"text-center",sortable:!0,width:60,filterable:!0,formatter:O.checkmarkMaterial,exportCustomFormatter:(e,a,u)=>u?"\u2713":"",excelExportOptions:{style:{alignment:{horizontal:"center"}}}},{id:"taxes",name:"Taxes",field:"taxes",cssClass:"text-taxes",type:w.number,sortable:!0,width:70,filterable:!0,formatter:O.multiple,groupTotalsFormatter:Ra.sumTotalsDollarBold,params:{formatters:[(e,a,u,i,r)=>r.taxable?r.price*r.qty*(this.taxRate/100):null,O.dollar]},excelExportOptions:{style:{font:{outline:!0,italic:!0,color:"FFC65911"},format:"$0.00"},width:12,valueParserCallback:this.excelRegularCellParser.bind(this)},groupTotalsExcelExportOptions:{style:{font:{bold:!0,italic:!0,color:"FFC65911",size:11.5},format:"$0.00",border:{top:{color:"FF747474",style:"thick"}}},valueParserCallback:this.excelGroupCellParser.bind(this)}},{id:"total",name:"Total",field:"total",type:w.number,sortable:!0,width:70,filterable:!0,cssClass:"text-total",formatter:O.multiple,groupTotalsFormatter:Ra.sumTotalsDollarBold,params:{formatters:[(e,a,u,i,r)=>{let o=r.price*r.qty;return r.taxable&&(o+=o*(this.taxRate/100)),o},O.dollar]},excelExportOptions:{style:{font:{outline:!0,bold:!0,color:"FF005A9E"},format:"$0.00"},width:12,valueParserCallback:this.excelRegularCellParser.bind(this)},groupTotalsExcelExportOptions:{style:{font:{bold:!0,color:"FF005A9E",size:12},format:"$0.00",border:{top:{color:"FF747474",style:"thick"}}},valueParserCallback:this.excelGroupCellParser.bind(this)}}],this.gridOptions={autoAddCustomEditorFormatter:Gpe,gridHeight:410,gridWidth:750,enableCellNavigation:!0,autoEdit:!0,autoCommitEdit:!0,editable:!0,rowHeight:33,formatterOptions:{maxDecimal:2,minDecimal:2},enableGrouping:!0,externalResources:[this.excelExportService],enableExcelExport:!0,excelExportOptions:{filename:"grocery-list",sanitizeDataExport:!0,sheetName:"Grocery List",columnHeaderStyle:{font:{color:"FFFFFFFF"},fill:{type:"pattern",patternType:"solid",fgColor:"FF4a6c91"}},customExcelHeader:(e,a)=>{const u=e.getStyleSheet().createFormat({font:{size:18,fontName:"Calibri",bold:!0,color:"FFFFFFFF"},alignment:{wrapText:!0,horizontal:"center"},fill:{type:"pattern",patternType:"solid",fgColor:"FF203764"}});a.setRowInstructions(0,{height:40});const r=this.isDataGrouped?"H1":"G1";a.mergeCells("A1",r),a.data.push([{value:"Grocery Shopping List",metadata:{style:u.id}}])}}}}invalidateAll(){this.angularGrid.dataView?.refresh(),this.angularGrid.slickGrid?.invalidate()}updateTaxRate(){this.isDataGrouped&&this.groupByTaxable(),this.invalidateAll()}exportToExcel(){this.excelExportService.exportToExcel()}excelGroupCellParser(e,{columnDef:a,excelFormatId:u,dataRowIdx:i}){const d=this.angularGrid.slickGrid?.getColumnIndex("price")||0,h=this.angularGrid.slickGrid?.getColumnIndex("qty")||0,m=this.angularGrid.slickGrid?.getColumnIndex("taxes")||0,E=this.angularGrid.slickGrid?.getColumnIndex("subTotal")||0,v=this.angularGrid.slickGrid?.getColumnIndex("total")||0,k=e?.group?.count||0,x=`${String.fromCharCode(65+d-0)}`,f=`${String.fromCharCode(65+h-0)}`,C=`${String.fromCharCode(65+E-0)}`,F=`${String.fromCharCode(65+m-0)}`,A=`${String.fromCharCode(65+v-0)}`;let z="";switch(a.id){case"price":z=x;break;case"qty":z=f;break;case"subTotal":z=C;break;case"taxes":z=F;break;case"total":z=A}return{value:`SUM(${z}${i+3-k}:${z}${i+3-1})`,metadata:{type:"formula",style:u}}}excelRegularCellParser(e,{columnDef:a,excelFormatId:u,dataRowIdx:i,dataContext:r}){const o=this.isDataGrouped?0:1,h=this.angularGrid.slickGrid?.getColumnIndex("price")||0,m=this.angularGrid.slickGrid?.getColumnIndex("qty")||0,E=this.angularGrid.slickGrid?.getColumnIndex("taxes")||0,v=`${String.fromCharCode(65+h-o)}${i+3}`,k=`${String.fromCharCode(65+m-o)}${i+3}`,x=`${String.fromCharCode(65+E-o)}${i+3}`;let f="";switch(a.id){case"subTotal":f=`${v}*${k}`;break;case"taxes":f=r.taxable?`${v}*${k}*${this.taxRate/100}`:"";break;case"total":f=`(${v}*${k})+${x}`}return{value:f,metadata:{type:"formula",style:u}}}getData(){let e=1;return[{id:e++,name:"Oranges",qty:4,taxable:!1,price:2.22},{id:e++,name:"Apples",qty:3,taxable:!1,price:1.55},{id:e++,name:"Honeycomb Cereals",qty:2,taxable:!0,price:4.55},{id:e++,name:"Raisins",qty:77,taxable:!1,price:.23},{id:e++,name:"Corn Flake Cereals",qty:1,taxable:!0,price:6.62},{id:e++,name:"Tomatoes",qty:3,taxable:!1,price:1.88},{id:e++,name:"Butter",qty:1,taxable:!1,price:3.33},{id:e++,name:"BBQ Chicken",qty:1,taxable:!1,price:12.33},{id:e++,name:"Chicken Wings",qty:12,taxable:!0,price:.53},{id:e++,name:"Drinkable Yogurt",qty:6,taxable:!0,price:1.22},{id:e++,name:"Milk",qty:3,taxable:!0,price:3.11}]}clearGrouping(){this.isDataGrouped=!1,this.angularGrid?.dataView?.setGrouping([])}groupByTaxable(){this.isDataGrouped=!0,this.angularGrid?.dataView?.setGrouping({getter:"taxable",formatter:u=>`Taxable: (${u.count} items)`,comparer:(u,i)=>i.value-u.value,aggregators:[new Gt_Sum("price"),new Gt_Sum("qty"),new mT("subTotal",this.taxRate),new mT("taxes",this.taxRate),new mT("total",this.taxRate)],aggregateCollapsed:!1,lazyTotalsCalculation:!1}),this.angularGrid?.dataView?.refresh()}static#e=this.ctorParameters=()=>[]};XF=ua([ba({template:'
\n

\n Example 36: Excel Export Formulas\n \n \n code\n \n \n

\n
\n Grid with Excel Formulas (Wiki docs).\n Calculate Totals via Formatters in the UI, but use Excel Formula when exporting via excelExportOptions.valueParserCallback\n When Grouped we will also calculate the Group Totals in the UI via Group Formatter and we again use Excel Formula to calculate the Group Totals (sum) dynamically.\n For Grouping we need to use groupTotalsExcelExportOptions.valueParserCallback instead.\n
\n\n
\n
\n \n \n \n \n \n \n Tax Rate (%):\n \n \n \n
\n
\n\n \n \n
',encapsulation:Na.None,styles:[Ope()]}),wt("design:paramtypes",[])],XF);const Wpe=(t,e,a)=>a?'':{text:'',addClasses:"lightblue",toolTip:"Freezing"},Upe=(t,e,a)=>`\n \n `;let e9=class{constructor(){this.title="Example 2: Grid with Formatters",this.subTitle='\n Grid with Custom and/or included Slickgrid Formatters (Wiki docs).\n
    \n
  • The 2 last columns are using Custom Formatters
  • \n
    • The "Completed" column uses a the "onCellClick" event and a formatter to simulate a toggle action
    \n
  • \n Support Excel Copy Buffer (SlickGrid Copy Manager Plugin), you can use it by simply enabling "enableExcelCopyBuffer" flag.\n Note that it will only evaluate Formatter when the "exportWithFormatter" flag is enabled (through "ExportOptions" or the column definition)\n
  • \n
  • This example also has auto-resize enabled, and we also demo how you can pause the resizer if you wish to
  • \n
\n ',this.columnDefinitions=[],this.resizerPaused=!1}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:w.string,width:70},{id:"phone",name:"Phone Number using mask",field:"phone",sortable:!0,type:w.number,minWidth:100,formatter:O.mask,params:{mask:"(000) 000-0000"}},{id:"duration",name:"Duration (days)",field:"duration",formatter:O.decimal,params:{minDecimal:1,maxDecimal:2},sortable:!0,type:w.number,minWidth:90,exportWithFormatter:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:O.percentCompleteBar,type:w.number,sortable:!0,minWidth:100},{id:"percent2",name:"% Complete",field:"percentComplete2",formatter:O.progressBar,type:w.number,sortable:!0,minWidth:100},{id:"start",name:"Start",field:"start",formatter:O.dateIso,sortable:!0,type:w.date,minWidth:90,exportWithFormatter:!0},{id:"finish",name:"Finish",field:"finish",formatter:O.dateIso,sortable:!0,type:w.date,minWidth:90,exportWithFormatter:!0},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:Wpe,type:w.number,sortable:!0,minWidth:100},{id:"completed",name:"Completed",field:"completed",type:w.number,sortable:!0,minWidth:100,formatter:Upe,onCellClick:(a,u)=>{this.toggleCompletedProperty(u&&u.dataContext)}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableAutoResize:!0,enableCellNavigation:!0,showCustomFooter:!0,customFooterOptions:{leftFooterText:"custom footer text",hideTotalItemCount:!0,hideLastUpdateTimestamp:!0},enableExcelCopyBuffer:!0};const e=[];for(let a=0;a<500;a++){const u=2e3+Math.floor(10*Math.random()),i=Math.floor(11*Math.random()),r=Math.floor(29*Math.random()),o=Math.round(100*Math.random());e[a]={id:a,title:"Task "+a,phone:this.generatePhoneNumber(),duration:a%33==0?null:100*Math.random()+"",percentComplete:o,percentComplete2:o,percentCompleteNumber:o,start:new Date(u,i,r),finish:new Date(u,i+1,r),effortDriven:a%5==0}}this.dataset=e}generatePhoneNumber(){let e="";for(let a=0;a<10;a++)e+=Math.round(9*Math.random())+"";return e}togglePauseResizer(){this.resizerPaused=!this.resizerPaused,this.angularGrid.resizerService.pauseResizer(this.resizerPaused)}toggleCompletedProperty(e){"object"==typeof e&&(e.completed=!e.completed,setTimeout(()=>{this.angularGrid.gridService.updateItemById(e.id,e,{highlightRow:!1})},250))}};e9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n \n\n \n \n
'})],e9);var Zpe=W(944),$pe=W.n(Zpe);let a9=class{constructor(){this.title="Example 20: Pinned (frozen) Columns/Rows",this.subTitle='\n This example demonstrates the use of Pinned (aka frozen) Columns and/or Rows (Wiki docs)\n
    \n
  • Option to pin any number of columns (left only) or rows
  • \n
  • Option to pin the rows at the bottom instead of the top (default)
  • \n
  • You can also dynamically any of these options, through SlickGrid "setOptions()"
  • \n
  • Possibility to change the styling of the line border between pinned columns/rows
  • \n
\n ',this.frozenColumnCount=2,this.frozenRowCount=3,this.isFrozenBottom=!1,this.slickEventHandler=new Rt}ngOnInit(){this.prepareDataGrid()}ngOnDestroy(){this.slickEventHandler.unsubscribeAll()}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid,this.slickEventHandler.subscribe(this.gridObj.onMouseEnter,a=>this.colorizeHoveringRow(a,!0)),this.slickEventHandler.subscribe(this.gridObj.onMouseLeave,a=>this.colorizeHoveringRow(a,!1))}colorizeHoveringRow(e,a){const u=this.gridObj.getCellFromEvent(e),i=a?[u?.row??0]:[];this.gridObj.setSelectedRows(i),e.preventDefault()}prepareDataGrid(){this.columnDefinitions=[{id:"sel",name:"#",field:"id",minWidth:40,width:40,maxWidth:40,cannotTriggerInsert:!0,resizable:!1,unselectable:!0},{id:"title",name:"Title",field:"title",minWidth:100,width:120,filterable:!0,sortable:!0},{id:"percentComplete",name:"% Complete",field:"percentComplete",resizable:!1,minWidth:130,width:140,formatter:O.percentCompleteBar,type:w.number,filterable:!0,filter:{model:re.slider,operator:">="},sortable:!0},{id:"start",name:"Start",field:"start",minWidth:100,width:120,filterable:!0,sortable:!0,formatter:O.dateIso},{id:"finish",name:"Finish",field:"finish",minWidth:100,width:120,filterable:!0,sortable:!0,formatter:O.dateIso},{id:"cost",name:"Cost | Duration",field:"cost",formatter:this.costDurationFormatter.bind(this),minWidth:150,width:170,sortable:!0,filter:{model:re.compoundSlider},editor:{model:Ye.dualInput,params:{leftInput:{field:"cost",type:"float",decimal:2,minValue:0,maxValue:5e4,placeholder:"< 50K",errorMessage:"Cost must be positive and below $50K."},rightInput:{field:"duration",type:"float",minValue:0,maxValue:100,title:"make sure Duration is withing its range of 0 to 100",errorMessage:"Duration must be between 0 and 100."}}}},{id:"effortDriven",name:"Effort Driven",field:"effortDriven",minWidth:100,width:120,formatter:O.checkmarkMaterial,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:re.singleSelect},sortable:!0},{id:"title1",name:"Title 1",field:"title1",minWidth:100,width:120,filterable:!0,sortable:!0},{id:"title2",name:"Title 2",field:"title2",minWidth:100,width:120,filterable:!0,sortable:!0},{id:"title3",name:"Title 3",field:"title3",minWidth:100,width:120,filterable:!0,sortable:!0},{id:"title4",name:"Title 4",field:"title4",minWidth:100,width:120,filterable:!0,sortable:!0}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableExcelCopyBuffer:!0,enableCellNavigation:!0,editable:!0,autoEdit:!0,asyncEditorLoading:!0,frozenColumn:this.frozenColumnCount,frozenRow:this.frozenRowCount,gridMenu:{hideClearFrozenColumnsCommand:!1},headerMenu:{hideFreezeColumnsCommand:!1}},this.dataset=this.getData()}getData(){const e=[];for(let a=0;a<500;a++)e[a]={id:a,title:"Task "+a,cost:a%33==0?null:1e4*Math.random(),duration:a%8?Math.round(100*Math.random())+"":null,percentComplete:Math.round(100*Math.random()),start:new Date(2009,0,1),finish:new Date(2009,4,5),effortDriven:a%5==0,title1:`Some Text ${Math.round(25*Math.random())}`,title2:`Some Text ${Math.round(25*Math.random())}`,title3:`Some Text ${Math.round(25*Math.random())}`,title4:`Some Text ${Math.round(25*Math.random())}`};return e}changeFrozenColumnCount(){this.gridObj&&this.gridObj.setOptions&&this.gridObj.setOptions({frozenColumn:this.frozenColumnCount})}changeFrozenRowCount(){this.gridObj&&this.gridObj.setOptions&&this.gridObj.setOptions({frozenRow:this.frozenRowCount})}costDurationFormatter(e,a,u,i,r){const o=this.isNullUndefinedOrEmpty(r.cost)?"n/a":wu(r.cost,0,2,!1,"$","",".",",");let d="n/a";return!this.isNullUndefinedOrEmpty(r.duration)&&r.duration>=0&&(d=`${r.duration} ${r.duration>1?"days":"day"}`),`${o} | ${d}`}isNullUndefinedOrEmpty(e){return""===e||null==e}onValidationError(e,a){alert(a.validationResults.msg)}setFrozenColumns(e){this.gridObj.setOptions({frozenColumn:e}),this.gridOptions=this.gridObj.getOptions()}toggleFrozenBottomRows(){this.gridObj&&this.gridObj.setOptions&&(this.gridObj.setOptions({frozenBottom:!this.isFrozenBottom}),this.isFrozenBottom=!this.isFrozenBottom)}static#e=this.ctorParameters=()=>[]};a9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n \n
\n
\n \n
\n
\n\n
\n
\n \n \n\n \n \n : {{ isFrozenBottom ? \'Bottom\' : \'Top\' }}\n \n
\n
\n
\n
\n
\n \n \n
',encapsulation:Na.None,styles:[$pe()]}),wt("design:paramtypes",[])],a9);class hm{constructor(e,a){if(this.queryFnName=e,this.head=[],"string"==typeof a)this.alias=a;else if("object"==typeof a)this.filter(a);else{if(void 0===a&&2===arguments.length)throw new TypeError('You have passed undefined as Second argument to "Query"');if(void 0!==a)throw new TypeError(`Second argument to "Query" should be an alias name(String) or filter arguments(Object). What was passed is: ${a}`)}}filter(e){for(const a of Object.keys(e)){if("function"==typeof e[a])continue;const u=this.getGraphQLValue(e[a]);"{}"!==u&&this.head.push(`${a}:${u}`)}return this}find(...e){if(!e||!Array.isArray(e)||0===e.length)throw new TypeError("find value can not be >>falsy<<");const a=1===e.length&&Array.isArray(e[0])?e[0]:e;return this.body=this.parceFind(a),this}setAlias(e){this.alias=e}toString(){if(void 0===this.body)throw new ReferenceError("return properties are not defined. use the 'find' function to defined them");return`${this.alias?this.alias+":":""} ${this.queryFnName} ${this.head.length>0?"("+this.head.join(",")+")":""} { ${this.body} }`}parceFind(e){return e.map((u,i)=>{const r=e[i];if(r instanceof hm)return r.toString();if(Array.isArray(r)||"object"!=typeof r){if("string"==typeof r)return r;throw new RangeError(`cannot handle Find value of ${r}`)}{const o=Object.keys(r);if(1!==o.length)throw new RangeError(`Alias objects should only have one value. was passed: ${JSON.stringify(r)}`);const d=o[0],h=r[d];return Array.isArray(h)?new hm(d).find(h):`${d} : ${h} `}}).join(",")}getGraphQLValue(e){return"string"==typeof e?e=JSON.stringify(e):Array.isArray(e)?e=`[${e=e.map(a=>this.getGraphQLValue(a)).join()}]`:e instanceof Date?e=JSON.stringify(e):null!==e&&"object"==typeof e&&(e=this.objectToString(e)),e}objectToString(e){const a=[];for(const u of Object.keys(e))"function"!=typeof e[u]&&a.push(`${u}:${this.getGraphQLValue(e[u])}`);return`{${a.join()}}`}}class LU{constructor(){this._currentFilters=[],this._currentPagination=null,this._currentSorters=[],this._datasetIdPropName="id",this.defaultPaginationOptions={first:25,offset:0}}get columnDefinitions(){return this._columnDefinitions}get _gridOptions(){return this._grid?.getOptions()??{}}init(e,a,u,i){this._grid=u,this.options=e||{datasetName:""},this.pagination=a,this._datasetIdPropName=this._gridOptions.datasetIdPropertyName||"id",u?.getColumns&&(this._columnDefinitions=i?.allColumns??u.getColumns()??[])}buildQuery(){if(!this.options||!this.options.datasetName||!Array.isArray(this._columnDefinitions))throw new Error('GraphQL Service requires the "datasetName" property to properly build the GraphQL query');let e=this._columnDefinitions||[];e=e.filter(E=>!E.excludeFromQuery);const a=new hm(`query ${this.options.operationName??""}`),u=new hm(this.options.datasetName),i=new hm("nodes"),r=[];if(e&&Array.isArray(e))for(const E of e)E.excludeFieldFromQuery||r.push(E.field),E.fields&&r.push(...E.fields);-1===r.indexOf(this._datasetIdPropName)&&r.unshift(this._datasetIdPropName);const o=this.buildFilterQuery(r);let d=[];if(!1!==this._gridOptions.enablePagination){if(this.options.useCursor){const E=new hm("edges"),v=new hm("pageInfo");v.find("hasNextPage","hasPreviousPage","endCursor","startCursor"),i.find(o),E.find(["cursor"]),d=["totalCount",i,v,E]}else i.find(o),d=["totalCount",i];u.find(d)}else u.find(o);let h={};if(!1!==this._gridOptions.enablePagination)if(h={},this.options.useCursor&&this.options.paginationOptions)h={...this.options.paginationOptions};else{const E=this.options?.paginationOptions;h.first=this.options?.paginationOptions?.first??this.pagination?.pageSize??this.defaultPaginationOptions.first,h.offset=E?.hasOwnProperty("offset")?+E.offset:0}if(this.options.sortingOptions&&Array.isArray(this.options.sortingOptions)&&this.options.sortingOptions.length>0&&(h.orderBy=this.options.sortingOptions),this.options.filteringOptions&&Array.isArray(this.options.filteringOptions)&&this.options.filteringOptions.length>0&&(h.filterBy=this.options.filteringOptions),this.options.addLocaleIntoQuery&&(h.locale=this._gridOptions.translater?.getCurrentLanguage()||this._gridOptions.locale||"en"),this.options.extraQueryArguments)for(const E of this.options.extraQueryArguments)h[E.field]=E.value;u.filter(h),a.find(u);return this.trimDoubleQuotesOnEnumField(a.toString(),["direction:","field:","operator:"],this.options.keepArgumentFieldDoubleQuotes||!1)}buildFilterQuery(e){const a=(i={},r)=>{const o=r.shift();return i[o]=r.length?a(i[o]??{},r):null,i},u=e.reduce((i,r)=>a(i,r.split(".")),{});return JSON.stringify(u).replace(/"|:|null/g,"").replace(/^\{/,"").replace(/\}$/,"")}clearFilters(){this._currentFilters=[],this.updateOptions({filteringOptions:[]})}clearSorters(){this._currentSorters=[],this.updateOptions({sortingOptions:[]})}getInitPaginationOptions(){const e=this.pagination?this.pagination.pageSize:25;return this.options?.useCursor?{first:e}:{first:e,offset:0}}getDatasetName(){return this.options?.datasetName||""}getCurrentFilters(){return this._currentFilters}getCurrentPagination(){return this._currentPagination}getCurrentSorters(){return this._currentSorters}resetPaginationOptions(){let e;this.options?.useCursor?e=this.getInitPaginationOptions():(e=this.options&&this.options.paginationOptions||this.getInitPaginationOptions(),e.offset=0),this._currentPagination={pageNumber:1,pageSize:e.first||20},this._gridOptions&&(this._gridOptions.enablePagination||!this._gridOptions.hasOwnProperty("enablePagination"))&&this.updateOptions({paginationOptions:e})}updateOptions(e){this.options={...this.options,...e}}processOnFilterChanged(e,a){if(void 0===this._gridOptions.backendServiceApi)throw new Error('Something went wrong in the GraphqlService, "backendServiceApi" is not initialized');if(this._currentFilters=this.castFilterToColumnFilters(a.columnFilters),!a||!a.grid)throw new Error('Something went wrong when trying create the GraphQL Backend Service, it seems that "args" is not populated correctly');return this.updateFilters(a.columnFilters,!1),this.resetPaginationOptions(),this.buildQuery()}processOnPaginationChanged(e,a){const u=+(a.pageSize||(this.pagination?this.pagination.pageSize:20));return"first"in a||"last"in a?this.updatePagination(a.newPage,u,a):this.updatePagination(a.newPage,u),this.buildQuery()}processOnSortChanged(e,a){const u=a.multiColumnSort?a.sortCols:new Array({columnId:a.sortCol?.id??"",sortCol:a.sortCol,sortAsc:a.sortAsc});return this.updateSorters(u),this.buildQuery()}updateFilters(e,a){const u=[];let i;a&&(this._currentFilters=this.castFilterToColumnFilters(e));for(const r in e)if(e.hasOwnProperty(r)){const o=e[r];let d;if(d=a&&Array.isArray(this._columnDefinitions)?this._columnDefinitions.find(L=>L.id===o.columnId):o.columnDef,!d)throw new Error("[GraphQL Service]: Something went wrong in trying to get the column definition of the specified filter (or preset filters). Did you make a typo on the filter columnId?");let h=d.filter?.queryField||d.queryFieldFilter||d.queryField||d.field||d.name||"";h instanceof HTMLElement&&(h=Su(h.innerHTML));const m=d.type||w.string;let E=o?.searchTerms??[],v=Array.isArray(E)&&1===E.length?E[0]:"";if(typeof v>"u"&&(v=""),!h)throw new Error('GraphQL filter could not find the field name to query the search, your column definition must include a valid "field" or "name" (optionally you can also use the "queryfield").');if(this.options?.useVerbatimSearchTerms||o.verbatimSearchTerms){u.push({field:ei(h),operator:o.operator,value:JSON.stringify(o.searchTerms)});continue}v=null==v?"":`${v}`;const x=!1!==(d.autoParseInputFilterOperator??this._gridOptions.autoParseInputFilterOperator)?v.match(/^((.*[^\\*\r\n])[*]{1}(.*[^*\r\n]))|^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/)||[]:[v,"","","","",v,""],f=x?.[2]||"",C=x?.[3]||"";let F=o.operator||x?.[4];i=x?.[1]||x?.[5]||"";const A=x?.[6]||"*z"===F||F===ee.endsWith?"*":"";if(h&&""===i&&0===E.length)continue;let z;if("function"==typeof this.options?.filterQueryOverride&&(z=this.options?.filterQueryOverride({fieldName:ei(h),columnDef:d,operator:F,columnFilterOperator:o.operator,searchValue:i,grid:this._grid})),void 0!==z)u.push(z);else{if(f&&C?(E=[f,C],F=ee.startsWithEndsWith):Array.isArray(E)&&1===E.length&&"string"==typeof E[0]&&E[0].indexOf("..")>=0&&(F!==ee.rangeInclusive&&F!==ee.rangeExclusive&&(F=this._gridOptions.defaultFilterRangeOperator??ee.rangeInclusive),E=E[0].split("..",2),""===E[0]?(F=F===ee.rangeInclusive?"<=":F===ee.rangeExclusive?"<":F,E=E.slice(1),i=E[0]):""===E[1]&&(F=F===ee.rangeInclusive?">=":F===ee.rangeExclusive?">":F,E=E.slice(0,1),i=E[0])),"string"==typeof i&&("*"===F||"a*"===F||"*z"===F||"*"===A)&&(F="*"===F||"*z"===F?"EndsWith":"StartsWith"),!F&&d.filter&&d.filter.operator&&(F=d.filter.operator),!F&&Array.isArray(E)&&2===E.length&&E[0]&&E[1]&&(F=this._gridOptions.defaultFilterRangeOperator),(F===ee.rangeInclusive||F===ee.rangeExclusive)&&Array.isArray(E)&&1===E.length&&m===w.date&&(F=ee.equal),i=this.normalizeSearchValue(m,i),Array.isArray(E)&&E.forEach((L,M)=>{E[M]=this.normalizeSearchValue(m,E[M])}),F===ee.startsWithEndsWith&&Array.isArray(E)&&2===E.length){u.push({field:ei(h),operator:ee.startsWith,value:f}),u.push({field:ei(h),operator:ee.endsWith,value:C});continue}if(E?.length>1&&("IN"===F||"NIN"===F||"NOT_IN"===F))i=E.join(",");else if(2===E?.length&&(F===ee.rangeExclusive||F===ee.rangeInclusive)){u.push({field:ei(h),operator:F===ee.rangeInclusive?"GE":"GT",value:E[0]}),u.push({field:ei(h),operator:F===ee.rangeInclusive?"LE":"LT",value:E[1]});continue}F||(F=O2(m)),u.push({field:ei(h),operator:iG(F),value:i})}}this.updateOptions({filteringOptions:u})}updatePagination(e,a,u){this._currentPagination={pageNumber:e,pageSize:a};let i={};if(this.options?.useCursor)if(u&&u instanceof Object){const{pageSize:r,newPage:o,...d}=u;i=d}else i={first:a};else i={first:a,offset:e>1?(e-1)*a:0};this.updateOptions({paginationOptions:i})}updateSorters(e,a){let u=[];const i=[];if(!e&&a){u=a,u.forEach(o=>o.direction=o.direction.toUpperCase());const r=u.map(o=>{const d=this._columnDefinitions?.find(h=>h.id===o.columnId);return i.push({field:d?(d.queryFieldSorter||d.queryField||d.field)+"":o.columnId+"",direction:o.direction}),d?{columnId:o.columnId,sortAsc:o.direction.toUpperCase()===ki.ASC}:null});Array.isArray(r)&&this._grid&&this._grid.setSortColumns(r.filter(o=>o)||[])}else if(e&&!a&&Array.isArray(e)&&e.length>0)for(const r of e)if(r&&r.sortCol){u.push({columnId:r.sortCol.id+"",direction:r.sortAsc?ki.ASC:ki.DESC});const o=(r.sortCol.queryFieldSorter||r.sortCol.queryField||r.sortCol.field||"")+"";o&&i.push({field:o,direction:r.sortAsc?ki.ASC:ki.DESC})}this._currentSorters=u,this.updateOptions({sortingOptions:i})}trimDoubleQuotesOnEnumField(e,a,u){const i='s?((field:s*)?".*?")';let r=a.join(i+"|");r+=i;const o=new RegExp(r,"g");return e.replace(o,d=>{let h=!0;return d.startsWith("field:")&&u&&(h=!1),h?d.replace(/"/g,""):d})}castFilterToColumnFilters(e){const a="object"==typeof e?Object.keys(e).map(u=>e[u]):e;return Array.isArray(a)?a.map(u=>{const i={columnId:u.columnId||""};return u.operator&&(i.operator=u.operator),u.targetSelector&&(i.targetSelector=u.targetSelector),Array.isArray(u.searchTerms)&&(i.searchTerms=u.searchTerms),i}):[]}normalizeSearchValue(e,a){switch(e){case w.date:case w.string:case w.text:case w.readonly:"string"==typeof a&&(a=a.replace(/'/g,"''"));break;case w.integer:case w.number:case w.float:"string"==typeof a&&((""===(a=(a=(a=(a=(a=a.replace(/\.\./g,".")).replace(/\.+$/g,"")).replace(/^\.+/g,"0.")).replace(/^-+\.+/g,"-0.")).replace(/(?!^-)[^\d.]/g,""))||"-"===a)&&(a="0"))}return a}}const pT="users",TU="gridStateGraphql";let t9=class{constructor(e,a){this.cd=e,this.translate=a,this.title="Example 6: Grid connected to Backend Server with GraphQL",this.subTitle='\n Sorting/Paging connected to a Backend GraphQL Service (Wiki docs).\n
\n
    \n
  • (*) NO DATA SHOWING - just change Filters & Pages and look at the "GraphQL Query" changing :)
  • \n
  • This example also demos the Grid State feature, open the console log to see the changes
  • \n
  • String column also support operator (>, >=, <, <=, <>, !=, =, ==, *)\n
      \n
    • The (*) can be used as startsWith (ex.: "abc*" => startsWith "abc") / endsWith (ex.: "*xyz" => endsWith "xyz")
    • \n
    • The other operators can be used on column type number for example: ">=100" (bigger or equal than 100)
    • \n
    \n
  • You can also preload a grid with certain "presets" like Filters / Sorters / Pagination Wiki - Grid Preset
  • \n
  • Also note that the column Name has a filter with a custom %% operator that behaves like an SQL LIKE operator supporting % wildcards.
  • \n
  • Depending on your configuration, your GraphQL Server might already support regex querying (e.g. Hasura _regex)\n or you could add your own implementation (e.g. see this SO Question).
  • \n
\n ',this.subscriptions=[],this.dataset=[],this.isWithCursor=!1,this.graphqlQuery="",this.processing=!0,this.status={text:"processing...",class:"alert alert-danger"},this.serverWaitDelay=250;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Bc(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"name",field:"name",nameKey:"NAME",width:60,columnGroupKey:"CUSTOMER_INFORMATION",type:w.string,sortable:!0,filterable:!0,filter:{model:re.compoundInput,compoundOperatorList:[{operator:"",desc:"Contains"},{operator:"<>",desc:"Not Contains"},{operator:"=",desc:"Equals"},{operator:"!=",desc:"Not equal to"},{operator:"a*",desc:"Starts With"},{operator:"Custom",desc:"SQL Like"}]}},{id:"gender",field:"gender",nameKey:"GENDER",filterable:!0,sortable:!0,width:60,columnGroupKey:"CUSTOMER_INFORMATION",filter:{model:re.singleSelect,collection:[{value:"",label:""},{value:"male",label:"male",labelKey:"MALE"},{value:"female",label:"female",labelKey:"FEMALE"}]}},{id:"company",field:"company",nameKey:"COMPANY",width:60,columnGroupKey:"CUSTOMER_INFORMATION",sortable:!0,filterable:!0,filter:{model:re.multipleSelect,collection:[{value:"acme",label:"Acme"},{value:"abc",label:"Company ABC"},{value:"xyz",label:"Company XYZ"}],filterOptions:{filter:!0}}},{id:"billingAddressStreet",field:"billing.address.street",nameKey:"BILLING.ADDRESS.STREET",width:60,filterable:!0,sortable:!0,columnGroupKey:"BILLING.INFORMATION"},{id:"billingAddressZip",field:"billing.address.zip",nameKey:"BILLING.ADDRESS.ZIP",width:60,type:w.number,columnGroupKey:"BILLING.INFORMATION",filterable:!0,sortable:!0,filter:{model:re.compoundInput},formatter:O.multiple,params:{formatters:[O.complexObject,O.translate]}},{id:"finish",field:"finish",name:"Date",formatter:O.dateIso,sortable:!0,minWidth:90,width:120,exportWithFormatter:!0,type:w.date,columnGroupKey:"BILLING.INFORMATION",filterable:!0,filter:{model:re.dateRange}}];const e=ti(qs(new Date,-2),"YYYY-MM-DD"),a=ti(qs(new Date,20),"YYYY-MM-DD");this.gridOptions={gridHeight:200,gridWidth:900,compoundOperatorAltTexts:{text:{Custom:{operatorAlt:"%%",descAlt:"SQL Like"}}},enableFiltering:!0,enableCellNavigation:!0,enableTranslate:!0,createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:28,i18n:this.translate,gridMenu:{resizeOnShowHeaderRow:!0,commandItems:[{iconCssClass:"mdi mdi-close text-danger",title:"Reset Grid",disabled:!1,command:"reset-grid",positionOrder:60}],onCommand:(u,i)=>{"reset-grid"===i.command&&(this.angularGrid.gridService.resetGrid(this.columnDefinitions),localStorage[TU]=null)}},enablePagination:!0,pagination:{pageSizes:[10,15,20,25,30,40,50,75,100],pageSize:20,totalItems:0},presets:{columns:[{columnId:"name",width:100},{columnId:"gender",width:55},{columnId:"company"},{columnId:"billingAddressZip"},{columnId:"billingAddressStreet",width:120},{columnId:"finish",width:130}],filters:[{columnId:"gender",searchTerms:["male"],operator:ee.equal},{columnId:"name",searchTerms:["Joh*oe"],operator:ee.startsWithEndsWith},{columnId:"company",searchTerms:["xyz"],operator:"IN"},{columnId:"finish",searchTerms:[e,a],operator:ee.rangeInclusive}],sorters:[{columnId:"name",direction:"asc"},{columnId:"company",direction:ki.DESC}],pagination:{pageNumber:this.isWithCursor?1:2,pageSize:20}},backendServiceApi:{service:new LU,options:{datasetName:pT,addLocaleIntoQuery:!0,extraQueryArguments:[{field:"userId",value:123}],filterQueryOverride:({fieldName:u,columnDef:i,columnFilterOperator:r,searchValue:o})=>{if(r===ee.custom&&"name"===i?.id)return{field:u,operator:"Like",value:o}},useCursor:this.isWithCursor,keepArgumentFieldDoubleQuotes:!0},preProcess:()=>this.displaySpinner(!0),process:u=>this.getCustomerApiCall(u),postProcess:u=>{this.metrics=u.metrics,this.displaySpinner(!1),this.cd.detectChanges()}}}}angularGridReady(e){this.angularGrid=e}displaySpinner(e){this.processing=e,this.status=e?{text:"processing...",class:"alert alert-danger"}:{text:"finished",class:"alert alert-success"}}getCustomerApiCall(e){let a;if(this.angularGrid?.paginationService){const{paginationService:i}=this.angularGrid,r=i._initialized?i.getCurrentPageNumber():1,o=String.fromCharCode(65+r-1),d=String.fromCharCode(o.charCodeAt(0)+1);a={hasPreviousPage:0===i.dataFrom,hasNextPage:100===i.dataTo,startCursor:o,endCursor:d}}else a={hasPreviousPage:!1,hasNextPage:!0,startCursor:"A",endCursor:"B"};const u={data:{[pT]:{nodes:[],totalCount:100,pageInfo:a}}};return new Promise(i=>{setTimeout(()=>{this.graphqlQuery=this.angularGrid.backendService.buildQuery(),this.isWithCursor&&this.angularGrid?.paginationService?.setCursorPageInfo(u.data[pT].pageInfo),i(u)},this.serverWaitDelay)})}goToFirstPage(){this.angularGrid.paginationService.goToFirstPage()}goToLastPage(){this.angularGrid.paginationService.goToLastPage()}gridStateChanged(e){console.log("GraphQL Example, Grid State changed:: ",e),localStorage[TU]=JSON.stringify(e.gridState)}clearAllFiltersAndSorts(){this.angularGrid?.gridService&&this.angularGrid.gridService.clearAllFiltersAndSorts()}saveCurrentGridState(){console.log("GraphQL current grid state",this.angularGrid.gridStateService.getCurrentGridState())}setFiltersDynamically(){const e=ti(qs(new Date,-2),"YYYY-MM-DD"),a=ti(qs(new Date,20),"YYYY-MM-DD");this.angularGrid.filterService.updateFilters([{columnId:"gender",searchTerms:["female"],operator:ee.equal},{columnId:"name",searchTerms:["Jane"],operator:ee.startsWith},{columnId:"company",searchTerms:["acme"],operator:"IN"},{columnId:"billingAddressZip",searchTerms:["11"],operator:ee.greaterThanOrEqual},{columnId:"finish",searchTerms:[e,a],operator:ee.rangeInclusive}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"billingAddressZip",direction:"DESC"},{columnId:"company",direction:"ASC"}])}resetToOriginalPresets(){const e=ti(qs(new Date,-2),"YYYY-MM-DD"),a=ti(qs(new Date,20),"YYYY-MM-DD");this.angularGrid.filterService.updateFilters([{columnId:"gender",searchTerms:["male"],operator:ee.equal},{columnId:"name",searchTerms:["Joh*oe"],operator:ee.startsWithEndsWith},{columnId:"company",searchTerms:["xyz"],operator:"IN"},{columnId:"finish",searchTerms:[e,a],operator:ee.rangeInclusive}]),this.angularGrid.sortService.updateSorting([{columnId:"name",direction:"asc"},{columnId:"company",direction:ki.DESC}]),setTimeout(()=>{this.angularGrid.paginationService?.changeItemPerPage(20),this.angularGrid.paginationService?.goToPageNumber(2)})}setIsWithCursor(e){return this.isWithCursor=e,this.resetOptions({useCursor:this.isWithCursor}),!0}resetOptions(e){this.displaySpinner(!0);const a=this.gridOptions.backendServiceApi.service;this.angularGrid.paginationService.setCursorBased(e.useCursor),a.updateOptions(e),this.gridOptions={...this.gridOptions},this.angularGrid.paginationService?.goToFirstPage()}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}static#e=this.ctorParameters=()=>[{type:tn},{type:rt}]};t9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n
\n Status: {{status.text}}\n \n \n \n
\n\n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n \n Locale:\n \n {{selectedLanguage + \'.json\'}}\n \n
\n\n \n \n \n \n
\n
\n
\n Metrics: {{metrics.endTime | date: \'yyyy-MM-dd hh:mm aaaaa\\\'m\\\'\'}} | {{metrics.executionTime}}ms\n | {{metrics.totalItemCount}} items\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n
\n
\n GraphQL Query:\n
\n
\n
\n
\n\n
\n \n \n
'}),wt("design:paramtypes",[tn,rt])],t9);var e3e=W(134),a3e=W.n(e3e);const ET="https://countries.trevorblades.com/";let u9=class{constructor(e){this.http=e,this.title="Example 27: GraphQL Basic API without Pagination",this.subTitle='\n Use basic GraphQL query with any external public APIs (Wiki docs).\n
    \n
  • This Examples uses a Public GraphQL API that you can find at this link https://countries.trevorblades.com/
  • \n
  • Compare to the regular and default GraphQL implementation, you will find the following differences
  • \n
      \n
    • There are no Pagination and we only use GraphQL once to load the data, then we use the grid as a regular local in-memory grid
    • \n
    • We enabled the following 2 flags "useLocalFiltering" and "useLocalSorting" to use regular (in memory) DataView filtering/sorting
    • \n
    \n
  • NOTE - This Example calls multiple GraphQL queries, this is ONLY for demo purposes, you would typically only call 1 query (which is what GraphQL is good at)
  • \n
  • This example is mainly to demo the use of GraphqlService to build the query and retrieve the data but also to demo how to mix that with local (in-memory) Filtering/Sorting strategies
  • \n
\n ',this.dataset=[],this.graphqlQuery="",this.processing=!0,this.status={text:"processing...",class:"alert alert-danger"},this.isDataLoaded=!1}ngOnInit(){this.columnDefinitions=[{id:"countryCode",field:"code",name:"Code",maxWidth:90,sortable:!0,filterable:!0,columnGroup:"Country"},{id:"countryName",field:"name",name:"Name",width:60,sortable:!0,filterable:!0,columnGroup:"Country"},{id:"countryNative",field:"native",name:"Native",width:60,sortable:!0,filterable:!0,columnGroup:"Country"},{id:"countryPhone",field:"phone",name:"Phone Area Code",maxWidth:110,sortable:!0,filterable:!0,columnGroup:"Country"},{id:"countryCurrency",field:"currency",name:"Currency",maxWidth:90,sortable:!0,filterable:!0,columnGroup:"Country"},{id:"countryEmoji",field:"emoji",name:"Emoji",maxWidth:90,sortable:!0,columnGroup:"Country"},{id:"languageName",field:"languages.name",name:"Names",width:60,formatter:O.arrayObjectToCsv,columnGroup:"Language",params:{propertyNames:["name"],useFormatterOuputToFilter:!0},filterable:!0,filter:{model:re.multipleSelect,collectionAsync:this.getLanguages(),operator:ee.inContains,collectionOptions:{addBlankEntry:!0,collectionInsideObjectProperty:"data.languages"},collectionFilterBy:[{property:"name",value:"",operator:"NE"},{property:"name",value:null,operator:"NE"}],collectionSortBy:{property:"name"},customStructure:{value:"name",label:"name"},filterOptions:{filter:!0}}},{id:"languageNative",field:"languages.native",name:"Native",width:60,formatter:O.arrayObjectToCsv,params:{propertyNames:["native"],useFormatterOuputToFilter:!0},columnGroup:"Language",filterable:!0,filter:{model:re.multipleSelect,collectionAsync:this.getLanguages(),operator:ee.inContains,collectionOptions:{addBlankEntry:!0,collectionInsideObjectProperty:"data.languages"},collectionFilterBy:[{property:"native",value:"",operator:"NE"},{property:"native",value:null,operator:"NE"}],collectionSortBy:{property:"native"},customStructure:{value:"native",label:"native"},filterOptions:{filter:!0}}},{id:"languageCode",field:"languages.code",name:"Codes",maxWidth:100,formatter:O.arrayObjectToCsv,params:{propertyNames:["code"],useFormatterOuputToFilter:!0},columnGroup:"Language",filterable:!0},{id:"continentName",field:"continent.name",name:"Name",width:60,sortable:!0,filterable:!0,formatter:O.complexObject,columnGroup:"Continent"},{id:"continentCode",field:"continent.code",name:"Code",maxWidth:90,sortable:!0,filterable:!0,filter:{model:re.singleSelect,collectionAsync:this.getContinents(),collectionOptions:{collectionInsideObjectProperty:"data.continents",addBlankEntry:!0,separatorBetweenTextLabels:": "},customStructure:{value:"code",label:"code",labelSuffix:"name"}},formatter:O.complexObject,columnGroup:"Continent"}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!0,enableCellNavigation:!0,enablePagination:!1,createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:28,datasetIdPropertyName:"code",showCustomFooter:!0,backendServiceApi:{service:new LU,useLocalFiltering:!0,useLocalSorting:!0,options:{datasetName:"countries"},preProcess:()=>this.isDataLoaded?"":this.displaySpinner(!0),process:e=>this.getCountries(e),postProcess:e=>{this.metrics=e.metrics,this.displaySpinner(!1),this.isDataLoaded=!0}}}}displaySpinner(e){this.processing=e,this.status=e?{text:"processing...",class:"alert alert-danger"}:{text:"finished",class:"alert alert-success"}}getCountries(e){return this.http.post(ET,{query:e})}getContinents(){return this.http.post(ET,{query:"query { continents { code, name }}"})}getLanguages(){return this.http.post(ET,{query:"query { languages { code, name, native }}"})}static#e=this.ctorParameters=()=>[{type:cu}]};u9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n
\n
\n
\n\n
\n
\n
\n Status: {{status.text}}\n \n \n \n
\n
\n
\n\n \n \n
',encapsulation:Na.None,styles:[a3e()]}),wt("design:paramtypes",[cu])],u9);let i9=class{constructor(){this.title="Example 14: Grouping & Aggregators",this.subTitle='\n (Wiki docs)\n
    \n
  • \n Fully dynamic and interactive multi-level grouping with filtering and aggregates over 50\'000 items\n
  • \n
  • Each grouping level can have its own aggregates (over child rows, child groups, or all descendant rows)..
  • \n
\n ',this.processing=!1,this.excelExportService=new fo,this.textExportService=new cT}ngOnInit(){this.columnDefinitions=[{id:"sel",name:"#",field:"num",width:40,type:w.number,excludeFromExport:!0,maxWidth:70,resizable:!0,filterable:!0,selectable:!1,focusable:!1},{id:"title",name:"Title",field:"title",width:50,minWidth:50,cssClass:"cell-title",filterable:!0,sortable:!0},{id:"duration",name:"Duration",field:"duration",minWidth:50,width:60,filterable:!0,filter:{model:re.slider,operator:">="},sortable:!0,type:w.number,groupTotalsFormatter:Ra.sumTotals,params:{groupFormatterPrefix:"Total: "}},{id:"%",name:"% Complete",field:"percentComplete",minWidth:70,width:90,formatter:O.percentCompleteBar,filterable:!0,filter:{model:re.compoundSlider},sortable:!0,type:w.number,groupTotalsFormatter:Ra.avgTotalsPercentage,params:{groupFormatterPrefix:"Avg: "}},{id:"start",name:"Start",field:"start",minWidth:60,filterable:!0,filter:{model:re.compoundDate},sortable:!0,type:w.dateIso,formatter:O.dateIso,exportWithFormatter:!0},{id:"finish",name:"Finish",field:"finish",minWidth:60,filterable:!0,filter:{model:re.compoundDate},sortable:!0,type:w.dateIso,formatter:O.dateIso,exportWithFormatter:!0},{id:"cost",name:"Cost",field:"cost",minWidth:70,width:80,sortable:!0,filterable:!0,filter:{model:re.compoundInputNumber},type:w.number,formatter:O.currency,groupTotalsFormatter:Ra.sumTotalsCurrency,params:{displayNegativeNumberWithParentheses:!0,currencyPrefix:"\u20ac",groupFormatterCurrencyPrefix:"\u20ac",minDecimal:2,maxDecimal:4,groupFormatterPrefix:"Total: "},excelExportOptions:{style:{font:{outline:!0,italic:!0},format:"\u20ac0.00##;[Red](\u20ac0.00##)"},width:18},groupTotalsExcelExportOptions:{style:{alignment:{horizontal:"center"},font:{bold:!0,color:"FF005289",underline:"single",fontName:"Consolas",size:10},fill:{type:"pattern",patternType:"solid",fgColor:"FFE6F2F6"},border:{top:{color:"FFa500ff",style:"thick"},left:{color:"FFa500ff",style:"medium"},right:{color:"FFa500ff",style:"dotted"},bottom:{color:"FFa500ff",style:"double"}},format:'"Total: "\u20ac0.00##;[Red]"Total: "(\u20ac0.00##)'}}},{id:"effort-driven",name:"Effort Driven",minWidth:20,width:80,maxWidth:80,cssClass:"cell-effort-driven",field:"effortDriven",formatter:O.checkmarkMaterial,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:re.singleSelect}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableExcelExport:!0,enableFiltering:!0,enableGrouping:!0,enableTextExport:!0,gridMenu:{hideExportTextDelimitedCommand:!1},excelExportOptions:{sanitizeDataExport:!0},textExportOptions:{sanitizeDataExport:!0},externalResources:[this.excelExportService,this.textExportService],showCustomFooter:!0,customFooterOptions:{hideMetrics:!1,hideTotalItemCount:!1,hideLastUpdateTimestamp:!1}},this.loadData(500)}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid,this.dataviewObj=e.dataView}loadData(e){const a=[];for(let u=0;u`Duration: ${e.value} (${e.count} items)`,aggregators:[new Gt_Avg("percentComplete"),new Gt_Sum("cost")],comparer:(e,a)=>H0.numeric(e.value,a.value,jt.asc),aggregateCollapsed:!1,lazyTotalsCalculation:!0}),this.angularGrid.filterService.setSortColumnIcons([{columnId:"duration",sortAsc:!0}]),this.gridObj.invalidate()}groupByDurationOrderByCount(e){this.angularGrid.filterService.setSortColumnIcons([]),this.dataviewObj.setGrouping({getter:"duration",formatter:a=>`Duration: ${a.value} (${a.count} items)`,comparer:(a,u)=>a.count-u.count,aggregators:[new Gt_Avg("percentComplete"),new Gt_Sum("cost")],aggregateCollapsed:e,lazyTotalsCalculation:!0}),this.gridObj.invalidate()}groupByDurationEffortDriven(){this.angularGrid.filterService.setSortColumnIcons([]),this.dataviewObj.setGrouping([{getter:"duration",formatter:e=>`Duration: ${e.value} (${e.count} items)`,aggregators:[new Gt_Sum("duration"),new Gt_Sum("cost")],aggregateCollapsed:!0,lazyTotalsCalculation:!0},{getter:"effortDriven",formatter:e=>`Effort-Driven: ${e.value?"True":"False"} (${e.count} items)`,aggregators:[new Gt_Avg("percentComplete"),new Gt_Sum("cost")],collapsed:!0,lazyTotalsCalculation:!0}]),this.gridObj.invalidate()}groupByDurationEffortDrivenPercent(){this.angularGrid.filterService.setSortColumnIcons([]),this.dataviewObj.setGrouping([{getter:"duration",formatter:e=>`Duration: ${e.value} (${e.count} items)`,aggregators:[new Gt_Sum("duration"),new Gt_Sum("cost")],aggregateCollapsed:!0,lazyTotalsCalculation:!0},{getter:"effortDriven",formatter:e=>`Effort-Driven: ${e.value?"True":"False"} (${e.count} items)`,aggregators:[new Gt_Sum("duration"),new Gt_Sum("cost")],lazyTotalsCalculation:!0},{getter:"percentComplete",formatter:e=>`% Complete: ${e.value} (${e.count} items)`,aggregators:[new Gt_Avg("percentComplete")],aggregateCollapsed:!0,collapsed:!0,lazyTotalsCalculation:!0}]),this.gridObj.invalidate()}};i9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n\n \n \n
'})],i9);var u3e=W(133),i3e=W.n(u3e);let n9={},r9={},o9=class{constructor(){this.title="Example 7: Header Button Plugin",this.subTitle='\n This example demonstrates using the Slick.Plugins.HeaderButtons plugin to easily add buttons to colum headers.\n These buttons can be specified directly in the column definition, and are very easy to configure and use.\n (Wiki docs)\n
    \n
  • Resize the 1st column to see all icon/command
  • \n
  • Mouse hover the 2nd column to see it\'s icon/command
  • \n
  • For all the other columns, click on top-right red circle icon to enable highlight of negative numbers.
  • \n
  • Use override callback functions to change the properties of show/hide, enable/disable the menu or certain item(s) from the list
  • \n
      \n
    1. These callbacks are: "itemVisibilityOverride", "itemUsabilityOverride"
    2. \n
    3. for example the "Column E" does not show the header button via "itemVisibilityOverride"
    4. \n
    5. for example the "Column J" header button is displayed but it not usable via "itemUsabilityOverride"
    6. \n
    \n
\n ',this.columnDefinitions1=[],this.columnDefinitions2=[],this.dataset1=[],this.dataset2=[],n9={},r9={}}ngOnInit(){this.defineGrid(),this.dataset1=this.loadData(200,1),this.dataset2=this.loadData(200,2)}angularGrid1Ready(e){this.angularGrid1=e}angularGrid2Ready(e){this.angularGrid2=e}defineGrid(){this.gridOptions1={enableAutoResize:!0,enableHeaderButton:!0,enableHeaderMenu:!1,autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!1,enableExcelCopyBuffer:!0,excelCopyBufferOptions:{onCopyCells:(e,a)=>console.log("onCopyCells",e,a),onPasteCells:(e,a)=>console.log("onPasteCells",e,a),onCopyCancelled:(e,a)=>console.log("onCopyCancelled",e,a)},enableCellNavigation:!0,gridHeight:275,headerButton:{onCommand:(e,a)=>this.handleOnCommand(e,a,1)}},this.gridOptions2={...this.gridOptions1,enableHeaderMenu:!0,enableFiltering:!0,headerButton:{onCommand:(e,a)=>this.handleOnCommand(e,a,2)}}}handleOnCommand(e,a,u){const i=a.column,r=a.button;"toggle-highlight"===a.command&&("mdi mdi-lightbulb-on text-danger"===r.cssClass?(1===u?delete n9[i.id]:delete r9[i.id],r.cssClass="mdi mdi-lightbulb-outline text-warning faded",r.tooltip="Highlight negative numbers."):(1===u?n9[i.id]=!0:r9[i.id]=!0,r.cssClass="mdi mdi-lightbulb-on text-danger",r.tooltip="Remove highlight."),this[`angularGrid${u}`].slickGrid.invalidate())}loadData(e,a){for(let i=0;i<10;i++)this[`columnDefinitions${a}`].push({id:i,name:"Column "+String.fromCharCode(65+i),field:i+"",width:0===i?70:100,filterable:!0,sortable:!0,formatter:(r,o,d,h)=>1===a&&n9[h.id]&&d<0||2===a&&r9[h.id]&&d<0?`
${d}
`:d,header:{buttons:[{cssClass:"mdi mdi-lightbulb-outline text-warning faded",command:"toggle-highlight",tooltip:"Highlight negative numbers.",itemVisibilityOverride:r=>"Column E"!==r.column.name,itemUsabilityOverride:r=>"Column J"!==r.column.name,action:(r,o)=>{console.log(`execute a callback action to "${o.command}" on ${o.column.name}`)}}]}});this[`columnDefinitions${a}`][0].name="Resize me!",this[`columnDefinitions${a}`][0].header={buttons:[{cssClass:"mdi mdi-message-text",handler:()=>{alert("Tag")}},{cssClass:"mdi mdi-forum-outline",handler:()=>{alert("Comment")}},{cssClass:"mdi mdi-information",handler:()=>{alert("Info")}},{cssClass:"mdi mdi-help-circle",handler:()=>{alert("Help")}}]},2===a&&this.columnDefinitions2[0].header?.buttons?.reverse(),this[`columnDefinitions${a}`][1].name="Hover me!",this[`columnDefinitions${a}`][1].header={buttons:[{cssClass:"mdi mdi-help-circle",showOnHover:!0,tooltip:"This button only appears on hover.",handler:()=>{alert("Help")}}]};const u=[];for(let i=0;i[]};o9=ua([ba({encapsulation:Na.None,template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
Grid 1
\n \n \n\n
\n
Grid 2 - with both Header Buttons & Menus
\n \n \n\n
',styles:[i3e()]}),wt("design:paramtypes",[])],o9);let gT=class{constructor(){this.clickedTimes=0}clickMe(){this.clickedTimes++}};gT=ua([ba({template:'\n
You\'ve clicked me {{clickedTimes}} time(s)
',selector:"custom-footer"})],gT);let l9=class{constructor(){this.title="Example 34: Custom header & footer Templates",this.subTitle="\n Basic Grid with templates for custom headers and footers\n
    \n
  • Pass in custom templates to be rendered at predefined header and footer destinations
  • \n
\n ",this.columnDefinitions=[]}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0},{id:"%",name:"% Complete",field:"percentComplete",sortable:!0},{id:"start",name:"Start",field:"start",formatter:O.dateIso},{id:"finish",name:"Finish",field:"finish",formatter:O.dateIso},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",sortable:!0}],this.gridOptions={enableAutoResize:!1,enableSorting:!0,gridHeight:225,gridWidth:800},this.dataset=this.mockData(995)}mockData(e){const a=[];for(let u=0;u\n

\n {{ title }}\n \n \n code\n \n \n

\n
\n\n \n \n

Grid with header and footer slot

\n
\n\n \n \n \n \n
\n'})],l9);var s3e=W(336),d3e=W.n(s3e);let s9=class{constructor(e){this.translate=e,this.title="Example 8: Header Menu Plugin",this.subTitle='\n This example demonstrates using the Slick.Plugins.HeaderMenu plugin to easily add menus to colum headers.
\n These menus can be specified directly in the column definition, and are very easy to configure and use.\n (Wiki docs)\n
    \n
  • Now enabled by default in the Global Grid Options, it will add the default commands of (hide column, sort asc/desc)
  • \n
  • Hover over any column header to see an arrow showing up on the right
  • \n
  • Try Sorting (multi-sort) the 2 columns "Duration" and "% Complete" (the other ones are disabled)
  • \n
  • Try hiding any columns (you use the "Column Picker" plugin by doing a right+click on the header to show the column back)
  • \n
  • Note: The "Header Button" & "Header Menu" Plugins cannot be used at the same time
  • \n
  • You can change the menu icon via SASS variables as shown in this demo (check all SASS variables)
  • \n
  • Use override callback functions to change the properties of show/hide, enable/disable the menu or certain item(s) from the list
  • \n
      \n
    1. These callbacks are: "itemVisibilityOverride", "itemUsabilityOverride"
    2. \n
    3. for example if we want to disable the "Help" command over the "Title" and "Completed" column
    4. \n
    5. for example don\'t show Help on column "% Complete"
    6. \n
    \n
\n ',this.subscriptions=[];this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Bc(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",nameKey:"TITLE"},{id:"duration",name:"Duration",field:"duration",nameKey:"DURATION",sortable:!0},{id:"percentComplete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",sortable:!0},{id:"start",name:"Start",field:"start",nameKey:"START"},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH"},{id:"completed",name:"Completed",field:"completed",nameKey:"COMPLETED"}],this.columnDefinitions.forEach(e=>{e.header={menu:{commandItems:[{iconCssClass:"mdi mdi-help-circle",titleKey:"HELP",command:"help",tooltip:"Need assistance?",cssClass:"bold",textCssClass:"title"===e.id||"completed"===e.id?"":"blue",positionOrder:99,itemUsabilityOverride:a=>!("title"===a.column.id||"completed"===a.column.id),itemVisibilityOverride:a=>"percentComplete"!==a.column.id,action:(a,u)=>{console.log("execute an action on Help",u)}},{divider:!0,command:"",positionOrder:98},{command:"custom-actions",title:"Hello",positionOrder:99,commandItems:[{command:"hello-world",title:"Hello World"},{command:"hello-slickgrid",title:"Hello SlickGrid"},{command:"sub-menu",title:"Let's play",cssClass:"green",subMenuTitle:"choose your game",subMenuTitleCssClass:"text-italic salmon",commandItems:[{command:"sport-badminton",title:"Badminton"},{command:"sport-tennis",title:"Tennis"},{command:"sport-racquetball",title:"Racquetball"},{command:"sport-squash",title:"Squash"}]}]},{command:"feedback",title:"Feedback",positionOrder:100,commandItems:[{command:"request-update",title:"Request update from supplier",iconCssClass:"mdi mdi-star",tooltip:"this will automatically send an alert to the shipping team to contact the user for an update"},"divider",{command:"sub-menu",title:"Contact Us",iconCssClass:"mdi mdi-account",subMenuTitle:"contact us...",subMenuTitleCssClass:"italic",commandItems:[{command:"contact-email",title:"Email us",iconCssClass:"mdi mdi-pencil-outline"},{command:"contact-chat",title:"Chat with us",iconCssClass:"mdi mdi-message-text-outline"},{command:"contact-meeting",title:"Book an appointment",iconCssClass:"mdi mdi-coffee"}]}]}]}}}),this.gridOptions={enableAutoResize:!0,enableHeaderMenu:!0,autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!1,enableCellNavigation:!0,headerMenu:{hideSortCommands:!1,hideColumnHideCommand:!1,subItemChevronClass:"mdi mdi-chevron-down mdi-rotate-270",onCommand:(e,a)=>{const u=a.item?.command;u.includes("hello-")?alert(a?.item.title):u.includes("sport-")?alert("Just do it, play "+a?.item?.title):u.includes("contact-")?alert("Command: "+a?.item?.command):"help"===a.command&&alert("Please help!!!")}},enableTranslate:!0,i18n:this.translate},this.getData()}getData(){const e=[];for(let a=0;a<1e3;a++)e[a]={id:a,title:"Task "+a,duration:Math.round(25*Math.random())+" days",percentComplete:Math.round(100*Math.random()),start:"01/01/2009",finish:"01/05/2009",completed:a%5==0};this.dataset=e}angularGridReady(e){this.angularGrid=e}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}static#e=this.ctorParameters=()=>[{type:rt}]};s9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n \n Locale:\n \n {{selectedLanguage + \'.json\'}}\n \n\n
\n \n \n
\n
',encapsulation:Na.None,styles:[d3e()]}),wt("design:paramtypes",[rt])],s9);const PU=(t,e,a,u,i,r)=>r.getOptions().i18n.instant("TASK_X",{x:a});let d9=class{constructor(e){this.translate=e,this.title="Example 12: Localization (i18n)",this.subTitle='Support multiple locales with the ngx-translate plugin, following these steps (Wiki docs)\n
    \n
  1. You first need to "enableTranslate" in the Grid Options
  2. \n
  3. In the Column Definitions, you have following options
  4. \n
      \n
    • To translate a header title, use "nameKey" with a translate key (nameKey: \'TITLE\')
    • \n
    • For the cell values, you need to use a Formatter, there\'s 2 ways of doing it
    • \n
        \n
      • formatter: myCustomTranslateFormatter <= "Title" column uses it
      • \n
      • formatter: Formatters.translate, i18n: this.translateService <= "Completed" column uses it
      • \n
      \n
    \n
  5. For date localization, you need to create your own custom formatter.
  6. \n
      \n
    • You can easily implement logic to switch between Formatters "dateIso" or "dateUs", depending on current locale.
    • \n
    \n
  7. For the Select (dropdown) filter, you can fill in the "labelKey" property, if found it will use it, else it will use "label"
  8. \n
      \n
    • What if your select options have totally different value/label pair? In this case, you can use the customStructure: { label: \'customLabel\', value: \'customValue\'} to change the property name(s) to use.\'
    • \n
    • What if you want to use "customStructure" and translation? Simply pass this flag enableTranslateLabel: true
    • \n
    • More info on the Select Filter Wiki page\n
    \n
  9. For more info about "Download to File", read the Wiki page
  10. \n
\n ',this.subscriptions=[],this.duplicateTitleHeaderCount=1,this.excelExportService=new fo,this.textExportService=new cT;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Bc(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"id",nameKey:"TITLE",minWidth:100,formatter:PU,sortable:!0,filterable:!0,params:{useFormatterOuputToFilter:!0}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80},{id:"duration",name:"Duration (days)",field:"duration",nameKey:"DURATION",sortable:!0,formatter:O.percentCompleteBar,minWidth:100,exportWithFormatter:!1,filterable:!0,type:w.number,filter:{model:re.slider,filterOptions:{hideSliderNumber:!0}}},{id:"start",name:"Start",field:"start",nameKey:"START",minWidth:100,formatter:O.dateIso,outputType:w.dateIso,type:w.date,exportWithFormatter:!0,filterable:!0,filter:{model:re.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:O.dateIso,outputType:w.dateIso,type:w.date,minWidth:100,filterable:!0,filter:{model:re.compoundDate}},{id:"completedBool",name:"Completed",field:"completedBool",nameKey:"COMPLETED",minWidth:100,sortable:!0,formatter:O.checkmarkMaterial,exportCustomFormatter:O.translateBoolean,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,labelKey:"TRUE"},{value:!1,labelKey:"FALSE"}],model:re.singleSelect,enableTranslateLabel:!0}},{id:"completed",name:"Completed",field:"completed",nameKey:"COMPLETED",formatter:O.translate,sortable:!0,minWidth:100,exportWithFormatter:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:"TRUE",labelKey:"TRUE"},{value:"FALSE",labelKey:"FALSE"}],collectionSortBy:{property:"labelKey"},enableTranslateLabel:!0,model:re.singleSelect}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableAutoResize:!0,enableExcelCopyBuffer:!0,enableFiltering:!0,enableTranslate:!0,i18n:this.translate,checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},enableCheckboxSelector:!0,enableRowSelection:!0,showCustomFooter:!0,customFooterOptions:{metricTexts:{itemsKey:"ITEMS",ofKey:"OF",lastUpdateKey:"LAST_UPDATE"},dateFormat:"YYYY-MM-DD, hh:mm a",hideTotalItemCount:!1,hideLastUpdateTimestamp:!1},excelExportOptions:{customExcelHeader:(e,a)=>{const u="fr"===this.translate.currentLang?"Titre qui est suffisament long pour \xeatre coup\xe9":"My header that is long enough to wrap",o=e.getStyleSheet().createFormat({font:{size:12,fontName:"Calibri",bold:!0,color:"FF0000FF"},alignment:{wrapText:!0}});a.setRowInstructions(0,{height:30}),a.mergeCells("B1","D1");const d=[];d.push({value:""}),d.push({value:u,metadata:{style:o.id}}),a.data.push(d)}},gridMenu:{hideExportCsvCommand:!1,hideExportTextDelimitedCommand:!1},enableExcelExport:!0,enableTextExport:!0,textExportOptions:{exportWithFormatter:!0,sanitizeDataExport:!0},externalResources:[this.excelExportService,this.textExportService]},this.loadData(1500)}loadData(e){const a=[];for(let u=0;u{this.selectedLanguage=e}))}static#e=this.ctorParameters=()=>[{type:rt}]};d9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n\n
\n
\n \n Locale: {{selectedLanguage + \'.json\'}}\n\n \n \n \n \n \n \n
\n
\n\n
\n \n \n
\n
'}),wt("design:paramtypes",[rt])],d9);var p3e=W(735),E3e=W.n(p3e);let c9=class{constructor(e){this.translate=e,this.title="Example 9: Grid Menu Control",this.subTitle='\n This example demonstrates using the Slick.Controls.GridMenu plugin to easily add a Grid Menu (aka hamburger menu) on the top right corner of the grid.\n (Wiki docs)\n
\n
    \n
  • You can change the Grid Menu icon, for example "mdi-dots-vertical"    (which is shown in this example)
  • \n
  • By default the Grid Menu shows all columns which you can show/hide them
  • \n
  • You can configure multiple custom "commands" to show up in the Grid Menu and use the "onGridMenuCommand()" callback
  • \n
  • Doing a "right + click" over any column header will also provide a way to show/hide a column (via the Column Picker Plugin)
  • \n
  • You can change the icons of both picker via SASS variables as shown in this demo (check all SASS variables)
  • \n
  • You can also show the Grid Menu anywhere on your page
  • \n
\n ',this.subscriptions=[];this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Bc(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",nameKey:"TITLE",filterable:!0,type:w.string},{id:"duration",name:"Duration",field:"duration",nameKey:"DURATION",sortable:!0,filterable:!0,type:w.string},{id:"percentComplete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",sortable:!0,filterable:!0,type:w.number,formatter:O.percentCompleteBar,filter:{model:re.compoundSlider,filterOptions:{hideSliderNumber:!1}}},{id:"start",name:"Start",field:"start",nameKey:"START",filterable:!0,type:w.string},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",filterable:!0,type:w.string},{id:"effort-driven",name:"Completed",field:"effortDriven",nameKey:"COMPLETED",maxWidth:80,formatter:O.checkmarkMaterial,type:w.boolean,minWidth:100,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:re.singleSelect}}],this.gridOptions={columnPicker:{hideForceFitButton:!0,hideSyncResizeButton:!0,onColumnsChanged:(e,a)=>{console.log("Column selection changed from Column Picker, visible columns: ",a.visibleColumns)}},enableAutoResize:!0,enableGridMenu:!0,autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!0,enableCellNavigation:!0,gridMenu:{menuUsabilityOverride:()=>!0,commandTitleKey:"CUSTOM_COMMANDS",iconCssClass:"mdi mdi-dots-vertical",hideForceFitButton:!0,hideSyncResizeButton:!0,hideToggleFilterCommand:!1,menuWidth:17,resizeOnShowHeaderRow:!0,subItemChevronClass:"mdi mdi-chevron-down mdi-rotate-270",commandItems:[{iconCssClass:"mdi mdi-help-circle",titleKey:"HELP",disabled:!1,command:"help",positionOrder:90,cssClass:"bold",textCssClass:"blue"},{divider:!0,command:"",positionOrder:89},{title:"Command 1",command:"command1",positionOrder:91,cssClass:"orange",iconCssClass:"mdi mdi-alert",action:(e,a)=>alert(a.command),itemUsabilityOverride:e=>!e||!Array.isArray(e.columns)||e.columns.length===e.visibleColumns.length},{title:"Command 2",command:"command2",positionOrder:92,cssClass:"red",textCssClass:"italic",action:(e,a)=>alert(a.command),itemVisibilityOverride:()=>!this.angularGrid||this.isObjectEmpty(this.angularGrid.filterService.getColumnFilters())},{title:"Disabled command",disabled:!0,command:"disabled-command",positionOrder:98},{command:"",divider:!0,positionOrder:98},{command:"export",title:"Exports",positionOrder:99,commandItems:[{command:"exports-txt",title:"Text (tab delimited)"},{command:"sub-menu",title:"Excel",cssClass:"green",subMenuTitle:"available formats",subMenuTitleCssClass:"text-italic orange",commandItems:[{command:"exports-csv",title:"Excel (csv)"},{command:"exports-xlsx",title:"Excel (xlsx)"}]}]},{command:"feedback",title:"Feedback",positionOrder:100,commandItems:[{command:"request-update",title:"Request update from supplier",iconCssClass:"mdi mdi-star",tooltip:"this will automatically send an alert to the shipping team to contact the user for an update"},"divider",{command:"sub-menu",title:"Contact Us",iconCssClass:"mdi mdi-account",subMenuTitle:"contact us...",subMenuTitleCssClass:"italic",commandItems:[{command:"contact-email",title:"Email us",iconCssClass:"mdi mdi-pencil-outline"},{command:"contact-chat",title:"Chat with us",iconCssClass:"mdi mdi-message-text-outline"},{command:"contact-meeting",title:"Book an appointment",iconCssClass:"mdi mdi-coffee"}]}]}],onCommand:(e,a)=>{const u=a.item?.command;u.includes("exports-")?alert("Exporting as "+a?.item.title):u.includes("contact-")||"help"===u?alert("Command: "+a.command):console.log("onGridMenuCommand",a.command)},onColumnsChanged:(e,a)=>{console.log("Column selection changed from Grid Menu, visible columns: ",a.visibleColumns)}},enableTranslate:!0,i18n:this.translate},this.getData()}angularGridReady(e){this.angularGrid=e}getData(){const e=[];for(let a=0;a<500;a++)e[a]={id:a,title:"Task "+a,phone:this.generatePhoneNumber(),duration:Math.round(25*Math.random())+" days",percentComplete:Math.round(100*Math.random()),start:"01/01/2009",finish:"01/05/2009",effortDriven:a%5==0};this.dataset=e}generatePhoneNumber(){let e="";for(let a=0;a<10;a++)e+=Math.round(9*Math.random())+"";return e}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}toggleGridMenu(e){this.angularGrid&&this.angularGrid.extensionService&&this.angularGrid.extensionService.getExtensionInstanceByName(pa.gridMenu).showGridMenu(e,{dropSide:"right"})}isObjectEmpty(e){for(const a in e)if(e.hasOwnProperty(a)&&""!==e[a])return!1;return!0}static#e=this.ctorParameters=()=>[{type:rt}]};c9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n \n \n\n Locale:\n {{selectedLanguage + \'.json\'}}\n \n\n
\n \n \n
\n
',encapsulation:Na.None,styles:[E3e()]}),wt("design:paramtypes",[rt])],c9);class v3e{set columnDefinitions(e){this._columnDefinitions=e}set datasetIdPropName(e){this._datasetIdPropName=e}constructor(){this._filterCount=0,this._columnDefinitions=[],this._datasetIdPropName="id",this._odataOptions={filterQueue:[],orderBy:""},this._defaultSortBy="",this._columnFilters={}}buildQuery(){if(!this._odataOptions)throw new Error('Odata Service requires certain options like "top" for it to work');this._odataOptions.filterQueue=[];const e=[];if(this._odataOptions&&!0===this._odataOptions.enableCount){const a=this._odataOptions.version&&this._odataOptions.version>=4?"$count=true":"$inlinecount=allpages";e.push(a)}if(this._odataOptions.top&&e.push(`$top=${this._odataOptions.top}`),this._odataOptions.skip&&e.push(`$skip=${this._odataOptions.skip}`),this._odataOptions.orderBy){let a="";a=Array.isArray(this._odataOptions.orderBy)?this._odataOptions.orderBy.join(","):this._odataOptions.orderBy,e.push(`$orderby=${a}`)}if(this._odataOptions.filterBy||this._odataOptions.filter){const a=this._odataOptions.filter||this._odataOptions.filterBy;if(a){this._filterCount=1,this._odataOptions.filterQueue=[];let u=a;Array.isArray(a)&&(this._filterCount=a.length,u=a.join(` ${this._odataOptions.filterBySeparator||"and"} `)),"string"==typeof u&&("("===u[0]&&")"===u.slice(-1)?this.addToFilterQueueWhenNotExists(u):this.addToFilterQueueWhenNotExists(`(${u})`))}}if(this._odataOptions.filterQueue.length>0){const a=this._odataOptions.filterQueue.join(` ${this._odataOptions.filterBySeparator||"and"} `);this._odataOptions.filter=a,e.push(`$filter=${a}`)}if(this._odataOptions.enableSelect||this._odataOptions.enableExpand){const a=this._columnDefinitions.flatMap(i=>i.fields??[i.field]);a.unshift(this._datasetIdPropName);const u=this.buildSelectExpand([...new Set(a)]);if(this._odataOptions.enableSelect){const i=u.selectParts.join(",");e.push(`$select=${i}`)}if(this._odataOptions.enableExpand){const i=u.expandParts.join(",");e.push(`$expand=${i}`)}}return e.join("&")}getFilterCount(){return this._filterCount}get columnFilters(){return this._columnFilters}get options(){return this._odataOptions}set options(e){this._odataOptions=e}removeColumnFilter(e){this._columnFilters&&this._columnFilters.hasOwnProperty(e)&&delete this._columnFilters[e]}saveColumnFilter(e,a,u){this._columnFilters[e]={search:u,value:a}}updateOptions(e){for(const a of Object.keys(e))if(e.hasOwnProperty(a)&&(this._odataOptions[a]=e[a]),"orderBy"===a||"sortBy"===a){let u=e[a];this._odataOptions.caseType===Mp.pascalCase&&(Array.isArray(u)?u.forEach((i,r,o)=>{o[r]=ko(i)}):u=ko(e[a])),this._odataOptions.orderBy=u,this._defaultSortBy=u}}addToFilterQueueWhenNotExists(e){this._odataOptions.filterQueue&&-1===this._odataOptions.filterQueue.indexOf(e)&&this._odataOptions.filterQueue.push(e)}buildSelectExpand(e){const a={},u=new Set;for(const i of e){const r=i.split("/");if(1===r.length)u.add(i);else{const o=r[0],d=r.splice(1).join("/");a[o]||(a[o]=[]),a[o].push(d),this._odataOptions.enableExpand&&!(this._odataOptions.version&&this._odataOptions.version>=4)&&u.add(o)}}return{selectParts:[...u],expandParts:this._odataOptions.enableExpand?this.buildExpand(a):[]}}buildExpand(e){const a=[];for(const u of Object.keys(e))if(this._odataOptions.enableSelect&&this._odataOptions.version&&this._odataOptions.version>=4){const i=this.buildSelectExpand(e[u]);let r=i.selectParts.join(",");r.length>0&&(r="$select="+r),this._odataOptions.enableExpand&&i.expandParts.length>0&&(r+=(r.length>0?";":"")+"$expand="+i.expandParts.join(",")),r.length>0&&(r="("+r+")"),a.push(u+r)}else a.push(u);return a}}class k3e{get columnDefinitions(){return this._columnDefinitions}get odataService(){return this._odataService}get _gridOptions(){return this._grid?.getOptions()??{}}constructor(){this._currentFilters=[],this._currentPagination=null,this._currentSorters=[],this._columnDefinitions=[],this.defaultOptions={top:25,orderBy:"",caseType:Mp.pascalCase},this._odataService=new v3e}init(e,a,u,i){this._grid=u;const r={...this.defaultOptions,...e};if(this._gridOptions&&!this._gridOptions.enablePagination)this._odataService.options={...r,top:void 0},this._currentPagination=null;else{const o=a&&a.pageSize?a.pageSize:this.defaultOptions.top;this._odataService.options={...r,top:o},this._currentPagination={pageNumber:1,pageSize:this._odataService.options.top||this.defaultOptions.top||20}}if(this.options=this._odataService.options,this.pagination=a,u?.getColumns){const o=i?.allColumns??u.getColumns()??[];this._columnDefinitions=o.filter(d=>!d.excludeFromQuery)}this._odataService.columnDefinitions=this._columnDefinitions,this._odataService.datasetIdPropName=this._gridOptions.datasetIdPropertyName||"id"}buildQuery(){return this._odataService.buildQuery()}postProcess(e){const a=this._odataService.options.version??2;if(this.pagination&&this._odataService.options.enableCount){const i=(this._odataService.options.countExtractor??a>=4?r=>r?.["@odata.count"]:3===a?r=>r?.__count:r=>r?.d?.__count)(e);"number"==typeof i&&(this.pagination.totalItems=i)}if(this._odataService.options.enableExpand){const i=(this._odataService.options.datasetExtractor??a>=4?r=>r?.value:3===a?r=>r?.results:r=>r?.d?.results)(e);if(Array.isArray(i)){const r=new Set(this._columnDefinitions.flatMap(o=>o.fields??[o.field]).filter(o=>o.includes("/")));if(r.size>0){const o=new Set;for(const d of i){for(const h of r){const m=h.split("/"),E=m[0];o.add(E);let v=d[E];for(let k=1;k":a="gt";break;case">=":a="ge";break;case"<>":case"!=":a="ne";break;default:a="eq"}return a}resetPaginationOptions(){this._odataService.updateOptions({skip:0})}saveColumnFilter(e,a,u){this._odataService.saveColumnFilter(e,a,u)}processOnFilterChanged(e,a){if(void 0===this._gridOptions.backendServiceApi)throw new Error('Something went wrong in the GridOdataService, "backendServiceApi" is not initialized');if(this._currentFilters=this.castFilterToColumnFilters(a.columnFilters),!a||!a.grid)throw new Error('Something went wrong when trying create the GridOdataService, it seems that "args" is not populated correctly');return this.updateFilters(a.columnFilters),this.resetPaginationOptions(),this._odataService.buildQuery()}processOnPaginationChanged(e,a){const u=+(a.pageSize||(this.pagination?this.pagination.pageSize:20));return this.updatePagination(a.newPage,u),this._odataService.buildQuery()}processOnSortChanged(e,a){const u=a.multiColumnSort?a.sortCols:new Array({columnId:a.sortCol?.id??"",sortCol:a.sortCol,sortAsc:a.sortAsc});return this.updateSorters(u),this._odataService.buildQuery()}updateFilters(e,a){let u="";const i=[],r=this._odataService.options.version??2;a&&(this._currentFilters=this.castFilterToColumnFilters(e));for(const o in e)if(e.hasOwnProperty(o)){const d=e[o];let h;if(h=a&&Array.isArray(this._columnDefinitions)?this._columnDefinitions.find(H=>H.id===d.columnId):d.columnDef,!h)throw new Error("[GridOData Service]: Something went wrong in trying to get the column definition of the specified filter (or preset filters). Did you make a typo on the filter columnId?");let m=h.filter?.queryField||h.queryFieldFilter||h.queryField||h.field||h.name||"";m instanceof HTMLElement&&(m=Su(m.innerHTML));const E=h.type||w.string;let v=(d?.searchTerms?[...d.searchTerms]:null)||[],k=Array.isArray(v)&&1===v.length?v[0]:"";if(typeof k>"u"&&(k=""),!m)throw new Error('GridOData filter could not find the field name to query the search, your column definition must include a valid "field" or "name" (optionally you can also use the "queryfield").');if(this._odataService.options.useVerbatimSearchTerms||d.verbatimSearchTerms){i.push(`${m} ${d.operator} ${JSON.stringify(d.searchTerms)}`.trim());continue}k=null==k?"":`${k}`;const f=!1!==(h.autoParseInputFilterOperator??this._gridOptions.autoParseInputFilterOperator)?k.match(/^((.*[^\\*\r\n])[*]{1}(.*[^*\r\n]))|^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/)||[]:[k,"","","","",k,""],C=f?.[2]||"",F=f?.[3]||"";let A=d.operator||f?.[4],z=f?.[1]||f?.[5]||"";const L=f?.[6]||"*z"===A||A===ee.endsWith?"*":"",M=d.bypassBackendQuery||!1;if(m&&""===z&&v.length<=1){this.removeColumnFilter(ei(m));continue}if(C&&F?(v=[C,F],A=ee.startsWithEndsWith):Array.isArray(v)&&1===v.length&&"string"==typeof v[0]&&v[0].indexOf("..")>=0&&(A!==ee.rangeInclusive&&A!==ee.rangeExclusive&&(A=this._gridOptions.defaultFilterRangeOperator??ee.rangeInclusive),v=v[0].split("..",2),""===v[0]?(A=A===ee.rangeInclusive?"<=":A===ee.rangeExclusive?"<":A,v=v.slice(1),z=v[0]):""===v[1]&&(A=A===ee.rangeInclusive?">=":A===ee.rangeExclusive?">":A,v=v.slice(0,1),z=v[0])),!A&&h.filter&&(A=h.filter.operator),!A&&Array.isArray(v)&&2===v.length&&v[0]&&v[1]&&(A=this._gridOptions.defaultFilterRangeOperator),(A===ee.rangeInclusive||A===ee.rangeExclusive)&&Array.isArray(v)&&1===v.length&&E===w.date&&(A=ee.equal),A||(A=O2(E)),M)m&&this.saveColumnFilter(ei(m),k,v);else{let H;if(z=this.normalizeSearchValue(E,z,r),Array.isArray(v)&&v.forEach((j,$)=>{v[$]=this.normalizeSearchValue(E,v[$],r)}),u="",this._odataService.options.caseType===Mp.pascalCase&&(m=ko(ei(m||""))),"function"==typeof this._odataService.options.filterQueryOverride&&(H=this._odataService.options.filterQueryOverride({fieldName:ei(m),columnDef:h,operator:A,columnFilterOperator:d.operator,searchValue:z,grid:this._grid})),void 0!==H)u=H;else if(A===ee.startsWithEndsWith&&Array.isArray(v)&&2===v.length){const j=[],[$,Y]=v;j.push(`startswith(${m}, ${$})`),j.push(`endswith(${m}, ${Y})`),u=j.join(" and ")}else if(v?.length>1&&("IN"===A||"NIN"===A||"NOTIN"===A||"NOT IN"===A||"NOT_IN"===A)){const j=[];if("IN"===A){for(let $=0,Y=v.length;$=4?`contains(${m}, ${z})`:`substringof(${z}, ${m})`,A===ee.notContains&&(u=`not ${u}`));""!==u&&(i.push(u.trim()),this.saveColumnFilter(ei(m||""),k,z))}}this._odataService.updateOptions({filter:i.length>0?i.join(" and "):"",skip:void 0})}updatePagination(e,a){this._currentPagination={pageNumber:e,pageSize:a},this._gridOptions&&(this._gridOptions.enablePagination||!this._gridOptions.hasOwnProperty("enablePagination"))&&this._odataService.updateOptions({top:a,skip:(e-1)*a})}updateSorters(e,a){let u=[];const i=[];if(!e&&a){u=a,u.forEach(d=>d.direction=d.direction.toLowerCase());const o=u.map(d=>{const h=this._columnDefinitions.find(m=>m.id===d.columnId);return i.push({field:h?(h.queryFieldSorter||h.queryField||h.field)+"":d.columnId+"",direction:d.direction}),h?{columnId:d.columnId,sortAsc:d.direction.toUpperCase()===ki.ASC}:null});Array.isArray(o)&&this._grid&&this._grid.setSortColumns(o)}else if(e&&!a&&0!==e?.length&&e)for(const o of e)if(o.sortCol){let d=(o.sortCol.queryFieldSorter||o.sortCol.queryField||o.sortCol.field)+"",h=(o.sortCol.field||o.sortCol.id)+"",m=(o.sortCol.queryFieldSorter||o.sortCol.queryField||o.sortCol.field||"")+"";this._odataService.options.caseType===Mp.pascalCase&&(d=ko(d),h=ko(h),m=ko(m)),u.push({columnId:o.sortCol.id,direction:o.sortAsc?ki.asc:ki.desc}),""!==m&&i.push({field:m,direction:o.sortAsc?ki.ASC:ki.DESC})}u=u||[];const r=i.map(o=>{let d="";return o&&o.field&&(d=`${this._odataService.options.caseType===Mp.pascalCase?ko(o.field):o.field} ${o&&o.direction&&o.direction.toLowerCase()||""}`),d}).join(",");return this._odataService.updateOptions({orderBy:r}),this._currentSorters=u,this._odataService.buildQuery()}castFilterToColumnFilters(e){const a="object"==typeof e?Object.keys(e).map(u=>e[u]):e;return Array.isArray(a)?a.map(u=>{const i={columnId:u.columnId||""};return u.operator&&(i.operator=u.operator),u.targetSelector&&(i.targetSelector=u.targetSelector),Array.isArray(u.searchTerms)&&(i.searchTerms=u.searchTerms),i}):[]}filterBySearchTermRange(e,a,u){let i="";return Array.isArray(u)&&2===u.length&&(a===ee.rangeInclusive?(i=`(${e} ge ${u[0]}`,""!==u[1]&&(i+=` and ${e} le ${u[1]}`),i+=")"):a===ee.rangeExclusive&&(i=`(${e} gt ${u[0]}`,""!==u[1]&&(i+=` and ${e} lt ${u[1]}`),i+=")")),i}normalizeSearchValue(e,a,u){switch(e){case w.date:a=Sde(a),a=u>=4?a:`DateTime'${a}'`;break;case w.string:case w.text:case w.readonly:"string"==typeof a&&(a=a.replace(/'/g,"''"),a=`'${a=encodeURIComponent(a)}'`);break;case w.integer:case w.number:case w.float:"string"==typeof a&&((""===(a=(a=(a=(a=(a=a.replace(/\.\./g,".")).replace(/\.+$/g,"")).replace(/^\.+/g,"0.")).replace(/^-+\.+/g,"-0.")).replace(/(?!^-)[^\d.]/g,""))||"-"===a)&&(a="0"))}return a}}let h9=class{constructor(e,a){this.cd=e,this.http=a,this.title="Example 5: Grid connected to Backend Server with OData",this.subTitle='\n Sorting/Paging connected to a Backend OData Service (Docs).\n
\n
    \n
  • Only "Name" field is sortable for the demo (because we use JSON files), however "multiColumnSort: true" is also supported
  • \n
  • This example also demos the Grid State feature, open the console log to see the changes
  • \n
  • String column also support operator (>, >=, <, <=, <>, !=, =, ==, *)\n
      \n
    • The (*) can be used as startsWith (ex.: "abc*" => startsWith "abc") / endsWith (ex.: "*xyz" => endsWith "xyz")
    • \n
    • The other operators can be used on column type number for example: ">=100" (bigger or equal than 100)
    • \n
    \n
  • OData Service could be replaced by other Service type in the future (GraphQL or whichever you provide)
  • \n
  • You can also preload a grid with certain "presets" like Filters / Sorters / Pagination Docs - Grid Preset\n
  • NOTE: For demo purposes, the last column (filter & sort) will always throw an\n error and its only purpose is to demo what would happen when you encounter a backend server error\n (the UI should rollback to previous state before you did the action).\n Also changing Page Size to 50,000 will also throw which again is for demo purposes.\n
  • \n
\n ',this.dataset=[],this.isCountEnabled=!0,this.isSelectEnabled=!1,this.isExpandEnabled=!1,this.odataVersion=2,this.odataQuery="",this.processing=!0,this.errorStatus="",this.isPageErrorTest=!1,this.status={text:"processing...",class:"alert alert-danger"}}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.columnDefinitions=[{id:"name",name:"Name",field:"name",sortable:!0,type:w.string,filterable:!0,filter:{model:re.compoundInput,compoundOperatorList:[{operator:"",desc:"Contains"},{operator:"<>",desc:"Not Contains"},{operator:"=",desc:"Equals"},{operator:"!=",desc:"Not equal to"},{operator:"a*",desc:"Starts With"},{operator:"Custom",desc:"SQL Like"}]}},{id:"gender",name:"Gender",field:"gender",filterable:!0,sortable:!0,filter:{model:re.singleSelect,collection:[{value:"",label:""},{value:"male",label:"male"},{value:"female",label:"female"}]}},{id:"company",name:"Company",field:"company",filterable:!0,sortable:!0},{id:"category_name",name:"Category",field:"category/name",filterable:!0,sortable:!0}],this.gridOptions={enableAutoResize:!0,autoResize:{container:"#demo-container",rightPadding:10},checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},compoundOperatorAltTexts:{text:{Custom:{operatorAlt:"%%",descAlt:"SQL Like"}}},enableCellNavigation:!0,enableFiltering:!0,enableCheckboxSelector:!0,enableRowSelection:!0,enablePagination:!0,pagination:{pageSizes:[10,20,50,100,500,5e4],pageSize:20,totalItems:0},presets:{filters:[{columnId:"gender",searchTerms:["male"],operator:ee.equal}],sorters:[{columnId:"name",direction:"asc"}],pagination:{pageNumber:2,pageSize:20}},backendServiceApi:{service:new k3e,options:{enableCount:this.isCountEnabled,enableSelect:this.isSelectEnabled,enableExpand:this.isExpandEnabled,filterQueryOverride:({fieldName:e,columnDef:a,columnFilterOperator:u,searchValue:i})=>{if(u===ee.custom&&"name"===a?.id){let r=i.replace(/\*/g,".*");return r=r.slice(0,1)+"%5E"+r.slice(1),r=r.slice(0,-1)+"$'",`matchesPattern(${e}, ${r})`}},version:this.odataVersion},onError:e=>{this.errorStatus=e.message,this.displaySpinner(!1,!0)},preProcess:()=>{this.errorStatus="",this.displaySpinner(!0)},process:e=>this.getCustomerApiCall(e),postProcess:e=>{this.metrics=e.metrics,this.displaySpinner(!1),this.getCustomerCallback(e),this.cd.detectChanges()}}}}displaySpinner(e,a){this.processing=e,this.status=a?{text:"ERROR!!!",class:"alert alert-danger"}:e?{text:"loading",class:"alert alert-warning"}:{text:"finished",class:"alert alert-success"},this.cd.detectChanges()}getCustomerCallback(e){let a=e.totalRecordCount;this.isCountEnabled&&(a=4===this.odataVersion?e["@odata.count"]:e.d.__count),this.metrics&&(this.metrics.totalItemCount=a),this.paginationOptions={...this.gridOptions.pagination,totalItems:a},this.dataset=4===this.odataVersion?e.value:e.d.results,this.odataQuery=e.query}getCustomerApiCall(e){return this.getCustomerDataApiMock(e)}goToFirstPage(){this.angularGrid.paginationService.goToFirstPage()}goToLastPage(){this.angularGrid.paginationService.goToLastPage()}setFiltersDynamically(){this.angularGrid.filterService.updateFilters([{columnId:"name",searchTerms:["A"],operator:"a*"}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"name",direction:"DESC"}])}getCustomerDataApiMock(e){return new Promise((a,u)=>{const i=e.toLowerCase().split("&");let r,o=0,d="",h=100;const m={};if(this.isPageErrorTest)throw this.isPageErrorTest=!1,new Error("Server timed out trying to retrieve data for the last page");for(const E of i){if(E.includes("$top=")&&(r=+E.substring(5),5e4===r))throw new Error("Server timed out retrieving 50,000 rows");if(E.includes("$skip=")&&(o=+E.substring(6)),E.includes("$orderby=")&&(d=E.substring(9)),E.includes("$filter=")){const v=E.substring(8).replace("%20"," ");if(v.includes("matchespattern")){const k=new RegExp("matchespattern\\(([a-zA-Z]+),\\s'%5E(.*?)'\\)","i"),x=v.match(k)||[],f=x[1].trim();m[f]={type:"matchespattern",term:"^"+x[2].trim()}}if(v.includes("contains")){const k=v.match(/contains\(([a-zA-Z\/]+),\s?'(.*?)'/),x=k[1].trim();m[x]={type:"substring",term:k[2].trim()}}if(v.includes("substringof")){const k=v.match(/substringof\('(.*?)',\s([a-zA-Z\/]+)/),x=k[2].trim();m[x]={type:"substring",term:k[1].trim()}}for(const k of["eq","ne","le","lt","gt","ge"])if(v.includes(k)){const f=new RegExp(`([a-zA-Z ]*) ${k} '(.*?)'`).exec(v);if(Array.isArray(f)){const C=f[1].trim();m[C]={type:k,term:f[2].trim()}}}if(v.includes("startswith")&&v.includes("endswith")){const k=v.match(/startswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],x=v.match(/endswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],f=k[1].trim();m[f]={type:"starts+ends",term:[k[2].trim(),x[2].trim()]}}else if(v.includes("startswith")){const k=v.match(/startswith\(([a-zA-Z ]*),\s?'(.*?)'/),x=k[1].trim();m[x]={type:"starts",term:k[2].trim()}}else if(v.includes("endswith")){const k=v.match(/endswith\(([a-zA-Z ]*),\s?'(.*?)'/),x=k[1].trim();m[x]={type:"ends",term:k[2].trim()}}if(v.includes("company"))throw new Error('Server could not filter using the field "Company"')}}if(d.includes("company"))throw new Error('Server could not sort using the field "Company"');this.http.get("assets/data/customers_100.json").subscribe(E=>{let v=E;if(d?.length>0){const C=d.split(",");for(const F of C){const A=F.split(" "),z=A[0];let L=H=>H;for(const H of z.split("/")){const j=L;L=$=>j($)[H]}switch((A[1]??"asc").toLocaleLowerCase()){case"asc":v=v.sort((H,j)=>L(H).localeCompare(L(j)));break;case"desc":v=v.sort((H,j)=>L(j).localeCompare(L(H)))}}}let k=o,x=v;if(m){for(const C in m)m.hasOwnProperty(C)&&(x=x.filter(F=>{const A=m[C].type,z=m[C].term;let L=C;if(-1!==C?.indexOf(" ")){const j=C.split(" ");L=j[j.length-1]}let M,H=F;for(const j of L.split("/"))M=H[j],H=M;if(M){const[j,$]=Array.isArray(z)?z:[z];switch(A){case"eq":return M.toLowerCase()===j;case"ne":return M.toLowerCase()!==j;case"le":return M.toLowerCase()<=j;case"lt":return M.toLowerCase()j;case"ge":return M.toLowerCase()>=j;case"ends":return M.toLowerCase().endsWith(j);case"starts":return M.toLowerCase().startsWith(j);case"starts+ends":return M.toLowerCase().startsWith(j)&&M.toLowerCase().endsWith($);case"substring":return M.toLowerCase().includes(j);case"matchespattern":return new RegExp(j.replaceAll("%25",".*"),"i").test(M)}}}));h=x.length}k>x.length&&(e=e.replace(`$skip=${k}`,""),k=0);const f=x.slice(k,k+r);setTimeout(()=>{const C={query:e};this.isCountEnabled||(C.totalRecordCount=h),4===this.odataVersion?(C.value=f,this.isCountEnabled&&(C["@odata.count"]=h)):(C.d={results:f},this.isCountEnabled&&(C.d.__count=h)),a(C)},100)})})}gridStateChanged(e){console.log("Client sample, Grid State changed:: ",e.change)}throwPageChangeError(){this.isPageErrorTest=!0,this.angularGrid?.paginationService?.goToLastPage()}handleOnBeforeSort(e){return!0}handleOnBeforeSearchChange(e){return!0}handleOnBeforePaginationChange(e){return!0}changeCountEnableFlag(){return this.isCountEnabled=!this.isCountEnabled,this.resetOptions({enableCount:this.isCountEnabled}),!0}changeEnableSelectFlag(){return this.isSelectEnabled=!this.isSelectEnabled,this.resetOptions({enableSelect:this.isSelectEnabled}),!0}changeEnableExpandFlag(){return this.isExpandEnabled=!this.isExpandEnabled,this.resetOptions({enableExpand:this.isExpandEnabled}),!0}setOdataVersion(e){return this.odataVersion=e,this.resetOptions({version:this.odataVersion}),!0}resetOptions(e){this.displaySpinner(!0);const a=this.gridOptions.backendServiceApi.service;a.updateOptions(e),a.clearFilters(),this.angularGrid?.filterService.clearFilters()}static#e=this.ctorParameters=()=>[{type:tn},{type:cu}]};h9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n
\n
\n
\n
\n
\n Backend Error: \n
\n
\n
\n\n
\n
\n
\n Status: {{status.text}}\n \n \n \n
\n
\n
\n
\n OData Query: {{odataQuery}}\n
\n
\n
\n\n
\n
\n \n \n
\n \n Metrics: {{metrics.endTime | date: \'yyyy-MM-dd hh:mm aaaaa\\\'m\\\'\'}} | {{metrics.executionTime}}ms\n | {{metrics.totalItemCount}} items\n \n
\n\n
\n \n \n \n \n \n \n \n \n
\n
\n
\n
\n \n\n \n \n
\n \n \n
\n
\n
\n
\n\n \n \n
'}),wt("design:paramtypes",[tn,cu])],h9);function yD(t,e){return Math.floor(Math.random()*(e-t+1)+t)}const y3e=(t,e,a,u,i,r)=>r.getOptions().i18n.instant("TASK_X",{x:a});let m9=class{constructor(e){this.translate=e,this.title="Example 25: Filtering from Range of Search Values",this.subTitle='\n This demo shows how to use Filters with Range of Search Values (Wiki docs)\n
\n
    \n
  • All input filters support the following operators: (>, >=, <, <=, <>, !=, =, ==, *) and now also the (..) for an input range
  • \n
  • All filters (which support ranges) can be defined via the 2 dots (..) which represents a range, this also works for dates and slider in the "presets"
  • \n
      \n
    • For a numeric range defined in an input filter (must be of type text), you can use 2 dots (..) to represent a range
    • \n
    • example: typing "10..90" will filter values between 10 and 90 (but excluding the number 10 and 90)
    • \n
    \n
      \n
    • note that the examples shown below for the operator, are case sensitive
    • \n
    • by default the range is inclusive which would be the same as defining the filter options to "operator: \'RangeInclusive\'" or "operator: OperatoryType.rangeInclusive"
    • \n
    • you can also set the inverse (exclusive) by defining the filter options to "operator: \'RangeExclusive\'" or "operator: OperatoryType.rangeExclusive"
    • \n
    \n
  • Date Range with Vanilla Calendar Date Picker, they will also use the locale, choose a start date then drag or click on the end date
  • \n
\n ',this.subscriptions=[],this.filterList=[{value:"",label:""},{value:"currentYearTasks",label:"Current Year Completed Tasks"},{value:"nextYearTasks",label:"Next Year Active Tasks"}];this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Bc(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"id",nameKey:"TITLE",minWidth:100,formatter:y3e,sortable:!0,filterable:!0,params:{useFormatterOuputToFilter:!0}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,type:w.string,filter:{model:oT,enableTrimWhiteSpace:!0}},{id:"percentComplete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",minWidth:120,sortable:!0,customTooltip:{position:"center"},formatter:O.progressBar,type:w.number,filterable:!0,filter:{model:re.sliderRange,maxValue:100,operator:ee.rangeInclusive,filterOptions:{hideSliderNumbers:!1,min:0,step:5}}},{id:"start",name:"Start",field:"start",nameKey:"START",formatter:O.dateIso,sortable:!0,minWidth:75,width:100,exportWithFormatter:!0,type:w.date,filterable:!0,filter:{model:re.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:O.dateIso,sortable:!0,minWidth:75,width:120,exportWithFormatter:!0,type:w.date,filterable:!0,filter:{model:re.dateRange}},{id:"duration",field:"duration",nameKey:"DURATION",maxWidth:90,type:w.number,sortable:!0,filterable:!0,filter:{model:re.input,operator:ee.rangeExclusive}},{id:"completed",name:"Completed",field:"completed",nameKey:"COMPLETED",minWidth:85,maxWidth:90,formatter:O.checkmarkMaterial,exportWithFormatter:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:re.singleSelect,filterOptions:{autoAdjustDropHeight:!0}}}];const e=new Date,a=ti(qs(new Date,-2),"YYYY-MM-DD"),u=ti(qs(new Date,e.getDate()<14?30:25),"YYYY-MM-DD");this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableExcelCopyBuffer:!0,enableFiltering:!0,enableTranslate:!0,i18n:this.translate,presets:{filters:[{columnId:"duration",searchTerms:["4..88"]},{columnId:"percentComplete",operator:"RangeInclusive",searchTerms:[5,80]},{columnId:"finish",operator:"RangeInclusive",searchTerms:[a,u]}],sorters:[{columnId:"percentComplete",direction:"DESC"},{columnId:"duration",direction:"ASC"}]},externalResources:[new fF,new fo]},this.dataset=this.mockData(1500)}angularGridReady(e){this.angularGrid=e}mockData(e,a=0){const u=[];for(let i=a;i=0&&setTimeout(()=>{this.metrics={startTime:new Date,itemCount:a&&a.current||0,totalItemCount:this.dataset.length||0}})}setFiltersDynamically(){const e=ti(qs(new Date,-5),"YYYY-MM-DD"),a=ti(qs(new Date,25),"YYYY-MM-DD");this.angularGrid.filterService.updateFilters([{columnId:"duration",searchTerms:["14..78"],operator:"RangeInclusive"},{columnId:"percentComplete",operator:"RangeExclusive",searchTerms:[15,85]},{columnId:"finish",operator:"RangeInclusive",searchTerms:[e,a]}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"finish",direction:"DESC"},{columnId:"percentComplete",direction:"ASC"}])}usePredefinedFilter(e){let a=[];const u=(new Date).getFullYear();switch(e){case"currentYearTasks":a=[{columnId:"finish",operator:ee.rangeInclusive,searchTerms:[`${u}-01-01`,`${u}-12-31`]},{columnId:"completed",operator:ee.equal,searchTerms:[!0]}];break;case"nextYearTasks":a=[{columnId:"start",operator:">=",searchTerms:[`${u+1}-01-01`]}]}this.angularGrid.filterService.updateFilters(a)}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}static#e=this.ctorParameters=()=>[{type:rt}]};m9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n\n \n Metrics: {{metrics.startTime | date: \'yyyy-MM-dd hh:mm aaaaa\\\'m\\\'\'}} | {{metrics.itemCount}} of\n {{metrics.totalItemCount}} items\n \n\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n Locale: {{selectedLanguage + \'.json\'}}\n
\n
\n\n \n \n
'}),wt("design:paramtypes",[rt])],m9);const F3e=(t,e,a,u,i)=>i&&i.brand&&i.brand.name||"",A3e=(t,e,a,u,i)=>{let r="";return i&&i.octopart_url&&i.mpn&&(r=`${i.mpn}`),r};let p9=class{constructor(){this._eventHandler=new Rt,this.title="Example 18: Octopart Catalog Search - Remote Model Plugin",this.subTitle='\n This example demonstrates how to use "slick.remotemodel.js" or any Remote implementation through an external Remote Service\n
    \n
  • \n Your browser (Chrome) might block access to the Octopart query, if you get "block content" then just unblock it\n or try with different browser like Firefox or Edge\n
  • \n
  • If the demo throws some errors, try again later (there\'s a limit per day).
  • \n
  • \n Uses slick.remotemodel.js\n which is hooked up to load search results from Octopart, but can easily be extended\n to support any JSONP-compatible backend that accepts paging parameters.\n
  • \n
  • \n This demo implements a custom DataView, however please note that you are on your own to implement all necessary DataView methods\n for Sorting, Filtering, etc...\n
  • \n
  • \n Soure code for this example is available here\n
  • \n
\n ',this.dataset=[],this.loading=!1,this.search=""}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid,this.loaderDataView?.setSort("score",-1),this.gridObj?.setSortColumn("score",!1),this.gridObj.onViewportChanged.notify()}ngOnDestroy(){this._eventHandler.unsubscribeAll()}ngOnInit(){this.defineGrid(),this.hookAllLoaderEvents()}defineGrid(){this.columnDefinitions=[{id:"mpn",name:"MPN",field:"mpn",formatter:A3e,width:100,sortable:!0},{id:"brand",name:"Brand",field:"brand.name",formatter:F3e,width:100,sortable:!0},{id:"short_description",name:"Description",field:"short_description",width:520}],this.gridOptions={enableAutoResize:!0,autoResize:{container:"#demo-container",rightPadding:10},enableCellNavigation:!0,enableColumnReorder:!1,enableGridMenu:!1,multiColumnSort:!1}}hookAllLoaderEvents(){this._eventHandler&&this._eventHandler.subscribe&&this.loaderDataView&&this.loaderDataView.onDataLoading&&this.loaderDataView.onDataLoaded&&(this._eventHandler.subscribe(this.loaderDataView.onDataLoading,(e,a)=>{this.loading=!0}),this._eventHandler.subscribe(this.loaderDataView.onDataLoaded,(e,a)=>{if(a&&this.gridObj&&this.gridObj.invalidateRow&&this.gridObj.updateRowCount&&this.gridObj.render){for(let u=a.from;u<=a.to;u++)this.gridObj.invalidateRow(u);this.gridObj.updateRowCount(),this.gridObj.render(),this.loading=!1}}))}onSort(e,a){if(this.gridObj&&this.gridObj.getViewport&&this.loaderDataView&&this.loaderDataView.ensureData&&this.loaderDataView.setSort){const u=this.gridObj.getViewport();a&&a.sortCol&&a.sortCol.field&&this.loaderDataView.setSort(a.sortCol.field,a.sortAsc?1:-1),this.loaderDataView.ensureData(u.top,u.bottom)}}onViewportChanged(){if(this.gridObj&&this.gridObj.getViewport&&this.loaderDataView&&this.loaderDataView.ensureData){const e=this.gridObj.getViewport();this.loaderDataView.ensureData(e.top,e.bottom)}}searchChanged(e){if(e&&this.gridObj&&this.gridObj.getViewport&&this.loaderDataView&&this.loaderDataView.ensureData&&this.loaderDataView.setSearch){const a=this.gridObj.getViewport();this.loaderDataView.setSearch(e),this.loaderDataView.ensureData(a.top,a.bottom)}}static#e=this.ctorParameters=()=>[]};p9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n \n \n
\n\n \n\n \n\n \n \n
'}),wt("design:paramtypes",[])],p9);var B3e=W(110),S3e=W.n(B3e);const L3e=(t,e,a,u,i,r)=>(a=a??"",(r&&r.getOptions&&r.getOptions()).editable&&u.editor?{text:a,addClasses:"editable-field",toolTip:"Click to Edit"}:a),T3e=t=>null!=t&&t.length?/^(task\s\d+)*$/i.test(t)?{valid:!0,msg:""}:{valid:!1,msg:'Your title is invalid, it must start with "Task" followed by a number.'}:{valid:!1,msg:"This is a required field."};let E9=class{constructor(e){this.http=e,this.title="Example 31: Columns Resize by Content",this.subTitle='The grid below uses the optional resize by cell content (with a fixed 950px for demo purposes), you can click on the 2 buttons to see the difference. The "autosizeColumns" is really the default option used by Angular-SlickGrid, the resize by cell content is optional because it requires to read the first thousand rows and do extra width calculation.',this.columnDefinitions=[],this.dataset=[],this.editQueue=[],this.editedItems={},this.isUsingDefaultResize=!1,this.isGridEditable=!0,this.isMassSelectionDisabled=!0,this.complexityLevelList=[{value:0,label:"Very Simple"},{value:1,label:"Simple"},{value:2,label:"Straightforward"},{value:3,label:"Complex"},{value:4,label:"Very Complex"}]}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.defineGrid(),this.dataset=this.loadData(400)}defineGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:w.string,minWidth:65,resizeExtraWidthPadding:4,resizeCharWidthInPx:7.6,resizeCalcWidthRatio:1,resizeMaxWidthThreshold:200,columnGroup:"Common Factor",cssClass:"text-uppercase fw-bold",filterable:!0,filter:{model:re.inputText,filterPredicate:(e,a)=>{const u=a.parsedSearchTerms||[];if(u?.length){const i=a.columnId,r=u[0],o=e[i].toLowerCase(),d=r.matchAll(/^%([^%\r\n]+)[^%\r\n]*$|(.*)%(.+)%(.*)|(.+)%(.+)|([^%\r\n]+)%$/gi),h=Array.from(d),m=h.length?h[0]:[],[E,v,k,x,f,C,F,A]=m;return v?o.endsWith(v.toLowerCase()):k&&x?o.startsWith(k.toLowerCase())&&o.includes(x.toLowerCase()):x&&f?o.includes(x)&&o.endsWith(f.toLowerCase()):x&&!f?o.includes(x.toLowerCase()):C&&F?o.startsWith(C.toLowerCase())&&o.endsWith(F.toLowerCase()):A?o.startsWith(A.toLowerCase()):o.includes(r.toLowerCase())}return!0}},editor:{model:Ye.longText,required:!0,alwaysSaveOnEnterKey:!0,maxLength:12,editorOptions:{cols:45,rows:6,buttonTexts:{cancel:"Close",save:"Done"}},validator:T3e}},{id:"duration",name:"Duration",field:"duration",sortable:!0,filterable:!0,minWidth:65,type:w.number,columnGroup:"Common Factor",formatter:(e,a,u)=>null==u||""===u?"":u>1?`${u} days`:`${u} day`,editor:{model:Ye.float,decimal:2,valueStep:1,minValue:0,maxValue:1e4,alwaysSaveOnEnterKey:!0,required:!0}},{id:"cost",name:"Cost",field:"cost",minWidth:65,sortable:!0,filterable:!0,type:w.number,columnGroup:"Analysis",filter:{model:re.compoundInputNumber},formatter:O.dollar},{id:"percentComplete",name:"% Complete",field:"percentComplete",minWidth:100,type:w.number,sortable:!0,filterable:!0,columnGroup:"Analysis",filter:{model:re.compoundSlider,operator:">="},editor:{model:Ye.slider,minValue:0,maxValue:100}},{id:"complexity",name:"Complexity",field:"complexity",resizeCalcWidthRatio:.82,sortable:!0,filterable:!0,columnGroup:"Analysis",formatter:(e,a,u)=>this.complexityLevelList[u]?.label,exportCustomFormatter:(e,a,u)=>this.complexityLevelList[u]?.label,filter:{model:re.multipleSelect,collection:this.complexityLevelList},editor:{model:Ye.singleSelect,collection:this.complexityLevelList}},{id:"start",name:"Start",field:"start",sortable:!0,formatter:O.dateUs,columnGroup:"Period",exportCustomFormatter:O.dateUs,type:w.date,outputType:w.dateUs,saveOutputType:w.dateUtc,filterable:!0,filter:{model:re.compoundDate},editor:{model:Ye.date,params:{hideClearButton:!1}}},{id:"completed",name:"Completed",field:"completed",width:80,minWidth:75,maxWidth:100,cssClass:"text-center",columnGroup:"Period",formatter:O.checkmarkMaterial,exportWithFormatter:!1,filterable:!0,sortable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:re.singleSelect},editor:{model:Ye.checkbox}},{id:"finish",name:"Finish",field:"finish",sortable:!0,formatter:O.dateUs,columnGroup:"Period",type:w.date,outputType:w.dateUs,saveOutputType:w.dateUtc,filterable:!0,filter:{model:re.compoundDate},exportCustomFormatter:O.dateUs,editor:{model:Ye.date,editorOptions:{range:{min:"today"}},validator:(e,a)=>{const u=a&&a.item;return u&&u.completed&&!e?{valid:!1,msg:'You must provide a "Finish" date when "Completed" is checked.'}:{valid:!0,msg:""}}}},{id:"product",name:"Product",field:"product",filterable:!0,columnGroup:"Item",minWidth:100,resizeCharWidthInPx:8,exportWithFormatter:!0,dataKey:"id",labelKey:"itemName",formatter:O.complexObject,exportCustomFormatter:O.complex,type:w.object,sortComparer:H0.objectString,editor:{model:Ye.autocompleter,alwaysSaveOnEnterKey:!0,editorOptions:{minLength:1,fetch:(e,a)=>{a(this.mockProducts().filter(i=>i.itemName.toLowerCase().includes(e.toLowerCase())))},renderItem:{layout:"fourCorners",templateCallback:e=>this.renderItemCallbackWith4Corners(e)}}},filter:{model:re.inputText,type:w.string,queryField:"product.itemName"}},{id:"origin",name:"Country of Origin",field:"origin",formatter:O.complexObject,columnGroup:"Item",exportCustomFormatter:O.complex,dataKey:"code",labelKey:"name",type:w.object,sortComparer:H0.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:Ye.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get("assets/data/countries.json")},filter:{model:re.inputText,type:w.string,queryField:"origin.name"}},{id:"action",name:"Action",field:"action",width:70,minWidth:70,maxWidth:70,excludeFromExport:!0,formatter:()=>'
',cellMenu:{hideCloseButton:!1,commandTitle:"Commands",commandItems:[{command:"help",title:"Help!",iconCssClass:"mdi mdi-help-circle",positionOrder:66,action:()=>alert("Please Help!")},"divider",{command:"delete-row",title:"Delete Row",positionOrder:64,iconCssClass:"mdi mdi-close color-danger",cssClass:"red",textCssClass:"text-italic color-danger-light",itemVisibilityOverride:e=>!e.dataContext?.completed,action:(e,a)=>{const u=a.dataContext;confirm(`Do you really want to delete row (${(a?.row??0)+1}) with "${u.title}"`)&&this.angularGrid.gridService.deleteItemById(u.id)}}]}}],this.gridOptions={editable:!0,autoAddCustomEditorFormatter:L3e,enableCellNavigation:!0,autoEdit:!0,autoCommitEdit:!0,autoResize:{container:"#smaller-container",rightPadding:10},enableAutoResize:!0,enablePagination:!0,pagination:{pageSize:10,pageSizes:[10,200,500,5e3]},autoFitColumnsOnFirstLoad:!1,enableAutoSizeColumns:!1,autosizeColumnsByCellContentOnFirstLoad:!0,enableAutoResizeColumnsByCellContent:!0,resizeByContentOptions:{defaultRatioForStringType:.92,formatterPaddingWidthInPx:8},enableExcelExport:!0,excelExportOptions:{exportWithFormatter:!1},externalResources:[new fo],enableFiltering:!0,enableRowSelection:!0,enableCheckboxSelector:!0,checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},rowSelectionOptions:{selectActiveRow:!1},createPreHeaderPanel:!0,showPreHeaderPanel:!0,preHeaderPanelHeight:28,rowHeight:33,headerRowHeight:35,editCommandHandler:(e,a,u)=>{const i=Array.isArray(u.prevSerializedValue)?u.prevSerializedValue:[u.prevSerializedValue],r=Array.isArray(u.serializedValue)?u.serializedValue:[u.serializedValue],o=this.columnDefinitions.filter(h=>void 0!==h.editor),d=[];i.forEach((h,m)=>{if(i[m]!==r[m]){const k=Array.isArray(u.prevSerializedValue)?o[m]:a;this.editedItems[this.gridOptions.datasetIdPropertyName||"id"]=e,this.angularGrid.slickGrid.invalidate(),u.execute(),this.renderUnsavedCellStyling(e,k,u),d.push(k)}}),this.editQueue.push({item:e,columns:d,editCommand:u})},enableCellMenu:!0}}loadData(e){const a=[];for(let u=0;u100?u>5?100:88:v,x=100===k;a[u]={id:u,title:"Task "+u,duration:Math.floor(100*Math.random())+10,percentComplete:k,analysis:{percentComplete:k},complexity:u%3?0:2,start:new Date(r,d,h,h,m,m,m),finish:x||u%3==0&&E>new Date&&u>3?x?new Date:E:"",cost:u%33==0?null:Math.round(1e4*Math.random())/100,completed:x||u%3==0&&E>new Date&&u>3,product:{id:this.mockProducts()[i]?.id,itemName:this.mockProducts()[i]?.itemName},origin:u%2?{code:"CA",name:"Canada"}:{code:"US",name:"United States"}},u%8||(delete a[u].finish,delete a[u].percentComplete)}return a}handleValidationError(e,a){return a.validationResults&&alert(a.validationResults.msg),!1}handleItemDeleted(e,a){console.log("item deleted with id:",a.itemId)}handleOnBeforeEditCell(e,a){const{column:u,item:i,grid:r}=a;return u&&i&&!function M3e(t,e,a){const u=a&&a.getOptions&&a.getOptions(),i=e.editor;let o=!(!u.editable||!i);t&&e&&u&&u.editable&&"finish"===e.id&&(o=!!t?.completed);return o}(i,u,r)&&e.preventDefault(),!1}handleOnCellChange(e,a){const u=a?.item;u&&!u.completed&&(u.finish=null,this.angularGrid.gridService.updateItem(u))}handlePaginationChanged(){this.removeAllUnsavedStylingFromCell(),this.renderUnsavedStylingOnAllVisibleCells()}handleDefaultResizeColumns(){const e=this.angularGrid.slickGrid.getColumns();e.forEach(a=>a.width=a.originalWidth),this.angularGrid.slickGrid.setColumns(e),this.angularGrid.slickGrid.autosizeColumns(),this.isUsingDefaultResize=!0}handleNewResizeColumns(){this.angularGrid.resizerService.resizeColumnsByCellContent(!0),this.isUsingDefaultResize=!1}handleOnSelectedRowIdsChanged(e){console.log("Selected Ids:",e.selectedRowIds)}toggleGridEditReadonly(){this.undoAllEdits(),this.isGridEditable=!this.isGridEditable,this.isGridEditable||(this.isMassSelectionDisabled=!0),this.angularGrid.slickGrid.setOptions({editable:this.isGridEditable})}removeUnsavedStylingFromCell(e,a,u){this.angularGrid.slickGrid.removeCellCssStyles(`unsaved_highlight_${[a.id]}${u}`)}removeAllUnsavedStylingFromCell(){for(const e of this.editQueue){const a=e?.editCommand;if(a)for(const u of e.columns)this.removeUnsavedStylingFromCell(e.item,u,a.row)}}renderUnsavedStylingOnAllVisibleCells(){for(const e of this.editQueue)if(e){const{item:a,columns:u,editCommand:i}=e;Array.isArray(u)&&u.forEach(r=>{this.renderUnsavedCellStyling(a,r,i)})}}renderUnsavedCellStyling(e,a,u){if(u&&e&&a){const i=this.angularGrid.dataView.getRowByItem(e);if(i>=0){const r={[i]:{[a.id]:"unsaved-editable-field"}};this.angularGrid.slickGrid.setCellCssStyles(`unsaved_highlight_${[a.id]}${i}`,r)}}}setSelectedRowIds(){this.angularGrid.dataView?.setSelectedIds([3,4,11])}saveAll(){console.log(this.editQueue),console.log(this.editedItems),this.removeAllUnsavedStylingFromCell(),this.editQueue=[],this.editedItems={}}undoLastEdit(e=!1){const a=this.editQueue.pop(),u=a?.editCommand;if(a&&u&&Xs.cancelCurrentEdit()){u.undo();for(const i of a.columns)this.removeUnsavedStylingFromCell(a.item,i,u.row);this.angularGrid.slickGrid.invalidate(),e&&this.angularGrid?.slickGrid.gotoCell(u.row,u.cell,!1)}}undoAllEdits(){for(const e of this.editQueue){const a=e?.editCommand;if(a&&Xs.cancelCurrentEdit()){a.undo();for(const u of e.columns)this.removeUnsavedStylingFromCell(e.item,u,a.row)}}this.angularGrid.slickGrid.invalidate(),this.editQueue=[]}mockProducts(){return[{id:0,itemName:"Sleek Metal Computer",itemNameTranslated:"some fantastic sleek metal computer description",listPrice:2100.23,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:`mdi ${this.getRandomIcon(0)}`},{id:1,itemName:"Tasty Granite Table",itemNameTranslated:"an extremely huge and heavy table",listPrice:3200.12,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:`mdi ${this.getRandomIcon(1)}`},{id:2,itemName:"Awesome Wooden Mouse",itemNameTranslated:"super old mouse",listPrice:15,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:`mdi ${this.getRandomIcon(2)}`},{id:3,itemName:"Gorgeous Fresh Shirt",itemNameTranslated:"what a gorgeous shirt seriously",listPrice:25.76,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:`mdi ${this.getRandomIcon(3)}`},{id:4,itemName:"Refined Cotton Table",itemNameTranslated:"super light table that will fall apart amazingly fast",listPrice:13.35,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:`mdi ${this.getRandomIcon(4)}`},{id:5,itemName:"Intelligent Wooden Pizza",itemNameTranslated:"wood not included",listPrice:23.33,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:`mdi ${this.getRandomIcon(5)}`},{id:6,itemName:"Licensed Cotton Chips",itemNameTranslated:"not sure what that is",listPrice:71.21,itemTypeName:"I",image:"http://i.stack.imgur.com/pC1Tv.jpg",icon:`mdi ${this.getRandomIcon(6)}`},{id:7,itemName:"Ergonomic Rubber Soap",itemNameTranslated:"so good you'll want to use it every night",listPrice:2.43,itemTypeName:"I",image:"https://i.imgur.com/Fnm7j6h.jpg",icon:`mdi ${this.getRandomIcon(7)}`},{id:8,itemName:"Handcrafted Steel Car",itemNameTranslated:"aka tesla truck",listPrice:31288.39,itemTypeName:"I",image:"https://i.imgur.com/RaVJuLr.jpg",icon:`mdi ${this.getRandomIcon(8)}`}]}getRandomIcon(e){const a=["mdi-arrow-collapse","mdi-arrow-expand","mdi-cancel","mdi-check","mdi-checkbox-blank-outline","mdi-check-box-outline","mdi-checkbox-marked","mdi-close","mdi-close-circle","mdi-close-circle-outline","mdi-close-thick","mdi-content-copy","mdi-database-refresh","mdi-download","mdi-file-document-outline","mdi-file-excel-outline","mdi-file-music-outline","mdi-file-pdf-outline","mdi-filter-remove-outline","mdi-flip-vertical","mdi-folder","mdi-folder-open","mdi-help-circle","mdi-help-circle-outline","mdi-history","mdi-information","mdi-information-outline","mdi-link","mdi-link-variant","mdi-menu","mdi-microsoft-excel","mdi-minus","mdi-page-first","mdi-page-last","mdi-paperclip","mdi-pin-off-outline","mdi-pin-outline","mdi-playlist-plus","mdi-playlist-remove","mdi-plus","mdi-redo","mdi-refresh","mdi-shape-square-plus","mdi-sort-ascending","mdi-sort-descending","mdi-swap-horizontal","mdi-swap-vertical","mdi-sync","mdi-table-edit","mdi-table-refresh","mdi-undo"],u=Math.floor(Math.random()*a.length-1);return a[e??u]}renderItemCallbackWith2Rows(e){return`
\n
\n \x3c!----\x3e\n \n
\n
\n \n \n ${e.itemName}\n \n
\n
\n
\n
${e.itemNameTranslated}
\n
`}renderItemCallbackWith4Corners(e){return`
\n
\n \x3c!----\x3e\n \n
\n
\n \n \n ${e.itemName}\n \n ${wu(e.listPrice,2,2,!1,"$")}\n
\n
\n
\n
${e.itemNameTranslated}
\n Type: ${"I"===e.itemTypeName?"Item":"C"===e.itemTypeName?"PdCat":"Cat"}\n
`}static#e=this.ctorParameters=()=>[{type:cu}]};E9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n

Container Width (950px)

\n\n
\n
\n
\n \n \n
\n
\n\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n \n \n
\n
',encapsulation:Na.None,styles:[S3e()]}),wt("design:paramtypes",[cu])],E9);let g9=class{alertAssignee(e){alert("string"==typeof e?`Assignee on this task is: ${e.toUpperCase()}`:"No one is assigned to this task.")}deleteRow(e){confirm(`Are you sure that you want to delete ${e.title}?`)&&(this.addon.collapseAll(),this.dataView.deleteItem(e.rowId),this.parent.showFlashMessage(`Deleted row with ${e.title}`,"danger"))}callParentMethod(e){this.parent.showFlashMessage(`We just called Parent Method from the Row Detail Child Component on ${e.title}`)}};g9=ua([ba({template:'
\n

{{model?.title}}

\n
\n
\n
{{model?.reporter}}
\n
{{model?.duration | number : \'1.2-2\'}}
\n
{{model?.percentComplete}}
\n
\n\n
\n
{{model?.start | date: \'yyyy-MM-dd\'}}
\n
{{model?.finish | date: \'yyyy-MM-dd\'}}
\n
\n
\n\n
\n\n
\n

\n Find out who is the Assignee\n \n \n \n

\n
\n
\n \n \n
\n
\n'})],g9);let v9=class{};v9=ua([ba({template:'

\n \n Loading...\n

'})],v9);let b9=class{constructor(){this._darkMode=!1,this.title="Example 21: Row Detail View",this.subTitle='\n Add functionality to show extra information with a Row Detail View, (Wiki docs)\n
    \n
  • Click on the row "+" icon or anywhere on the row to open it (the latter can be changed via property "useRowClick: false")
  • \n
  • Pass a View/Model as a Template to the Row Detail
  • \n
  • You can use "expandableOverride()" callback to override logic to display expand icon on every row (for example only show it every 2nd row)
  • \n
\n ',this.columnDefinitions=[],this.dataset=[],this.detailViewRowCount=9,this.flashAlertType="info",this.message=""}angularGridReady(e){this.angularGrid=e}get rowDetailInstance(){return this.angularGrid.extensions.rowDetailView?.instance||{}}ngOnInit(){this.defineGrid()}ngOnDestroy(){document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"}defineGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:w.string,width:70,filterable:!0,editor:{model:Ye.text}},{id:"duration",name:"Duration (days)",field:"duration",formatter:O.decimal,params:{minDecimal:1,maxDecimal:2},sortable:!0,type:w.number,minWidth:90,filterable:!0},{id:"percent2",name:"% Complete",field:"percentComplete2",editor:{model:Ye.slider},formatter:O.progressBar,type:w.number,sortable:!0,minWidth:100,filterable:!0,filter:{model:re.slider,operator:">"}},{id:"start",name:"Start",field:"start",formatter:O.dateIso,sortable:!0,type:w.date,minWidth:90,exportWithFormatter:!0,filterable:!0,filter:{model:re.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:O.dateIso,sortable:!0,type:w.date,minWidth:90,exportWithFormatter:!0,filterable:!0,filter:{model:re.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",minWidth:100,formatter:O.checkmarkMaterial,type:w.boolean,filterable:!0,sortable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:re.singleSelect}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!0,enableRowDetailView:!0,rowSelectionOptions:{selectActiveRow:!0},darkMode:this._darkMode,datasetIdPropertyName:"rowId",rowDetailView:{process:e=>this.simulateServerAsyncCall(e),loadOnce:!0,singleRowExpand:!1,useRowClick:!0,panelRows:this.detailViewRowCount,preloadComponent:v9,viewComponent:g9,parent:this,onBeforeRowDetailToggle:(e,a)=>(console.log("before toggling row detail",a.item),!0)}},this.getData()}getData(){const e=[];for(let a=0;a<1e3;a++){const u=2e3+Math.floor(10*Math.random()),i=Math.floor(11*Math.random()),r=Math.floor(29*Math.random()),o=Math.round(100*Math.random());e[a]={rowId:a,title:"Task "+a,duration:a%33==0?null:100*Math.random()+"",percentComplete:o,percentComplete2:o,percentCompleteNumber:o,start:new Date(u,i,r),finish:new Date(u,i+1,r),effortDriven:a%5==0}}this.dataset=e}changeDetailViewRowCount(){if(this.angularGrid?.extensionService){const e=this.rowDetailInstance.getOptions();e?.panelRows&&(e.panelRows=this.detailViewRowCount,this.rowDetailInstance.setOptions(e))}}changeEditableGrid(){return this.rowDetailInstance.collapseAll(),this.rowDetailInstance.addonOptions.useRowClick=!1,this.gridOptions.autoCommitEdit=!this.gridOptions.autoCommitEdit,this.angularGrid?.slickGrid.setOptions({editable:!0,autoEdit:!0,enableCellNavigation:!0}),!0}closeAllRowDetail(){this.angularGrid&&this.angularGrid.extensionService&&this.rowDetailInstance.collapseAll()}showFlashMessage(e,a="info"){this.message=e,this.flashAlertType=a}simulateServerAsyncCall(e){const a=["John Doe","Jane Doe","Chuck Norris","Bumblebee","Jackie Chan","Elvis Presley","Bob Marley","Mohammed Ali","Bruce Lee","Rocky Balboa"];return new Promise(u=>{setTimeout(()=>{const i=e;i.assignee=a[this.randomNumber(0,10)],i.reporter=a[this.randomNumber(0,10)],u(i)},1e3)})}toggleDarkMode(){this._darkMode=!this._darkMode,this.toggleBodyBackground(),this.angularGrid.slickGrid?.setOptions({darkMode:this._darkMode}),this.closeAllRowDetail()}toggleBodyBackground(){this._darkMode?(document.querySelector(".panel-wm-content").classList.add("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="dark"):(document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light")}randomNumber(e,a){return Math.floor(Math.random()*(a-e+1)+e)}};b9=ua([ba({template:'
\n

\n {{title}}\n \n \n \n code\n \n \n

\n
\n\n
\n \n \n   \n\n \n \n \n \n \n
\n
{{message}}
\n\n
\n\n \n \n
'})],b9);let k9=class{constructor(){this.title="Example 17: Row Move & Checkbox Selector",this.subTitle='This example demonstrates using the Slick.Plugins.RowMoveManager plugin to easily move a row in the grid.
\n
    \n
  • Click to select, Ctrl+Click to toggle selection, Shift+Click to select a range.
  • \n
  • Drag one or more rows by the handle (icon) to reorder
  • \n
  • If you plan to use Row Selection + Row Move, then use "singleRowMove: true" and "disableRowSelection: true"
  • \n
  • You can change "columnIndexPosition" to move the icon position of any extension (RowMove, RowDetail or RowSelector icon)
  • \n
      \n
    • You will also want to enable the DataView "syncGridSelection: true" to keep row selection even after a row move
    • \n
    \n
  • If you plan to use only Row Move, then you could keep default values (or omit them completely) of "singleRowMove: false" and "disableRowSelection: false"
  • \n
      \n
    • SingleRowMove has the name suggest will only move 1 row at a time, by default it will move any row(s) that are selected unless you disable the flag
    • \n
    \n
\n '}angularGridReady(e){this.angularGrid=e}get rowMoveInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(pa.rowMoveManager)??{}}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",filterable:!0},{id:"duration",name:"Duration",field:"duration",filterable:!0,sortable:!0},{id:"%",name:"% Complete",field:"percentComplete",filterable:!0,sortable:!0},{id:"start",name:"Start",field:"start",filterable:!0,sortable:!0,filter:{model:re.compoundDate}},{id:"finish",name:"Finish",field:"finish",filterable:!0,sortable:!0,filter:{model:re.compoundDate}},{id:"effort-driven",name:"Completed",field:"effortDriven",formatter:O.checkmarkMaterial,filterable:!0,sortable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:re.singleSelect}}],this.gridOptions={enableAutoResize:!0,autoResize:{container:"#demo-container",rightPadding:10},enableCellNavigation:!0,enableFiltering:!0,enableCheckboxSelector:!0,checkboxSelector:{columnIndexPosition:1,hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},enableRowSelection:!0,rowSelectionOptions:{selectActiveRow:!1},dataView:{syncGridSelection:!0},enableRowMoveManager:!0,rowMoveManager:{singleRowMove:!0,disableRowSelection:!0,cancelEditOnDrag:!0,hideRowMoveShadow:!1,width:30,onBeforeMoveRows:this.onBeforeMoveRow.bind(this),onMoveRows:this.onMoveRows.bind(this),columnIndexPosition:0},showCustomFooter:!0,presets:{rowSelection:{dataContextIds:[1,2,6,7]}}},this.getData()}getData(){const e=[];for(let a=0;a<500;a++)e[a]={id:a,title:"Task "+a,duration:Math.round(25*Math.random())+" days",percentComplete:Math.round(100*Math.random()),start:"01/01/2009",finish:"01/05/2009",effortDriven:a%5==0};this.dataset=e}onBeforeMoveRow(e,a){for(const u of a.rows)if(u===a.insertBefore||u===a.insertBefore-1&&a.insertBefore-1!==this.angularGrid.dataView.getItemCount())return e.stopPropagation(),!1;return!0}onMoveRows(e,a){const u=a.rows,i=a.insertBefore,r=[];this.angularGrid.dataView.sort(void 0,!0);const o=this.angularGrid.dataView.getItems(),d=this.angularGrid.dataView.getFilteredItems(),h=this.angularGrid.dataView.getItem(i),m=h?this.angularGrid.dataView.getIdxById(h.id):this.angularGrid.dataView.getItemCount(),E=[];u.forEach(C=>E.push(d[C]));const v=E.map(C=>this.angularGrid.dataView.getIdxById(C.id)),k=o.slice(0,m),x=o.slice(m,o.length);u.sort((C,F)=>C-F);for(const C of v)void 0!==C&&r.push(o[C]);v.reverse();for(const C of v)void 0!==C&&void 0!==m&&(C{alert(`Technically we should Edit "Task ${u.dataContext.id}"`)}},{id:"delete-symbol",field:"id",excludeFromColumnPicker:!0,excludeFromGridMenu:!0,excludeFromHeaderMenu:!0,formatter:O.icon,params:{iconCssClass:"mdi mdi-trash-can pointer"},minWidth:30,maxWidth:30,onCellClick:(a,u)=>{confirm("Are you sure?")&&this.angularGrid.gridService.deleteItemById(u.dataContext.id)}}];this.columnDefinitions.splice(0,0,e[0],e[1]),this.columnDefinitions=this.columnDefinitions.slice()}}toggleFilter(){this.angularGrid.filterService.toggleFilterFunctionality()}toggleSorting(){this.angularGrid.sortService.toggleSortFunctionality()}};k9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
'})],k9);var V3e=W(18),O3e=W.n(V3e),j3e=W(322),G3e=W.n(j3e);let x9=class{constructor(e){this.cd=e,this.title="Example 10: Multiple Grids with Row Selection",this.subTitle='\n Row selection, single or multi-select (Wiki docs).\n
    \n
  • Single Select, you can click on any cell to make the row active
  • \n
  • Multiple Selections, you need to specifically click on the checkbox to make 1 or more selections
  • \n
  • You can use "selectableOverride()" callback to override logic to display checkbox on every row (for example only show it every 2nd row)
  • \n
  • NOTE: Any Row Selection(s) will be reset when using Pagination and changing Page (you will need to set it back manually if you want it back)
  • \n
\n ',this.isGrid2WithPagination=!0,this.selectedTitles="",this.selectedTitle=""}ngOnInit(){this.prepareGrid()}angularGridReady1(e){this.angularGrid1=e,this.gridObj1=e&&e.slickGrid||{}}angularGridReady2(e){this.angularGrid2=e,this.gridObj2=e&&e.slickGrid||{}}prepareGrid(){this.columnDefinitions1=[{id:"title",name:"Title",field:"title",sortable:!0,type:w.string,filterable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:w.number,filterable:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:O.percentCompleteBar,type:w.number,filterable:!0,sortable:!0},{id:"start",name:"Start",field:"start",formatter:O.dateIso,exportWithFormatter:!0,type:w.date,filterable:!0,sortable:!0,filter:{model:re.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:O.dateIso,exportWithFormatter:!0,type:w.date,filterable:!0,sortable:!0,filter:{model:re.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:O.checkmarkMaterial,type:w.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:re.singleSelect}}],this.columnDefinitions2=[{id:"title",name:"Title",field:"title",sortable:!0,type:w.string,filterable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:w.number,filterable:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:O.percentCompleteBar,type:w.number,filterable:!0,sortable:!0},{id:"start",name:"Start",field:"start",formatter:O.dateIso,exportWithFormatter:!0,type:w.date,filterable:!0,sortable:!0,filter:{model:re.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:O.dateIso,exportWithFormatter:!0,type:w.date,filterable:!0,sortable:!0,filter:{model:re.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:O.checkmarkMaterial,type:w.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:re.singleSelect}}],this.gridOptions1={gridHeight:225,gridWidth:800,enableAutoResize:!1,enableCellNavigation:!0,enableRowSelection:!0,enableCheckboxSelector:!0,enableFiltering:!0,checkboxSelector:{hideSelectAllCheckbox:!0},multiSelect:!1,rowSelectionOptions:{selectActiveRow:!0},columnPicker:{hideForceFitButton:!0},gridMenu:{hideForceFitButton:!0},enablePagination:!0,pagination:{pageSizes:[5,10,15,20,25,50,75,100],pageSize:5},presets:{pagination:{pageNumber:2,pageSize:5}}},this.gridOptions2={gridHeight:255,gridWidth:800,enableAutoResize:!1,enableCellNavigation:!0,enableFiltering:!0,checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0,applySelectOnAllPages:!0},rowSelectionOptions:{selectActiveRow:!1},enableCheckboxSelector:!0,enableRowSelection:!0,enablePagination:!0,pagination:{pageSizes:[5,10,15,20,25,50,75,100],pageSize:5},presets:{rowSelection:{dataContextIds:[3,12,13,522]}}},this.dataset1=this.prepareData(495),this.dataset2=this.prepareData(525)}prepareData(e){const a=[];for(let u=0;ua-u),this.selectedTitles=this.selectedGrid2IDs.map(a=>`Task ${a}`).join(","),this.selectedTitles.length>293&&(this.selectedTitles=this.selectedTitles.substring(0,293)+"..."),this.cd.detectChanges())}togglePaginationGrid2(){this.isGrid2WithPagination=!this.isGrid2WithPagination,this.angularGrid2.paginationService.togglePaginationVisibility(this.isGrid2WithPagination)}handleSelectedRowsChanged1(e,a){Array.isArray(a.rows)&&this.gridObj1&&(this.selectedTitle=a.rows.map(u=>this.gridObj1.getDataItem(u).title||""))}static#e=this.ctorParameters=()=>[{type:tn}]};x9=ua([ba({template:'
\n

\n {{title}}\n \n \n code\n \n \n

\n
\n\n
\n
\n Pagination\n
\n \n \n
\n
\n
\n
\n (single select) Selected Row:\n \n
\n
\n
\n\n
\n \n \n
\n\n
\n\n
\n
\n Pagination: \n \n
\n \n \n
\n
\n
\n
\n
\n (multi-select) Selected Row(s):\n \n
\n
\n
\n\n
\n \n \n
\n
',styles:[O3e(),G3e()]}),wt("design:paramtypes",[tn])],x9);function Kp(t,e){return Math.floor(Math.random()*(e-t+1)+t)}const D9="gridState";let f9=class{constructor(e){this.translate=e,this.title="Example 16: Grid State & Presets using Local Storage",this.subTitle='\n Grid State & Preset (Wiki docs)\n
\n
    \n
  • Uses Local Storage to persist the Grid State and uses Grid Options "presets" to put the grid back to it\'s previous state
  • \n
      \n
    • to demo this, simply change any columns (position reorder, visibility, size, filter, sort), then refresh your browser with (F5)
    • \n
    \n
  • Local Storage is just one option, you can use whichever is more convenient for you (Local Storage, Session Storage, DB, ...)
  • \n
\n ',this.subscriptions=[],this.selectedLanguage=this.translate.getDefaultLang()}angularGridReady(e){this.angularGrid=e}ngOnDestroy(){Bc(this.subscriptions)}ngOnInit(){const e=JSON.parse(localStorage[D9]||null);this.defineGrid(e);this.translate.use("en"),this.selectedLanguage="en"}clearGridStateFromLocalStorage(){this.angularGrid.gridService.resetGrid(this.columnDefinitions),this.angularGrid.paginationService.changeItemPerPage(25),setTimeout(()=>localStorage[D9]=null)}defineGrid(e){const a=[];for(let u=0;u<500;u++)a.push({value:u,label:u});this.columnDefinitions=[{id:"title",name:"Title",field:"title",nameKey:"TITLE",filterable:!0,sortable:!0,type:w.string,minWidth:45,width:100,filter:{model:re.compoundInput}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,width:100,type:w.string,filter:{model:re.input}},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:w.number,exportCsvForceToKeepAsString:!0,minWidth:55,width:100,nameKey:"DURATION",filterable:!0,filter:{collection:a,model:re.multipleSelect,filterOptions:{maxHeight:250,width:175}}},{id:"complete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",minWidth:70,type:w.number,sortable:!0,width:100,formatter:O.percentCompleteBar,filterable:!0,filter:{model:re.slider,operator:">"}},{id:"start",name:"Start",field:"start",nameKey:"START",formatter:O.dateIso,sortable:!0,minWidth:75,exportWithFormatter:!0,width:100,type:w.date,filterable:!0,filter:{model:re.compoundDate}},{id:"completed",field:"completed",nameKey:"COMPLETED",minWidth:85,maxWidth:85,formatter:O.checkmarkMaterial,width:100,type:w.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:re.singleSelect,filterOptions:{autoAdjustDropHeight:!0}}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableCheckboxSelector:!0,enableFiltering:!0,enableTranslate:!0,i18n:this.translate,columnPicker:{hideForceFitButton:!0},gridMenu:{hideForceFitButton:!0,hideClearFrozenColumnsCommand:!1},headerMenu:{hideFreezeColumnsCommand:!1},enablePagination:!0,pagination:{pageSizes:[5,10,15,20,25,30,40,50,75,100],pageSize:25}},e&&(this.gridOptions.presets=e),this.dataset=this.getData(500)}getData(e){const a=[];for(let u=0;u