From 4f3303b2d870c3347037e1f1d0b054abed2bf200 Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Mon, 16 Dec 2024 22:15:52 +0000 Subject: [PATCH] deploy: 9255f0bb856332c381c209c3b17c0f65555a227e --- assets/angular-logo2.png | Bin 0 -> 10419 bytes index.html | 2 +- ...9765adf0971b2.js => main.8ee185f5f430f413.js | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 assets/angular-logo2.png rename main.b4b9765adf0971b2.js => main.8ee185f5f430f413.js (99%) diff --git a/assets/angular-logo2.png b/assets/angular-logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f07ca9298e734ea37535aed7896d535f3cd4dd GIT binary patch literal 10419 zcmYLP2Q*w=*Ct}rL6l$&iRdNj7(*n8E=CC<5(%Qsh&FnQ=)HGibVigQQ9=@(QD>sJ zAQ&||ArX@Kz3=yb>pN@Rv)gm_Id|W^@49QR8)K-i1*8Shl97=Cb+pwVl97>fU0&kU z6qlNw_zeIV*_GdhdL|lLZhEsk?@z>f&u85JW= z2#@XDD7cUykfdk+NRDT*?T(8PzusO>W!c-~ExLq_2u}@(tPb*YPH~iP3bg#bJ@`j* zf+RiL%(uBJH1J1qY)`1^_wD{k@fDKv^rb_*=<0yT8cukvVI;%hnRsI$ z_2E~M{t&uLe8)HOp)lalg=8DyX8VE&Zdt7NkL0JXqWzbfx>NihinM!PJw6q!J(u_t zKz%$f-04eod?J{?F5Gf1@!^s=5__{od%$NBC0Wx)@dg75bP zD=(e6lK+_EZ~Y}!xh+sN#@{)3qm97%_DuZkGXFczt4B^`C%?t(_POKN_^K{3yZmLd zw;IoGH~bVWU%OfQLm>N9r09SzpK$Z@*o~%dH!9|C)^79W@83v05zhM|ko7|_=YThR z0{r%vFMWdtv&@yZ!;`rHE}r2kAK?1X!%+HDq?Ew*?gwwu0Z-B{(0m7+vd)#+0W3eg z8S{fDx|hC?K$|*5m)Q=iIA%f2(**6)n;df>ezM!0vc5P3+U(FF*QlLVsa;p7-Iu7n z7ODN_sRC!IgQuy(CuyR_X<|od68q_LJAq~U^oD!atoP}SkFMLCvONF6@O*;`xlQ$A zm+ILTmEAto(;X_SV-|~jI`}@V{^>RIAN1x2tk3sp;0IKXPZ>;(m`snT9_?K-Kc;$k z$Y68=H2gtru*>*ppXR{{jqVAJ-Vxn{QyQ&Zpus+k&K`~SF}21wYVQNU{X8G?xXWVr z1k0#iVyzba`zxsLyX_$AB#CC&}igURtmhhG2r?9SBK>ByoTTd*KBuUx# zj{YMLUXtzqu$S{p6e*8nNFuqDNZ(1M_y5uFWC6U%m|3#YpJ6}5ee~SCZ=YL1hKaAKv#`8<&Z*k%9e=Yx`>N|n|6D%7p`RxD6 zOaHP5B+{~q94eEHjQ^#Mx~hpU`Fz%7=C%|)8Mkm)nC@V<`0-!Thi4V1Ept2Dl}maH z(_LT@k7|j?4XWjD%BADLM?;%_L9eA)e-&Cm_WUd1dXeKHiGo)OScQ;^d-iX0a+IP~ zUQ+Yld%!00knqIXq3v;v)!WABYr3Htsmud{do3>ZpXRsZD#;(yzIu@YN_`=1w#U53 zh|uIK^q~{z_D%;S>b&!kdy+2L+T>^@(r~5q>=(b_-IY#6L=6@RcdVpsSai-{T}bg# zgJpZ_j-v~6I_1IZ?zxKkN#f--d9kLh*R0Twfx$dGl*(-{Ta!6gYDy6b>4IHKNGsq7 zBjtjxfCSqR@0|hrQ4fB2HGom(AcJ4+xiGWGl@d80UU>L!8fR{W(8qdn>CY_oV1)G*<*dnrq4HtvY)-tfw_X3 zEFF%&GDYsdK0jQIEMGtAIp3Zp%B3xqAZlaQC+avuU2}>(wW@JS&i(Y<+v_1awq`PE z9%ztbva5IZ2R-w3QuYT%Y=6RS+77sILylpo{DET{pF)hzD*d)Vw^Z&pi3Gg&RzYCF z(R_SdR(r*%@<;w|ZQ|ae4?7O;C0OCK^q5g>spnOoTRmK?z-r!>!9F{9mol2hVJ-h$CYM_*p z66g#{N>3V!@sw4z{d~kJQdR4jT%8PeTAOO1Kg*&MG_tMu>Sb=8S{!K(2?G3ojkd*@Wd z)K&cYx}axWgW?nTHY$_y{)uFE@1TBbZKm<-BvsgsR zeQ2jQJVsI)MdlDqpxMR6j6Dc&OX#igH9M2yz^*B@$>f`*BpR23jJzgJ!Y^U7a$@bgy8e}kOzQj zAD68iR@P_eu#Cl{A<3PR7@7LPekWKoyA$Lo4Wxg$bM!E<^OTJc63Liup8MyIkm#pE z819O}6T@6Mf`RcTLtO*y-h-!+GEVrK#NgRJ$$Xjm7j+&MYqxqAjeJJ8nF(MCJS3 zz}D&5G3ROJn{i&ClLSG(t|9%^aF1n#03NCCp^JWnk&#W9zGF9qO`EzoqHyP-fDdT! zSLv*r?I}tj#p`#bmvb_L`NOX#EU)t+!@a$0vl;&LBKR$&O8x7PNmmtNcJ_HS6~9tr zvvB%hn`2iM9@gfS*XgKnDhI2&DWv$(zN)&?S9%RPKqs2ci}%vNH^3>bU(maIcznEp zySSP^8e^>gVh*hMiIg62n#;_O| zUI)z#SD7U}{ggT*kdUrw)ioH{!)T$unzJY}j@_LK{Ot*OBl!F)qUTec>&O9;)~(~1 z^D-=Pe2H{VqhI;t*2haLTXxJ=(BYxK z>?dHFn|F%XbD^u;j);gX5o~^26kj?@&VXpUXVlUcz}Y%Kf^()#1Nc#W*Me)|C4!Q1 z!U=`s^e>+4uX?WZ3?&$G`GDq@Zn``(#B^ha`;tyTcFC^QaDpFaLC+MW0D}7X&-qUq zYa3)j22ROt-FwACR_NW=JwbfAN1251nzHfH8g8vI5)$3yH&*buP#1ccfQ>mOjQkNA z7Xcf<+=DfowNJgAa$EZ}w1fsy7QMcnE^`z@YnNPGAjA`oACr;y{iWR^E<6_ayRkI= zJC7VPoW98z!Dq*$8kSu?Y+--_qPfkv&X*sK-E3daSP{?&oJbG+_BrJZ7bIQvUi-%a zYm|WyArhaN-J|2P{$4Jf9OzET_55KrZ?|bGbCF@9%e^ubq#x3vCQMCp9_SpV>jknJo zn`vBrm&jXkpi|B9&zLU`BP!V3^&)tQhr+Ufi5GT?bokkA5GR^2iDpI5`Ecjz_|VqJ zYlInf!|qdXls=#KyYiDNESA8vK_%m2tFyLHn4H7;vG~9(gb!khER{08XFWxzm&IP^{jJod5~x^HNQ#^ z1!*=z5R0xE+W_=r_rtdi!SngukqP@>v7wS~*^$;NY4o6?fourIa4mi7e4O0DaKmG4 z+ucaKao~e$2o`$W+Lr?W&Ni0_=3-rrOtu*ByI#dq5|no*4fLG#Z;SM=78P-Do!Q-} z77ExP6sumIT2z(QO+q*iChhzN`o8qY$?(N-ZXYL?6vUDi-gXi${7m1XMzf=(w0^7g zaKJ2_0_|#@RuFmgI>{K6%!|pzN+3n=hOh(SOa_~*8#ptpyo}3{vteNlQH-{&lnLEn zTD zEuTk+sYke!H(*^xAzt|%uh2buEWN7WtM!z5D}l*ij^QY-8aVXwkv00w=waAFDLPL) z(mYQ6X%(IrEcL$0V2$!k|M-hks|ZmJe2Ig*fCjs~0yohOPr9Y}yDb+#1<1aIBqJl^ z6uDf^EW)p%^pvwa?H_-mawl9oa(aL2GSY!HaN3cSUlDWk%^4Dg*SD1Z$W$2B_Gj^M z1(oO~5x-e!{OOV5kUv9YX5Hw(zMe1Y488wS2HB;NXN*;zx&;akU@=SQ>1#jF3=^Qt z-D!P_Sm&`yd>*8Opr?OAj0d4Y=ttj7V%z6p3t9S%^eUd4`h$ItJ-9Medf-~YHStri z>@G__P0c2kTtNuZJzYQNZ^ZSXhSWvF*!;1Wv}sl?Z?}HiCR`KBEKLO1cN=JxoLcT# zFKZHsy)Ll}U8$~1Ah2aAAK`?a5d|6H=kko4Lt12adtV^IvzX#mYzEB;dcOGf=wSke7ET z4YvGL5#ANB$HwXJ(Tp{{BFdeY9Axn#MAI{~dTxh319~thI;L3X zucp|o+k2rr+n-uI1BC+LPv^Jq@v{7k(41lsNH^k>dBDw~>tR#@&0;rWOw(wLTQ@{C zaX2&;daYbcPH5ub-xq=C*1K(O(pjvY!J)%=Ei5ECMFk+mU*G;(wF0WqUkDQqJ1BM( zhC@j5P1a!ZhZOXsJ`Go>66 z1eJBmQ+%*M%@2QKEvbF2E41Uj?EtkQmMmDM!@%g8>SLy0+*pm_4CPGSZM**X$sQ-u zl3Y$=w$Y^Y=w|k)w5eC)J7?u5Up)3?_vigKK9;$W4dOj&f`V_fd+cF|Z`{_6j!mE1 z7wD}(^BiKeKGLp>zpskFd~d!U{?>TWtnc3(2<|dsiC?NE@msA%;d~*I_89ol zmv&3t!Vr1t9&*fD`vpQSp|AZ1QFHkM46-fuSf>JgGvY5nB=-p$X!=)Xdq71bZi|3d zXMcWy1XH+PhnJ(imHJXZ+I93+SY_1fmu8zuBxh=Xh74^a0wQ@t5LB}y2M$n!q&IYi zHMhj+xT=(4&DMn}J(ksptvYJm^gc6IGrxH0Arpe?C3C|kcXHD+`FoD(DV;y|m_HBN zs@7-YkY`352l%H!BT^zFP}BM`1SYsPu4FX*ZNt_%Uw>h;ZgDx8gV9p7f~Jr}G*NkB zJ|WWfx~Zn(1N@B{BUQB&`cbLN*hr892jYxF6xa+L4hL2WC=+~byjEiO{>-&^4XnFB zYJJ;OkKB88x#jXAUzlzTJ#y&5ZjM%Wa;X{@$p=%Q$TsL4(rI>uC5&~TfVOnmnl~ zp8dmLk!iVAlUEekLinyJZnsrs3RtS!a|u~4+j>xe>b4B(c(ZF`?1}F(H3xb`vgjn- z1#|ouWaR9^@|j`MoX(=@#j4erqFG!-i83eq_O+V~BRA7pddlloSr?O!riO_jko)#t zC%wtCx~k1ixD}^fPtg|)@1J+}m|I%N7vNe_BtLylNrJYPXv(g0fJLGyZ4X93iReeQ z@KN3U&Rr0N;>%FLy2%UJ_K^}VT4M+~uS_FDJ(3KM7PLLC;^*YxW9*t{X{OG3R7F&0 z9pGQo83~b3jU8FO%x*7#nG8Lh=VU_;1Ub6w9Me8HUgT_qM*2#n z%syHw36U>626)n!qac_-cu`pg&R`h=trr{YNw=R5#35#;>faAK+{ zb+N8$v7z_fSr~=P@&}Pod+$?`C$Wh8&|!!7w}KzY+_&Si@16k*C8t`=#wDPT`AeF1M~xH`!5p4GFMK{}_?#p$m^-9D+j12g)yYIkvkPR$ZJm_NKdU5ig- zk+7U513JF69HHi9?LBn6$zV@NYWLLiJ9rj~AAD`kf>#QhkI<~7cUA(07`xkRz5T7q zJ)3nSL=7e7-T`pCnh3J8V|nga=0o(b{kJ5*av!>!0A%WN6Em;+ZqPpJ?V? zgQ3U?Xr*1G1vxi2jH9oZ@JiOXuT7&6_}m!jgzb-{!t|-D$q4JJIS)4thxh=yW~W2t zh0FNdm`*hDMrEAGVczjBn&)MU6s1l&B%%5XQ^Imcz4$w>v!$fy`j>^*co;aT@Z0rF;X z14+FqX*m1p07)$5VLVm+nZL(4Vo06#N~GI&t#d8g65CT%0HsX-?||fMP~D9-S=OlA zY)L%hFBo}zk5_-u+%9x+o|mA`J`n22(!|oyk=t^w-n8H) z6dkICM{;wA=+W68fU98TPs>BsyT7(Fc4@|r|8nyAS*!5Lm~yr>PIexzIW2@w%>pch zW6bgv_yL@LD-EZI$pq08s%2HlUeztosX;R_}J+l3#32QN0Uc=1e1k%1o)s6x!z!S zPD^D~TA^Rautd%6Tf(vt>b9eA;o^C!kNO2yBc;JvhwY3s1M9aS)Rd)lj#5eZXas21r`xwXPA&g6g7=}ES z2oF)Wdt?Nvks|qr_CgZu31zWqU4m#oRY=gtO%Ic3M$9s+?EiKnz2e`P)xTeI>sd}Ki zn_j{a&V|N%X$bNXAVcVUelo}K+1YY@{T;_=-tLt5Za*sbf_o+21xr(%1(PLsW9@eZ5fz?8z}hkst{dYNh0X5Ck%@*%KkD-Vx_)AdyV;yy|#*9!DCHqE=(Eu{|m#cEe* ztU|G#^`7^A2(8uxIXF26PmY10v@fe=DBK||B&_ruN~8F&MAOC_(_s|%xU{B02{QwZ z?iS7)FNLw^VY_06gy&&uC_xJ!+T5TiL(Zqpw{m*!U0FZYboU$4Apr`obJek5~Y$Y)Uq{GfNNL$COu zkS`;gIO+={G0BiFn8wL-UgvQd5UG;p$@@jqh2UNg}$z;=WMN}Om@ z>fx(9HqEGqn1jGDK1wcH1(iBG`6a4h@u$ag80T`!YFn=&?Hu zisz(mU`rCl9$FcfPD>wuMEOsw+Df#gd6m+pU7>dIF)?iBEnvRW$Z}bf&e8l<6 zl{>FVpI>`Th}Pvq{{L7Yh2ag4N57D+wrle&v*4D(;D*P6Rn7<7B```|>)l zk5p0Uk`f{@jhL1;K0aPwe|#JlHzan@&8Qr@y}iBP-rjOX6Zqb)9WCzyl%{sjpzE=! zxP^hPG(E!?iM@COaNmq{CkSt(x&)25&?@XZ2j>=KId)so%VsxGsKD~+?1=_w`j@SuqsU43{P~P0)V*YL(-EM=n}C1L9HLmrc?-{D2q%V-~Gv3Ua|(x=~Z}L3iJMkll*|_C5~#_ zDP>Y#i*;c7K1WT#Z-t6{h`ASQJXn*F6#|Yfp=)J&`B z;Xe30&*-7ME7{{ZaQv=H9TTlAD$Pe{pPdh4&`4}Hx5NNj5`12VF-<>UiVb1MG1@h- zX|5(q#l8sZv?>I&K2j*lZS0+GdW0YH8M`h)U&Jll!y2*dMu}p*iHf#lbqKy%rzW3n zTn@wLx}G|{$_QoByq*~Lt4Kv*q;r$^P}fz{)A$oiS$t^r!%0cz22zeJ?pI7SjRu^9 zvqx`0n8#XJ>#MoDaS5!zY1W@bh?#*VB3x`m9h^4PKmmxrw3}dl?p(al5Mo=pdfDjD zoGfLckQB+Yh52DNN-*B)1WREC%gTQcynlK|jG3gf#~z4sIoi6Xq-D7euS^6GKfgO- zncjPq+KlCR!`b}+*YNWQAb+Y-`6~j zAYYPAE=CBJl8F%o&G{fxX6ZB)9q4)}8@-yCJ4C_ez!0-%DU#?_(A<-l*z;ijPsW zo0~SrG%^j5VbRxb3+9%gXZ23Q(BRIXQdpyMVw=lsl?k1udQvtGFO{(feU3eX=G9FO zu$1b$hjz}CIAP!ho5Pp)x!Jmd3)kYDc|$bY6sShW~z>9gNsqjI_xoAxHbwW{s0Xm%`}L{ieW-c&F-SBI*% zA%@>M5CY)9NSQMY+S@W{f|O`|dNo}n^jF<~Tu5=Ucsw2!nP0mPD}1qip8?J?XNdXr z)?X2N&zIvv3+oq3fY~RxaP2FcsV&2B{^k3q%EimdDj7HN=j%D#eb9kprSg?wk};t* zkKxC{=T}@3u{flx!2~%xmd36MAdWW?Xp>eDyI^LJ6E_bPFT~Pl^sTasmGHrsr-{#>MHcHA-_g+M zbr*3{=~Y^Kf0cbDj=1Dh5B}qc`#f4&!5xgOBcqpa)|4d2Cf=W7bNIc!w)w>@8q0M} z^N!qg3pt(ys`A9KmO%<)5BtW+(UsyY_3-gT1DvM3ZRYFchFIAwHca%&g_U|*oA;cp zc-DJyxkwupOK{y*I0Cl&3o-aRn86jyD&(l}yH%~&x`7yiWVQqc^-Xe*9=P7&;V58y z3U0x|epaK}UeRcb-`yo6ycQ<>+F>f&a>IC!aK^JQ*uqiJTG8jONh;XwPAyYT&Fw;% zQB^D#ANqL@l1jzf1XH_k9axf=$L0_i$qg@f(a=2}^K0cQI2!A7EyUZi8O zPt&-xgd3rD2XzhgMKCp%%d^S#h9Dxj&zo3SsSq;J_M6v6^dEy?EFvPSxocrn#j`K_ y*c>F$lS$$a`_b~~R&UlrSI9ZoV2l}m - + diff --git a/main.b4b9765adf0971b2.js b/main.8ee185f5f430f413.js similarity index 99% rename from main.b4b9765adf0971b2.js rename to main.8ee185f5f430f413.js index e27c21c1..1dffb199 100644 --- a/main.b4b9765adf0971b2.js +++ b/main.8ee185f5f430f413.js @@ -1 +1 @@ -(self.webpackChunkangular_slickgrid=self.webpackChunkangular_slickgrid||[]).push([[792],{274:le=>{le.exports=function(it){var z={};function ae(Q){if(z[Q])return z[Q].exports;var q=z[Q]={i:Q,l:!1,exports:{}};return it[Q].call(q.exports,q,q.exports,ae),q.l=!0,q.exports}return ae.m=it,ae.c=z,ae.d=function(Q,q,Rn){ae.o(Q,q)||Object.defineProperty(Q,q,{enumerable:!0,get:Rn})},ae.r=function(Q){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(Q,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(Q,"__esModule",{value:!0})},ae.t=function(Q,q){if(1&q&&(Q=ae(Q)),8&q||4&q&&"object"==typeof Q&&Q&&Q.__esModule)return Q;var Rn=Object.create(null);if(ae.r(Rn),Object.defineProperty(Rn,"default",{enumerable:!0,value:Q}),2&q&&"string"!=typeof Q)for(var no in Q)ae.d(Rn,no,function(To){return Q[To]}.bind(null,no));return Rn},ae.n=function(Q){var q=Q&&Q.__esModule?function(){return Q.default}:function(){return Q};return ae.d(q,"a",q),q},ae.o=function(Q,q){return Object.prototype.hasOwnProperty.call(Q,q)},ae.p="",ae(ae.s=1)}([function(it,z,ae){var Q=ae(2),q=ae(3),Rn=ae(4);it.exports=function(no){return Q(no)||q(no)||Rn()}},function(it,z,ae){"use strict";ae.r(z),ae.d(z,"sparkline",function(){return $t});var Q=ae(0),q=ae.n(Q);function Rn(oi,Gi,Yt,we){return parseFloat((Gi-we*Gi/oi+Yt).toFixed(2))}function no(oi){return oi.value}function To(oi,Gi){var Yt=document.createElementNS("http://www.w3.org/2000/svg",oi);for(var we in Gi)Yt.setAttribute(we,Gi[we]);return Yt}function $t(oi,Gi,Yt){var we;if(we=oi,q()(we.querySelectorAll("*")).forEach(function(Or){return we.removeChild(Or)}),!(Gi.length<=1)){Yt=Yt||{},"number"==typeof Gi[0]&&(Gi=Gi.map(function(Or){return{value:Or}}));var vh=Yt.onmousemove,si=Yt.onmouseout,Tc="interactive"in Yt?Yt.interactive:!!vh,Il=Yt.spotRadius||2,sa=2*Il,Ay=Yt.cursorWidth||2,Ll=parseFloat(oi.attributes["stroke-width"].value),Ty=Yt.fetch||no,za=Gi.map(function(Or){return Ty(Or)}),Im=parseFloat(oi.attributes.width.value)-2*sa,Ga=parseFloat(oi.attributes.height.value),Mc=Ga-2*Ll-sa,Pd=Math.max.apply(Math,q()(za)),Ds=-1e3,Lm=za.length-1,bh=Im/Lm,aa=[],yh=Rn(Pd,Mc,Ll+Il,za[0]),$a="M".concat(sa," ").concat(yh);za.forEach(function(Or,es){var As=es*bh+sa,la=Rn(Pd,Mc,Ll+Il,Or);aa.push(Object.assign({},Gi[es],{index:es,x:As,y:la})),$a+=" L ".concat(As," ").concat(la)});var I1=To("path",{class:"sparkline--line",d:$a,fill:"none"}),Om=To("path",{class:"sparkline--fill",d:"".concat($a," V ").concat(Ga," L ").concat(sa," ").concat(Ga," Z"),stroke:"none"});if(oi.appendChild(Om),oi.appendChild(I1),Tc){var Wa=To("line",{class:"sparkline--cursor",x1:Ds,x2:Ds,y1:0,y2:Ga,"stroke-width":Ay}),Ol=To("circle",{class:"sparkline--spot",cx:Ds,cy:Ds,r:Il});oi.appendChild(Wa),oi.appendChild(Ol);var Rl=To("rect",{width:oi.attributes.width.value,height:oi.attributes.height.value,style:"fill: transparent; stroke: transparent",class:"sparkline--interaction-layer"});oi.appendChild(Rl),Rl.addEventListener("mouseout",function(Or){Wa.setAttribute("x1",Ds),Wa.setAttribute("x2",Ds),Ol.setAttribute("cx",Ds),si&&si(Or)}),Rl.addEventListener("mousemove",function(Or){var es=Or.offsetX,As=aa.find(function(Rm){return Rm.x>=es});As||(As=aa[Lm]);var la,Ch=aa[aa.indexOf(As)-1],Pl=(la=Ch?Ch.x+(As.x-Ch.x)/2<=es?As:Ch:As).x,My=la.y;Ol.setAttribute("cx",Pl),Ol.setAttribute("cy",My),Wa.setAttribute("x1",Pl),Wa.setAttribute("x2",Pl),vh&&vh(Or,la)})}}}z.default=$t},function(it,z){it.exports=function(ae){if(Array.isArray(ae)){for(var Q=0,q=new Array(ae.length);Q{"use strict";var ae={};z.r(ae),z.d(ae,{BackendUtilityService:()=>x$});var Q={};z.r(Q),z.d(Q,{collectionObserver:()=>S_,propertyObserver:()=>RA});var q={};z.r(q),z.d(q,{CancelledException:()=>A_,addTreeLevelAndAggregatorsByMutation:()=>T_,addTreeLevelByMutation:()=>PA,cancellablePromise:()=>D$,castObservableToPromise:()=>y6,decimalFormatted:()=>_c,findItemInTreeStructure:()=>gm,findOrDefault:()=>rh,flattenToParentChildArray:()=>A$,formatNumber:()=>wn,getCellValueFromQueryFieldGetter:()=>M_,getColumnFieldType:()=>I_,getDescendantProperty:()=>Wn,getTranslationPrefix:()=>Fl,getTreeDataOptionPropName:()=>fr,isColumnDateType:()=>ih,mapOperatorByFieldType:()=>L_,mapOperatorToShorthandDesignation:()=>Qb,mapOperatorType:()=>M$,objectWithoutKey:()=>I$,thousandSeparatorFormatted:()=>nh,unflattenParentChildArrayToTree:()=>T$,unsubscribeAll:()=>O_});var Rn={};z.r(Rn),z.d(Rn,{addToArrayWhenNotExists:()=>j$,addWhiteSpaces:()=>ey,arrayRemoveItemByIndex:()=>k6,calculateAvailableSpace:()=>R_,classNameToList:()=>Oi,createDomElement:()=>O,deepCopy:()=>q$,deepMerge:()=>b1,destroyAllElementProps:()=>C6,emptyElement:()=>ui,emptyObject:()=>K$,extend:()=>en,findFirstAttribute:()=>P_,findWidthOrDefault:()=>oh,getFunctionDetails:()=>_6,getHtmlStringOutput:()=>Un,getInnerSize:()=>NA,getOffset:()=>kn,getOffsetRelativeToParent:()=>L$,getStyleProp:()=>O$,htmlEncode:()=>R$,htmlEncodeWithPadding:()=>N$,htmlEntityDecode:()=>P$,insertAfterElement:()=>B$,isDefined:()=>ri,isDefinedNumber:()=>y1,isEmptyObject:()=>E6,isNumber:()=>pt,isObject:()=>fm,isObjectEmpty:()=>Y$,isPrimitiveOrHTML:()=>C1,isPrimitiveValue:()=>N_,parseBoolean:()=>HA,removeAccentFromText:()=>ty,setDeepValue:()=>Ko,stripTags:()=>_n,titleCase:()=>Qs,toCamelCase:()=>VA,toKebabCase:()=>iy,toSentenceCase:()=>kd,toSnakeCase:()=>Zae,uniqueArray:()=>Z$,uniqueObjectArray:()=>Jae,windowScrollPosition:()=>w6});var no={};function To(i,e){return Object.is(i,e)}z.r(no),z.d(no,{sortByFieldType:()=>ry});let $t=null,oi=!1,Gi=1;const Yt=Symbol("SIGNAL");function we(i){const e=$t;return $t=i,e}function vh(){return $t}const Il={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 sa(i){if(oi)throw new Error("");if(null===$t)return;$t.consumerOnSignalRead(i);const e=$t.nextProducerIndex++;if(yh($t),e<$t.producerNode.length&&$t.producerNode[e]!==i&&aa($t)){bh($t.producerNode[e],$t.producerIndexOfThis[e])}$t.producerNode[e]!==i&&($t.producerNode[e]=i,$t.producerIndexOfThis[e]=aa($t)?Lm(i,$t,e):0),$t.producerLastReadVersion[e]=i.version}function Ll(i){if((!aa(i)||i.dirty)&&(i.dirty||i.lastCleanEpoch!==Gi)){if(!i.producerMustRecompute(i)&&!Pd(i))return i.dirty=!1,void(i.lastCleanEpoch=Gi);i.producerRecomputeValue(i),i.dirty=!1,i.lastCleanEpoch=Gi}}function Ty(i){if(void 0===i.liveConsumerNode)return;const e=oi;oi=!0;try{for(const t of i.liveConsumerNode)t.dirty||Im(t)}finally{oi=e}}function za(){return!1!==$t?.consumerAllowSignalWrites}function Im(i){i.dirty=!0,Ty(i),i.consumerMarkedDirty?.(i)}function Ga(i){return i&&(i.nextProducerIndex=0),we(i)}function Mc(i,e){if(we(e),i&&void 0!==i.producerNode&&void 0!==i.producerIndexOfThis&&void 0!==i.producerLastReadVersion){if(aa(i))for(let t=i.nextProducerIndex;ti.nextProducerIndex;)i.producerNode.pop(),i.producerLastReadVersion.pop(),i.producerIndexOfThis.pop()}}function Pd(i){yh(i);for(let e=0;e0}function yh(i){i.producerNode??=[],i.producerIndexOfThis??=[],i.producerLastReadVersion??=[]}function $a(i){i.liveConsumerNode??=[],i.liveConsumerIndexOfThis??=[]}function I1(i){return void 0!==i.producerNode}function Om(i){const e=Object.create(Or);e.computation=i;const t=()=>{if(Ll(e),sa(e),e.value===Rl)throw e.error;return e.value};return t[Yt]=e,t}const Wa=Symbol("UNSET"),Ol=Symbol("COMPUTING"),Rl=Symbol("ERRORED"),Or={...Il,value:Wa,dirty:!0,error:null,equal:To,producerMustRecompute:i=>i.value===Wa||i.value===Ol,producerRecomputeValue(i){if(i.value===Ol)throw new Error("Detected cycle in computations.");const e=i.value;i.value=Ol;const t=Ga(i);let n;try{n=i.computation()}catch(r){n=Rl,i.error=r}finally{Mc(i,t)}e!==Wa&&e!==Rl&&n!==Rl&&i.equal(e,n)?i.value=e:(i.value=n,i.version++)}};let As=function es(){throw new Error};function la(){As()}let Pl=null;function Mo(i,e){za()||la(),i.equal(i.value,e)||(i.value=e,function cI(i){i.version++,function Ay(){Gi++}(),Ty(i),Pl?.()}(i))}const FE={...Il,equal:To,value:void 0};function ai(i){return"function"==typeof i}function wh(i){const t=i(n=>{Error.call(n),n.stack=(new Error).stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}const Nm=wh(i=>function(t){i(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((n,r)=>`${r+1}) ${n.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=t});function L1(i,e){if(i){const t=i.indexOf(e);0<=t&&i.splice(t,1)}}class Bi{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:t}=this;if(t)if(this._parentage=null,Array.isArray(t))for(const s of t)s.remove(this);else t.remove(this);const{initialTeardown:n}=this;if(ai(n))try{n()}catch(s){e=s instanceof Nm?s.errors:[s]}const{_finalizers:r}=this;if(r){this._finalizers=null;for(const s of r)try{Iy(s)}catch(a){e=e??[],a instanceof Nm?e=[...e,...a.errors]:e.push(a)}}if(e)throw new Nm(e)}}add(e){var t;if(e&&e!==this)if(this.closed)Iy(e);else{if(e instanceof Bi){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=null!==(t=this._finalizers)&&void 0!==t?t:[]).push(e)}}_hasParent(e){const{_parentage:t}=this;return t===e||Array.isArray(t)&&t.includes(e)}_addParent(e){const{_parentage:t}=this;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e}_removeParent(e){const{_parentage:t}=this;t===e?this._parentage=null:Array.isArray(t)&&L1(t,e)}remove(e){const{_finalizers:t}=this;t&&L1(t,e),e instanceof Bi&&e._removeParent(this)}}Bi.EMPTY=(()=>{const i=new Bi;return i.closed=!0,i})();const Ic=Bi.EMPTY;function _e(i){return i instanceof Bi||i&&"closed"in i&&ai(i.remove)&&ai(i.add)&&ai(i.unsubscribe)}function Iy(i){ai(i)?i():i.unsubscribe()}const Lc={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Cr={setTimeout(i,e,...t){const{delegate:n}=Cr;return n?.setTimeout?n.setTimeout(i,e,...t):setTimeout(i,e,...t)},clearTimeout(i){const{delegate:e}=Cr;return(e?.clearTimeout||clearTimeout)(i)},delegate:void 0};function li(i){Cr.setTimeout(()=>{const{onUnhandledError:e}=Lc;if(!e)throw i;e(i)})}function Yr(){}const Oc=Bl("C",void 0,void 0);function Bl(i,e,t){return{kind:i,value:e,error:t}}let Io=null;function Yn(i){if(Lc.useDeprecatedSynchronousErrorHandling){const e=!Io;if(e&&(Io={errorThrown:!1,error:null}),i(),e){const{errorThrown:t,error:n}=Io;if(Io=null,t)throw n}}else i()}class Hl extends Bi{constructor(e){super(),this.isStopped=!1,e?(this.destination=e,_e(e)&&e.add(this)):this.destination=pI}static create(e,t,n){return new ca(e,t,n)}next(e){this.isStopped?R1(function kh(i){return Bl("N",i,void 0)}(e),this):this._next(e)}error(e){this.isStopped?R1(function ft(i){return Bl("E",void 0,i)}(e),this):(this.isStopped=!0,this._error(e))}complete(){this.isStopped?R1(Oc,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 Zn=Function.prototype.bind;function Eh(i,e){return Zn.call(i,e)}class O1{constructor(e){this.partialObserver=e}next(e){const{partialObserver:t}=this;if(t.next)try{t.next(e)}catch(n){Rc(n)}}error(e){const{partialObserver:t}=this;if(t.error)try{t.error(e)}catch(n){Rc(n)}else Rc(e)}complete(){const{partialObserver:e}=this;if(e.complete)try{e.complete()}catch(t){Rc(t)}}}class ca extends Hl{constructor(e,t,n){let r;if(super(),ai(e)||!e)r={next:e??void 0,error:t??void 0,complete:n??void 0};else{let s;this&&Lc.useDeprecatedNextContext?(s=Object.create(e),s.unsubscribe=()=>this.unsubscribe(),r={next:e.next&&Eh(e.next,s),error:e.error&&Eh(e.error,s),complete:e.complete&&Eh(e.complete,s)}):r=e}this.destination=new O1(r)}}function Rc(i){Lc.useDeprecatedSynchronousErrorHandling?function _h(i){Lc.useDeprecatedSynchronousErrorHandling&&Io&&(Io.errorThrown=!0,Io.error=i)}(i):li(i)}function R1(i,e){const{onStoppedNotification:t}=Lc;t&&Cr.setTimeout(()=>t(i,e))}const pI={closed:!0,next:Yr,error:function hI(i){throw i},complete:Yr},Nd="function"==typeof Symbol&&Symbol.observable||"@@observable";function ja(i){return i}function xE(i){return 0===i.length?ja:1===i.length?i[0]:function(t){return i.reduce((n,r)=>r(n),t)}}class ci{constructor(e){e&&(this._subscribe=e)}lift(e){const t=new ci;return t.source=this,t.operator=e,t}subscribe(e,t,n){const r=function gI(i){return i&&i instanceof Hl||function Vl(i){return i&&ai(i.next)&&ai(i.error)&&ai(i.complete)}(i)&&_e(i)}(e)?e:new ca(e,t,n);return Yn(()=>{const{operator:s,source:a}=this;r.add(s?s.call(r,a):a?this._subscribe(r):this._trySubscribe(r))}),r}_trySubscribe(e){try{return this._subscribe(e)}catch(t){e.error(t)}}forEach(e,t){return new(t=Ly(t))((n,r)=>{const s=new ca({next:a=>{try{e(a)}catch(d){r(d),s.unsubscribe()}},error:r,complete:n});this.subscribe(s)})}_subscribe(e){var t;return null===(t=this.source)||void 0===t?void 0:t.subscribe(e)}[Nd](){return this}pipe(...e){return xE(e)(this)}toPromise(e){return new(e=Ly(e))((t,n)=>{let r;this.subscribe(s=>r=s,s=>n(s),()=>t(r))})}}function Ly(i){var e;return null!==(e=i??Lc.Promise)&&void 0!==e?e:Promise}ci.create=i=>new ci(i);const da=wh(i=>function(){i(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});class mi extends ci{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){const t=new Pc(this,this);return t.operator=e,t}_throwIfClosed(){if(this.closed)throw new da}next(e){Yn(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const t of this.currentObservers)t.next(e)}})}error(e){Yn(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;const{observers:t}=this;for(;t.length;)t.shift().error(e)}})}complete(){Yn(()=>{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:t,isStopped:n,observers:r}=this;return t||n?Ic:(this.currentObservers=null,r.push(e),new Bi(()=>{this.currentObservers=null,L1(r,e)}))}_checkFinalizedStatuses(e){const{hasError:t,thrownError:n,isStopped:r}=this;t?e.error(n):r&&e.complete()}asObservable(){const e=new ci;return e.source=this,e}}mi.create=(i,e)=>new Pc(i,e);class Pc extends mi{constructor(e,t){super(),this.destination=e,this.source=t}next(e){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===n||n.call(t,e)}error(e){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===n||n.call(t,e)}complete(){var e,t;null===(t=null===(e=this.destination)||void 0===e?void 0:e.complete)||void 0===t||t.call(e)}_subscribe(e){var t,n;return null!==(n=null===(t=this.source)||void 0===t?void 0:t.subscribe(e))&&void 0!==n?n:Ic}}class Wt extends mi{constructor(e){super(),this._value=e}get value(){return this.getValue()}_subscribe(e){const t=super._subscribe(e);return!t.closed&&e.next(this._value),t}getValue(){const{hasError:e,thrownError:t,_value:n}=this;if(e)throw t;return this._throwIfClosed(),n}next(e){super.next(this._value=e)}}function Ts(i){return ai(i?.lift)}function xi(i){return e=>{if(Ts(e))return e.lift(function(t){try{return i(t,this)}catch(n){this.error(n)}});throw new TypeError("Unable to lift unknown Observable type")}}function vi(i,e,t,n,r){return new Nt(i,e,t,n,r)}class Nt extends Hl{constructor(e,t,n,r,s,a){super(e),this.onFinalize=s,this.shouldUnsubscribe=a,this._next=t?function(d){try{t(d)}catch(h){e.error(h)}}:super._next,this._error=r?function(d){try{r(d)}catch(h){e.error(h)}finally{this.unsubscribe()}}:super._error,this._complete=n?function(){try{n()}catch(d){e.error(d)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:t}=this;super.unsubscribe(),!t&&(null===(e=this.onFinalize)||void 0===e||e.call(this))}}}function qe(i,e){return xi((t,n)=>{let r=0;t.subscribe(vi(n,s=>{n.next(i.call(e,s,r++))}))})}const ro=wh(i=>function(){i(this),this.name="EmptyError",this.message="no elements in sequence"});function rn(i,e){return xi((t,n)=>{let r=0;t.subscribe(vi(n,s=>i.call(e,s,r++)&&n.next(s)))})}const wr=new ci(i=>i.complete());function Zr(i){return i<=0?()=>wr:xi((e,t)=>{let n=0;e.subscribe(vi(t,r=>{++n<=i&&(t.next(r),i<=n&&t.complete())}))})}function Bm(i){return xi((e,t)=>{let n=!1;e.subscribe(vi(t,r=>{n=!0,t.next(r)},()=>{n||t.next(i),t.complete()}))})}function Jn(i=Oy){return xi((e,t)=>{let n=!1;e.subscribe(vi(t,r=>{n=!0,t.next(r)},()=>n?t.complete():t.error(i())))})}function Oy(){return new ro}function qa(i,e){const t=arguments.length>=2;return n=>n.pipe(i?rn((r,s)=>i(r,s,n)):ja,Zr(1),t?Bm(e):Jn(()=>new ro))}const kr="https://g.co/ng/security#xss";class j extends Error{constructor(e,t){super(gi(e,t)),this.code=e}}function gi(i,e){return`NG0${Math.abs(i)}${e?": "+e:""}`}const _r=Symbol("InputSignalNode#UNSET"),Fh={...FE,transformFn:void 0,applyValueToInputSignal(i,e){Mo(i,e)}};function Ry(i,e){const t=Object.create(Fh);function n(){if(sa(t),t.value===_r)throw new j(-950,!1);return t.value}return t.value=i,t.transformFn=e?.transform,n[Yt]=t,n}function Ge(i){return{toString:i}.toString()}const he="__annotations__",xh="__parameters__",on="__prop__metadata__";function Vm(i,e,t,n,r){return Ge(()=>{const s=Bd(e);function a(...d){if(this instanceof a)return s.call(this,...d),this;const h=new a(...d);return function(g){return r&&r(g,...d),(g.hasOwnProperty(he)?g[he]:Object.defineProperty(g,he,{value:[]})[he]).push(h),n&&n(g),g}}return t&&(a.prototype=Object.create(t.prototype)),a.prototype.ngMetadataName=i,a.annotationCls=a,a})}function Bd(i){return function(...t){if(i){const n=i(...t);for(const r in n)this[r]=n[r]}}}function Xe(i,e,t){return Ge(()=>{const n=Bd(e);function r(...s){if(this instanceof r)return n.apply(this,s),this;const a=new r(...s);return d.annotation=a,d;function d(h,p,g){const v=h.hasOwnProperty(xh)?h[xh]:Object.defineProperty(h,xh,{value:[]})[xh];for(;v.length<=g;)v.push(null);return(v[g]=v[g]||[]).push(a),h}}return t&&(r.prototype=Object.create(t.prototype)),r.prototype.ngMetadataName=i,r.annotationCls=r,r})}function Si(i,e,t,n){return Ge(()=>{const r=Bd(e);function s(...a){if(this instanceof s)return r.apply(this,a),this;const d=new s(...a);return function h(p,g){if(void 0===p)throw new Error("Standard Angular field decorators are not supported in JIT mode.");const v=p.constructor,y=v.hasOwnProperty(on)?v[on]:Object.defineProperty(v,on,{value:{}})[on];y[g]=y.hasOwnProperty(g)&&y[g]||[],y[g].unshift(d),n&&n(p,g,...a)}}return t&&(s.prototype=Object.create(t.prototype)),s.prototype.ngMetadataName=i,s.annotationCls=s,s})}const Ji=globalThis;function Qe(i){for(let e in i)if(i[e]===Qe)return e;throw Error("Could not find renamed property on target object.")}function zm(i,e){for(const t in e)e.hasOwnProperty(t)&&!i.hasOwnProperty(t)&&(i[t]=e[t])}function Xn(i){if("string"==typeof i)return i;if(Array.isArray(i))return"["+i.map(Xn).join(", ")+"]";if(null==i)return""+i;if(i.overriddenName)return`${i.overriddenName}`;if(i.name)return`${i.name}`;const e=i.toString();if(null==e)return""+e;const t=e.indexOf("\n");return-1===t?e:e.substring(0,t)}function B(i,e){return null==i||""===i?null===e?"":e:null==e||""===e?i:i+" "+e}const bI=Qe({__forward_ref__:Qe});function Di(i){return i.__forward_ref__=Di,i.toString=function(){return Xn(this())},i}function et(i){return Py(i)?i():i}function Py(i){return"function"==typeof i&&i.hasOwnProperty(bI)&&i.__forward_ref__===Di}function ua(i,e,t){i!=e&&Ke(t,i,e,"==")}function Ke(i,e,t,n){throw new Error(`ASSERTION ERROR: ${i}`+(null==n?"":` [Expected=> ${t} ${n} ${e} <=Actual]`))}function ue(i){return{token:i.token,providedIn:i.providedIn||null,factory:i.factory,value:void 0}}function Qn(i){return{providers:i.providers||[],imports:i.imports||[]}}function Ny(i){return SE(i,B1)||SE(i,DE)}function SE(i,e){return i.hasOwnProperty(e)?i[e]:null}function N1(i){return i&&(i.hasOwnProperty(Dh)||i.hasOwnProperty($m))?i[Dh]:null}const B1=Qe({\u0275prov:Qe}),Dh=Qe({\u0275inj:Qe}),DE=Qe({ngInjectableDef:Qe}),$m=Qe({ngInjectorDef:Qe});class ge{constructor(e,t){this._desc=e,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof t?this.__NG_ELEMENT_ID__=t:void 0!==t&&(this.\u0275prov=ue({token:this,providedIn:t.providedIn||"root",factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function AE(i){return i&&!!i.\u0275providers}const jm=Qe({\u0275cmp:Qe}),TE=Qe({\u0275dir:Qe}),zy=Qe({\u0275pipe:Qe}),H1=Qe({\u0275mod:Qe}),Ka=Qe({\u0275fac:Qe}),un=Qe({__NG_ELEMENT_ID__:Qe}),Is=Qe({__NG_ENV_ID__:Qe});function at(i){return"string"==typeof i?i:null==i?"":String(i)}function Ut(i){return"function"==typeof i?i.name||i.toString():"object"==typeof i&&null!=i&&"function"==typeof i.type?i.type.name||i.type.toString():at(i)}function V1(i,e){throw new j(-201,!1)}var Dt,i;let Gy;function LE(){return Gy}function oo(i){const e=Gy;return Gy=i,e}function OE(i,e,t){const n=Ny(i);return n&&"root"==n.providedIn?void 0===n.value?n.value=n.factory():n.value:t&Dt.Optional?null:void 0!==e?e:void V1()}(i=Dt||(Dt={}))[i.Default=0]="Default",i[i.Host=1]="Host",i[i.Self=2]="Self",i[i.SkipSelf=4]="SkipSelf",i[i.Optional=8]="Optional";const Gl={},xn="__NG_DI_FLAG__",Hd="ngTempTokenPath",Vd=/\n/gm,Km="\u0275",zd="__source";let Ya;function pa(i){const e=Ya;return Ya=i,e}function z1(i,e=Dt.Default){if(void 0===Ya)throw new j(-203,!1);return null===Ya?OE(i,void 0,e):Ya.get(i,e&Dt.Optional?null:void 0,e)}function ve(i,e=Dt.Default){return(LE()||z1)(et(i),e)}function Ym(i){throw new j(202,!1)}function K(i,e=Dt.Default){return ve(i,$d(e))}function $d(i){return typeof i>"u"||"number"==typeof i?i:(i.optional&&8)|(i.host&&1)|(i.self&&2)|(i.skipSelf&&4)}function ss(i){const e=[];for(let t=0;t ");else if("object"==typeof e){let s=[];for(let a in e)if(e.hasOwnProperty(a)){let d=e[a];s.push(a+":"+("string"==typeof d?JSON.stringify(d):Xn(d)))}r=`{${s.join(", ")}}`}return`${t}${n?"("+n+")":""}[${r}]: ${i.replace(Vd,"\n ")}`}("\n"+i.message,r,t,n),i.ngTokenPath=r,i[Hd]=null,i}const Os=Nc(Xe("Inject",i=>({token:i})),-1),Rs=Nc(Xe("Optional"),8),Zm=Nc(Xe("Self"),2),Ud=Nc(Xe("SkipSelf"),4),$1=Nc(Xe("Host"),1);function Rr(i,e){return i.hasOwnProperty(Ka)?i[Ka]:null}function Jr(i){return i.flat(Number.POSITIVE_INFINITY)}function Th(i,e){i.forEach(t=>Array.isArray(t)?Th(t,e):e(t))}function W1(i,e,t){e>=i.length?i.push(t):i.splice(e,0,t)}function $y(i,e){return e>=i.length-1?i.pop():i.splice(e,1)[0]}function Wy(i,e){const t=[];for(let n=0;ne;){const s=r-2;i[r]=i[s],r--}i[e]=t,i[e+1]=n}}function as(i,e,t){let n=jd(i,e);return n>=0?i[1|n]=t:(n=~n,Lo(i,n,e,t)),n}function fi(i,e){const t=jd(i,e);if(t>=0)return i[1|t]}function jd(i,e){return Ps(i,e,1)}function Ps(i,e,t){let n=0,r=i.length>>t;for(;r!==n;){const s=n+(r-n>>1),a=i[s<e?r=s:n=s+1}return~(r<e){a=s-1;break}}}for(;s-1){let s;for(;++rs?"":r[g+1].toLowerCase(),2&n&&p!==v){if(er(n))return!1;a=!0}}}}else{if(!a&&!er(n)&&!er(h))return!1;if(a&&er(h))continue;a=!1,n=h|1&n}}return er(n)||a}function er(i){return!(1&i)}function qy(i,e,t,n){if(null===e)return-1;let r=0;if(n||!t){let s=!1;for(;r-1)for(t++;t0?'="'+d+'"':"")+"]"}else 8&n?r+="."+a:4&n&&(r+=" "+a);else""!==r&&!er(a)&&(e+=ig(s,r),r=""),n=a,s=s||!er(n);t++}return""!==r&&(e+=ig(s,r)),e}function Kd(i){return Ge(()=>{const e=Zd(i),t={...e,decls:i.decls,vars:i.vars,template:i.template,consts:i.consts||null,ngContentSelectors:i.ngContentSelectors,onPush:i.changeDetection===Ns.OnPush,directiveDefs:null,pipeDefs:null,dependencies:e.standalone&&i.dependencies||null,getStandaloneInjector:null,signals:i.signals??!1,data:i.data||{},encapsulation:i.encapsulation||Bt.Emulated,styles:i.styles||Zt,_:null,schemas:i.schemas||null,tView:null,id:""};$l(t);const n=i.dependencies;return t.directiveDefs=Hs(n,!1),t.pipeDefs=Hs(n,!0),t.id=function Vc(i){let e=0;const t=[i.selectors,i.ngContentSelectors,i.hostVars,i.hostAttrs,i.consts,i.vars,i.decls,i.encapsulation,i.standalone,i.signals,i.exportAs,JSON.stringify(i.inputs),JSON.stringify(i.outputs),Object.getOwnPropertyNames(i.type.prototype),!!i.contentQueries,!!i.viewQuery].join("|");for(const r of t)e=Math.imul(31,e)+r.charCodeAt(0)|0;return e+=2147483648,"c"+e}(t),t})}function Jy(i){return At(i)||vt(i)}function fa(i){return null!==i}function Er(i){return Ge(()=>({type:i.type,bootstrap:i.bootstrap||Zt,declarations:i.declarations||Zt,imports:i.imports||Zt,exports:i.exports||Zt,transitiveCompileScopes:null,schemas:i.schemas||null,id:i.id||null}))}function Yd(i,e){if(null==i)return ma;const t={};for(const n in i)if(i.hasOwnProperty(n)){const r=i[n];let s,a,d=Bs.None;Array.isArray(r)?(d=r[0],s=r[1],a=r[2]??s):(s=r,a=r),e?(t[s]=d!==Bs.None?[n,d]:n,e[s]=a):t[s]=n}return t}function De(i){return Ge(()=>{const e=Zd(i);return $l(e),e})}function Xr(i){return{type:i.type,name:i.name,factory:null,pure:!1!==i.pure,standalone:!0===i.standalone,onDestroy:i.type.prototype.ngOnDestroy||null}}function At(i){return i[jm]||null}function vt(i){return i[TE]||null}function bi(i){return i[zy]||null}function Pr(i){const e=At(i)||vt(i)||bi(i);return null!==e&&e.standalone}function $i(i,e){const t=i[H1]||null;if(!t&&!0===e)throw new Error(`Type ${Xn(i)} does not have '\u0275mod' property.`);return t}function Zd(i){const e={};return{type:i.type,providersResolver:null,factory:null,hostBindings:i.hostBindings||null,hostVars:i.hostVars||0,hostAttrs:i.hostAttrs||null,contentQueries:i.contentQueries||null,declaredInputs:e,inputTransforms:null,inputConfig:i.inputs||ma,exportAs:i.exportAs||null,standalone:!0===i.standalone,signals:!0===i.signals,selectors:i.selectors||Zt,viewQuery:i.viewQuery||null,features:i.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Yd(i.inputs,e),outputs:Yd(i.outputs),debugInfo:null}}function $l(i){i.features?.forEach(e=>e(i))}function Hs(i,e){if(!i)return null;const t=e?bi:Jy;return()=>("function"==typeof i?i():i).map(n=>t(n)).filter(fa)}function q1(i){return{\u0275providers:i}}function TI(...i){return{\u0275providers:Xy(!0,i),\u0275fromNgModule:!0}}function Xy(i,...e){const t=[],n=new Set;let r;const s=a=>{t.push(a)};return Th(e,a=>{const d=a;K1(d,s,[],n)&&(r||=[],r.push(d))}),void 0!==r&&$E(r,s),t}function $E(i,e){for(let t=0;t{e(s,n)})}}function K1(i,e,t,n){if(!(i=et(i)))return!1;let r=null,s=N1(i);const a=!s&&At(i);if(s||a){if(a&&!a.standalone)return!1;r=i}else{const h=i.ngModule;if(s=N1(h),!s)return!1;r=h}const d=n.has(r);if(a){if(d)return!1;if(n.add(r),a.dependencies){const h="function"==typeof a.dependencies?a.dependencies():a.dependencies;for(const p of h)K1(p,e,t,n)}}else{if(!s)return!1;{if(null!=s.imports&&!d){let p;n.add(r);try{Th(s.imports,g=>{K1(g,e,t,n)&&(p||=[],p.push(g))})}finally{}void 0!==p&&$E(p,e)}if(!d){const p=Rr(r)||(()=>new r);e({provide:r,useFactory:p,deps:Zt},r),e({provide:Xm,useValue:r,multi:!0},r),e({provide:Xa,useValue:()=>ve(r),multi:!0},r)}const h=s.providers;if(null!=h&&!d){const p=i;Qy(h,g=>{e(g,p)})}}}return r!==i&&void 0!==i.providers}function Qy(i,e){for(let t of i)AE(t)&&(t=t.\u0275providers),Array.isArray(t)?Qy(t,e):e(t)}const II=Qe({provide:String,useValue:Qe});function rg(i){return null!==i&&"object"==typeof i&&II in i}function Y1(i){return!(!i||!i.useExisting)}function WE(i){return!(!i||!i.useFactory)}function Ue(i){return"function"==typeof i}const Lt=new ge(""),Z1={},J1={};let eC;function og(){return void 0===eC&&(eC=new qd),eC}class Nr{}class Vs extends Nr{get destroyed(){return this._destroyed}constructor(e,t,n,r){super(),this.parent=t,this.source=n,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,X1(e,a=>this.processProvider(a)),this.records.set(U1,Ih(void 0,this)),r.has("environment")&&this.records.set(Nr,Ih(void 0,this));const s=this.records.get(Lt);null!=s&&"string"==typeof s.value&&this.scopes.add(s.value),this.injectorDefTypes=new Set(this.get(Xm,Zt,Dt.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const e=we(null);try{for(const n of this._ngOnDestroyHooks)n.ngOnDestroy();const t=this._onDestroyHooks;this._onDestroyHooks=[];for(const n of t)n()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),we(e)}}onDestroy(e){return this.assertNotDestroyed(),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){this.assertNotDestroyed();const t=pa(this),n=oo(void 0);try{return e()}finally{pa(t),oo(n)}}get(e,t=Gl,n=Dt.Default){if(this.assertNotDestroyed(),e.hasOwnProperty(Is))return e[Is](this);n=$d(n);const s=pa(this),a=oo(void 0);try{if(!(n&Dt.SkipSelf)){let h=this.records.get(e);if(void 0===h){const p=function tC(i){return"function"==typeof i||"object"==typeof i&&i instanceof ge}(e)&&Ny(e);h=p&&this.injectableDefInScope(p)?Ih(Wl(e),Z1):null,this.records.set(e,h)}if(null!=h)return this.hydrate(e,h)}const d=n&Dt.Self?og():this.parent;return t=n&Dt.Optional&&t===Gl?null:t,d.get(e,t)}catch(d){if("NullInjectorError"===d.name){if((d[Hd]=d[Hd]||[]).unshift(Xn(e)),s)throw d;return Wd(d,e,"R3InjectorError",this.source)}throw d}finally{oo(a),pa(s)}}resolveInjectorInitializers(){const e=we(null),t=pa(this),n=oo(void 0);try{const s=this.get(Xa,Zt,Dt.Self);for(const a of s)a()}finally{pa(t),oo(n),we(e)}}toString(){const e=[],t=this.records;for(const n of t.keys())e.push(Xn(n));return`R3Injector[${e.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new j(205,!1)}processProvider(e){let t=Ue(e=et(e))?e:et(e&&e.provide);const n=function OI(i){if(rg(i))return Ih(void 0,i.useValue);return Ih(UE(i),Z1)}(e);if(!Ue(e)&&!0===e.multi){let r=this.records.get(t);r||(r=Ih(void 0,Z1,!0),r.factory=()=>ss(r.multi),this.records.set(t,r)),t=e,r.multi.push(e)}this.records.set(t,n)}hydrate(e,t){const n=we(null);try{return t.value===Z1&&(t.value=J1,t.value=t.factory()),"object"==typeof t.value&&t.value&&function RI(i){return null!==i&&"object"==typeof i&&"function"==typeof i.ngOnDestroy}(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{we(n)}}injectableDefInScope(e){if(!e.providedIn)return!1;const t=et(e.providedIn);return"string"==typeof t?"any"===t||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(e){const t=this._onDestroyHooks.indexOf(e);-1!==t&&this._onDestroyHooks.splice(t,1)}}function Wl(i){const e=Ny(i),t=null!==e?e.factory:Rr(i);if(null!==t)return t;if(i instanceof ge)throw new j(204,!1);if(i instanceof Function)return function LI(i){if(i.length>0)throw new j(204,!1);const t=function FI(i){return i&&(i[B1]||i[DE])||null}(i);return null!==t?()=>t.factory(i):()=>new i}(i);throw new j(204,!1)}function UE(i,e,t){let n;if(Ue(i)){const r=et(i);return Rr(r)||Wl(r)}if(rg(i))n=()=>et(i.useValue);else if(WE(i))n=()=>i.useFactory(...ss(i.deps||[]));else if(Y1(i))n=()=>ve(et(i.useExisting));else{const r=et(i&&(i.useClass||i.provide));if(!function jE(i){return!!i.deps}(i))return Rr(r)||Wl(r);n=()=>new r(...ss(i.deps))}return n}function Ih(i,e,t=!1){return{factory:i,value:e,multi:t?[]:void 0}}function X1(i,e){for(const t of i)Array.isArray(t)?X1(t,e):t&&AE(t)?X1(t.\u0275providers,e):e(t)}function Oo(i,e){i instanceof Vs&&i.assertNotDestroyed();const n=pa(i),r=oo(void 0);try{return e()}finally{pa(n),oo(r)}}function qE(){return void 0!==LE()||null!=function Gd(){return Ya}()}function Q1(i){if(!qE())throw new j(-203,!1)}var Jd,iC,PI;function Pn(i){const e=Ji.ng;if(e&&e.\u0275compilerFacade)return e.\u0275compilerFacade;throw new Error("JIT compiler unavailable")}!function(i){i[i.Directive=0]="Directive",i[i.Component=1]="Component",i[i.Injectable=2]="Injectable",i[i.Pipe=3]="Pipe",i[i.NgModule=4]="NgModule"}(Jd||(Jd={})),function(i){i[i.Directive=0]="Directive",i[i.Pipe=1]="Pipe",i[i.NgModule=2]="NgModule"}(iC||(iC={})),function(i){i[i.Emulated=0]="Emulated",i[i.None=2]="None",i[i.ShadowDom=3]="ShadowDom"}(PI||(PI={}));const Lh={\u0275\u0275defineInjectable:ue,\u0275\u0275defineInjector:Qn,\u0275\u0275inject:ve,\u0275\u0275invalidFactoryDep:Ym,resolveForwardRef:et},nC=Function;function Xd(i){return"function"==typeof i}const sg=/^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*(arguments|(?:[^()]+\(\[\],)?[^()]+\(arguments\).*)\)/,rC=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/,KE=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/,GN=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{[^}]*super\(\.\.\.arguments\)/;class oC{constructor(e){this._reflect=e||Ji.Reflect}factory(e){return(...t)=>new e(...t)}_zipTypesAndAnnotations(e,t){let n;n=Wy(typeof e>"u"?t.length:e.length);for(let r=0;r"u"?n[r]=[]:e[r]&&e[r]!=Object?n[r]=[e[r]]:n[r]=[],t&&null!=t[r]&&(n[r]=n[r].concat(t[r]));return n}_ownParameters(e,t){if(function so(i){return sg.test(i)||GN.test(i)||rC.test(i)&&!KE.test(i)}(e.toString()))return null;if(e.parameters&&e.parameters!==t.parameters)return e.parameters;const r=e.ctorParameters;if(r&&r!==t.ctorParameters){const d="function"==typeof r?r():r,h=d.map(g=>g&&g.type),p=d.map(g=>g&&hn(g.decorators));return this._zipTypesAndAnnotations(h,p)}const s=e.hasOwnProperty(xh)&&e[xh],a=this._reflect&&this._reflect.getOwnMetadata&&this._reflect.getOwnMetadata("design:paramtypes",e);return a||s?this._zipTypesAndAnnotations(a,s):Wy(e.length)}parameters(e){if(!Xd(e))return[];const t=ev(e);let n=this._ownParameters(e,t);return!n&&t!==Object&&(n=this.parameters(t)),n||[]}_ownAnnotations(e,t){if(e.annotations&&e.annotations!==t.annotations){let n=e.annotations;return"function"==typeof n&&n.annotations&&(n=n.annotations),n}return e.decorators&&e.decorators!==t.decorators?hn(e.decorators):e.hasOwnProperty(he)?e[he]:null}annotations(e){if(!Xd(e))return[];const t=ev(e),n=this._ownAnnotations(e,t)||[];return(t!==Object?this.annotations(t):[]).concat(n)}_ownPropMetadata(e,t){if(e.propMetadata&&e.propMetadata!==t.propMetadata){let n=e.propMetadata;return"function"==typeof n&&n.propMetadata&&(n=n.propMetadata),n}if(e.propDecorators&&e.propDecorators!==t.propDecorators){const n=e.propDecorators,r={};return Object.keys(n).forEach(s=>{r[s]=hn(n[s])}),r}return e.hasOwnProperty(on)?e[on]:null}propMetadata(e){if(!Xd(e))return{};const t=ev(e),n={};if(t!==Object){const s=this.propMetadata(t);Object.keys(s).forEach(a=>{n[a]=s[a]})}const r=this._ownPropMetadata(e,t);return r&&Object.keys(r).forEach(s=>{const a=[];n.hasOwnProperty(s)&&a.push(...n[s]),a.push(...r[s]),n[s]=a}),n}ownPropMetadata(e){return Xd(e)&&this._ownPropMetadata(e,ev(e))||{}}hasLifecycleHook(e,t){return e instanceof nC&&t in e.prototype}}function hn(i){return i?i.map(e=>new(0,e.type.annotationCls)(...e.args?e.args:[])):[]}function ev(i){const e=i.prototype?Object.getPrototypeOf(i.prototype):null;return(e?e.constructor:null)||Object}const sn=0,pe=1,Ve=2,Nn=3,zs=4,Br=5,ao=6,Ul=7,Ht=8,Bn=9,Wi=10,nt=11,Qd=12,zc=13,eu=14,Xi=15,jl=16,tu=17,va=18,Qa=19,sC=20,el=21,tv=22,lo=23,Me=25,ba=1,tl=7,Hr=9,an=10;var il;function Hi(i){return Array.isArray(i)&&"object"==typeof i[ba]}function pn(i){return Array.isArray(i)&&!0===i[ba]}function uo(i){return!!(4&i.flags)}function Gs(i){return i.componentOffset>-1}function nl(i){return!(1&~i.flags)}function Fr(i){return!!i.template}function Oh(i){return!!(512&i[Ve])}function nv(i){return!(256&~i[Ve])}!function(i){i[i.None=0]="None",i[i.HasTransplantedViews=2]="HasTransplantedViews"}(il||(il={}));class rl{constructor(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}isFirstChange(){return this.firstChange}}function uC(i,e,t,n){null!==e?e.applyValueToInputSignal(e,n):i[t]=n}function yi(){return hC}function hC(i){return i.type.prototype.ngOnChanges&&(i.setInput=KN),qN}function qN(){const i=ZE(this),e=i?.current;if(e){const t=i.previous;if(t===ma)i.previous=e;else for(let n in e)t[n]=e[n];i.current=null,this.ngOnChanges(e)}}function KN(i,e,t,n,r){const s=this.declaredInputs[n],a=ZE(i)||function dg(i,e){return i[av]=e}(i,{previous:ma,current:null}),d=a.current||(a.current={}),h=a.previous,p=h[s];d[s]=new rl(p&&p.currentValue,t,h===ma),uC(i,e,r,t)}yi.ngInherit=!0;const av="__ngSimpleChanges__";function ZE(i){return i[av]||null}let $s=null;const ol=function(i,e,t){$s?.(i,e,t)};function Vt(i){for(;Array.isArray(i);)i=i[sn];return i}function ql(i){for(;Array.isArray(i);){if("object"==typeof i[ba])return i;i=i[sn]}return null}function nu(i,e){return Vt(e[i])}function Pe(i,e){return Vt(e[i.index])}function rt(i,e){return i.data[e]}function ru(i,e){return i[e]}function ls(i,e){const t=e[i];return Hi(t)?t:t[sn]}function ou(i){return!(128&~i[Ve])}function Ws(i,e){return null==e?null:i[e]}function hg(i){i[tu]=0}function XE(i){1024&i[Ve]||(i[Ve]|=1024,ou(i)&&cv(i))}function QE(i,e){for(;i>0;)e=e[eu],i--;return e}function pg(i){return!!(9216&i[Ve]||i[lo]?.dirty)}function mC(i){i[Wi].changeDetectionScheduler?.notify(8),64&i[Ve]&&(i[Ve]|=1024),pg(i)&&cv(i)}function cv(i){i[Wi].changeDetectionScheduler?.notify(0);let e=sl(i);for(;null!==e&&!(8192&e[Ve])&&(e[Ve]|=8192,ou(e));)e=sl(e)}function dv(i,e){if(!(256&~i[Ve]))throw new j(911,!1);null===i[el]&&(i[el]=[]),i[el].push(e)}function uv(i,e){if(null===i[el])return;const t=i[el].indexOf(e);-1!==t&&i[el].splice(t,1)}function sl(i){const e=i[Nn];return pn(e)?e[Nn]:e}const ot={lFrame:gg(null),bindingsEnabled:!0,skipHydrationRootTNode:null};var Yl;!function(i){i[i.Off=0]="Off",i[i.Exhaustive=1]="Exhaustive",i[i.OnlyDirtyViews=2]="OnlyDirtyViews"}(Yl||(Yl={}));let eF=!1;function iF(){return ot.bindingsEnabled}function Gc(){return null!==ot.skipHydrationRootTNode}function J(){return ot.lFrame.lView}function Ft(){return ot.lFrame.tView}function tr(i){return ot.lFrame.contextLView=i,i[Ht]}function Hn(i){return ot.lFrame.contextLView=null,i}function di(){let i=hv();for(;null!==i&&64===i.type;)i=i.parent;return i}function hv(){return ot.lFrame.currentTNode}function su(){const i=ot.lFrame,e=i.currentTNode;return i.isParent?e:e.parent}function ya(i,e){const t=ot.lFrame;t.currentTNode=i,t.isParent=e}function fC(){return ot.lFrame.isParent}function vC(){ot.lFrame.isParent=!1}function Wc(){return ot.lFrame.contextLView}function oF(){return eF}function au(i){eF=i}function ho(){const i=ot.lFrame;let e=i.bindingRootIndex;return-1===e&&(e=i.bindingRootIndex=i.tView.bindingStartIndex),e}function Zl(){return ot.lFrame.bindingIndex}function sF(i){return ot.lFrame.bindingIndex=i}function Ca(){return ot.lFrame.bindingIndex++}function Jl(i){const e=ot.lFrame,t=e.bindingIndex;return e.bindingIndex=e.bindingIndex+i,t}function aF(i){ot.lFrame.inI18n=i}function CC(i,e){const t=ot.lFrame;t.bindingIndex=t.bindingRootIndex=i,wC(e)}function wC(i){ot.lFrame.currentDirectiveIndex=i}function pv(i){const e=ot.lFrame.currentDirectiveIndex;return-1===e?null:i[e]}function mv(){return ot.lFrame.currentQueryIndex}function mg(i){ot.lFrame.currentQueryIndex=i}function YI(i){const e=i[pe];return 2===e.type?e.declTNode:1===e.type?i[Br]:null}function lF(i,e,t){if(t&Dt.SkipSelf){let r=e,s=i;for(;(r=r.parent,null===r&&!(t&Dt.Host))&&(r=YI(s),!(null===r||(s=s[eu],10&r.type))););if(null===r)return!1;e=r,i=s}const n=ot.lFrame=gv();return n.currentTNode=e,n.lView=i,!0}function kC(i){const e=gv(),t=i[pe];ot.lFrame=e,e.currentTNode=t.firstChild,e.lView=i,e.tView=t,e.contextLView=i,e.bindingIndex=t.bindingStartIndex,e.inI18n=!1}function gv(){const i=ot.lFrame,e=null===i?null:i.child;return null===e?gg(i):e}function gg(i){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:i,child:null,inI18n:!1};return null!==i&&(i.child=e),e}function cF(){const i=ot.lFrame;return ot.lFrame=i.parent,i.currentTNode=null,i.lView=null,i}const dF=cF;function _C(){const i=cF();i.isParent=!0,i.tView=null,i.selectedIndex=-1,i.contextLView=null,i.elementDepthCount=0,i.currentDirectiveIndex=-1,i.currentNamespace=null,i.bindingRootIndex=-1,i.bindingIndex=-1,i.currentQueryIndex=0}function Vr(){return ot.lFrame.selectedIndex}function Uc(i){ot.lFrame.selectedIndex=i}function Ui(){const i=ot.lFrame;return rt(i.tView,i.selectedIndex)}function ir(){return ot.lFrame.currentNamespace}let po=!0;function Ee(){return po}function mo(i){po=i}function ii(i,e){for(let t=e.directiveStart,n=e.directiveEnd;t=n)break}else e[h]<0&&(i[tu]+=65536),(d>14>16&&(3&i[Ve])===e&&(i[Ve]+=16384,EC(d,s)):EC(d,s)}const wa=-1;class jc{constructor(e,t,n){this.factory=e,this.resolving=!1,this.canSeeViewProviders=t,this.injectImpl=n}}const cl={};class Ze{constructor(e,t){this.injector=e,this.parentInjector=t}get(e,t,n){n=$d(n);const r=this.injector.get(e,cl,n);return r!==cl||t===cl?r:this.parentInjector.get(e,t,n)}}function SC(i){return i!==wa}function mn(i){return 32767&i}function fg(i,e){let t=function cu(i){return i>>16}(i),n=e;for(;t>0;)n=n[eu],t--;return n}let DC=!0;function vv(i){const e=DC;return DC=i,e}const uF=255,hF=5;let e4=0;const ka={};function bv(i,e){const t=pF(i,e);if(-1!==t)return t;const n=e[pe];n.firstCreatePass&&(i.injectorIndex=e.length,yv(n.data,i),yv(e,null),yv(n.blueprint,null));const r=Cv(i,e),s=i.injectorIndex;if(SC(r)){const a=mn(r),d=fg(r,e),h=d[pe].data;for(let p=0;p<8;p++)e[s+p]=d[a+p]|h[a+p]}return e[s+8]=r,s}function yv(i,e){i.push(0,0,0,0,0,0,0,0,e)}function pF(i,e){return-1===i.injectorIndex||i.parent&&i.parent.injectorIndex===i.injectorIndex||null===e[i.injectorIndex+8]?-1:i.injectorIndex}function Cv(i,e){if(i.parent&&-1!==i.parent.injectorIndex)return i.parent.injectorIndex;let t=0,n=null,r=e;for(;null!==r;){if(n=Cg(r),null===n)return wa;if(t++,r=r[eu],-1!==n.injectorIndex)return n.injectorIndex|t<<16}return wa}function wv(i,e,t){!function t4(i,e,t){let n;"string"==typeof t?n=t.charCodeAt(0)||0:t.hasOwnProperty(un)&&(n=t[un]),null==n&&(n=t[un]=e4++);const r=n&uF,s=1<>hF)]|=s}(i,e,t)}function AC(i,e,t){if(t&Dt.Optional||void 0!==i)return i;V1()}function TC(i,e,t,n){if(t&Dt.Optional&&void 0===n&&(n=null),!(t&(Dt.Self|Dt.Host))){const r=i[Bn],s=oo(void 0);try{return r?r.get(e,n,t&Dt.Optional):OE(e,n,t&Dt.Optional)}finally{oo(s)}}return AC(n,0,t)}function MC(i,e,t,n=Dt.Default,r){if(null!==i){if(2048&e[Ve]&&!(n&Dt.Self)){const a=function yg(i,e,t,n,r){let s=i,a=e;for(;null!==s&&null!==a&&2048&a[Ve]&&!(512&a[Ve]);){const d=IC(s,a,t,n|Dt.Self,ka);if(d!==ka)return d;let h=s.parent;if(!h){const p=a[sC];if(p){const g=p.get(t,ka,n);if(g!==ka)return g}h=Cg(a),a=a[eu]}s=h}return r}(i,e,t,n,ka);if(a!==ka)return a}const s=IC(i,e,t,n,ka);if(s!==ka)return s}return TC(e,t,n,r)}function IC(i,e,t,n,r){const s=function Ai(i){if("string"==typeof i)return i.charCodeAt(0)||0;const e=i.hasOwnProperty(un)?i[un]:void 0;return"number"==typeof e?e>=0?e&uF:bg:e}(t);if("function"==typeof s){if(!lF(e,i,n))return n&Dt.Host?AC(r,0,n):TC(e,t,n,r);try{let a;if(a=s(n),null!=a||n&Dt.Optional)return a;V1()}finally{dF()}}else if("number"==typeof s){let a=null,d=pF(i,e),h=wa,p=n&Dt.Host?e[Xi][Br]:null;for((-1===d||n&Dt.SkipSelf)&&(h=-1===d?Cv(i,e):e[d+8],h!==wa&&Nh(n,!1)?(a=e[pe],d=mn(h),e=fg(h,e)):d=-1);-1!==d;){const g=e[pe];if(Sr(s,d,g.data)){const v=gF(d,e,t,a,n,p);if(v!==ka)return v}h=e[d+8],h!==wa&&Nh(n,e[pe].data[d+8]===p)&&Sr(s,d,e)?(a=g,d=mn(h),e=fg(h,e)):d=-1}}return r}function gF(i,e,t,n,r,s){const a=e[pe],d=a.data[i+8],g=vg(d,a,t,null==n?Gs(d)&&DC:n!=a&&!!(3&d.type),r&Dt.Host&&s===d);return null!==g?xr(e,a,g,d):ka}function vg(i,e,t,n,r){const s=i.providerIndexes,a=e.data,d=1048575&s,h=i.directiveStart,p=i.directiveEnd,g=s>>20,y=r?d+g:p;for(let C=n?d:d+g;C=h&&k.type===t)return C}if(r){const C=a[h];if(C&&Fr(C)&&C.type===t)return h}return null}function xr(i,e,t,n){let r=i[t];const s=e.data;if(function ll(i){return i instanceof jc}(r)){const a=r;a.resolving&&function ha(i,e){throw e&&e.join(" > "),new j(-200,i)}(Ut(s[t]));const d=vv(a.canSeeViewProviders);a.resolving=!0;const p=a.injectImpl?oo(a.injectImpl):null;lF(i,n,Dt.Default);try{r=i[t]=a.factory(void 0,s,i,n),e.firstCreatePass&&t>=n.directiveStart&&function lu(i,e,t){const{ngOnChanges:n,ngOnInit:r,ngDoCheck:s}=e.type.prototype;if(n){const a=hC(e);(t.preOrderHooks??=[]).push(i,a),(t.preOrderCheckHooks??=[]).push(i,a)}r&&(t.preOrderHooks??=[]).push(0-i,r),s&&((t.preOrderHooks??=[]).push(i,s),(t.preOrderCheckHooks??=[]).push(i,s))}(t,s[t],e)}finally{null!==p&&oo(p),vv(d),a.resolving=!1,dF()}}return r}function Sr(i,e,t){const n=1<>hF)]&n)}function Nh(i,e){return!(i&Dt.Self||i&Dt.Host&&e)}class Ti{constructor(e,t){this._tNode=e,this._lView=t}get(e,t,n){return MC(this._tNode,this._lView,e,$d(n),t)}}function bg(){return new Ti(di(),J())}function Vi(i){return Ge(()=>{const e=i.prototype.constructor,t=e[Ka]||Bh(e),n=Object.prototype;let r=Object.getPrototypeOf(i.prototype).constructor;for(;r&&r!==n;){const s=r[Ka]||Bh(r);if(s&&s!==t)return s;r=Object.getPrototypeOf(r)}return s=>new s})}function Bh(i){return Py(i)?()=>{const e=Bh(et(i));return e&&e()}:Rr(i)}function Cg(i){const e=i[pe],t=e.type;return 2===t?e.declTNode:1===t?i[Br]:null}function dl(i){return function mF(i,e){if("class"===e)return i.classes;if("style"===e)return i.styles;const t=i.attrs;if(t){const n=t.length;let r=0;for(;r({attributeName:i,__NG_ELEMENT_ID__:()=>dl(i)}));let Ql=null;function ec(){return Ql=Ql||new oC}function hl(i){return wg(ec().parameters(i))}function wg(i){return i.map(e=>function Hh(i){const e={token:null,attribute:null,host:!1,optional:!1,self:!1,skipSelf:!1};if(Array.isArray(i)&&i.length>0)for(let t=0;t(null===t&&(t=Pn().compileInjectable(Lh,`ng:///${i.name}/\u0275prov.js`,function kg(i,e){const t=e||{providedIn:null},n={name:i.name,type:i,typeArgumentCount:0,providedIn:t.providedIn};return(du(t)||js(t))&&void 0!==t.deps&&(n.deps=wg(t.deps)),du(t)?n.useClass=t.useClass:function zh(i){return qc in i}(t)?n.useValue=t.useValue:js(t)?n.useFactory=t.useFactory:function tc(i){return void 0!==i.useExisting}(t)&&(n.useExisting=t.useExisting),n}(i,e))),t)}),i.hasOwnProperty(Ka)||Object.defineProperty(i,Ka,{get:()=>{if(null===n){const r=Pn();n=r.compileFactory(Lh,`ng:///${i.name}/\u0275fac.js`,{name:i.name,type:i,typeArgumentCount:0,deps:hl(i),target:r.FactoryTarget.Injectable})}return n},configurable:!0})}const qc=Qe({provide:String,useValue:Qe});function du(i){return void 0!==i.useClass}function js(i){return void 0!==i.useFactory}const uu=Vm("Injectable",void 0,void 0,void 0,(i,e)=>Vh(i,e));function hu(i,e=null,t=null,n){const r=Dr(i,e,t,n);return r.resolveInjectorInitializers(),r}function Dr(i,e=null,t=null,n,r=new Set){const s=[t||Zt,TI(i)];return n=n||("object"==typeof i?void 0:Xn(i)),new Vs(s,e||og(),n||null,r)}class ze{static{this.THROW_IF_NOT_FOUND=Gl}static{this.NULL=new qd}static create(e,t){if(Array.isArray(e))return hu({name:""},t,e,"");{const n=e.name??"";return hu({name:n},e.parent,e.providers,n)}}static{this.\u0275prov=ue({token:ze,providedIn:"any",factory:()=>ve(U1)})}static{this.__NG_ELEMENT_ID__=-1}}new ge("").__NG_ELEMENT_ID__=i=>{const e=di();if(null===e)throw new j(204,!1);if(2&e.type)return e.value;if(i&Dt.Optional)return null;throw new j(204,!1)};const Gh="ngOriginalError";function Y(i){return i[Gh]}const ds=!0;class _g{static{this.__NG_ELEMENT_ID__=n4}static{this.__NG_ENV_ID__=e=>e}}class Kc extends _g{constructor(e){super(),this._lView=e}onDestroy(e){return dv(this._lView,e),()=>uv(this._lView,e)}}function n4(){return new Kc(J())}class Qr{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new Wt(!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{this.\u0275prov=ue({token:Qr,providedIn:"root",factory:()=>new Qr})}}class LC{constructor(){this.internalPendingTasks=K(Qr)}add(){const e=this.internalPendingTasks.add();return()=>this.internalPendingTasks.remove(e)}static{this.\u0275prov=ue({token:LC,providedIn:"root",factory:()=>new LC})}}const Je=class r4 extends mi{constructor(e=!1){super(),this.destroyRef=void 0,this.pendingTasks=void 0,this.__isAsync=e,qE()&&(this.destroyRef=K(_g,{optional:!0})??void 0,this.pendingTasks=K(Qr,{optional:!0})??void 0)}emit(e){const t=we(null);try{super.next(e)}finally{we(t)}}subscribe(e,t,n){let r=e,s=t||(()=>null),a=n;if(e&&"object"==typeof e){const h=e;r=h.next?.bind(h),s=h.error?.bind(h),a=h.complete?.bind(h)}this.__isAsync&&(s=this.wrapInTimeout(s),r&&(r=this.wrapInTimeout(r)),a&&(a=this.wrapInTimeout(a)));const d=super.subscribe({next:r,error:s,complete:a});return e instanceof Bi&&e.add(d),d}wrapInTimeout(e){return t=>{const n=this.pendingTasks?.add();setTimeout(()=>{e(t),void 0!==n&&this.pendingTasks?.remove(n)})}}};function kv(...i){}function OC(i){let e,t;function n(){i=kv;try{void 0!==t&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(t),void 0!==e&&clearTimeout(e)}catch{}}return e=setTimeout(()=>{i(),n()}),"function"==typeof requestAnimationFrame&&(t=requestAnimationFrame(()=>{i(),n()})),()=>n()}function _v(i){return queueMicrotask(()=>i()),()=>{i=kv}}const Ev="isAngularZone",Fv=Ev+"_ID";let s4=0;class ni{constructor(e){this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new Je(!1),this.onMicrotaskEmpty=new Je(!1),this.onStable=new Je(!1),this.onError=new Je(!1);const{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:s=ds}=e;if(typeof Zone>"u")throw new j(908,!1);Zone.assertZonePatched();const a=this;a._nesting=0,a._outer=a._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(a._inner=a._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(a._inner=a._inner.fork(Zone.longStackTraceZoneSpec)),a.shouldCoalesceEventChangeDetection=!r&&n,a.shouldCoalesceRunChangeDetection=r,a.callbackScheduled=!1,a.scheduleInRootZone=s,function a4(i){const e=()=>{!function pu(i){if(i.isCheckStableRunning||i.callbackScheduled)return;function e(){OC(()=>{i.callbackScheduled=!1,PC(i),i.isCheckStableRunning=!0,RC(i),i.isCheckStableRunning=!1})}i.callbackScheduled=!0,i.scheduleInRootZone?Zone.root.run(()=>{e()}):i._outer.run(()=>{e()}),PC(i)}(i)},t=s4++;i._inner=i._inner.fork({name:"angular",properties:{[Ev]:!0,[Fv]:t,[Fv+t]:!0},onInvokeTask:(n,r,s,a,d,h)=>{if(function l4(i){return xv(i,"__ignore_ng_zone__")}(h))return n.invokeTask(s,a,d,h);try{return Eg(i),n.invokeTask(s,a,d,h)}finally{(i.shouldCoalesceEventChangeDetection&&"eventTask"===a.type||i.shouldCoalesceRunChangeDetection)&&e(),Fg(i)}},onInvoke:(n,r,s,a,d,h,p)=>{try{return Eg(i),n.invoke(s,a,d,h,p)}finally{i.shouldCoalesceRunChangeDetection&&!i.callbackScheduled&&!function c4(i){return xv(i,"__scheduler_tick__")}(h)&&e(),Fg(i)}},onHasTask:(n,r,s,a)=>{n.hasTask(s,a),r===s&&("microTask"==a.change?(i._hasPendingMicrotasks=a.microTask,PC(i),RC(i)):"macroTask"==a.change&&(i.hasPendingMacrotasks=a.macroTask))},onHandleError:(n,r,s,a)=>(n.handleError(s,a),i.runOutsideAngular(()=>i.onError.emit(a)),!1)})}(a)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get(Ev)}static assertInAngularZone(){if(!ni.isInAngularZone())throw new j(909,!1)}static assertNotInAngularZone(){if(ni.isInAngularZone())throw new j(909,!1)}run(e,t,n){return this._inner.run(e,t,n)}runTask(e,t,n,r){const s=this._inner,a=s.scheduleEventTask("NgZoneEvent: "+r,e,qs,kv,kv);try{return s.runTask(a,t,n)}finally{s.cancelTask(a)}}runGuarded(e,t,n){return this._inner.runGuarded(e,t,n)}runOutsideAngular(e){return this._outer.run(e)}}const qs={};function RC(i){if(0==i._nesting&&!i.hasPendingMicrotasks&&!i.isStable)try{i._nesting++,i.onMicrotaskEmpty.emit(null)}finally{if(i._nesting--,!i.hasPendingMicrotasks)try{i.runOutsideAngular(()=>i.onStable.emit(null))}finally{i.isStable=!0}}}function PC(i){i._hasPendingMicrotasks||(i.shouldCoalesceEventChangeDetection||i.shouldCoalesceRunChangeDetection)&&!0===i.callbackScheduled?i.hasPendingMicrotasks=!0:i.hasPendingMicrotasks=!1}function Eg(i){i._nesting++,i.isStable&&(i.isStable=!1,i.onUnstable.emit(null))}function Fg(i){i._nesting--,RC(i)}class NC{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new Je,this.onMicrotaskEmpty=new Je,this.onStable=new Je,this.onError=new Je}run(e,t,n){return e.apply(t,n)}runGuarded(e,t,n){return e.apply(t,n)}runOutsideAngular(e){return e()}runTask(e,t,n,r){return e.apply(t,n)}}function xv(i,e){return!(!Array.isArray(i)||1!==i.length)&&!0===i[0]?.data?.[e]}class pl{constructor(){this._console=console}handleError(e){const t=this._findOriginalError(e);this._console.error("ERROR",e),t&&this._console.error("ORIGINAL ERROR",t)}_findOriginalError(e){let t=e&&Y(e);for(;t&&Y(t);)t=Y(t);return t||null}}const bF=new ge("",{providedIn:"root",factory:()=>{const i=K(ni),e=K(pl);return t=>i.runOutsideAngular(()=>e.handleError(t))}});class be{constructor(){this.destroyed=!1,this.listeners=null,this.errorHandler=K(pl,{optional:!0}),this.destroyRef=K(_g),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 t=this.listeners?.indexOf(e);void 0!==t&&-1!==t&&this.listeners?.splice(t,1)}}}emit(e){if(this.destroyed)throw new j(953,!1);if(null===this.listeners)return;const t=we(null);try{for(const n of this.listeners)try{n(e)}catch(r){this.errorHandler?.handleError(r)}}finally{we(t)}}}function BC(i,e){return Ry(i,e)}BC.required=function Yc(i){return Ry(_r,i)};function h4(){return $h(di(),J())}function $h(i,e){return new wi(Pe(i,e))}class wi{constructor(e){this.nativeElement=e}static{this.__NG_ELEMENT_ID__=h4}}function CF(i){return i instanceof wi?i.nativeElement:i}function p4(){return this._results[Symbol.iterator]()}class HC{get changes(){return this._changes??=new Je}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 t=HC.prototype;t[Symbol.iterator]||(t[Symbol.iterator]=p4)}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,t){return this._results.reduce(e,t)}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,t){this.dirty=!1;const n=Jr(e);(this._changesDetected=!function Za(i,e,t){if(i.length!==e.length)return!1;for(let n=0;njh}),jh="ng",NF=new ge(""),hs=new ge("",{providedIn:"platform",factory:()=>"unknown"}),BF=(new ge(""),new ge(""),new ge("",{providedIn:"root",factory:()=>ic().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null})),Mv={breakpoints:[16,32,48,64,96,128,256,384,640,750,828,1080,1200,1920,2048,3840],placeholderResolution:30,disableImageSizeWarning:!1,disableImageLazyLoadWarning:!1},HF=new ge("",{providedIn:"root",factory:()=>Mv});function VF(){const i=new qh;return"browser"===K(hs)&&(i.store=function zF(i,e){const t=i.getElementById(e+"-state");if(t?.textContent)try{return JSON.parse(t.textContent)}catch(n){console.warn("Exception while restoring TransferState for app "+e,n)}return{}}(ic(),K(Uh))),i}class qh{constructor(){this.store={},this.onSerializeCallbacks={}}static{this.\u0275prov=ue({token:qh,providedIn:"root",factory:VF})}get(e,t){return void 0!==this.store[e]?this.store[e]:t}set(e,t){this.store[e]=t}remove(e){delete this.store[e]}hasKey(e){return this.store.hasOwnProperty(e)}get isEmpty(){return 0===Object.keys(this.store).length}onSerialize(e,t){this.onSerializeCallbacks[e]=t}toJson(){for(const e in this.onSerializeCallbacks)if(this.onSerializeCallbacks.hasOwnProperty(e))try{this.store[e]=this.onSerializeCallbacks[e]()}catch(t){console.warn("Exception in onSerialize callback: ",t)}return JSON.stringify(this.store).replace(/null;function Rv(i,e,t=!1){return yu(i,e,t)}var Cu;!function(i){i.Hydrated="hydrated",i.Skipped="skipped",i.Mismatched="mismatched"}(Cu||(Cu={}));new ge("");const jF=new ge("",{providedIn:"root",factory:()=>false});new ge(""),new ge("");let _u,Pg;function Og(){if(void 0===_u&&(_u=null,Ji.trustedTypes))try{_u=Ji.trustedTypes.createPolicy("angular",{createHTML:i=>i,createScript:i=>i,createScriptURL:i=>i})}catch{}return _u}function Sn(i){return Og()?.createHTML(i)||i}function Vv(){if(void 0===Pg&&(Pg=null,Ji.trustedTypes))try{Pg=Ji.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:i=>i,createScript:i=>i,createScriptURL:i=>i})}catch{}return Pg}function QC(i){return Vv()?.createHTML(i)||i}function YF(i){return Vv()?.createScript(i)||i}function ew(i){return Vv()?.createScriptURL(i)||i}class Eu{constructor(e){this.changingThisBreaksApplicationSecurity=e}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${kr})`}}class P4 extends Eu{getTypeName(){return"HTML"}}class N4 extends Eu{getTypeName(){return"Style"}}class ZF extends Eu{getTypeName(){return"Script"}}class zv extends Eu{getTypeName(){return"URL"}}class B4 extends Eu{getTypeName(){return"ResourceURL"}}function Po(i){return i instanceof Eu?i.changingThisBreaksApplicationSecurity:i}function fl(i,e){const t=function H4(i){return i instanceof Eu&&i.getTypeName()||null}(i);if(null!=t&&t!==e){if("ResourceURL"===t&&"URL"===e)return!0;throw new Error(`Required a safe ${e}, got a ${t} (see ${kr})`)}return t===e}function QF(i){const e=new nc(i);return function ex(){try{return!!(new window.DOMParser).parseFromString(Sn(""),"text/html")}catch{return!1}}()?new tw(e):e}class tw{constructor(e){this.inertDocumentHelper=e}getInertBodyElement(e){e=""+e;try{const t=(new window.DOMParser).parseFromString(Sn(e),"text/html").body;return null===t?this.inertDocumentHelper.getInertBodyElement(e):(t.firstChild?.remove(),t)}catch{return null}}}class nc{constructor(e){this.defaultDoc=e,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(e){const t=this.inertDocument.createElement("template");return t.innerHTML=Sn(e),t}}const V4=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Gv(i){return(i=String(i)).match(V4)?i:"unsafe:"+i}function rc(i){const e={};for(const t of i.split(","))e[t]=!0;return e}function Fu(...i){const e={};for(const t of i)for(const n in t)t.hasOwnProperty(n)&&(e[n]=!0);return e}const tx=rc("area,br,col,hr,img,wbr"),ix=rc("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),nx=rc("rp,rt"),iw=Fu(nx,ix),rx=Fu(ix,rc("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")),nw=Fu(nx,rc("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")),ox=Fu(tx,rx,nw,iw),Ng=rc("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),z4=rc("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"),G4=rc("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"),sx=Fu(Ng,z4,G4),$4=rc("script,style,template");class W4{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(e){let t=e.firstChild,n=!0,r=[];for(;t;)if(t.nodeType===Node.ELEMENT_NODE?n=this.startElement(t):t.nodeType===Node.TEXT_NODE?this.chars(t.nodeValue):this.sanitizedSomething=!0,n&&t.firstChild)r.push(t),t=Jh(t);else for(;t;){t.nodeType===Node.ELEMENT_NODE&&this.endElement(t);let s=ax(t);if(s){t=s;break}t=r.pop()}return this.buf.join("")}startElement(e){const t=Xh(e).toLowerCase();if(!ox.hasOwnProperty(t))return this.sanitizedSomething=!0,!$4.hasOwnProperty(t);this.buf.push("<"),this.buf.push(t);const n=e.attributes;for(let r=0;r"),!0}endElement(e){const t=Xh(e).toLowerCase();ox.hasOwnProperty(t)&&!tx.hasOwnProperty(t)&&(this.buf.push(""))}chars(e){this.buf.push(rw(e))}}function ax(i){const e=i.nextSibling;if(e&&i!==e.previousSibling)throw lx(e);return e}function Jh(i){const e=i.firstChild;if(e&&function U4(i,e){return(i.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}(i,e))throw lx(e);return e}function Xh(i){const e=i.nodeName;return"string"==typeof e?e:"FORM"}function lx(i){return new Error(`Failed to sanitize html because the element is clobbered: ${i.outerHTML}`)}const j4=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,$v=/([^\#-~ |!])/g;function rw(i){return i.replace(/&/g,"&").replace(j4,function(e){return"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";"}).replace($v,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(//g,">")}let xu;function cx(i,e){let t=null;try{xu=xu||QF(i);let n=e?String(e):"";t=xu.getInertBodyElement(n);let r=5,s=n;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,n=s,s=t.innerHTML,t=xu.getInertBodyElement(n)}while(n!==s);return Sn((new W4).sanitizeChildren(ow(t)||t))}finally{if(t){const n=ow(t)||t;for(;n.firstChild;)n.firstChild.remove()}}}function ow(i){return"content"in i&&function q4(i){return i.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===i.nodeName}(i)?i.content:null}var ps;function dx(i){const e=Qh();return e?e.sanitize(ps.URL,i)||"":fl(i,"URL")?Po(i):Gv(at(i))}function ux(i){const e=Qh();if(e)return ew(e.sanitize(ps.RESOURCE_URL,i)||"");if(fl(i,"ResourceURL"))return ew(Po(i));throw new j(904,!1)}function Ct(i,e,t){return function J4(i,e){return"src"===e&&("embed"===i||"frame"===i||"iframe"===i||"media"===i||"script"===i)||"href"===e&&("base"===i||"link"===i)?ux:dx}(e,t)(i)}function Qh(){const i=J();return i&&i[Wi].sanitizer}!function(i){i[i.NONE=0]="NONE",i[i.HTML=1]="HTML",i[i.STYLE=2]="STYLE",i[i.SCRIPT=3]="SCRIPT",i[i.URL=4]="URL",i[i.RESOURCE_URL=5]="RESOURCE_URL"}(ps||(ps={}));const px=/^>|^->||--!>|)/g,eL="\u200b$1\u200b";function sw(i){return i.replace(px,e=>e.replace(Q4,eL))}function vx(i){return i.ownerDocument.body}function ms(i){return i instanceof Function?i():i}function bo(i){return"browser"===(i??K(ze)).get(hs)}var vl;let uw;function hw(i,e){return uw(i,e)}function tp(i,e,t,n,r){if(null!=n){let s,a=!1;pn(n)?s=n:Hi(n)&&(a=!0,n=n[sn]);const d=Vt(n);0===i&&null!==t?null==r?bl(e,t,d):Su(e,t,d,r||null,!0):1===i&&null!==t?Su(e,t,d,r||null,!0):2===i?Gg(e,d,a):3===i&&e.destroyNode(d),null!=s&&function wL(i,e,t,n,r){const s=t[tl],a=Vt(t);s!==a&&tp(e,i,n,s,r);for(let d=an;d0&&(i[t-1][zs]=n[zs]);const s=$y(i,an+e);!function gL(i,e){wx(i,e),e[sn]=null,e[Br]=null}(n[pe],n);const a=s[va];null!==a&&a.detachView(s[pe]),n[Nn]=null,n[zs]=null,n[Ve]&=-129}return n}function Kv(i,e){if(!(256&e[Ve])){const t=e[nt];t.destroyNode&&Jv(i,e,t,3,null,null),function fL(i){let e=i[Qd];if(!e)return Yv(i[pe],i);for(;e;){let t=null;if(Hi(e))t=e[Qd];else{const n=e[an];n&&(t=n)}if(!t){for(;e&&!e[zs]&&e!==i;)Hi(e)&&Yv(e[pe],e),e=e[Nn];null===e&&(e=i),Hi(e)&&Yv(e[pe],e),t=e&&e[zs]}e=t}}(e)}}function Yv(i,e){if(256&e[Ve])return;const t=we(null);try{e[Ve]&=-129,e[Ve]|=256,e[lo]&&Ds(e[lo]),function bL(i,e){let t;if(null!=i&&null!=(t=i.destroyHooks))for(let n=0;n=0?n[a]():n[-a].unsubscribe(),s+=2}else{const a=n[t[s+1]];t[s].call(a)}null!==n&&(e[Ul]=null);const r=e[el];if(null!==r){e[el]=null;for(let s=0;s-1){const{encapsulation:s}=i.data[n.directiveStart+r];if(s===Bt.None||s===Bt.Emulated)return null}return Pe(n,t)}}function Su(i,e,t,n,r){i.insertBefore(e,t,n,r)}function bl(i,e,t){i.appendChild(e,t)}function np(i,e,t,n,r){null!==n?Su(i,e,t,n,r):bl(i,e,t)}function vw(i,e){return i.parentNode(e)}function Ex(i,e,t){return xx(i,e,t)}function Fx(i,e,t){return 40&i.type?Pe(i,t):null}!function(i){i[i.Important=1]="Important",i[i.DashCase=2]="DashCase"}(vl||(vl={}));let Zv,xx=Fx;function Sx(i,e){xx=i,Zv=e}function Vg(i,e,t,n){const r=fw(i,n,e),s=e[nt],d=Ex(n.parent||e[Br],n,e);if(null!=r)if(Array.isArray(t))for(let h=0;hMe&&Lx(i,e,Me,!1),ol(a?2:0,r),t(n,r)}finally{Uc(s),ol(a?3:1,r)}}function kw(i,e,t){if(uo(e)){const n=we(null);try{const r=e.directiveStart,s=e.directiveEnd;for(let a=r;anull;function Bx(i,e,t,n,r){for(let s in e){if(!e.hasOwnProperty(s))continue;const a=e[s];if(void 0===a)continue;n??={};let d,h=Bs.None;Array.isArray(a)?(d=a[0],h=a[1]):d=a;let p=s;if(null!==r){if(!r.hasOwnProperty(s))continue;p=r[s]}0===i?Hx(n,t,p,d,h):Hx(n,t,p,d)}return n}function Hx(i,e,t,n,r){let s;i.hasOwnProperty(t)?(s=i[t]).push(e,n):s=i[t]=[e,n],void 0!==r&&s.push(r)}function No(i,e,t,n,r,s,a,d){const h=Pe(e,t);let g,p=e.inputs;!d&&null!=p&&(g=p[n])?(Mw(i,t,g,n,r),Gs(e)&&function ML(i,e){const t=ls(e,i);16&t[Ve]||(t[Ve]|=64)}(t,e.index)):3&e.type?(n=function TL(i){return"class"===i?"className":"for"===i?"htmlFor":"formaction"===i?"formAction":"innerHtml"===i?"innerHTML":"readonly"===i?"readOnly":"tabindex"===i?"tabIndex":i}(n),r=null!=a?a(r,e.value||"",n):r,s.setProperty(h,n,r)):e.type}function Sw(i,e,t,n){if(iF()){const r=null===n?null:{"":-1},s=function NL(i,e){const t=i.directiveRegistry;let n=null,r=null;if(t)for(let s=0;s0;){const t=i[--e];if("number"==typeof t&&t<0)return t}return 0})(a)!=d&&a.push(d),a.push(t,n,s)}}(i,e,n,$g(i,t,r.hostVars,ut),r)}function yl(i,e,t,n,r,s){const a=Pe(i,e);Aw(e[nt],a,s,i.value,t,n,r)}function Aw(i,e,t,n,r,s,a){if(null==s)i.removeAttribute(e,r,t);else{const d=null==a?at(s):a(s,n||"",r);i.setAttribute(e,r,d,t)}}function $L(i,e,t,n,r,s){const a=s[e];if(null!==a)for(let d=0;d0&&(t[r-1][zs]=e),n{cv(i.lView)},consumerOnSignalRead(){this.lView[lo]=this}};const KL={...Il,consumerIsAlwaysLive:!0,consumerMarkedDirty:i=>{let e=sl(i.lView);for(;e&&!Lw(e[pe]);)e=sl(e);e&&XE(e)},consumerOnSignalRead(){this.lView[lo]=this}};function Lw(i){return 2!==i.type}const Xx=100;function Ug(i,e=!0,t=0){const n=i[Wi],r=n.rendererFactory;r.begin?.();try{!function YL(i,e){const t=oF();try{au(!0),Pw(i,e);let n=0;for(;pg(i);){if(n===Xx)throw new j(103,!1);n++,Pw(i,1)}}finally{au(t)}}(i,t)}catch(a){throw e&&t0(i,a),a}finally{r.end?.(),n.inlineEffectRunner?.flush()}}function ZL(i,e,t,n){const r=e[Ve];if(!(256&~r))return;e[Wi].inlineEffectRunner?.flush(),kC(e);let d=!0,h=null,p=null;Lw(i)?(p=Jx(e),h=Ga(p)):null===vh()?(d=!1,p=function p8(i){const e=i[lo]??Object.create(KL);return e.lView=i,e}(e),h=Ga(p)):e[lo]&&(Ds(e[lo]),e[lo]=null);try{hg(e),sF(i.bindingStartIndex),null!==t&&Px(i,e,t,2,n);const g=!(3&~r);if(g){const C=i.preOrderCheckHooks;null!==C&&nr(e,C,null)}else{const C=i.preOrderHooks;null!==C&&Ci(e,C,0,null),al(e,0)}if(function Ow(i){for(let e=F4(i);null!==e;e=us(e)){if(!(e[Ve]&il.HasTransplantedViews))continue;const t=e[Hr];for(let n=0;n-1&&(ip(e,n),$y(t,n))}this._attachedToViewContainer=!1}Kv(this._lView[pe],this._lView)}onDestroy(e){dv(this._lView,e)}markForCheck(){ap(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[Ve]&=-129}reattach(){mC(this._lView),this._lView[Ve]|=128}detectChanges(){this._lView[Ve]|=1024,Ug(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new j(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;const e=Oh(this._lView),t=this._lView[jl];null!==t&&!e&&gw(t,this._lView),wx(this._lView[pe],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new j(902,!1);this._appRef=e;const t=Oh(this._lView),n=this._lView[jl];null!==n&&!t&&kx(n,this._lView),mC(this._lView)}}class jt{static{this.__NG_ELEMENT_ID__=cp}}const Nw=jt,tS=class extends Nw{constructor(e,t,n){super(),this._declarationLView=e,this._declarationTContainer=t,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,t){return this.createEmbeddedViewImpl(e,t)}createEmbeddedViewImpl(e,t,n){const r=rp(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:t,dehydratedView:n});return new lp(r)}};function cp(){return i0(di(),J())}function i0(i,e){return 4&i.type?new tS(e,i,$h(i,e)):null}function sS(i,e,t){const n=e.insertBeforeIndex,r=Array.isArray(n)?n[0]:n;return null===r?Fx(i,0,t):Vt(t[r])}function Vw(i,e,t,n,r){const s=e.insertBeforeIndex;if(Array.isArray(s)){let a=n,d=null;if(3&e.type||(d=a,a=r),null!==a&&-1===e.componentOffset)for(let h=1;h1)for(let t=i.length-2;t>=0;t--){const n=i[t];lS(n)||rr(n,e)&&null===zw(n)&&Gw(n,e.index)}}function lS(i){return!(64&i.type)}function rr(i,e){return lS(e)||i.index>e.index}function zw(i){const e=i.insertBeforeIndex;return Array.isArray(e)?e[0]:e}function Gw(i,e){const t=i.insertBeforeIndex;Array.isArray(t)?t[0]=e:(Sx(sS,Vw),i.insertBeforeIndex=e)}function Tu(i,e){const t=i.data[e];return null===t||"string"==typeof t?null:t.hasOwnProperty("currentCaseLViewIndex")?t:t.value}function aO(i,e,t){const n=ww(i,t,64,null,null);return aS(e,n),n}function Jg(i,e){const t=e[i.currentCaseLViewIndex];return null===t?t:t<0?~t:t}function cS(i){return i>>>17}function dS(i){return(131070&i)>>>1}function hS(i){return-1===i}function $w(i,e,t){i.index=0;const n=Jg(e,t);i.removes=null!==n?e.remove[n]:Zt}function n0(i){if(i.index0)return i.lView[e];{i.stack.push(i.index,i.removes);const t=~e;return $w(i,i.lView[pe].data[t],i.lView),n0(i)}}return 0===i.stack.length?null:(i.removes=i.stack.pop(),i.index=i.stack.pop(),n0(i))}function pS(){const i={stack:[],index:-1};return function e(t,n){for(i.lView=n;i.stack.length;)i.stack.pop();return $w(i,t.value,n),n0.bind(null,i)}}new RegExp(`^(\\d+)*(${UC}|${Iv})*(.*)`);let Uw=()=>{};let up=()=>{};let _S=()=>null;function Iu(i,e){return _S(i,e)}class pp{}const ef=new ge("",{providedIn:"root",factory:()=>!1}),u0=(new ge("",{providedIn:"root",factory:()=>!1}),new ge("")),Jw=new ge("");class y8{}class h0{}const ac="ngComponent";class EO{resolveComponentFactory(e){throw function Xw(i){const e=Error(`No component factory found for ${Xn(i)}.`);return e[ac]=i,e}(e)}}class p0{static{this.NULL=new EO}}class Qw{}class Co{constructor(){this.destroyNode=null}static{this.__NG_ELEMENT_ID__=()=>function FO(){const i=J(),t=ls(di().index,i);return(Hi(t)?t:i)[nt]}()}}class ek{static{this.\u0275prov=ue({token:ek,providedIn:"root",factory:()=>null})}}function tk(i){return void 0!==i.ngModule}function rd(i){return!!$i(i)}function m0(i){return!!bi(i)}function xS(i){return!!vt(i)}function mp(i){return!!At(i)}function xO(i,e){if(Py(i)&&!(i=et(i)))throw new Error(`Expected forwardRef function, imported from "${Ut(e)}", to return a standalone entity or NgModule but got "${Ut(i)||i}".`);if(null==$i(i)){const t=At(i)||vt(i)||bi(i);if(null==t)throw tk(i)?new Error(`A module with providers was imported from "${Ut(e)}". Modules with providers are not supported in standalone components imports.`):new Error(`The "${Ut(i)}" type, imported from "${Ut(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(!t.standalone)throw new Error(`The "${Ut(i)}" ${function Bo(i){return At(i)?"component":vt(i)?"directive":bi(i)?"pipe":"type"}(i)}, imported from "${Ut(e)}", is not standalone. Did you forget to add the standalone: true flag?`)}}const ik=!0;class SS{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 t=$i(e);if(t?.declarations)for(const n of ms(t.declarations))mp(n)&&this.ownerNgModule.set(n,e)}this.ngModulesWithSomeUnresolvedDecls.clear()}}getComponentDependencies(e,t){this.resolveNgModulesDecls();const n=At(e);if(null===n)throw new Error(`Attempting to get component dependencies for a type that is not a component: ${e}`);if(n.standalone){const r=this.getStandaloneComponentScope(e,t);return r.compilation.isPoisoned?{dependencies:[]}:{dependencies:[...r.compilation.directives,...r.compilation.pipes,...r.compilation.ngModules]}}{if(!this.ownerNgModule.has(e))return{dependencies:[]};const r=this.getNgModuleScope(this.ownerNgModule.get(e));return r.compilation.isPoisoned?{dependencies:[]}:{dependencies:[...r.compilation.directives,...r.compilation.pipes]}}}registerNgModule(e,t){if(!rd(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 t=this.computeNgModuleScope(e);return this.ngModulesScopeCache.set(e,t),t}computeNgModuleScope(e){const t=$i(e,!0),n={exported:{directives:new Set,pipes:new Set},compilation:{directives:new Set,pipes:new Set}};for(const r of ms(t.imports))if(rd(r)){const s=this.getNgModuleScope(r);od(s.exported.directives,n.compilation.directives),od(s.exported.pipes,n.compilation.pipes)}else{if(!Pr(r)){n.compilation.isPoisoned=!0;break}if(xS(r)||mp(r))n.compilation.directives.add(r);else{if(!m0(r))throw new j(1e3,"The standalone imported type is neither a component nor a directive nor a pipe");n.compilation.pipes.add(r)}}if(!n.compilation.isPoisoned)for(const r of ms(t.declarations)){if(rd(r)||Pr(r)){n.compilation.isPoisoned=!0;break}m0(r)?n.compilation.pipes.add(r):n.compilation.directives.add(r)}for(const r of ms(t.exports))if(rd(r)){const s=this.getNgModuleScope(r);od(s.exported.directives,n.exported.directives),od(s.exported.pipes,n.exported.pipes),od(s.exported.directives,n.compilation.directives),od(s.exported.pipes,n.compilation.pipes)}else m0(r)?n.exported.pipes.add(r):n.exported.directives.add(r);return n}getStandaloneComponentScope(e,t){if(this.standaloneComponentsScopeCache.has(e))return this.standaloneComponentsScopeCache.get(e);const n=this.computeStandaloneComponentScope(e,t);return this.standaloneComponentsScopeCache.set(e,n),n}computeStandaloneComponentScope(e,t){const n={compilation:{directives:new Set([e]),pipes:new Set,ngModules:new Set}};for(const r of Jr(t??[])){const s=et(r);try{xO(s,e)}catch{return n.compilation.isPoisoned=!0,n}if(rd(s)){n.compilation.ngModules.add(s);const a=this.getNgModuleScope(s);if(a.exported.isPoisoned)return n.compilation.isPoisoned=!0,n;od(a.exported.directives,n.compilation.directives),od(a.exported.pipes,n.compilation.pipes)}else if(m0(s))n.compilation.pipes.add(s);else{if(!xS(s)&&!mp(s))return n.compilation.isPoisoned=!0,n;n.compilation.directives.add(s)}}return n}isOrphanComponent(e){const t=At(e);return!(!t||t.standalone)&&(this.resolveNgModulesDecls(),!this.ownerNgModule.has(e))}}function od(i,e){for(const t of i)e.add(t)}const tf=new SS;function g0(i,e,t){let n=t?i.styles:null,r=t?i.classes:null,s=0;if(null!==e)for(let a=0;a0&&Mx(i,t,s.join(" "))}}(y,W,k,n),void 0!==t&&function LO(i,e,t){const n=i.projection=[];for(let r=0;r0;)this.remove(this.length-1)}get(e){const t=rk(this._lContainer);return null!==t&&t[e]||null}get length(){return this._lContainer.length-an}createEmbeddedView(e,t,n){let r,s;"number"==typeof n?r=n:null!=n&&(r=n.index,s=n.injector);const a=Iu(this._lContainer,e.ssrId),d=e.createEmbeddedViewImpl(t||{},s,a);return this.insertImpl(d,r,Au(this._hostTNode,a)),d}createComponent(e,t,n,r,s){const a=e&&!Xd(e);let d;if(a)d=t;else{const k=t||{};d=k.index,n=k.injector,r=k.projectableNodes,s=k.environmentInjector||k.ngModuleRef}const h=a?e:new fp(At(e)),p=n||this.parentInjector;if(!s&&null==h.ngModule){const E=(a?p:this.parentInjector).get(Nr,null);E&&(s=E)}const g=At(h.componentType??{}),v=Iu(this._lContainer,g?.id??null),y=v?.firstChild??null,C=h.create(p,r,y,s);return this.insertImpl(C.hostView,d,Au(this._hostTNode,v)),C}insert(e,t){return this.insertImpl(e,t,!0)}insertImpl(e,t,n){const r=e._lView;if(function JE(i){return pn(i[Nn])}(r)){const d=this.indexOf(e);if(-1!==d)this.detach(d);else{const h=r[Nn],p=new TS(h,h[Br],h[Nn]);p.detach(p.indexOf(e))}}const s=this._adjustIndex(t),a=this._lContainer;return op(a,r,s,n),e.attachToViewContainerRef(),W1(Gr(a),s,e),e}move(e,t){return this.insert(e,t)}indexOf(e){const t=rk(this._lContainer);return null!==t?t.indexOf(e):-1}remove(e){const t=this._adjustIndex(e,-1),n=ip(this._lContainer,t);n&&($y(Gr(this._lContainer),t),Kv(n[pe],n))}detach(e){const t=this._adjustIndex(e,-1),n=ip(this._lContainer,t);return n&&null!=$y(Gr(this._lContainer),t)?new lp(n):null}_adjustIndex(e,t=0){return e??this.length+t}};function rk(i){return i[8]}function Gr(i){return i[8]||(i[8]=[])}function ok(i,e){let t;const n=e[i.index];return pn(n)?t=n:(t=$x(n,e,null,i),e[i.index]=t,e0(e,t)),sk(t,e,i,n),new TS(t,i,e)}let sk=IS,ak=()=>!1;function lk(i,e,t){return ak(i,e,t)}function IS(i,e,t,n){if(i[tl])return;let r;r=8&t.type?Vt(n):function MS(i,e){const t=i[nt],n=t.createComment(""),r=Pe(e,i);return Su(t,vw(t,r),n,function yL(i,e){return i.nextSibling(e)}(t,r),!1),n}(e,t),i[tl]=r}class ck{constructor(e){this.queryList=e,this.matches=null}clone(){return new ck(this.queryList)}setDirty(){this.queryList.setDirty()}}class dk{constructor(e=[]){this.queries=e}createEmbeddedView(e){const t=e.queries;if(null!==t){const n=null!==e.contentQueries?e.contentQueries[0]:t.length,r=[];for(let s=0;se.trim())}(e):e}}class Lu{constructor(e=[]){this.queries=e}elementStart(e,t){for(let n=0;n0)n.push(a[d/2]);else{const p=s[d+1],g=e[-h];for(let v=an;v(sa(e),e.value);return t[Yt]=e,t}(i),n=t[Yt];return e?.equal&&(n.equal=e.equal),t.set=r=>Mo(n,r),t.update=r=>function Nl(i,e){za()||la(),Mo(i,e(i.value))}(n,r),t.asReadonly=lc.bind(t),t}function lc(){const i=this[Yt];if(void 0===i.readonlyFn){const e=()=>this();e[Yt]=i,i.readonlyFn=e}return i.readonlyFn}function fk(i){return gk(i)&&"function"==typeof i.set}function vk(i,e){let t;const n=Om(()=>{t._dirtyCounter();const r=function yk(i,e){const t=i._lView,n=i._queryIndex;if(void 0===t||void 0===n||4&t[Ve])return e?void 0:Zt;const r=rf(t,n),s=pk(t,n);return r.reset(s,CF),e?r.first:r._changesDetected||void 0===i._flatValue?i._flatValue=r.toArray():i._flatValue}(t,i);if(e&&void 0===r)throw new j(-951,!1);return r});return t=n[Yt],t._dirtyCounter=Cl(0),t._flatValue=void 0,n}function HS(){return vk(!0,!1)}function VS(){return vk(!0,!0)}function bk(i,e){const t=i[Yt];t._lView=J(),t._queryIndex=e,t._queryList=rf(t._lView,e),t._queryList.onDirty(()=>t._dirtyCounter.update(n=>n+1))}function GS(i,e){return HS()}GS.required=function UO(i,e){return VS()};function sf(i,e){return HS()}sf.required=function $S(i,e){return VS()};function Ck(i){const e=Object.create(Fh),t=new be;function n(){return sa(e),wk(e.value),e.value}return e.value=i,n[Yt]=e,n.asReadonly=lc.bind(n),n.set=r=>{e.equal(e.value,r)||(Mo(e,r),t.emit(r))},n.update=r=>{wk(e.value),n.set(r(e.value))},n.subscribe=t.subscribe.bind(t),n.destroyRef=t.destroyRef,n}function wk(i){if(i===_r)throw new j(952,!1)}function WS(i){return Ck(i)}WS.required=function YO(){return Ck(_r)};class v0{}Si("ContentChildren",(i,e={})=>({selector:i,first:!1,isViewQuery:!1,descendants:!1,emitDistinctChangesOnly:true,...e}),v0);const b0=Si("ContentChild",(i,e={})=>({selector:i,first:!0,isViewQuery:!1,descendants:!0,...e}),v0),kk=(Si("ViewChildren",(i,e={})=>({selector:i,first:!1,isViewQuery:!0,descendants:!0,emitDistinctChangesOnly:true,...e}),v0),Si("ViewChild",(i,e)=>({selector:i,first:!0,isViewQuery:!0,descendants:!0,...e}),v0));function qS(i){const e=[],t=new Map;function n(r){let s=t.get(r);if(!s){const a=i(r);t.set(r,s=a.then(y0))}return s}return bp.forEach((r,s)=>{const a=[];r.templateUrl&&a.push(n(r.templateUrl).then(p=>{r.template=p}));const d="string"==typeof r.styles?[r.styles]:r.styles||[];if(r.styles=d,r.styleUrl&&r.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(r.styleUrls?.length){const p=r.styles.length,g=r.styleUrls;r.styleUrls.forEach((v,y)=>{d.push(""),a.push(n(v).then(C=>{d[p+y]=C,g.splice(g.indexOf(v),1),0==g.length&&(r.styleUrls=void 0)}))})}else r.styleUrl&&a.push(n(r.styleUrl).then(p=>{d.push(p),r.styleUrl=void 0}));const h=Promise.all(a).then(()=>function F8(i){af.delete(i)}(s));e.push(h)}),function E8(){const i=bp;return bp=new Map,i}(),Promise.all(e).then(()=>{})}let bp=new Map;const af=new Set;function KS(i){return!!(i.templateUrl&&!i.hasOwnProperty("template")||i.styleUrls&&i.styleUrls.length||i.styleUrl)}function y0(i){return"string"==typeof i?i:i.text()}const lf=new Map;let t5=!0;function yp(i,e){(function YS(i,e,t){if(e&&e!==t&&t5)throw new Error(`Duplicate module registered for ${i} - ${Xn(e)} vs ${Xn(e.name)}`)})(e,lf.get(e)||null,i),lf.set(e,i)}function _k(i){return Object.getPrototypeOf(i.prototype).constructor}function Fi(i){let e=_k(i.type),t=!0;const n=[i];for(;e;){let r;if(Fr(i))r=e.\u0275cmp||e.\u0275dir;else{if(e.\u0275cmp)throw new j(903,!1);r=e.\u0275dir}if(r){if(t){n.push(r);const a=i;a.inputs=df(i.inputs),a.inputTransforms=df(i.inputTransforms),a.declaredInputs=df(i.declaredInputs),a.outputs=df(i.outputs);const d=r.hostBindings;d&&n5(i,d);const h=r.viewQuery,p=r.contentQueries;if(h&&QS(i,h),p&&eD(i,p),JS(i,r),zm(i.outputs,r.outputs),Fr(r)&&r.data.animation){const g=i.data;g.animation=(g.animation||[]).concat(r.data.animation)}}const s=r.features;if(s)for(let a=0;a=0;n--){const r=i[n];r.hostVars=e+=r.hostVars,r.hostAttrs=eg(r.hostAttrs,t=eg(t,r.hostAttrs))}}(n)}function JS(i,e){for(const t in e.inputs){if(!e.inputs.hasOwnProperty(t)||i.inputs.hasOwnProperty(t))continue;const n=e.inputs[t];if(void 0!==n&&(i.inputs[t]=n,i.declaredInputs[t]=e.declaredInputs[t],null!==e.inputTransforms)){const r=Array.isArray(n)?n[0]:n;if(!e.inputTransforms.hasOwnProperty(r))continue;i.inputTransforms??={},i.inputTransforms[r]=e.inputTransforms[r]}}}function df(i){return i===ma?{}:i===Zt?[]:i}function QS(i,e){const t=i.viewQuery;i.viewQuery=t?(n,r)=>{e(n,r),t(n,r)}:e}function eD(i,e){const t=i.contentQueries;i.contentQueries=t?(n,r,s)=>{e(n,r,s),t(n,r,s)}:e}function n5(i,e){const t=i.hostBindings;i.hostBindings=t?(n,r)=>{e(n,r),t(n,r)}:e}const tD=["providersResolver"],r5=["template","decls","consts","vars","onPush","ngContentSelectors","styles","encapsulation","schemas"];function C0(i,e,t){if(null!==i.hostDirectives)for(const n of i.hostDirectives)if("function"==typeof n){const r=n();for(const s of r)iD(Ek(s),e,t)}else iD(n,e,t)}function iD(i,e,t){const n=vt(i.directive);(function Cp(i,e){for(const t in e)if(e.hasOwnProperty(t)){const n=e[t],r=i[t];i[n]=r}})(n.declaredInputs,i.inputs),C0(n,e,t),t.set(n,i),e.push(n)}function Ek(i){return"function"==typeof i?{directive:et(i),inputs:ma,outputs:ma}:{directive:et(i.directive),inputs:Fk(i.inputs),outputs:Fk(i.outputs)}}function Fk(i){if(void 0===i||0===i.length)return ma;const e={};for(let t=0;tt()),this.destroyCbs=null}onDestroy(e){this.destroyCbs.push(e)}}class Ak extends Sk{constructor(e){super(),this.moduleType=e}create(e){return new Dk(this.moduleType,e,[])}}class rD extends sd{constructor(e){super(),this.componentFactoryResolver=new nk(this),this.instance=null;const t=new Vs([...e.providers,{provide:sd,useValue:this},{provide:p0,useValue:this.componentFactoryResolver}],e.parent||og(),e.debugName,new Set(["environment"]));this.injector=t,e.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}}function w0(i,e,t=null){return new rD({providers:i,parent:e,debugName:t,runEnvironmentInitializers:!0}).injector}class k0{constructor(){this.cachedInjectors=new Map}getOrCreateInjector(e,t,n,r){if(!this.cachedInjectors.has(e)){const s=n.length>0?w0(n,t,r):null;this.cachedInjectors.set(e,s)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}static{this.\u0275prov=ue({token:k0,providedIn:"environment",factory:()=>new k0})}}function _0(i){return!!Mk(i)&&(Array.isArray(i)||!(i instanceof Map)&&Symbol.iterator in i)}function Mk(i){return null!==i&&("function"==typeof i||"object"==typeof i)}function wl(i,e,t){return i[e]=t}function E0(i,e){return i[e]}function Vn(i,e,t){const n=i[e];return!Object.is(n,t)&&(i[e]=t,!0)}function Ou(i,e,t,n){const r=Vn(i,e,t);return Vn(i,e+1,n)||r}function uf(i,e,t,n,r){const s=Ou(i,e,t,n);return Vn(i,e+2,r)||s}function to(i,e,t,n,r,s){const a=Ou(i,e,t,n);return Ou(i,e+2,r,s)||a}function kp(i){return!(32&~i.flags)}function hf(i,e,t,n,r,s,a,d,h,p){const g=t+Me,v=e.firstCreatePass?function d5(i,e,t,n,r,s,a,d,h){const p=e.consts,g=Du(e,i,4,a||null,d||null);Sw(e,t,g,Ws(p,h)),ii(e,g);const v=g.tView=xw(2,g,n,r,s,e.directiveRegistry,e.pipeRegistry,null,e.schemas,p,null);return null!==e.queries&&(e.queries.template(e,g),v.queries=e.queries.embeddedTView(g)),g}(g,e,i,n,r,s,a,d,h):e.data[g];ya(v,!1);const y=sD(e,i,v,t);Ee()&&Vg(e,i,y,v),eo(y,i);const C=$x(y,i,y,v);return i[g]=C,e0(i,C),lk(C,v,i),nl(v)&&_w(e,i,v),null!=h&&Ew(i,v,p),v}function zn(i,e,t,n,r,s,a,d){const h=J(),p=Ft();return hf(h,p,i,e,t,n,r,Ws(p.consts,s),a,d),zn}let sD=aD;function aD(i,e,t,n){return mo(!0),e[nt].createComment("")}var gn;!function(i){i[i.NOT_STARTED=0]="NOT_STARTED",i[i.IN_PROGRESS=1]="IN_PROGRESS",i[i.COMPLETE=2]="COMPLETE",i[i.FAILED=3]="FAILED"}(gn||(gn={}));const lD=0,h5=1;var Dn,Ru;!function(i){i[i.Placeholder=0]="Placeholder",i[i.Loading=1]="Loading",i[i.Complete=2]="Complete",i[i.Error=3]="Error"}(Dn||(Dn={})),function(i){i[i.Initial=-1]="Initial"}(Ru||(Ru={}));const _p=0,F0=1,pf=2,cc=3,cD=4,dD=5;var Ik,Pu;function Ys(i,e,t){const n=1===i?dD:cD;null===e[n]&&(e[n]=[]),e[n].push(t)}function Lk(i,e){const t=1===i?dD:cD,n=e[t];if(null!==n){for(const r of n)r();e[t]=null}}function uD(i){Lk(1,i),Lk(0,i)}!function(i){i[i.Manual=0]="Manual",i[i.Playthrough=1]="Playthrough"}(Ik||(Ik={})),function(i){i[i.EarlyRead=0]="EarlyRead",i[i.Write=1]="Write",i[i.MixedReadWrite=2]="MixedReadWrite",i[i.Read=3]="Read"}(Pu||(Pu={}));class mf{constructor(){this.impl=null}execute(){this.impl?.execute()}static{this.\u0275prov=ue({token:mf,providedIn:"root",factory:()=>new mf})}}class gf{constructor(){this.ngZone=K(ni),this.scheduler=K(pp),this.errorHandler=K(pl,{optional:!0}),this.sequences=new Set,this.deferredRegistrations=new Set,this.executing=!1}static{this.PHASES=[Pu.EarlyRead,Pu.Write,Pu.MixedReadWrite,Pu.Read]}execute(){this.executing=!0;for(const e of gf.PHASES)for(const t of this.sequences)if(!t.erroredOrDestroyed&&t.hooks[e])try{t.pipelinedValue=this.ngZone.runOutsideAngular(()=>t.hooks[e](t.pipelinedValue))}catch(n){t.erroredOrDestroyed=!0,this.errorHandler?.handleError(n)}this.executing=!1;for(const e of this.sequences)e.afterRun(),e.once&&(this.sequences.delete(e),e.destroy());for(const e of this.deferredRegistrations)this.sequences.add(e);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear()}register(e){this.executing?this.deferredRegistrations.add(e):(this.sequences.add(e),this.scheduler.notify(6))}unregister(e){this.executing&&this.sequences.has(e)?(e.erroredOrDestroyed=!0,e.pipelinedValue=void 0,e.once=!0):(this.sequences.delete(e),this.deferredRegistrations.delete(e))}static{this.\u0275prov=ue({token:gf,providedIn:"root",factory:()=>new gf})}}class Ok{constructor(e,t,n,r){this.impl=e,this.hooks=t,this.once=n,this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.unregisterOnDestroy=r?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.()}}function ff(i,e){!e?.injector&&Q1();const t=e?.injector??K(ze);return bo(t)?($r("NgAfterNextRender"),hD(i,t,e,!0)):pD}function hD(i,e,t,n){const r=e.get(mf);r.impl??=e.get(gf);const s=t?.phase??Pu.MixedReadWrite,a=!0!==t?.manualCleanup?e.get(_g):null,d=new Ok(r.impl,function g5(i,e){if(i instanceof Function){const t=[void 0,void 0,void 0,void 0];return t[e]=i,t}return[i.earlyRead,i.write,i.mixedReadWrite,i.read]}(i,s),n,a);return r.impl.register(d),d}const pD={destroy(){}};function x0(i){return i+1}function Nu(i,e){i[pe];return i[x0(e.index)]}function gs(i,e){const t=x0(e.index);return i.data[t]}function vf(i,e){return e===Dn.Placeholder?i.placeholderBlockConfig?.[lD]??null:e===Dn.Loading?i.loadingBlockConfig?.[lD]??null:null}function mD(i){return i.loadingBlockConfig?.[h5]??null}function Rk(i,e){if(!i||0===i.length)return e;const t=new Set(i);for(const n of e)t.add(n);return i.length===t.size?i:Array.from(t)}const S0={passive:!0,capture:!0},Nk=new WeakMap,Bk=new WeakMap,Ep=new WeakMap,fD=["click","keydown"],Hk=["mouseenter","focusin"];let Hu=null,D0=0;class Vk{constructor(){this.callbacks=new Set,this.listener=()=>{for(const e of this.callbacks)e()}}}function vD(i,e){let t=Bk.get(i);if(!t){t=new Vk,Bk.set(i,t);for(const n of fD)i.addEventListener(n,t.listener,S0)}return t.callbacks.add(e),()=>{const{callbacks:n,listener:r}=t;if(n.delete(e),0===n.size){Bk.delete(i);for(const s of fD)i.removeEventListener(s,r,S0)}}}function bD(i,e){let t=Nk.get(i);if(!t){t=new Vk,Nk.set(i,t);for(const n of Hk)i.addEventListener(n,t.listener,S0)}return t.callbacks.add(e),()=>{const{callbacks:n,listener:r}=t;if(n.delete(e),0===n.size){for(const s of Hk)i.removeEventListener(s,r,S0);Nk.delete(i)}}}function yD(i,e,t){const n=t.get(ni);let r=Ep.get(i);return Hu=Hu||n.runOutsideAngular(()=>new IntersectionObserver(s=>{for(const a of s)a.isIntersecting&&Ep.has(a.target)&&n.run(Ep.get(a.target).listener)})),r||(r=new Vk,n.runOutsideAngular(()=>Hu.observe(i)),Ep.set(i,r),D0++),r.callbacks.add(e),()=>{Ep.has(i)&&(r.callbacks.delete(e),0===r.callbacks.size&&(Hu?.unobserve(i),Ep.delete(i),D0--),0===D0&&(Hu?.disconnect(),Hu=null))}}function bf(i,e,t,n,r,s,a){const d=i[Bn],h=d.get(ni);ff({read:function p(){if(nv(i))return;const g=Nu(i,e),v=g[F0];if(v!==Ru.Initial&&v!==Dn.Placeholder)return;const y=function A0(i,e,t){return null==t?i:t>=0?QE(t,i):i[e.index][an]??null}(i,e,n);if(!y)return void ff({read:p},{injector:d});if(nv(y))return;const C=function b5(i,e){return nu(Me+e,i)}(y,t),k=r(C,()=>{h.run(()=>{i!==y&&uv(y,k),s()})},d);i!==y&&dv(y,k),Ys(a,g,k)}},{injector:d})}function CD(i,e){const n=e[Bn].get(yf);return n.add(i),()=>n.remove(i)}class yf{constructor(){this.executingCallbacks=!1,this.idleId=null,this.current=new Set,this.deferred=new Set,this.ngZone=K(ni),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:t,deferred:n}=this;t.delete(e),n.delete(e),0===t.size&&0===n.size&&this.cancelIdleCallback()}scheduleIdleCallback(){const e=()=>{this.cancelIdleCallback(),this.executingCallbacks=!0;for(const t of this.current)t();if(this.current.clear(),this.executingCallbacks=!1,this.deferred.size>0){for(const t of this.deferred)this.current.add(t);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{this.\u0275prov=ue({token:yf,providedIn:"root",factory:()=>new yf})}}function wD(i){return(e,t)=>zk(i,e,t)}function zk(i,e,t){const r=t[Bn].get(Gk);return r.add(i,e),()=>r.remove(e)}class Gk{constructor(){this.executingCallbacks=!1,this.timeoutId=null,this.invokeTimerAt=null,this.current=[],this.deferred=[]}add(e,t){const n=this.executingCallbacks?this.deferred:this.current;this.addToQueue(n,Date.now()+e,t),this.scheduleTimer()}remove(e){const{current:t,deferred:n}=this;-1===this.removeFromQueue(t,e)&&this.removeFromQueue(n,e),0===t.length&&0===n.length&&this.clearTimeout()}addToQueue(e,t,n){let r=e.length;for(let s=0;st){r=s;break}Lo(e,r,t,n)}removeFromQueue(e,t){let n=-1;for(let r=0;r-1&&Jm(e,n,2),n}scheduleTimer(){const e=()=>{this.clearTimeout(),this.executingCallbacks=!0;const n=[...this.current],r=Date.now();for(let a=0;a=0&&Jm(this.current,0,s+1),this.executingCallbacks=!1,this.deferred.length>0){for(let a=0;a0){const n=Date.now(),r=this.current[0];if(null===this.timeoutId||this.invokeTimerAt&&this.invokeTimerAt-r>16){this.clearTimeout();const s=Math.max(r-n,16);this.invokeTimerAt=r,this.timeoutId=setTimeout(e,s)}}}clearTimeout(){null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}ngOnDestroy(){this.clearTimeout(),this.current.length=0,this.deferred.length=0}static{this.\u0275prov=ue({token:Gk,providedIn:"root",factory:()=>new Gk})}}new ge("DEFER_BLOCK_DEPENDENCY_INTERCEPTOR");const kD=new ge("");function T0(i){return i.get(kD,null,{optional:!0})?.behavior!==Ik.Manual&&bo(i)}let _D=null;function DD(i){const e=J(),t=di();if(Fp(e,t),bo(e[Bn])){const n=i(()=>kf(e,t),e);Ys(0,Nu(e,t),n)}}function D5(i){const e=J();if(bo(e[Bn])){const t=di(),r=gs(e[pe],t);if(r.loadingState===gn.NOT_STARTED){Ys(1,Nu(e,t),i(()=>wf(r,e,t),e))}}}function ad(i,e,t,n=!1){const r=t[Nn],s=r[pe];if(nv(r))return;const a=Nu(r,e);if(M5(a[F0],i)&&M5(a[_p]??-1,i)){const h=r[Bn],p=gs(s,e),v=n||!bo(h)||null===mD(p)&&null===vf(p,Dn.Loading)&&!vf(p,Dn.Placeholder)?AD:_D;try{v(i,a,t,e,r)}catch(y){t0(r,y)}}}function Wk(i,e,t){return i.get(k0).getOrCreateInjector(e,i,t,"")}function AD(i,e,t,n,r){const s=function Bu(i,e,t){const r=gs(e[pe],t);switch(i){case Dn.Complete:return r.primaryTmplIndex;case Dn.Loading:return r.loadingTmplIndex;case Dn.Error:return r.errorTmplIndex;case Dn.Placeholder:return r.placeholderTmplIndex;default:return null}}(i,r,n);if(null!==s){e[F0]=i;const a=r[pe],h=rt(a,s+Me),p=0;let g;if(Iw(t,p),i===Dn.Complete){const C=gs(a,n),k=C.providers;k&&k.length>0&&(g=function A5(i,e,t){if(i instanceof Ze){const r=i.injector,a=Wk(i.parentInjector,e,t);return new Ze(r,a)}const n=i.get(Nr);if(n!==i){const r=Wk(n,e,t);return new Ze(i,r)}return Wk(i,e,t)}(r[Bn],C,k))}const v=Iu(t,h.tView.ssrId),y=rp(r,h,null,{dehydratedView:v,injector:g});op(t,y,p,Au(h,v)),ap(y,2)}}function T5(i,e,t,n,r){const s=Date.now(),d=gs(r[pe],n);if(null===e[pf]||e[pf]<=s){e[pf]=null;const h=mD(d),p=null!==e[cc];if(i!==Dn.Loading||null===h||p){i>Dn.Loading&&p&&(e[cc](),e[cc]=null,e[_p]=null),AD(i,e,t,n,r);const g=vf(d,i);null!==g&&(e[pf]=s+g,TD(g,e,n,t,r))}else{e[_p]=i;const g=TD(h,e,n,t,r);e[cc]=g}}else e[_p]=i}function TD(i,e,t,n,r){return zk(i,()=>{const a=e[_p];e[pf]=null,e[_p]=null,null!==a&&ad(a,t,n)},r)}function M5(i,e){return i{let v=!1;const y=[],C=[];for(const k of g){if("fulfilled"!==k.status){v=!0;break}{const E=k.value,x=At(E)||vt(E);if(x)y.push(x);else{const S=bi(E);S&&C.push(S)}}}if(i.loadingPromise=null,h.remove(p),v){if(i.loadingState=gn.FAILED,null===i.errorTmplIndex){const E=new j(750,!1);t0(e,E)}}else{i.loadingState=gn.COMPLETE;const k=a.tView;if(y.length>0){k.directiveRegistry=Rk(k.directiveRegistry,y);const x=Xy(!1,...y.map(S=>S.type));i.providers=x}C.length>0&&(k.pipeRegistry=Rk(k.pipeRegistry,C))}}),i.loadingPromise):(i.loadingPromise=Promise.resolve().then(()=>{i.loadingPromise=null,i.loadingState=gn.COMPLETE,h.remove(p)}),i.loadingPromise)}function Fp(i,e){const t=i[e.index];ad(Dn.Placeholder,e,t)}function ID(i,e,t){i.loadingPromise.then(()=>{i.loadingState===gn.COMPLETE?ad(Dn.Complete,e,t):i.loadingState===gn.FAILED&&ad(Dn.Error,e,t)})}function kf(i,e){const t=i[pe],n=i[e.index];if(!T0(i[Bn]))return;const s=Nu(i,e),a=gs(t,e);switch(uD(s),a.loadingState){case gn.NOT_STARTED:ad(Dn.Loading,e,n),MD(a,i,e),a.loadingState===gn.IN_PROGRESS&&ID(a,e,n);break;case gn.IN_PROGRESS:ad(Dn.Loading,e,n),ID(a,e,n);break;case gn.COMPLETE:ad(Dn.Complete,e,n);break;case gn.FAILED:ad(Dn.Error,e,n)}}function ko(i,e,t,n){const r=J();if(Vn(r,Ca(),e)){Ft();yl(Ui(),r,i,e,t,n)}return ko}function xp(i,e){let t=!1,n=Zl();for(let s=1;s>17&32767}function Fe(i){return 2|i}function xe(i){return(131068&i)>>2}function bt(i,e){return-131069&i|e<<2}function Ho(i){return 1|i}function I5(i,e,t,n,r,s){let a=s?e.classBindings:e.styleBindings,d=X(a),h=xe(a);i[n]=t;let g,p=!1;if(Array.isArray(t)){const v=t;g=v[1],(null===g||jd(v,g)>0)&&(p=!0)}else g=t;if(r)if(0!==h){const y=X(i[d+1]);i[n+1]=$(y,d),0!==y&&(i[y+1]=bt(i[y+1],n)),i[d+1]=function ke(i,e){return 131071&i|e<<17}(i[d+1],n)}else i[n+1]=$(d,0),0!==d&&(i[d+1]=bt(i[d+1],n)),d=n;else i[n+1]=$(h,0),0===d?d=n:i[h+1]=bt(i[h+1],n),h=n;p&&(i[n+1]=Fe(i[n+1])),L8(i,g,n,!0),L8(i,g,n,!1),function Ff(i,e,t,n,r){const s=r?i.residualClasses:i.residualStyles;null!=s&&"string"==typeof e&&jd(s,e)>=0&&(t[n+1]=Ho(t[n+1]))}(e,g,i,n,s),a=$(d,h),s?e.classBindings=a:e.styleBindings=a}function L8(i,e,t,n){const r=i[t+1],s=null===e;let a=n?X(r):xe(r),d=!1;for(;0!==a&&(!1===d||s);){const h=i[a],p=i[a+1];nK(h,e)&&(d=!0,i[a+1]=n?Ho(p):Fe(p)),a=n?X(p):xe(p)}d&&(i[t+1]=n?Fe(r):Ho(r))}function nK(i,e){return null===i||null==e||(Array.isArray(i)?i[1]:i)===e||!(!Array.isArray(i)||"string"!=typeof e)&&jd(i,e)>=0}const Ur={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function O8(i){return i.substring(Ur.key,Ur.keyEnd)}function rK(i){return i.substring(Ur.value,Ur.valueEnd)}function R8(i,e){const t=Ur.textEnd;return t===e?-1:(e=Ur.keyEnd=function aK(i,e,t){for(;e32;)e++;return e}(i,Ur.key=e,t),M0(i,e,t))}function P8(i,e){const t=Ur.textEnd;let n=Ur.key=M0(i,e,t);return t===n?-1:(n=Ur.keyEnd=function lK(i,e,t){let n;for(;e=65&&(-33&n)<=90||n>=48&&n<=57);)e++;return e}(i,n,t),n=B8(i,n,t,58),n=Ur.value=M0(i,n,t),n=Ur.valueEnd=function cK(i,e,t){let n=-1,r=-1,s=-1,a=e,d=a;for(;a32&&(d=a),s=r,r=n,n=-33&h}return d}(i,n,t),B8(i,n,t,59))}function N8(i){Ur.key=0,Ur.keyEnd=0,Ur.value=0,Ur.valueEnd=0,Ur.textEnd=i.length}function M0(i,e,t){for(;e=0;t=P8(e,t))G8(i,O8(e),rK(e))}function cd(i,e){for(let t=function oK(i){return N8(i),R8(i,M0(i,0,Ur.textEnd))}(e);t>=0;t=R8(e,t))as(i,O8(e),!0)}function dc(i,e,t,n){const r=J(),s=Ft(),a=Jl(2);if(s.firstUpdatePass&&z8(s,i,a,n),e!==ut&&Vn(r,a,e)){$8(s,s.data[Vr()],r,r[nt],i,r[a+1]=function yK(i,e){return null==i||""===i||("string"==typeof e?i+=e:"object"==typeof i&&(i=Xn(Po(i)))),i}(e,t),n,a)}}function uc(i,e,t,n){const r=Ft(),s=Jl(2);r.firstUpdatePass&&z8(r,null,s,n);const a=J();if(t!==ut&&Vn(a,s,t)){const d=r.data[Vr()];if(U8(d,n)&&!V8(r,s)){let h=n?d.classesWithoutHost:d.stylesWithoutHost;null!==h&&(t=B(h,t||"")),L5(r,d,a,t,n)}else!function bK(i,e,t,n,r,s,a,d){r===ut&&(r=Zt);let h=0,p=0,g=0=i.expandoStartIndex}function z8(i,e,t,n){const r=i.data;if(null===r[t+1]){const s=r[Vr()],a=V8(i,t);U8(s,n)&&null===e&&!a&&(e=!1),e=function hK(i,e,t,n){const r=pv(i);let s=n?e.residualClasses:e.residualStyles;if(null===r)0===(n?e.classBindings:e.styleBindings)&&(t=R5(null,i,e,t,n),t=jk(t,e.attrs,n),s=null);else{const a=e.directiveStylingLast;if(-1===a||i[a]!==r)if(t=R5(r,i,e,t,n),null===s){let h=function pK(i,e,t){const n=t?e.classBindings:e.styleBindings;if(0!==xe(n))return i[X(n)]}(i,e,n);void 0!==h&&Array.isArray(h)&&(h=R5(null,i,e,h[1],n),h=jk(h,e.attrs,n),function mK(i,e,t,n){const r=t?e.classBindings:e.styleBindings;i[X(r)]=n}(i,e,n,h))}else s=function gK(i,e,t){let n;const r=e.directiveEnd;for(let s=1+e.directiveStylingLast;s0;){const h=i[r],p=Array.isArray(h),g=p?h[1]:h,v=null===g;let y=t[r+1];y===ut&&(y=v?Zt:void 0);let C=v?fi(y,n):g===n?y:void 0;if(p&&!LD(C)&&(C=fi(h,n)),LD(C)&&(d=C,a))return d;const k=i[r+1];r=a?X(k):xe(k)}if(null!==e){let h=s?e.residualClasses:e.residualStyles;null!=h&&(d=fi(h,n))}return d}function LD(i){return void 0!==i}function U8(i,e){return!!(i.flags&(e?8:16))}function P5(){return J()[Xi][Ht]}class AK{destroy(e){}updateValue(e,t){}swap(e,t){const n=Math.min(e,t),r=Math.max(e,t),s=this.detach(r);if(r-n>1){const a=this.detach(n);this.attach(n,s),this.attach(r,a)}else this.attach(n,s)}move(e,t){this.attach(t,this.detach(e))}}function N5(i,e,t,n,r){return i===t&&Object.is(e,n)?1:Object.is(r(i,e),r(t,n))?-1:0}function B5(i,e,t,n){return!(void 0===e||!e.has(n))&&(i.attach(t,e.get(n)),e.delete(n),!0)}function j8(i,e,t,n,r){if(B5(i,e,n,t(n,r)))i.updateValue(n,r);else{const s=i.create(n,r);i.attach(n,s)}}function q8(i,e,t,n){const r=new Set;for(let s=e;s<=t;s++)r.add(n(s,i.at(s)));return r}class K8{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 t=this.kvMap.get(e);return void 0!==this._vMap&&this._vMap.has(t)?(this.kvMap.set(e,this._vMap.get(t)),this._vMap.delete(t)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,t){if(this.kvMap.has(e)){let n=this.kvMap.get(e);void 0===this._vMap&&(this._vMap=new Map);const r=this._vMap;for(;r.has(n);)n=r.get(n);r.set(n,t)}else this.kvMap.set(e,t)}forEach(e){for(let[t,n]of this.kvMap)if(e(n,t),void 0!==this._vMap){const r=this._vMap;for(;r.has(n);)n=r.get(n),e(n,t)}}}function Da(i,e){$r("NgControlFlow");const t=J(),n=Ca(),r=t[n]!==ut?t[n]:-1,s=-1!==r?OD(t,Me+r):void 0;if(Vn(t,n,i)){const d=we(null);try{if(void 0!==s&&Iw(s,0),-1!==i){const h=Me+i,p=OD(t,h),g=z5(t[pe],h),v=Iu(p,g.tView.ssrId);op(p,rp(t,g,e,{dehydratedView:v}),0,Au(g,v))}}finally{we(d)}}else if(void 0!==s){const d=Kx(s,0);void 0!==d&&(d[Ht]=e)}}class MK{constructor(e,t,n){this.lContainer=e,this.$implicit=t,this.$index=n}get $count(){return this.lContainer.length-an}}class OK{constructor(e,t,n){this.hasEmptyBlock=e,this.trackByFn=t,this.liveCollection=n}}function H5(i,e,t,n,r,s,a,d,h,p,g,v,y){$r("NgControlFlow");const C=J(),k=Ft(),E=void 0!==h,x=J(),S=d?a.bind(x[Xi][Ht]):a,D=new OK(E,S);x[Me+i]=D,hf(C,k,i+1,e,t,n,r,Ws(k.consts,s)),E&&hf(C,k,i+2,h,p,g,v,Ws(k.consts,y))}class RK extends AK{constructor(e,t,n){super(),this.lContainer=e,this.hostLView=t,this.templateTNode=n,this.operationsCounter=void 0,this.needsIndexUpdate=!1}get length(){return this.lContainer.length-an}at(e){return this.getLView(e)[Ht].$implicit}attach(e,t){const n=t[ao];this.needsIndexUpdate||=e!==this.length,op(this.lContainer,t,e,Au(this.templateTNode,n))}detach(e){return this.needsIndexUpdate||=e!==this.length-1,function PK(i,e){return ip(i,e)}(this.lContainer,e)}create(e,t){const n=Iu(this.lContainer,this.templateTNode.tView.ssrId),r=rp(this.hostLView,this.templateTNode,new MK(this.lContainer,t,e),{dehydratedView:n});return this.operationsCounter?.recordCreate(),r}destroy(e){Kv(e[pe],e),this.operationsCounter?.recordDestroy()}updateValue(e,t){this.getLView(e)[Ht].$implicit=t}reset(){this.needsIndexUpdate=!1,this.operationsCounter?.reset()}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e{i.destroy(h)})}(h,i,s.trackByFn),h.updateIndexes(),s.hasEmptyBlock){const p=Ca(),g=0===h.length;if(Vn(n,p,g)){const v=t+2,y=OD(n,v);if(g){const C=z5(r,v),k=Iu(y,C.tView.ssrId);op(y,rp(n,C,void 0,{dehydratedView:k}),0,Au(C,k))}else Iw(y,0)}}}finally{we(e)}}function OD(i,e){return i[e]}function z5(i,e){return rt(i,e)}function ji(i,e,t,n){const r=J(),s=Ft(),a=Me+i,d=r[nt],h=s.firstCreatePass?function BK(i,e,t,n,r,s){const a=e.consts,h=Du(e,i,2,n,Ws(a,r));return Sw(e,t,h,Ws(a,s)),null!==h.attrs&&g0(h,h.attrs,!1),null!==h.mergedAttrs&&g0(h,h.mergedAttrs,!0),null!==e.queries&&e.queries.elementStart(e,h),h}(a,s,r,e,t,n):s.data[a],p=Y8(s,r,h,d,e,i);r[a]=p;const g=nl(h);return ya(h,!0),Ix(d,p,h),!kp(h)&&Ee()&&Vg(s,r,p,h),0===function tF(){return ot.lFrame.elementDepthCount}()&&eo(p,r),function WI(){ot.lFrame.elementDepthCount++}(),g&&(_w(s,r,h),kw(s,h,r)),null!==n&&Ew(r,h),ji}function fn(){let i=di();fC()?vC():(i=i.parent,ya(i,!1));const e=i;(function nF(i){return ot.skipHydrationRootTNode===i})(e)&&function rF(){ot.skipHydrationRootTNode=null}(),function gC(){ot.lFrame.elementDepthCount--}();const t=Ft();return t.firstCreatePass&&(ii(t,i),uo(i)&&t.queries.elementEnd(i)),null!=e.classesWithoutHost&&function fv(i){return!!(8&i.flags)}(e)&&L5(t,e,J(),e.classesWithoutHost,!0),null!=e.stylesWithoutHost&&function xC(i){return!!(16&i.flags)}(e)&&L5(t,e,J(),e.stylesWithoutHost,!1),fn}function Tp(i,e,t,n){return ji(i,e,t,n),fn(),Tp}let Y8=(i,e,t,n,r,s)=>(mo(!0),qv(n,r,ir()));function RD(i,e,t){const n=J(),r=Ft(),s=i+Me,a=r.firstCreatePass?function zK(i,e,t,n,r){const s=e.consts,a=Ws(s,n),d=Du(e,i,8,"ng-container",a);return null!==a&&g0(d,a,!0),Sw(e,t,d,Ws(s,r)),null!==e.queries&&e.queries.elementStart(e,d),d}(s,r,n,e,t):r.data[s];ya(a,!0);const d=Z8(r,n,a,i);return n[s]=d,Ee()&&Vg(r,n,d,a),eo(d,n),nl(a)&&(_w(r,n,a),kw(r,a,n)),null!=t&&Ew(n,a),RD}function PD(){let i=di();const e=Ft();return fC()?vC():(i=i.parent,ya(i,!1)),e.firstCreatePass&&(ii(e,i),uo(i)&&e.queries.elementEnd(i)),PD}function ND(i,e,t){return RD(i,e,t),PD(),ND}let Z8=(i,e,t,n)=>(mo(!0),mw(e[nt],""));function Mp(){return J()}const xf=void 0;var UK=["en",[["a","p"],["AM","PM"],xf],[["AM","PM"],xf,xf],[["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"]],xf,[["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"]],xf,[["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}",xf,"{1} 'at' {0}",xf],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function WK(i){const t=Math.floor(Math.abs(i)),n=i.toString().replace(/^[^.]*\.?/,"").length;return 1===t&&0===n?1:5}];let I0={};function fs(i){const e=function jK(i){return i.toLowerCase().replace(/_/g,"-")}(i);let t=eB(e);if(t)return t;const n=e.split("-")[0];if(t=eB(n),t)return t;if("en"===n)return UK;throw new j(701,!1)}function Q8(i){return fs(i)[Qi.PluralCase]}function eB(i){return i in I0||(I0[i]=Ji.ng&&Ji.ng.common&&Ji.ng.common.locales&&Ji.ng.common.locales[i]),I0[i]}var Qi;!function(i){i[i.LocaleId=0]="LocaleId",i[i.DayPeriodsFormat=1]="DayPeriodsFormat",i[i.DayPeriodsStandalone=2]="DayPeriodsStandalone",i[i.DaysFormat=3]="DaysFormat",i[i.DaysStandalone=4]="DaysStandalone",i[i.MonthsFormat=5]="MonthsFormat",i[i.MonthsStandalone=6]="MonthsStandalone",i[i.Eras=7]="Eras",i[i.FirstDayOfWeek=8]="FirstDayOfWeek",i[i.WeekendRange=9]="WeekendRange",i[i.DateFormat=10]="DateFormat",i[i.TimeFormat=11]="TimeFormat",i[i.DateTimeFormat=12]="DateTimeFormat",i[i.NumberSymbols=13]="NumberSymbols",i[i.NumberFormats=14]="NumberFormats",i[i.CurrencyCode=15]="CurrencyCode",i[i.CurrencySymbol=16]="CurrencySymbol",i[i.CurrencyName=17]="CurrencyName",i[i.Currencies=18]="Currencies",i[i.Directionality=19]="Directionality",i[i.PluralCase=20]="PluralCase",i[i.ExtraData=21]="ExtraData"}(Qi||(Qi={}));const qK=["zero","one","two","few","many"];const BD="en-US",HD={marker:"element"},VD={marker:"ICU"};var vs;!function(i){i[i.SHIFT=2]="SHIFT",i[i.APPEND_EAGERLY=1]="APPEND_EAGERLY",i[i.COMMENT=2]="COMMENT"}(vs||(vs={}));let tB=BD;let qk=0,Kk=0;function iB(i,e,t){const n=i[nt];switch(t){case Node.COMMENT_NODE:return mw(n,e);case Node.TEXT_NODE:return pw(n,e);case Node.ELEMENT_NODE:return qv(n,e,null)}}let Yk=(i,e,t,n)=>(mo(!0),iB(i,t,n));function nB(i,e,t,n){const r=t[nt];let a,s=null;for(let d=0;d>>1,C=e[++d],k=e[++d];Aw(r,nu(y,t),null,null,C,k,null)}else switch(h){case VD:const p=e[++d],g=e[++d];if(null===t[g]){eo(t[g]=Yk(t,g,p,Node.COMMENT_NODE),t)}break;case HD:const v=e[++d],y=e[++d];if(null===t[y]){eo(t[y]=Yk(t,y,v,Node.ELEMENT_NODE),t)}}}}function rB(i,e,t,n,r){for(let s=0;s>>2;switch(3&g){case 1:const y=t[++p],C=t[++p],k=i.data[v];"string"==typeof k?Aw(e[nt],e[v],null,k,y,h,C):No(i,k,e,y,h,e[nt],C,!1);break;case 0:const E=e[v];null!==E&&yx(e[nt],E,h);break;case 2:nY(i,Tu(i,v),e,h);break;case 3:oB(i,Tu(i,v),n,e)}}}}else{const h=t[s+1];if(h>0&&!(3&~h)){const g=Tu(i,h>>>2);e[g.currentCaseLViewIndex]<0&&oB(i,g,n,e)}}s+=d}}function oB(i,e,t,n){let r=n[e.currentCaseLViewIndex];if(null!==r){let s=qk;r<0&&(r=n[e.currentCaseLViewIndex]=~r,s=-1),rB(i,n,e.update[r],t,s)}}function nY(i,e,t,n){const r=function rY(i,e){let t=i.cases.indexOf(e);if(-1===t)switch(i.type){case 1:{const n=function KK(i,e){const t=Q8(e)(parseInt(i,10)),n=qK[t];return void 0!==n?n:"other"}(e,function JK(){return tB}());t=i.cases.indexOf(n),-1===t&&"other"!==n&&(t=i.cases.indexOf("other"));break}case 0:t=i.cases.indexOf("other")}return-1===t?null:t}(e,n);if(Jg(e,t)!==r&&(sB(i,e,t),t[e.currentCaseLViewIndex]=null===r?null:~r,null!==r)){const a=t[e.anchorIdx];a&&nB(i,e.create[r],t,a),function CS(i,e,t){up(i,e,t)}(t,e.anchorIdx,r)}}function sB(i,e,t){let n=Jg(e,t);if(null!==n){const r=e.remove[n];for(let s=0;s0){const d=nu(a,t);null!==d&&Gg(t[nt],d)}else sB(i,Tu(i,~a),t)}}}const zD=/\ufffd(\d+):?\d*\ufffd/gi,oY=/({\s*\ufffd\d+:?\d*\ufffd\s*,\s*\S{6}\s*,[\s\S]*})/gi,sY=/\ufffd(\d+)\ufffd/,lB=/^\s*(\ufffd\d+:?\d*\ufffd)\s*,\s*(select|plural)\s*,/,Zk="\ufffd",aY=/\ufffd\/?\*(\d+:\d+)\ufffd/gi,lY=/\ufffd(\/?[#*]\d+):?\d*\ufffd/gi,cY=/\uE500/g;function uY(i,e,t,n,r,s){const a=su(),d=[],h=[],p=[[]],g=[[]];r=function gY(i,e){if(hS(e))return uB(i);{const t=i.indexOf(`:${e}${Zk}`)+2+e.toString().length,n=i.search(new RegExp(`${Zk}\\/\\*\\d+:${e}${Zk}`));return uB(i.substring(t,n))}}(r,s);const v=function dY(i){return i.replace(cY," ")}(r).split(lY);for(let y=0;yt.length&&t.push(h)}return{type:n,mainBinding:r,cases:e,values:t}}function G5(i){if(!i)return[];let e=0;const t=[],n=[],r=/[{}]/g;let s;for(r.lastIndex=0;s=r.exec(i);){const d=s.index;if("}"==s[0]){if(t.pop(),0==t.length){const h=i.substring(e,d);lB.test(h)?n.push(fY(h)):n.push(h),e=d+1}}else{if(0==t.length){const h=i.substring(e,d);n.push(h),e=d+1}t.push("{")}}const a=i.substring(e);return n.push(a),n}function vY(i,e,t,n,r,s,a,d,h){const p=[],g=[],v=[];t.cases.push(a),t.create.push(p),t.remove.push(g),t.update.push(v);const C=QF(ic()).getInertBodyElement(d),k=ow(C)||C;return k?pB(i,e,t,n,r,p,g,v,k,s,h,0):0}function pB(i,e,t,n,r,s,a,d,h,p,g,v){let y=0,C=h.firstChild;for(;C;){const k=$g(e,n,1,null);switch(C.nodeType){case Node.ELEMENT_NODE:const E=C,x=E.tagName.toLowerCase();if(ox.hasOwnProperty(x)){$5(s,HD,x,p,k),e.data[k]=x;const L=E.attributes;for(let W=0;W>>vs.SHIFT;let v=i[g],y=!1;null===v&&(v=i[g]=Yk(i,g,d,h?Node.COMMENT_NODE:Node.TEXT_NODE),y=Ee()),p&&null!==t&&y&&Su(r,t,v,n,!1)}}(r,h.create,g,v),aF(!0)}function vB(){aF(!1)}let yB=(i,e,t)=>{};function Gn(i,e,t,n){const r=J(),s=Ft(),a=di();return W5(s,r,r[nt],a,i,e,n),Gn}function W5(i,e,t,n,r,s,a){const d=nl(n),p=i.firstCreatePass&&jx(i),g=e[Ht],v=Ux(e);let y=!0;if(3&n.type||a){const E=Pe(n,e),x=a?a(E):E,S=v.length,D=a?L=>a(Vt(L[n.index])):n.index;let I=null;if(!a&&d&&(I=function OY(i,e,t,n){const r=i.cleanup;if(null!=r)for(let s=0;sh?d[h]:null}"string"==typeof a&&(s+=2)}return null}(i,e,r,n.index)),null!==I){(I.__ngLastListenerFn__||I).__ngNextListenerFn__=s,I.__ngLastListenerFn__=s,y=!1}else{s=_B(n,e,g,s),yB(E,r,s);const L=t.listen(x,r,s);v.push(s,L),p&&p.push(r,D,S,S+1)}}else s=_B(n,e,g,s);const C=n.outputs;let k;if(y&&null!==C&&(k=C[r])){const E=k.length;if(E)for(let x=0;x-1?ls(i.index,e):e,5);let d=kB(e,t,n,s),h=r.__ngNextListenerFn__;for(;h;)d=kB(e,t,h,s)&&d,h=h.__ngNextListenerFn__;return d}}function Jt(i=1){return function ZI(i){return(ot.lFrame.contextLView=QE(i,ot.lFrame.contextLView))[Ht]}(i)}function RY(i,e){let t=null;const n=function Ky(i){const e=i.attrs;if(null!=e){const t=e.indexOf(5);if(!(1&t))return e[t+1]}return null}(i);for(let r=0;r=i.data.length&&(i.data[t]=null,i.blueprint[t]=null),e[t]=n}function hc(i){return ru(Wc(),Me+i)}function pc(i,e=""){const t=J(),n=Ft(),r=i+Me,s=n.firstCreatePass?Du(n,r,1,e,null):n.data[r],a=zB(n,t,s,e,i);t[r]=a,Ee()&&Vg(n,t,a,s),ya(s,!1)}let zB=(i,e,t,n,r)=>(mo(!0),pw(e[nt],n));function Ip(i){return WD("",i,""),Ip}function WD(i,e,t){const n=J(),r=_f(n,i,e,t);return r!==ut&&oc(n,Vr(),r),WD}const XB={};function K5(i,e,t,n,r){if(i=et(i),Array.isArray(i))for(let s=0;s>20;if(Ue(i)||!i.multi){const C=new jc(p,r,Z),k=Z5(h,e,r?g:g+y,v);-1===k?(wv(bv(d,a),s,h),Y5(s,i,e.length),e.push(h),d.directiveStart++,d.directiveEnd++,r&&(d.providerIndexes+=1048576),t.push(C),a.push(C)):(t[k]=C,a[k]=C)}else{const C=Z5(h,e,g+y,v),k=Z5(h,e,g,g+y),E=C>=0&&t[C],x=k>=0&&t[k];if(r&&!x||!r&&!E){wv(bv(d,a),s,h);const S=function nZ(i,e,t,n,r){const s=new jc(i,t,Z);return s.multi=[],s.index=e,s.componentProviders=0,eH(s,r,n&&!t),s}(r?iZ:tZ,t.length,r,n,p);!r&&x&&(t[k].providerFactory=S),Y5(s,i,e.length,0),e.push(h),d.directiveStart++,d.directiveEnd++,r&&(d.providerIndexes+=1048576),t.push(S),a.push(S)}else{Y5(s,i,C>-1?C:k,eH(t[r?k:C],p,!r&&n))}!r&&n&&x&&t[k].componentProviders++}}}function Y5(i,e,t,n){const r=Ue(e),s=function ti(i){return!!i.useClass}(e);if(r||s){const h=(s?et(e.useClass):e).prototype.ngOnDestroy;if(h){const p=i.destroyHooks||(i.destroyHooks=[]);if(!r&&e.multi){const g=p.indexOf(t);-1===g?p.push(t,[n,h]):p[g+1].push(n,h)}else p.push(t,h)}}}function eH(i,e,t){return t&&i.componentProviders++,i.multi.push(e)-1}function Z5(i,e,t,n){for(let r=t;r{t.providersResolver=(n,r)=>function eZ(i,e,t){const n=Ft();if(n.firstCreatePass){const r=Fr(i);K5(t,n.data,n.blueprint,r,!0),K5(e,n.data,n.blueprint,r,!1)}}(n,r?r(i):i,e)}}class UD{constructor(e){this._injector=e,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){const t=Xy(0,e.type),n=t.length>0?w0([t],this._injector,`Standalone[${e.type.name}]`):null;this.cachedInjectors.set(e,n)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}static{this.\u0275prov=ue({token:UD,providedIn:"environment",factory:()=>new UD(ve(Nr))})}}function L0(i){$r("NgStandalone"),i.getStandaloneInjector=e=>e.get(UD).getOrCreateStandaloneInjector(i)}function jD(i){if("function"==typeof i)return i;const e=Jr(i);return e.some(Py)?()=>e.map(et).map(tH):e.map(tH)}function tH(i){return tk(i)?i.ngModule:i}function Df(i,e,t,n){return sH(J(),ho(),i,e,t,n)}function nH(i,e,t,n,r){return aH(J(),ho(),i,e,t,n,r)}function rH(i,e,t,n,r,s){return lH(J(),ho(),i,e,t,n,r,s)}function oH(i,e,t,n,r,s,a){return cH(J(),ho(),i,e,t,n,r,s,a)}function Xk(i,e){const t=i[e];return t===ut?void 0:t}function sH(i,e,t,n,r,s){const a=e+t;return Vn(i,a,r)?wl(i,a+1,s?n.call(s,r):n(r)):Xk(i,a+1)}function aH(i,e,t,n,r,s,a){const d=e+t;return Ou(i,d,r,s)?wl(i,d+2,a?n.call(a,r,s):n(r,s)):Xk(i,d+2)}function lH(i,e,t,n,r,s,a,d){const h=e+t;return uf(i,h,r,s,a)?wl(i,h+3,d?n.call(d,r,s,a):n(r,s,a)):Xk(i,h+3)}function cH(i,e,t,n,r,s,a,d,h){const p=e+t;return to(i,p,r,s,a,d)?wl(i,p+4,h?n.call(h,r,s,a,d):n(r,s,a,d)):Xk(i,p+4)}function dH(i,e,t,n,r,s){let a=e+t,d=!1;for(let h=0;h{const n=Array.isArray(i);null===t.hostDirectives?(t.findHostDirectiveDefs=C0,t.hostDirectives=n?i.map(Ek):[i]):n?t.hostDirectives.unshift(...i.map(Ek)):t.hostDirectives.unshift(i)};return e.ngInherit=!0,e},\u0275\u0275NgOnChangesFeature:yi,\u0275\u0275ProvidersFeature:vn,\u0275\u0275CopyDefinitionFeature:function o5(i){let t,e=_k(i.type);t=Fr(i)?e.\u0275cmp:e.\u0275dir;const n=i;for(const r of tD)n[r]=t[r];if(Fr(t))for(const r of r5)n[r]=t[r]},\u0275\u0275InheritDefinitionFeature:Fi,\u0275\u0275InputTransformsFeature:wp,\u0275\u0275StandaloneFeature:L0,\u0275\u0275nextContext:Jt,\u0275\u0275namespaceHTML:function Te(){!function cs(){ot.lFrame.currentNamespace=null}()},\u0275\u0275namespaceMathML:function A(){ot.lFrame.currentNamespace="math"},\u0275\u0275namespaceSVG:function JI(){ot.lFrame.currentNamespace="svg"},\u0275\u0275enableBindings:function $c(){ot.bindingsEnabled=!0},\u0275\u0275disableBindings:function jI(){ot.bindingsEnabled=!1},\u0275\u0275elementStart:ji,\u0275\u0275elementEnd:fn,\u0275\u0275element:Tp,\u0275\u0275elementContainerStart:RD,\u0275\u0275elementContainerEnd:PD,\u0275\u0275elementContainer:ND,\u0275\u0275pureFunction0:function aZ(i,e,t){const n=ho()+i,r=J();return r[n]===ut?wl(r,n,t?e.call(t):e()):E0(r,n)},\u0275\u0275pureFunction1:Df,\u0275\u0275pureFunction2:nH,\u0275\u0275pureFunction3:rH,\u0275\u0275pureFunction4:oH,\u0275\u0275pureFunction5:function lZ(i,e,t,n,r,s,a,d){const h=ho()+i,p=J(),g=to(p,h,t,n,r,s);return Vn(p,h+4,a)||g?wl(p,h+5,d?e.call(d,t,n,r,s,a):e(t,n,r,s,a)):E0(p,h+5)},\u0275\u0275pureFunction6:function cZ(i,e,t,n,r,s,a,d,h){const p=ho()+i,g=J(),v=to(g,p,t,n,r,s);return Ou(g,p+4,a,d)||v?wl(g,p+6,h?e.call(h,t,n,r,s,a,d):e(t,n,r,s,a,d)):E0(g,p+6)},\u0275\u0275pureFunction7:function dZ(i,e,t,n,r,s,a,d,h,p){const g=ho()+i,v=J();let y=to(v,g,t,n,r,s);return uf(v,g+4,a,d,h)||y?wl(v,g+7,p?e.call(p,t,n,r,s,a,d,h):e(t,n,r,s,a,d,h)):E0(v,g+7)},\u0275\u0275pureFunction8:function uZ(i,e,t,n,r,s,a,d,h,p,g){const v=ho()+i,y=J(),C=to(y,v,t,n,r,s);return to(y,v+4,a,d,h,p)||C?wl(y,v+8,g?e.call(g,t,n,r,s,a,d,h,p):e(t,n,r,s,a,d,h,p)):E0(y,v+8)},\u0275\u0275pureFunctionV:function hZ(i,e,t,n){return dH(J(),ho(),i,e,t,n)},\u0275\u0275getCurrentView:Mp,\u0275\u0275restoreView:tr,\u0275\u0275listener:Gn,\u0275\u0275projection:$D,\u0275\u0275syntheticHostProperty:function X8(i,e,t){const n=J();if(Vn(n,Ca(),e)){const s=Ft(),a=Ui();No(s,a,n,i,e,qx(pv(s.data),a,n),t,!0)}return X8},\u0275\u0275syntheticHostListener:function wB(i,e){const t=di(),n=J(),r=Ft();return W5(r,n,qx(pv(r.data),t,n),t,i,e),wB},\u0275\u0275pipeBind1:function gZ(i,e,t){const n=i+Me,r=J(),s=ru(r,n);return Qk(r,n)?sH(r,ho(),e,s.transform,t,s):s.transform(t)},\u0275\u0275pipeBind2:function fZ(i,e,t,n){const r=i+Me,s=J(),a=ru(s,r);return Qk(s,r)?aH(s,ho(),e,a.transform,t,n,a):a.transform(t,n)},\u0275\u0275pipeBind3:function vZ(i,e,t,n,r){const s=i+Me,a=J(),d=ru(a,s);return Qk(a,s)?lH(a,ho(),e,d.transform,t,n,r,d):d.transform(t,n,r)},\u0275\u0275pipeBind4:function bZ(i,e,t,n,r,s){const a=i+Me,d=J(),h=ru(d,a);return Qk(d,a)?cH(d,ho(),e,h.transform,t,n,r,s,h):h.transform(t,n,r,s)},\u0275\u0275pipeBindV:function yZ(i,e,t){const n=i+Me,r=J(),s=ru(r,n);return Qk(r,n)?dH(r,ho(),e,s.transform,t,s):s.transform.apply(s,t)},\u0275\u0275projectionDef:GD,\u0275\u0275hostProperty:function J8(i,e,t){const n=J();if(Vn(n,Ca(),e)){No(Ft(),Ui(),n,i,e,n[nt],t,!0)}return J8},\u0275\u0275property:or,\u0275\u0275propertyInterpolate:U5,\u0275\u0275propertyInterpolate1:j5,\u0275\u0275propertyInterpolate2:function EB(i,e,t,n,r,s,a){const d=J(),h=Sp(d,e,t,n,r,s);if(h!==ut){No(Ft(),Ui(),d,i,h,d[nt],a,!1)}return EB},\u0275\u0275propertyInterpolate3:function FB(i,e,t,n,r,s,a,d,h){const p=J(),g=Dp(p,e,t,n,r,s,a,d);if(g!==ut){No(Ft(),Ui(),p,i,g,p[nt],h,!1)}return FB},\u0275\u0275propertyInterpolate4:function xB(i,e,t,n,r,s,a,d,h,p,g){const v=J(),y=Ef(v,e,t,n,r,s,a,d,h,p);if(y!==ut){No(Ft(),Ui(),v,i,y,v[nt],g,!1)}return xB},\u0275\u0275propertyInterpolate5:function SB(i,e,t,n,r,s,a,d,h,p,g,v,y){const C=J(),k=Ap(C,e,t,n,r,s,a,d,h,p,g,v);if(k!==ut){No(Ft(),Ui(),C,i,k,C[nt],y,!1)}return SB},\u0275\u0275propertyInterpolate6:function DB(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k){const E=J(),x=c(E,e,t,n,r,s,a,d,h,p,g,v,y,C);if(x!==ut){No(Ft(),Ui(),E,i,x,E[nt],k,!1)}return DB},\u0275\u0275propertyInterpolate7:function AB(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x){const S=J(),D=o(S,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E);if(D!==ut){No(Ft(),Ui(),S,i,D,S[nt],x,!1)}return AB},\u0275\u0275propertyInterpolate8:function TB(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x,S,D){const I=J(),L=l(I,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x,S);if(L!==ut){No(Ft(),Ui(),I,i,L,I[nt],D,!1)}return TB},\u0275\u0275propertyInterpolateV:function MB(i,e,t){const n=J(),r=xp(n,e);if(r!==ut){No(Ft(),Ui(),n,i,r,n[nt],t,!1)}return MB},\u0275\u0275pipe:function pZ(i,e){const t=Ft();let n;const r=i+Me;t.firstCreatePass?(n=function mZ(i,e){if(e)for(let t=e.length-1;t>=0;t--){const n=e[t];if(i===n.name)return n}}(e,t.pipeRegistry),t.data[r]=n,n.onDestroy&&(t.destroyHooks??=[]).push(r,n.onDestroy)):n=t.data[r];const s=n.factory||(n.factory=Rr(n.type)),d=oo(Z);try{const h=vv(!1),p=s();return vv(h),q5(t,J(),r,p),p}finally{oo(d)}},\u0275\u0275queryRefresh:mr,\u0275\u0275queryAdvance:function HY(i=1){mg(mv()+i)},\u0275\u0275viewQuery:Sf,\u0275\u0275viewQuerySignal:function BY(i,e,t,n){bk(i,PS(e,t,n))},\u0275\u0275loadQuery:gr,\u0275\u0275contentQuery:bs,\u0275\u0275contentQuerySignal:function NY(i,e,t,n,r){bk(e,NS(i,t,n,r))},\u0275\u0275reference:hc,\u0275\u0275classMap:function uK(i){uc(vK,cd,i,!0)},\u0275\u0275classMapInterpolate1:function CK(i,e,t){uc(as,cd,_f(J(),i,e,t),!0)},\u0275\u0275classMapInterpolate2:function wK(i,e,t,n,r){uc(as,cd,Sp(J(),i,e,t,n,r),!0)},\u0275\u0275classMapInterpolate3:function kK(i,e,t,n,r,s,a){uc(as,cd,Dp(J(),i,e,t,n,r,s,a),!0)},\u0275\u0275classMapInterpolate4:function _K(i,e,t,n,r,s,a,d,h){uc(as,cd,Ef(J(),i,e,t,n,r,s,a,d,h),!0)},\u0275\u0275classMapInterpolate5:function EK(i,e,t,n,r,s,a,d,h,p,g){uc(as,cd,Ap(J(),i,e,t,n,r,s,a,d,h,p,g),!0)},\u0275\u0275classMapInterpolate6:function FK(i,e,t,n,r,s,a,d,h,p,g,v,y){uc(as,cd,c(J(),i,e,t,n,r,s,a,d,h,p,g,v,y),!0)},\u0275\u0275classMapInterpolate7:function xK(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k){uc(as,cd,o(J(),i,e,t,n,r,s,a,d,h,p,g,v,y,C,k),!0)},\u0275\u0275classMapInterpolate8:function SK(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x){uc(as,cd,l(J(),i,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x),!0)},\u0275\u0275classMapInterpolateV:function DK(i){uc(as,cd,xp(J(),i),!0)},\u0275\u0275styleMap:ld,\u0275\u0275styleMapInterpolate1:function VY(i,e,t){ld(_f(J(),i,e,t))},\u0275\u0275styleMapInterpolate2:function zY(i,e,t,n,r){ld(Sp(J(),i,e,t,n,r))},\u0275\u0275styleMapInterpolate3:function GY(i,e,t,n,r,s,a){ld(Dp(J(),i,e,t,n,r,s,a))},\u0275\u0275styleMapInterpolate4:function $Y(i,e,t,n,r,s,a,d,h){ld(Ef(J(),i,e,t,n,r,s,a,d,h))},\u0275\u0275styleMapInterpolate5:function WY(i,e,t,n,r,s,a,d,h,p,g){ld(Ap(J(),i,e,t,n,r,s,a,d,h,p,g))},\u0275\u0275styleMapInterpolate6:function UY(i,e,t,n,r,s,a,d,h,p,g,v,y){ld(c(J(),i,e,t,n,r,s,a,d,h,p,g,v,y))},\u0275\u0275styleMapInterpolate7:function jY(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k){ld(o(J(),i,e,t,n,r,s,a,d,h,p,g,v,y,C,k))},\u0275\u0275styleMapInterpolate8:function qY(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x){ld(l(J(),i,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x))},\u0275\u0275styleMapInterpolateV:function KY(i){ld(xp(J(),i))},\u0275\u0275styleProp:O5,\u0275\u0275stylePropInterpolate1:function IB(i,e,t,n,r){return dc(i,_f(J(),e,t,n),r,!1),IB},\u0275\u0275stylePropInterpolate2:function LB(i,e,t,n,r,s,a){return dc(i,Sp(J(),e,t,n,r,s),a,!1),LB},\u0275\u0275stylePropInterpolate3:function OB(i,e,t,n,r,s,a,d,h){return dc(i,Dp(J(),e,t,n,r,s,a,d),h,!1),OB},\u0275\u0275stylePropInterpolate4:function RB(i,e,t,n,r,s,a,d,h,p,g){return dc(i,Ef(J(),e,t,n,r,s,a,d,h,p),g,!1),RB},\u0275\u0275stylePropInterpolate5:function PB(i,e,t,n,r,s,a,d,h,p,g,v,y){return dc(i,Ap(J(),e,t,n,r,s,a,d,h,p,g,v),y,!1),PB},\u0275\u0275stylePropInterpolate6:function NB(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k){return dc(i,c(J(),e,t,n,r,s,a,d,h,p,g,v,y,C),k,!1),NB},\u0275\u0275stylePropInterpolate7:function BB(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x){return dc(i,o(J(),e,t,n,r,s,a,d,h,p,g,v,y,C,k,E),x,!1),BB},\u0275\u0275stylePropInterpolate8:function HB(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x,S,D){return dc(i,l(J(),e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x,S),D,!1),HB},\u0275\u0275stylePropInterpolateV:function VB(i,e,t){return dc(i,xp(J(),e),t,!1),VB},\u0275\u0275classProp:zo,\u0275\u0275advance:Ot,\u0275\u0275template:zn,\u0275\u0275conditional:Da,\u0275\u0275defer:function w5(i,e,t,n,r,s,a,d,h){const p=J(),g=Ft(),v=i+Me,y=hf(p,g,i,null,0,0);if(g.firstCreatePass){$r("NgDefer");const x={primaryTmplIndex:e,loadingTmplIndex:n??null,placeholderTmplIndex:r??null,errorTmplIndex:s??null,placeholderBlockConfig:null,loadingBlockConfig:null,dependencyResolverFn:t??null,loadingState:gn.NOT_STARTED,loadingPromise:null,providers:null};h?.(g,x,d,a),function v5(i,e,t){const n=x0(e);i.data[n]=t}(g,v,x)}lk(p[v],y,p);const k=[null,Ru.Initial,null,null,null,null];!function f5(i,e,t){i[pe],i[x0(e)]=t}(p,v,k);const E=()=>uD(k);Ys(0,k,()=>uv(p,E)),dv(p,E)},\u0275\u0275deferWhen:function k5(i){const e=J();if(Vn(e,Ca(),i)){const n=we(null);try{const r=!!i,s=Ui(),d=Nu(e,s)[F0];!1===r&&d===Ru.Initial?Fp(e,s):!0===r&&(d===Ru.Initial||d===Dn.Placeholder)&&kf(e,s)}finally{we(n)}}},\u0275\u0275deferOnIdle:function Cf(){DD(CD)},\u0275\u0275deferOnImmediate:function _5(){const i=J(),e=di(),t=i[pe],n=i[Bn],r=gs(t,e);(!T0(n)||null===r.loadingTmplIndex)&&Fp(i,e),kf(i,e)},\u0275\u0275deferOnTimer:function I8(i){DD(wD(i))},\u0275\u0275deferOnHover:function E5(i,e){const t=J(),n=di();Fp(t,n),bf(t,n,i,e,bD,()=>kf(t,n),0)},\u0275\u0275deferOnInteraction:function SD(i,e){const t=J(),n=di();Fp(t,n),bf(t,n,i,e,vD,()=>kf(t,n),0)},\u0275\u0275deferOnViewport:function x5(i,e){const t=J(),n=di();Fp(t,n),bf(t,n,i,e,yD,()=>kf(t,n),0)},\u0275\u0275deferPrefetchWhen:function M8(i){const e=J();if(Vn(e,Ca(),i)){const n=we(null);try{const r=!!i,s=e[pe],a=Ui(),d=gs(s,a);!0===r&&d.loadingState===gn.NOT_STARTED&&wf(d,e,a)}finally{we(n)}}},\u0275\u0275deferPrefetchOnIdle:function $k(){D5(CD)},\u0275\u0275deferPrefetchOnImmediate:function ED(){const i=J(),e=di(),n=gs(i[pe],e);n.loadingState===gn.NOT_STARTED&&MD(n,i,e)},\u0275\u0275deferPrefetchOnTimer:function FD(i){D5(wD(i))},\u0275\u0275deferPrefetchOnHover:function xD(i,e){const t=J(),n=di(),s=gs(t[pe],n);s.loadingState===gn.NOT_STARTED&&bf(t,n,i,e,bD,()=>wf(s,t,n),1)},\u0275\u0275deferPrefetchOnInteraction:function F5(i,e){const t=J(),n=di(),s=gs(t[pe],n);s.loadingState===gn.NOT_STARTED&&bf(t,n,i,e,vD,()=>wf(s,t,n),1)},\u0275\u0275deferPrefetchOnViewport:function S5(i,e){const t=J(),n=di(),s=gs(t[pe],n);s.loadingState===gn.NOT_STARTED&&bf(t,n,i,e,yD,()=>wf(s,t,n),1)},\u0275\u0275deferEnableTimerScheduling:function C5(i,e,t,n){const r=i.consts;null!=t&&(e.placeholderBlockConfig=Ws(r,t)),null!=n&&(e.loadingBlockConfig=Ws(r,n)),null===_D&&(_D=T5)},\u0275\u0275repeater:V5,\u0275\u0275repeaterCreate:H5,\u0275\u0275repeaterTrackByIndex:function IK(i){return i},\u0275\u0275repeaterTrackByIdentity:function LK(i,e){return e},\u0275\u0275componentInstance:P5,\u0275\u0275text:pc,\u0275\u0275textInterpolate:Ip,\u0275\u0275textInterpolate1:WD,\u0275\u0275textInterpolate2:function GB(i,e,t,n,r){const s=J(),a=Sp(s,i,e,t,n,r);return a!==ut&&oc(s,Vr(),a),GB},\u0275\u0275textInterpolate3:function $B(i,e,t,n,r,s,a){const d=J(),h=Dp(d,i,e,t,n,r,s,a);return h!==ut&&oc(d,Vr(),h),$B},\u0275\u0275textInterpolate4:function WB(i,e,t,n,r,s,a,d,h){const p=J(),g=Ef(p,i,e,t,n,r,s,a,d,h);return g!==ut&&oc(p,Vr(),g),WB},\u0275\u0275textInterpolate5:function UB(i,e,t,n,r,s,a,d,h,p,g){const v=J(),y=Ap(v,i,e,t,n,r,s,a,d,h,p,g);return y!==ut&&oc(v,Vr(),y),UB},\u0275\u0275textInterpolate6:function jB(i,e,t,n,r,s,a,d,h,p,g,v,y){const C=J(),k=c(C,i,e,t,n,r,s,a,d,h,p,g,v,y);return k!==ut&&oc(C,Vr(),k),jB},\u0275\u0275textInterpolate7:function qB(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k){const E=J(),x=o(E,i,e,t,n,r,s,a,d,h,p,g,v,y,C,k);return x!==ut&&oc(E,Vr(),x),qB},\u0275\u0275textInterpolate8:function KB(i,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x){const S=J(),D=l(S,i,e,t,n,r,s,a,d,h,p,g,v,y,C,k,E,x);return D!==ut&&oc(S,Vr(),D),KB},\u0275\u0275textInterpolateV:function YB(i){const e=J(),t=xp(e,i);return t!==ut&&oc(e,Vr(),t),YB},\u0275\u0275i18n:function TY(i,e,t){fB(i,e,t),vB()},\u0275\u0275i18nAttributes:function MY(i,e){const t=Ft(),n=Ws(t.consts,e);!function pY(i,e,t){const r=di().index,s=[];if(i.firstCreatePass&&null===i.data[e]){for(let a=0;a0){const n=i.data[t];rB(i,e,Array.isArray(n)?n:n.update,Zl()-Kk-1,qk)}qk=0,Kk=0}(Ft(),J(),i+Me)},\u0275\u0275i18nPostprocess:function LY(i,e={}){return function AY(i,e={}){let t=i;if(kY.test(i)){const n={},r=[gB];t=t.replace(_Y,(s,a,d)=>{const h=a||d,p=n[h]||[];if(p.length||(h.split("|").forEach(E=>{const x=E.match(DY),S=x?parseInt(x[1],10):gB,D=SY.test(E);p.push([S,D,E])}),n[h]=p),!p.length)throw new Error(`i18n postprocess: unmatched placeholder - ${h}`);const g=r[r.length-1];let v=0;for(let E=0;Ee.hasOwnProperty(s)?`${r}${e[s]}${h}`:n),t=t.replace(FY,(n,r)=>e.hasOwnProperty(r)?e[r]:n),t=t.replace(xY,(n,r)=>{if(e.hasOwnProperty(r)){const s=e[r];if(!s.length)throw new Error(`i18n postprocess: unmatched ICU - ${n} with key: ${r}`);return s.shift()}return n})),t}(i,e)},\u0275\u0275resolveWindow:function dL(i){return i.ownerDocument.defaultView},\u0275\u0275resolveDocument:function uL(i){return i.ownerDocument},\u0275\u0275resolveBody:vx,\u0275\u0275setComponentScope:function rZ(i,e,t){const n=i.\u0275cmp;n.directiveDefs=Hs(e,!1),n.pipeDefs=Hs(t,!0)},\u0275\u0275setNgModuleScope:function oZ(i,e){return Ge(()=>{const t=$i(i,!0);t.declarations=jD(e.declarations||Zt),t.imports=jD(e.imports||Zt),t.exports=jD(e.exports||Zt),e.bootstrap&&(t.bootstrap=jD(e.bootstrap)),tf.registerNgModule(i,e)})},\u0275\u0275registerNgModuleType:yp,\u0275\u0275getComponentDepsFactory:function CZ(i,e){return()=>{try{return tf.getComponentDependencies(i,e).dependencies}catch(t){throw console.error(`Computing dependencies in local compilation mode for the component "${i.name}" failed with the exception:`,t),t}}},\u0275setClassDebugInfo:function wZ(i,e){const t=At(i);null!==t&&(t.debugInfo=e)},\u0275\u0275declareLet:function QB(i){const e=Ft(),t=J(),n=i+Me;return ya(Du(e,n,128,null,null),!1),q5(e,t,n,XB),QB},\u0275\u0275storeLet:function XY(i){return $r("NgLet"),q5(Ft(),J(),Vr(),i),i},\u0275\u0275readContextLet:function QY(i){const t=ru(Wc(),Me+i);if(t===XB)throw new j(314,!1);return t},\u0275\u0275sanitizeHtml:function K4(i){const e=Qh();return e?QC(e.sanitize(ps.HTML,i)||""):fl(i,"HTML")?QC(Po(i)):cx(ic(),at(i))},\u0275\u0275sanitizeStyle:function Y4(i){const e=Qh();return e?e.sanitize(ps.STYLE,i)||"":fl(i,"Style")?Po(i):at(i)},\u0275\u0275sanitizeResourceUrl:ux,\u0275\u0275sanitizeScript:function hx(i){const e=Qh();if(e)return YF(e.sanitize(ps.SCRIPT,i)||"");if(fl(i,"Script"))return YF(Po(i));throw new j(905,!1)},\u0275\u0275sanitizeUrl:dx,\u0275\u0275sanitizeUrlOrResourceUrl:Ct,\u0275\u0275trustConstantHtml:function Z4(i){return Sn(i[0])},\u0275\u0275trustConstantResourceUrl:function Wv(i){return function qF(i){return Og()?.createScriptURL(i)||i}(i[0])},\u0275\u0275validateIframeAttribute:function i5(i,e,t){const n=J(),r=Ui(),s=Pe(r,n);if(2===r.type&&"iframe"===e.toLowerCase()){const a=s;a.src="",a.srcdoc=Sn(""),Gg(n[nt],a);throw new j(-910,!1)}return i},forwardRef:Di,resolveForwardRef:et,\u0275\u0275twoWayProperty:function ZB(i,e,t){fk(e)&&(e=e());const n=J();if(Vn(n,Ca(),e)){No(Ft(),Ui(),n,i,e,n[nt],t,!1)}return ZB},\u0275\u0275twoWayBindingSet:function JY(i,e){const t=fk(i);return t&&i.set(e),t},\u0275\u0275twoWayListener:function JB(i,e){const t=J(),n=Ft(),r=di();return W5(n,t,t[nt],r,i,e),JB}};let O0=null;const e2=[];let X5=!1;function uH(i){return Array.isArray(i)?i.every(uH):!!et(i)}function xZ(i,e={}){(function SZ(i,e,t=!1){const n=Jr(e.declarations||Zt);let r=null;Object.defineProperty(i,H1,{configurable:!0,get:()=>(null===r&&(r=Pn().compileNgModule(ys,`ng:///${i.name}/\u0275mod.js`,{type:i,bootstrap:Jr(e.bootstrap||Zt).map(et),declarations:n.map(et),imports:Jr(e.imports||Zt).map(et).map(gH),exports:Jr(e.exports||Zt).map(et).map(gH),schemas:e.schemas?Jr(e.schemas):null,id:e.id||null}),r.schemas||(r.schemas=[])),r)});let s=null;Object.defineProperty(i,Ka,{get:()=>{if(null===s){const d=Pn();s=d.compileFactory(ys,`ng:///${i.name}/\u0275fac.js`,{name:i.name,type:i,deps:hl(i),target:d.FactoryTarget.NgModule,typeArgumentCount:0})}return s},configurable:!1});let a=null;Object.defineProperty(i,Dh,{get:()=>{if(null===a){const d={name:i.name,type:i,providers:e.providers||Zt,imports:[(e.imports||Zt).map(et),(e.exports||Zt).map(et)]};a=Pn().compileInjector(ys,`ng:///${i.name}/\u0275inj.js`,d)}return a},configurable:!1})})(i,e),void 0!==e.id&&yp(i,e.id),function EZ(i,e){e2.push({moduleType:i,ngModule:e})}(i,e)}function TZ(i,e){const t=Jr(e.declarations||Zt),n=R0(i);t.forEach(r=>{if((r=et(r)).hasOwnProperty(jm)){mH(At(r),n)}else!r.hasOwnProperty(TE)&&!r.hasOwnProperty(zy)&&(r.ngSelectorScope=i)})}function mH(i,e){i.directiveDefs=()=>Array.from(e.compilation.directives).map(t=>t.hasOwnProperty(jm)?At(t):vt(t)).filter(t=>!!t),i.pipeDefs=()=>Array.from(e.compilation.pipes).map(t=>bi(t)),i.schemas=e.schemas,i.tView=null}function R0(i){if(rd(i)){if(ik){const e=tf.getNgModuleScope(i);return{schemas:$i(i,!0).schemas||null,...e}}return function MZ(i){const e=$i(i,!0);if(null!==e.transitiveCompileScopes)return e.transitiveCompileScopes;const t={schemas:e.schemas||null,compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set,pipes:new Set}};return ms(e.imports).forEach(n=>{const r=R0(n);r.exported.directives.forEach(s=>t.compilation.directives.add(s)),r.exported.pipes.forEach(s=>t.compilation.pipes.add(s))}),ms(e.declarations).forEach(n=>{bi(n)?t.compilation.pipes.add(n):t.compilation.directives.add(n)}),ms(e.exports).forEach(n=>{const r=n;if(rd(r)){const s=R0(r);s.exported.directives.forEach(a=>{t.compilation.directives.add(a),t.exported.directives.add(a)}),s.exported.pipes.forEach(a=>{t.compilation.pipes.add(a),t.exported.pipes.add(a)})}else bi(r)?t.exported.pipes.add(r):t.exported.directives.add(r)}),e.transitiveCompileScopes=t,t}(i)}if(Pr(i)){if(null!==(At(i)||vt(i)))return{schemas:null,compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set([i]),pipes:new Set}};if(null!==bi(i))return{schemas:null,compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set,pipes:new Set([i])}}}throw new Error(`${i.name} does not have a module def (\u0275mod property)`)}function gH(i){return tk(i)?i.ngModule:i}let tR=0;function IZ(i,e){let t=null;(function XO(i,e){KS(e)&&(bp.set(i,e),af.add(i))})(i,e),bH(i,e),Object.defineProperty(i,jm,{get:()=>{if(null===t){const n=Pn();if(KS(e)){const p=[`Component '${i.name}' is not resolved:`];throw e.templateUrl&&p.push(` - templateUrl: ${e.templateUrl}`),e.styleUrls&&e.styleUrls.length&&p.push(` - styleUrls: ${JSON.stringify(e.styleUrls)}`),e.styleUrl&&p.push(` - styleUrl: ${e.styleUrl}`),p.push("Did you run and wait for 'resolveComponentResources()'?"),new Error(p.join("\n"))}const r=function _Z(){return O0}();let s=e.preserveWhitespaces;void 0===s&&(s=null!==r&&void 0!==r.preserveWhitespaces&&r.preserveWhitespaces);let a=e.encapsulation;void 0===a&&(a=null!==r&&void 0!==r.defaultEncapsulation?r.defaultEncapsulation:Bt.Emulated);const d=e.templateUrl||`ng:///${i.name}/template.html`,h={...yH(i,e),typeSourceSpan:n.createParseSourceSpan("Component",i.name,d),template:e.template||"",preserveWhitespaces:s,styles:"string"==typeof e.styles?[e.styles]:e.styles||Zt,animations:e.animations,declarations:[],changeDetection:e.changeDetection,encapsulation:a,interpolation:e.interpolation,viewProviders:e.viewProviders||null};tR++;try{if(h.usesInheritance&&CH(i),t=n.compileComponent(ys,d,h),e.standalone){const p=Jr(e.imports||Zt),{directiveDefs:g,pipeDefs:v}=function LZ(i,e){let t=null,n=null;return{directiveDefs:()=>{if(ik)return mp(i)?[...tf.getStandaloneComponentScope(i,e).compilation.directives].map(d=>At(d)||vt(d)).filter(d=>null!==d):[];if(null===t){t=[At(i)];const a=new Set([i]);for(const d of e){const h=et(d);if(!a.has(h))if(a.add(h),$i(h)){const p=R0(h);for(const g of p.exported.directives){const v=At(g)||vt(g);v&&!a.has(g)&&(a.add(g),t.push(v))}}else{const p=At(h)||vt(h);p&&t.push(p)}}}return t},pipeDefs:()=>{if(ik)return mp(i)?[...tf.getStandaloneComponentScope(i,e).compilation.pipes].map(d=>bi(d)).filter(d=>null!==d):[];if(null===n){n=[];const a=new Set;for(const d of e){const h=et(d);if(!a.has(h))if(a.add(h),$i(h)){const p=R0(h);for(const g of p.exported.pipes){const v=bi(g);v&&!a.has(g)&&(a.add(g),n.push(v))}}else{const p=bi(h);p&&n.push(p)}}}return n}}}(i,p);t.directiveDefs=g,t.pipeDefs=v,t.dependencies=()=>p.map(et)}}finally{tR--}if(0===tR&&function FZ(){if(!X5){X5=!0;try{for(let i=e2.length-1;i>=0;i--){const{moduleType:e,ngModule:t}=e2[i];t.declarations&&t.declarations.every(uH)&&(e2.splice(i,1),TZ(e,t))}}finally{X5=!1}}}(),function OZ(i){return void 0!==i.ngSelectorScope}(i)){const p=R0(i.ngSelectorScope);mH(t,p)}if(e.schemas){if(!e.standalone)throw new Error(`The 'schemas' was specified for the ${Ut(i)} but is only valid on a component that is standalone.`);t.schemas=e.schemas}else e.standalone&&(t.schemas=[])}return t},configurable:!1})}function fH(i,e){let t=null;bH(i,e||{}),Object.defineProperty(i,TE,{get:()=>{if(null===t){const n=vH(i,e||{});t=Pn().compileDirective(ys,n.sourceMapUrl,n.metadata)}return t},configurable:!1})}function vH(i,e){const t=i&&i.name,n=`ng:///${t}/\u0275dir.js`,r=Pn(),s=yH(i,e);return s.typeSourceSpan=r.createParseSourceSpan("Directive",t,n),s.usesInheritance&&CH(i),{metadata:s,sourceMapUrl:n}}function bH(i,e){let t=null;Object.defineProperty(i,Ka,{get:()=>{if(null===t){const n=vH(i,e),r=Pn();t=r.compileFactory(ys,`ng:///${i.name}/\u0275fac.js`,{name:n.metadata.name,type:n.metadata.type,typeArgumentCount:0,deps:hl(i),target:r.FactoryTarget.Directive})}return t},configurable:!1})}function RZ(i){return Object.getPrototypeOf(i.prototype)===Object.prototype}function yH(i,e){const t=ec(),n=t.ownPropMetadata(i);return{name:i.name,type:i,selector:void 0!==e.selector?e.selector:null,host:e.host||ma,propMetadata:n,inputs:e.inputs||Zt,outputs:e.outputs||Zt,queries:wH(i,n,kH),lifecycle:{usesOnChanges:t.hasLifecycleHook(i,"ngOnChanges")},typeSourceSpan:null,usesInheritance:!RZ(i),exportAs:BZ(e.exportAs),providers:e.providers||null,viewQueries:wH(i,n,_H),isStandalone:!!e.standalone,isSignal:!!e.signals,hostDirectives:e.hostDirectives?.map(r=>"function"==typeof r?{directive:r}:r)||null}}function CH(i){const e=Object.prototype;let t=Object.getPrototypeOf(i.prototype).constructor;for(;t&&t!==e;)!vt(t)&&!At(t)&&VZ(t)&&fH(t,null),t=Object.getPrototypeOf(t)}function PZ(i){return"string"==typeof i?FH(i):et(i)}function NZ(i,e){return{propertyName:i,predicate:PZ(e.selector),descendants:e.descendants,first:e.first,read:e.read?e.read:null,static:!!e.static,emitDistinctChangesOnly:!!e.emitDistinctChangesOnly,isSignal:!!e.isSignal}}function wH(i,e,t){const n=[];for(const r in e)if(e.hasOwnProperty(r)){const s=e[r];s.forEach(a=>{if(t(a)){if(!a.selector)throw new Error(`Can't construct a query for the property "${r}" of "${Ut(i)}" since the query selector wasn't defined.`);if(s.some(EH))throw new Error("Cannot combine @Input decorators with query decorators");n.push(NZ(r,a))}})}return n}function BZ(i){return void 0===i?null:FH(i)}function kH(i){const e=i.ngMetadataName;return"ContentChild"===e||"ContentChildren"===e}function _H(i){const e=i.ngMetadataName;return"ViewChild"===e||"ViewChildren"===e}function EH(i){return"Input"===i.ngMetadataName}function FH(i){return i.split(",").map(e=>e.trim())}const HZ=["ngOnChanges","ngOnInit","ngOnDestroy","ngDoCheck","ngAfterViewInit","ngAfterViewChecked","ngAfterContentInit","ngAfterContentChecked"];function VZ(i){const e=ec();if(HZ.some(n=>e.hasLifecycleHook(i,n)))return!0;const t=e.propMetadata(i);for(const n in t){const r=t[n];for(let s=0;si,void 0,void 0,(i,e)=>fH(i,e)),We=Vm("Component",(i={})=>({changeDetection:Ns.Default,...i}),GZ,void 0,(i,e)=>IZ(i,e)),Aa=(Vm("Pipe",i=>({pure:!0,...i}),void 0,void 0,(i,e)=>function zZ(i,e){let t=null,n=null;Object.defineProperty(i,Ka,{get:()=>{if(null===n){const r=xH(i,e),s=Pn(r.type);n=s.compileFactory(ys,`ng:///${r.name}/\u0275fac.js`,{name:r.name,type:r.type,typeArgumentCount:0,deps:hl(i),target:s.FactoryTarget.Pipe})}return n},configurable:!1}),Object.defineProperty(i,zy,{get:()=>{if(null===t){const r=xH(i,e);t=Pn(r.type).compilePipe(ys,`ng:///${r.name}/\u0275pipe.js`,r)}return t},configurable:!1})}(i,e)),Si("Input",i=>i?"string"==typeof i?{alias:i}:i:{})),YD=Si("Output",i=>({alias:i})),iR=(Si("HostBinding",i=>({hostPropertyName:i})),Si("HostListener",(i,e)=>({eventName:i,args:e})),Vm("NgModule",i=>i,void 0,void 0,(i,e)=>xZ(i,e)));class P0{constructor(e){this.full=e;const t=e.split(".");this.major=t[0],this.minor=t[1],this.patch=t.slice(2).join(".")}}new P0("18.2.13");class Lp{log(e){console.log(e)}warn(e){console.warn(e)}static{this.\u0275fac=function(t){return new(t||Lp)}}static{this.\u0275prov=ue({token:Lp,factory:Lp.\u0275fac,providedIn:"platform"})}}new class $Z{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 MH=new ge(""),JD=new ge("");class Af{constructor(e,t,n){this._ngZone=e,this.registry=t,this._isZoneStable=!0,this._callbacks=[],this.taskTrackingZone=null,rR||(function mJ(i){rR=i}(n),n.addToWindow(t)),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:()=>{ni.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(t=>!t.updateCb||!t.updateCb(e)||(clearTimeout(t.timeoutId),!1))}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,t,n){let r=-1;t&&t>0&&(r=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==r),e()},t)),this._callbacks.push({doneCb:e,timeoutId:r,updateCb:n})}whenStable(e,t,n){if(n&&!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,t,n),this._runCallbacksIfReady()}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,t,n){return[]}static{this.\u0275fac=function(t){return new(t||Af)(ve(ni),ve(Tf),ve(JD))}}static{this.\u0275prov=ue({token:Af,factory:Af.\u0275fac})}}class Tf{constructor(){this._applications=new Map}registerApplication(e,t){this._applications.set(e,t)}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,t=!0){return rR?.findTestabilityInTree(this,e,t)??null}static{this.\u0275fac=function(t){return new(t||Tf)}}static{this.\u0275prov=ue({token:Tf,factory:Tf.\u0275fac,providedIn:"platform"})}}let rR;function i2(i){return!!i&&"function"==typeof i.then}function IH(i){return!!i&&"function"==typeof i.subscribe}const XD=new ge("");class N0{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((e,t)=>{this.resolve=e,this.reject=t}),this.appInits=K(XD,{optional:!0})??[]}runInitializers(){if(this.initialized)return;const e=[];for(const n of this.appInits){const r=n();if(i2(r))e.push(r);else if(IH(r)){const s=new Promise((a,d)=>{r.subscribe({complete:a,error:d})});e.push(s)}}const t=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{t()}).catch(n=>{this.reject(n)}),0===e.length&&t(),this.initialized=!0}static{this.\u0275fac=function(t){return new(t||N0)}}static{this.\u0275prov=ue({token:N0,factory:N0.\u0275fac,providedIn:"root"})}}const QD=new ge("");function LH(){!function Ch(i){As=i}(()=>{throw new j(600,!1)})}function OH(i,e){return Array.isArray(e)?e.reduce(OH,i):{...i,...e}}class Go{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=K(bF),this.afterRenderManager=K(mf),this.zonelessEnabled=K(ef),this.dirtyFlags=0,this.deferredDirtyFlags=0,this.externalTestViews=new Set,this.beforeRender=new mi,this.afterTick=new mi,this.componentTypes=[],this.components=[],this.isStable=K(Qr).hasPendingTasks.pipe(qe(e=>!e)),this._injector=K(Nr)}get allViews(){return[...this.externalTestViews.keys(),...this._views]}get destroyed(){return this._destroyed}whenStable(){let e;return new Promise(t=>{e=this.isStable.subscribe({next:n=>{n&&t()}})}).finally(()=>{e.unsubscribe()})}get injector(){return this._injector}bootstrap(e,t){const n=e instanceof h0;if(!this._injector.get(N0).done){!n&&Pr(e);throw new j(405,!1)}let s;s=n?e:this._injector.get(p0).resolveComponentFactory(e),this.componentTypes.push(s.componentType);const a=function gJ(i){return i.isBoundToModule}(s)?void 0:this._injector.get(sd),d=t||s.selector,h=s.create(ze.NULL,[],d,a),p=h.location.nativeElement,g=h.injector.get(MH,null);return g?.registerApplication(p),h.onDestroy(()=>{this.detachView(h.hostView),e3(this.components,h),g?.unregisterApplication(p)}),this._loadComponent(h),h}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){if(this._runningTick)throw new j(101,!1);const e=we(null);try{this._runningTick=!0,this.synchronize()}catch(t){this.internalErrorHandler(t)}finally{this._runningTick=!1,we(e),this.afterTick.next()}}synchronize(){let e=null;this._injector.destroyed||(e=this._injector.get(Qw,null,{optional:!0})),this.dirtyFlags|=this.deferredDirtyFlags,this.deferredDirtyFlags=0;let t=0;for(;0!==this.dirtyFlags&&t++<10;)this.synchronizeOnce(e)}synchronizeOnce(e){if(this.dirtyFlags|=this.deferredDirtyFlags,this.deferredDirtyFlags=0,7&this.dirtyFlags){const t=!!(1&this.dirtyFlags);this.dirtyFlags&=-8,this.dirtyFlags|=8,this.beforeRender.next(t);for(let{_lView:n,notifyErrorHandler:r}of this._views)bJ(n,r,t,this.zonelessEnabled);if(this.dirtyFlags&=-5,this.syncDirtyFlagsWithViews(),7&this.dirtyFlags)return}else e?.begin?.(),e?.end?.();8&this.dirtyFlags&&(this.dirtyFlags&=-9,this.afterRenderManager.execute()),this.syncDirtyFlagsWithViews()}syncDirtyFlagsWithViews(){this.allViews.some(({_lView:e})=>pg(e))?this.dirtyFlags|=2:this.dirtyFlags&=-8}attachView(e){const t=e;this._views.push(t),t.attachToAppRef(this)}detachView(e){const t=e;e3(this._views,t),t.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView),this.tick(),this.components.push(e);const t=this._injector.get(QD,[]);[...this._bootstrapListeners,...t].forEach(n=>n(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),()=>e3(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{this.\u0275fac=function(t){return new(t||Go)}}static{this.\u0275prov=ue({token:Go,factory:Go.\u0275fac,providedIn:"root"})}}function e3(i,e){const t=i.indexOf(e);t>-1&&i.splice(t,1)}function bJ(i,e,t,n){(t||pg(i))&&Ug(i,e,t&&!n?0:1)}class yJ{constructor(e,t){this.ngModuleFactory=e,this.componentFactories=t}}class zu{compileModuleSync(e){return new Ak(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){const t=this.compileModuleSync(e),r=ms($i(e).declarations).reduce((s,a)=>{const d=At(a);return d&&s.push(new fp(d)),s},[]);return new yJ(t,r)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}static{this.\u0275fac=function(t){return new(t||zu)}}static{this.\u0275prov=ue({token:zu,factory:zu.\u0275fac,providedIn:"root"})}}const i3=new ge("");function wJ(i,e,t){const n=new Ak(t);if(typeof ngJitMode<"u"&&!ngJitMode)return Promise.resolve(n);const r=i.get(i3,[]).concat(e);if(function kZ(i){null!==O0&&(i.defaultEncapsulation!==O0.defaultEncapsulation||i.preserveWhitespaces!==O0.preserveWhitespaces)||(O0=i)}({defaultEncapsulation:RH(r.map(p=>p.defaultEncapsulation)),preserveWhitespaces:RH(r.map(p=>p.preserveWhitespaces))}),function e5(){return 0===bp.size}())return Promise.resolve(n);const s=r.flatMap(p=>p.providers??[]);if(0===s.length)return Promise.resolve(n);const a=Pn(),h=ze.create({providers:s}).get(a.ResourceLoader);return qS(p=>Promise.resolve(h.get(p))).then(()=>n)}function RH(i){for(let e=i.length-1;e>=0;e--)if(void 0!==i[e])return i[e]}class n2{constructor(){this.zone=K(ni),this.changeDetectionScheduler=K(pp),this.applicationRef=K(Go)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static{this.\u0275fac=function(t){return new(t||n2)}}static{this.\u0275prov=ue({token:n2,factory:n2.\u0275fac,providedIn:"root"})}}new ge("",{factory:()=>!1});function sR({ngZoneFactory:i,ignoreChangesOutsideZone:e,scheduleInRootZone:t}){return i??=()=>new ni({...aR(),scheduleInRootZone:t}),[{provide:ni,useFactory:i},{provide:Xa,multi:!0,useFactory:()=>{const n=K(n2,{optional:!0});return()=>n.initialize()}},{provide:Xa,multi:!0,useFactory:()=>{const n=K(r2);return()=>{n.initialize()}}},!0===e?{provide:u0,useValue:!0}:[],{provide:Jw,useValue:t??ds}]}function aR(i){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:i?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:i?.runCoalescing??!1}}class r2{constructor(){this.subscription=new Bi,this.initialized=!1,this.zone=K(ni),this.pendingTasks=K(Qr)}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(()=>{ni.assertNotInAngularZone(),queueMicrotask(()=>{null!==e&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(e),e=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{ni.assertInAngularZone(),e??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static{this.\u0275fac=function(t){return new(t||r2)}}static{this.\u0275prov=ue({token:r2,factory:r2.\u0275fac,providedIn:"root"})}}class Gu{constructor(){this.appRef=K(Go),this.taskService=K(Qr),this.ngZone=K(ni),this.zonelessEnabled=K(ef),this.disableScheduling=K(u0,{optional:!0})??!1,this.zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run,this.schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}],this.subscriptions=new Bi,this.angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Fv):null,this.scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(K(Jw,{optional:!0})??!1),this.cancelScheduledCallback=null,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 NC||!this.zoneIsDefined)}notify(e){if(!this.zonelessEnabled&&5===e)return;switch(e){case 0:this.appRef.dirtyFlags|=2;break;case 3:case 2:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 7:this.appRef.deferredDirtyFlags|=8;break;default:this.appRef.dirtyFlags|=8}if(!this.shouldScheduleTick())return;const t=this.useMicrotaskScheduler?_v:OC;this.pendingRenderTaskId=this.taskService.add(),this.scheduleInRootZone?this.cancelScheduledCallback=Zone.root.run(()=>t(()=>this.tick())):this.cancelScheduledCallback=this.ngZone.runOutsideAngular(()=>t(()=>this.tick()))}shouldScheduleTick(){return!(this.disableScheduling||null!==this.pendingRenderTaskId||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(Fv+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;!this.zonelessEnabled&&7&this.appRef.dirtyFlags&&(this.appRef.dirtyFlags|=1);const e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(t){throw this.taskService.remove(e),t}finally{this.cleanup()}this.useMicrotaskScheduler=!0,_v(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,null!==this.pendingRenderTaskId){const e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static{this.\u0275fac=function(t){return new(t||Gu)}}static{this.\u0275prov=ue({token:Gu,factory:Gu.\u0275fac,providedIn:"root"})}}const Op=new ge("",{providedIn:"root",factory:()=>K(Op,Dt.Optional|Dt.SkipSelf)||function _J(){return typeof $localize<"u"&&$localize.locale||BD}()}),EJ=new ge("",{providedIn:"root",factory:()=>"USD"});new ge(""),new ge("");var BH;!function(i){i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Ignore=2]="Ignore"}(BH||(BH={}));class n3{constructor(){this.window=null,this.observer=null,this.options=K(HF),this.isBrowser="browser"===K(hs)}start(){if(!this.isBrowser||typeof PerformanceObserver>"u"||this.options?.disableImageSizeWarning&&this.options?.disableImageLazyLoadWarning)return;this.observer=this.initPerformanceObserver();const e=ic(),t=e.defaultView;if(typeof t<"u"){this.window=t;const n=()=>{setTimeout(this.scanImages.bind(this),200)},r=()=>{"complete"===e.readyState?n():this.window?.addEventListener("load",n,{once:!0})};typeof Zone<"u"?Zone.root.run(()=>r()):r()}}ngOnDestroy(){this.observer?.disconnect()}initPerformanceObserver(){if(typeof PerformanceObserver>"u")return null;const e=new PerformanceObserver(t=>{const n=t.getEntries();if(0===n.length)return;const s=n[n.length-1].element?.src??"";s.startsWith("data:")||s.startsWith("blob:")||(this.lcpImageUrl=s)});return e.observe({type:"largest-contentful-paint",buffered:!0}),e}scanImages(){const e=ic().querySelectorAll("img");let t,n=!1;e.forEach(r=>{this.options?.disableImageSizeWarning||!r.getAttribute("ng-img")&&this.isOversized(r)&&function SJ(i){console.warn(gi(-913,`An image with src ${i} 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.dev/errors/NG0913`))}(r.src),!this.options?.disableImageLazyLoadWarning&&this.lcpImageUrl&&r.src===this.lcpImageUrl&&(t=!0,("lazy"!==r.loading||r.getAttribute("ng-img"))&&(n=!0))}),t&&!n&&this.lcpImageUrl&&!this.options?.disableImageLazyLoadWarning&&function xJ(i){console.warn(gi(-913,`An image with src ${i} 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.dev/errors/NG0913`))}(this.lcpImageUrl)}isOversized(e){if(!this.window)return!1;const n=(e.src||"").toLowerCase();if([".svg"].some(E=>n.endsWith(E)))return!1;const r=this.window.getComputedStyle(e);let s=parseFloat(r.getPropertyValue("width")),a=parseFloat(r.getPropertyValue("height"));const d=r.getPropertyValue("box-sizing");if("cover"===r.getPropertyValue("object-fit"))return!1;if("border-box"===d){const E=r.getPropertyValue("padding-top"),x=r.getPropertyValue("padding-right"),S=r.getPropertyValue("padding-bottom"),D=r.getPropertyValue("padding-left");s-=parseFloat(x)+parseFloat(D),a-=parseFloat(E)+parseFloat(S)}const p=e.naturalWidth,g=e.naturalHeight,v=this.window.devicePixelRatio*s,y=this.window.devicePixelRatio*a;return p-v>=1200||g-y>=1200}static{this.\u0275fac=function(t){return new(t||n3)}}static{this.\u0275prov=ue({token:n3,factory:n3.\u0275fac,providedIn:"root"})}}const r3=new ge("");function o3(i){return!i.moduleRef}function VH(i){const e=o3(i)?i.r3Injector:i.moduleRef.injector,t=e.get(ni);return t.run(()=>{o3(i)?i.r3Injector.resolveInjectorInitializers():i.moduleRef.resolveInjectorInitializers();const n=e.get(pl,null);let r;if(t.runOutsideAngular(()=>{r=t.onError.subscribe({next:s=>{n.handleError(s)}})}),o3(i)){const s=()=>e.destroy(),a=i.platformInjector.get(r3);a.add(s),e.onDestroy(()=>{r.unsubscribe(),a.delete(s)})}else{const s=()=>i.moduleRef.destroy(),a=i.platformInjector.get(r3);a.add(s),i.moduleRef.onDestroy(()=>{e3(i.allPlatformModules,i.moduleRef),r.unsubscribe(),a.delete(s)})}return function vJ(i,e,t){try{const n=t();return i2(n)?n.catch(r=>{throw e.runOutsideAngular(()=>i.handleError(r)),r}):n}catch(n){throw e.runOutsideAngular(()=>i.handleError(n)),n}}(n,t,()=>{const s=e.get(N0);return s.runInitializers(),s.donePromise.then(()=>{if(function ZK(i){"string"==typeof i&&(tB=i.toLowerCase().replace(/_/g,"-"))}(e.get(Op,BD)||BD),o3(i)){const d=e.get(Go);return void 0!==i.rootComponent&&d.bootstrap(i.rootComponent),d}return function DJ(i,e){const t=i.injector.get(Go);if(i._bootstrapComponents.length>0)i._bootstrapComponents.forEach(n=>t.bootstrap(n));else{if(!i.instance.ngDoBootstrap)throw new j(-403,!1);i.instance.ngDoBootstrap(t)}e.push(i)}(i.moduleRef,i.allPlatformModules),i.moduleRef})})})}class B0{constructor(e){this._injector=e,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(e,t){const n=t?.scheduleInRootZone,s=t?.ignoreChangesOutsideZone,a=[sR({ngZoneFactory:()=>function vF(i="zone.js",e){return"noop"===i?new NC:"zone.js"===i?new ni(e):i}(t?.ngZone,{...aR({eventCoalescing:t?.ngZoneEventCoalescing,runCoalescing:t?.ngZoneRunCoalescing}),scheduleInRootZone:n}),ignoreChangesOutsideZone:s}),{provide:pp,useExisting:Gu}],d=function l5(i,e,t){return new Dk(i,e,t,!1)}(e.moduleType,this.injector,a);return VH({moduleRef:d,allPlatformModules:this._modules,platformInjector:this.injector})}bootstrapModule(e,t=[]){const n=OH({},t);return wJ(this.injector,n,e).then(r=>this.bootstrapModuleFactory(r,n))}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new j(404,!1);this._modules.slice().forEach(t=>t.destroy()),this._destroyListeners.forEach(t=>t());const e=this._injector.get(r3,null);e&&(e.forEach(t=>t()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static{this.\u0275fac=function(t){return new(t||B0)(ve(ze))}}static{this.\u0275prov=ue({token:B0,factory:B0.\u0275fac,providedIn:"platform"})}}let Rp=null;const zH=new ge("");function s3(i,e,t=[]){const n=`Platform: ${e}`,r=new ge(n);return(s=[])=>{let a=cR();if(!a||a.injector.get(zH,!1)){const d=[...t,...s,{provide:r,useValue:!0}];i?i(d):function AJ(i){if(Rp&&!Rp.get(zH,!1))throw new j(400,!1);LH(),Rp=i;const e=i.get(B0);return $H(i),e}(GH(d,n))}return function TJ(i){const e=cR();if(!e)throw new j(401,!1);return e}()}}function GH(i=[],e){return ze.create({name:e,providers:[{provide:Lt,useValue:"platform"},{provide:r3,useValue:new Set([()=>Rp=null])},...i]})}function cR(){return Rp?.get(B0)??null}function $H(i){i.get(NF,null)?.forEach(t=>t())}class bn{static{this.__NG_ELEMENT_ID__=IJ}}function IJ(i){return function LJ(i,e,t){if(Gs(i)&&!t){const n=ls(i.index,e);return new lp(n,n)}if(175&i.type){const n=e[Xi];return new lp(n,e)}return null}(di(),J(),!(16&~i))}class KH{constructor(){}supports(e){return _0(e)}create(e){return new BJ(e)}}const NJ=(i,e)=>e;class BJ{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||NJ}forEachItem(e){let t;for(t=this._itHead;null!==t;t=t._next)e(t)}forEachOperation(e){let t=this._itHead,n=this._removalsHead,r=0,s=null;for(;t||n;){const a=!n||t&&t.currentIndex{a=this._trackByFn(r,d),null!==t&&Object.is(t.trackById,a)?(n&&(t=this._verifyReinsertion(t,d,a,r)),Object.is(t.item,d)||this._addIdentityChange(t,d)):(t=this._mismatch(t,d,a,r),n=!0),t=t._next,r++}),this.length=r;return this._truncate(t),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,t,n,r){let s;return null===e?s=this._itTail:(s=e._prev,this._remove(e)),null!==(e=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null))?(Object.is(e.item,t)||this._addIdentityChange(e,t),this._reinsertAfter(e,s,r)):null!==(e=null===this._linkedRecords?null:this._linkedRecords.get(n,r))?(Object.is(e.item,t)||this._addIdentityChange(e,t),this._moveAfter(e,s,r)):e=this._addAfter(new HJ(t,n),s,r),e}_verifyReinsertion(e,t,n,r){let s=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null);return null!==s?e=this._reinsertAfter(s,e._prev,r):e.currentIndex!=r&&(e.currentIndex=r,this._addToMoves(e,r)),e}_truncate(e){for(;null!==e;){const t=e._next;this._addToRemovals(this._unlink(e)),e=t}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,t,n){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(e);const r=e._prevRemoved,s=e._nextRemoved;return null===r?this._removalsHead=s:r._nextRemoved=s,null===s?this._removalsTail=r:s._prevRemoved=r,this._insertAfter(e,t,n),this._addToMoves(e,n),e}_moveAfter(e,t,n){return this._unlink(e),this._insertAfter(e,t,n),this._addToMoves(e,n),e}_addAfter(e,t,n){return this._insertAfter(e,t,n),null===this._additionsTail?this._additionsTail=this._additionsHead=e:this._additionsTail=this._additionsTail._nextAdded=e,e}_insertAfter(e,t,n){const r=null===t?this._itHead:t._next;return e._next=r,e._prev=t,null===r?this._itTail=e:r._prev=e,null===t?this._itHead=e:t._next=e,null===this._linkedRecords&&(this._linkedRecords=new YH),this._linkedRecords.put(e),e.currentIndex=n,e}_remove(e){return this._addToRemovals(this._unlink(e))}_unlink(e){null!==this._linkedRecords&&this._linkedRecords.remove(e);const t=e._prev,n=e._next;return null===t?this._itHead=n:t._next=n,null===n?this._itTail=t:n._prev=t,e}_addToMoves(e,t){return e.previousIndex===t||(null===this._movesTail?this._movesTail=this._movesHead=e:this._movesTail=this._movesTail._nextMoved=e),e}_addToRemovals(e){return null===this._unlinkedRecords&&(this._unlinkedRecords=new YH),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,t){return e.item=t,null===this._identityChangesTail?this._identityChangesTail=this._identityChangesHead=e:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=e,e}}class HJ{constructor(e,t){this.item=e,this.trackById=t,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 VJ{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,t){let n;for(n=this._head;null!==n;n=n._nextDup)if((null===t||t<=n.currentIndex)&&Object.is(n.trackById,e))return n;return null}remove(e){const t=e._prevDup,n=e._nextDup;return null===t?this._head=n:t._nextDup=n,null===n?this._tail=t:n._prevDup=t,null===this._head}}class YH{constructor(){this.map=new Map}put(e){const t=e.trackById;let n=this.map.get(t);n||(n=new VJ,this.map.set(t,n)),n.add(e)}get(e,t){const n=e,r=this.map.get(n);return r?r.get(e,t):null}remove(e){const t=e.trackById;return this.map.get(t).remove(e)&&this.map.delete(t),e}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function ZH(i,e,t){const n=i.previousIndex;if(null===n)return n;let r=0;return t&&n{if(t&&t.key===r)this._maybeAddToChanges(t,n),this._appendAfter=t,t=t._next;else{const s=this._getOrCreateRecordForKey(r,n);t=this._insertBeforeOrAppend(t,s)}}),t){t._prev&&(t._prev._next=null),this._removalsHead=t;for(let n=t;null!==n;n=n._nextRemoved)n===this._mapHead&&(this._mapHead=null),this._records.delete(n.key),n._nextRemoved=n._next,n.previousValue=n.currentValue,n.currentValue=null,n._prev=null,n._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(e,t){if(e){const n=e._prev;return t._next=e,t._prev=n,e._prev=t,n&&(n._next=t),e===this._mapHead&&(this._mapHead=t),this._appendAfter=e,e}return this._appendAfter?(this._appendAfter._next=t,t._prev=this._appendAfter):this._mapHead=t,this._appendAfter=t,null}_getOrCreateRecordForKey(e,t){if(this._records.has(e)){const r=this._records.get(e);this._maybeAddToChanges(r,t);const s=r._prev,a=r._next;return s&&(s._next=a),a&&(a._prev=s),r._next=null,r._prev=null,r}const n=new GJ(e);return this._records.set(e,n),n.currentValue=t,this._addToAdditions(n),n}_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,t){Object.is(t,e.currentValue)||(e.previousValue=e.currentValue,e.currentValue=t,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,t){e instanceof Map?e.forEach(t):Object.keys(e).forEach(n=>t(e[n],n))}}class GJ{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 XH(){return new $u([new KH])}class $u{static{this.\u0275prov=ue({token:$u,providedIn:"root",factory:XH})}constructor(e){this.factories=e}static create(e,t){if(null!=t){const n=t.factories.slice();e=e.concat(n)}return new $u(e)}static extend(e){return{provide:$u,useFactory:t=>$u.create(e,t||XH()),deps:[[$u,new Ud,new Rs]]}}find(e){const t=this.factories.find(n=>n.supports(e));if(null!=t)return t;throw new j(901,!1)}}function QH(){return new dd([new JH])}class dd{static{this.\u0275prov=ue({token:dd,providedIn:"root",factory:QH})}constructor(e){this.factories=e}static create(e,t){if(t){const n=t.factories.slice();e=e.concat(n)}return new dd(e)}static extend(e){return{provide:dd,useFactory:t=>dd.create(e,t||QH()),deps:[[dd,new Ud,new Rs]]}}find(e){const t=this.factories.find(n=>n.supports(e));if(t)return t;throw new j(901,!1)}}const $J=[new JH],WJ=[new KH],e7=(new $u(WJ),new dd($J),s3(null,"core",[]));class o2{constructor(e){}static{this.\u0275fac=function(t){return new(t||o2)(ve(Go))}}static{this.\u0275mod=Er({type:o2})}static{this.\u0275inj=Qn({})}}new ge("",{providedIn:"root",factory:()=>({})});function qi(i){return"boolean"==typeof i?i:null!=i&&"false"!==i}function H0(i,e=NaN){return isNaN(parseFloat(i))||isNaN(Number(i))?e:Number(i)}function c2(i,e){$r("NgSignals");const t=Om(i);return e?.equal&&(t[Yt].equal=e.equal),t}function ud(i){const e=we(null);try{return i()}finally{we(e)}}new ge("",{providedIn:"root",factory:()=>K(fR)});class fR{static{this.\u0275prov=ue({token:fR,providedIn:"root",factory:()=>new _X})}}class _X{constructor(){this.queuedEffectCount=0,this.queues=new Map,this.pendingTasks=K(Qr),this.taskId=null}scheduleEffect(e){if(this.enqueue(e),null===this.taskId){const t=this.taskId=this.pendingTasks.add();queueMicrotask(()=>{this.flush(),this.pendingTasks.remove(t),this.taskId=null})}}enqueue(e){const t=e.creationZone;this.queues.has(t)||this.queues.set(t,new Set);const n=this.queues.get(t);n.has(e)||(this.queuedEffectCount++,n.add(e))}flush(){for(;this.queuedEffectCount>0;)for(const[e,t]of this.queues)null===e?this.flushQueue(t):e.run(()=>this.flushQueue(t))}flushQueue(e){for(const t of e)e.delete(t),this.queuedEffectCount--,t.run()}}var g3=z(837);function _7(i,e,t,n,r,s,a){try{var d=i[s](a),h=d.value}catch(p){return void t(p)}d.done?e(h):Promise.resolve(h).then(n,r)}function yn(i){return function(){var e=this,t=arguments;return new Promise(function(n,r){var s=i.apply(e,t);function a(h){_7(s,n,r,a,d,"next",h)}function d(h){_7(s,n,r,a,d,"throw",h)}a(void 0)})}}let E7=null;function Wu(){return E7}class DX{}class vR{static{this.\u0275fac=function(t){return new(t||vR)}}static{this.\u0275prov=ue({token:vR,factory:()=>window.navigation,providedIn:"platform"})}}const sr=new ge("");class V0{historyGo(e){throw new Error("")}static{this.\u0275fac=function(t){return new(t||V0)}}static{this.\u0275prov=ue({token:V0,factory:()=>K(d2),providedIn:"platform"})}}const F7=new ge("");class d2 extends V0{constructor(){super(),this._doc=K(sr),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Wu().getBaseHref(this._doc)}onPopState(e){const t=Wu().getGlobalEventTarget(this._doc,"window");return t.addEventListener("popstate",e,!1),()=>t.removeEventListener("popstate",e)}onHashChange(e){const t=Wu().getGlobalEventTarget(this._doc,"window");return t.addEventListener("hashchange",e,!1),()=>t.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,t,n){this._history.pushState(e,t,n)}replaceState(e,t,n){this._history.replaceState(e,t,n)}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}static{this.\u0275fac=function(t){return new(t||d2)}}static{this.\u0275prov=ue({token:d2,factory:()=>new d2,providedIn:"platform"})}}function bR(i,e){if(0==i.length)return e;if(0==e.length)return i;let t=0;return i.endsWith("/")&&t++,e.startsWith("/")&&t++,2==t?i+e.substring(1):1==t?i+e:i+"/"+e}function x7(i){const e=i.match(/#|\?|$/),t=e&&e.index||i.length,n=t-("/"===i[t-1]?1:0);return i.slice(0,n)+i.slice(t)}function Uu(i){return i&&"?"!==i[0]?"?"+i:i}class hd{historyGo(e){throw new Error("")}static{this.\u0275fac=function(t){return new(t||hd)}}static{this.\u0275prov=ue({token:hd,factory:()=>K(z0),providedIn:"root"})}}const S7=new ge("");class z0 extends hd{constructor(e,t){super(),this._platformLocation=e,this._removeListenerFns=[],this._baseHref=t??this._platformLocation.getBaseHrefFromDOM()??K(sr).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 bR(this._baseHref,e)}path(e=!1){const t=this._platformLocation.pathname+Uu(this._platformLocation.search),n=this._platformLocation.hash;return n&&e?`${t}${n}`:t}pushState(e,t,n,r){const s=this.prepareExternalUrl(n+Uu(r));this._platformLocation.pushState(e,t,s)}replaceState(e,t,n,r){const s=this.prepareExternalUrl(n+Uu(r));this._platformLocation.replaceState(e,t,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static{this.\u0275fac=function(t){return new(t||z0)(ve(V0),ve(S7,8))}}static{this.\u0275prov=ue({token:z0,factory:z0.\u0275fac,providedIn:"root"})}}class u2 extends hd{constructor(e,t){super(),this._platformLocation=e,this._baseHref="",this._removeListenerFns=[],null!=t&&(this._baseHref=t)}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 t=this._platformLocation.hash??"#";return t.length>0?t.substring(1):t}prepareExternalUrl(e){const t=bR(this._baseHref,e);return t.length>0?"#"+t:t}pushState(e,t,n,r){let s=this.prepareExternalUrl(n+Uu(r));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.pushState(e,t,s)}replaceState(e,t,n,r){let s=this.prepareExternalUrl(n+Uu(r));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(e,t,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static{this.\u0275fac=function(t){return new(t||u2)(ve(V0),ve(S7,8))}}static{this.\u0275prov=ue({token:u2,factory:u2.\u0275fac})}}class ju{constructor(e){this._subject=new Je,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=e;const t=this._locationStrategy.getBaseHref();this._basePath=function MX(i){if(new RegExp("^(https?:)?//").test(i)){const[,t]=i.split(/\/\/[^\/]+/);return t}return i}(x7(D7(t))),this._locationStrategy.onPopState(n=>{this._subject.emit({url:this.path(!0),pop:!0,state:n.state,type:n.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,t=""){return this.path()==this.normalize(e+Uu(t))}normalize(e){return ju.stripTrailingSlash(function TX(i,e){if(!i||!e.startsWith(i))return e;const t=e.substring(i.length);return""===t||["/",";","?","#"].includes(t[0])?t:e}(this._basePath,D7(e)))}prepareExternalUrl(e){return e&&"/"!==e[0]&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,t="",n=null){this._locationStrategy.pushState(n,"",e,t),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Uu(t)),n)}replaceState(e,t="",n=null){this._locationStrategy.replaceState(n,"",e,t),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Uu(t)),n)}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(t=>{this._notifyUrlChangeListeners(t.url,t.state)}),()=>{const t=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(t,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",t){this._urlChangeListeners.forEach(n=>n(e,t))}subscribe(e,t,n){return this._subject.subscribe({next:e,error:t,complete:n})}static{this.normalizeQueryParams=Uu}static{this.joinWithSlash=bR}static{this.stripTrailingSlash=x7}static{this.\u0275fac=function(t){return new(t||ju)(ve(hd))}}static{this.\u0275prov=ue({token:ju,factory:()=>function AX(){return new ju(ve(hd))}(),providedIn:"root"})}}function D7(i){return i.replace(/\/index.html$/,"")}const A7={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 h2,If,$o,Ki,Zs;!function(i){i[i.Decimal=0]="Decimal",i[i.Percent=1]="Percent",i[i.Currency=2]="Currency",i[i.Scientific=3]="Scientific"}(h2||(h2={})),function(i){i[i.Zero=0]="Zero",i[i.One=1]="One",i[i.Two=2]="Two",i[i.Few=3]="Few",i[i.Many=4]="Many",i[i.Other=5]="Other"}(If||(If={})),function(i){i[i.Format=0]="Format",i[i.Standalone=1]="Standalone"}($o||($o={})),function(i){i[i.Narrow=0]="Narrow",i[i.Abbreviated=1]="Abbreviated",i[i.Wide=2]="Wide",i[i.Short=3]="Short"}(Ki||(Ki={})),function(i){i[i.Short=0]="Short",i[i.Medium=1]="Medium",i[i.Long=2]="Long",i[i.Full=3]="Full"}(Zs||(Zs={}));const Ar={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 T7;function f3(i,e){return _l(fs(i)[Qi.DateFormat],e)}function v3(i,e){return _l(fs(i)[Qi.TimeFormat],e)}function b3(i,e){return _l(fs(i)[Qi.DateTimeFormat],e)}function kl(i,e){const t=fs(i),n=t[Qi.NumberSymbols][e];if(typeof n>"u"){if(e===Ar.CurrencyDecimal)return t[Qi.NumberSymbols][Ar.Decimal];if(e===Ar.CurrencyGroup)return t[Qi.NumberSymbols][Ar.Group]}return n}function yR(i,e){return fs(i)[Qi.NumberFormats][e]}!function(i){i[i.Sunday=0]="Sunday",i[i.Monday=1]="Monday",i[i.Tuesday=2]="Tuesday",i[i.Wednesday=3]="Wednesday",i[i.Thursday=4]="Thursday",i[i.Friday=5]="Friday",i[i.Saturday=6]="Saturday"}(T7||(T7={}));const BX=Q8;function M7(i){if(!i[Qi.ExtraData])throw new Error(`Missing extra locale data for the locale "${i[Qi.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function _l(i,e){for(let t=e;t>-1;t--)if(typeof i[t]<"u")return i[t];throw new Error("Locale data API: locale data undefined")}function CR(i){const[e,t]=i.split(":");return{hours:+e,minutes:+t}}function zX(i,e,t="en"){const n=function NX(i){return fs(i)[Qi.Currencies]}(t)[i]||A7[i]||[],r=n[1];return"narrow"===e&&"string"==typeof r?r:n[0]||i}const GX=2;const WX=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,y3={},UX=/((?:[^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 pd,ki,_i;function jX(i,e,t,n){let r=function tQ(i){if(O7(i))return i;if("number"==typeof i&&!isNaN(i))return new Date(i);if("string"==typeof i){if(i=i.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(i)){const[r,s=1,a=1]=i.split("-").map(d=>+d);return C3(r,s-1,a)}const t=parseFloat(i);if(!isNaN(i-t))return new Date(t);let n;if(n=i.match(WX))return function iQ(i){const e=new Date(0);let t=0,n=0;const r=i[8]?e.setUTCFullYear:e.setFullYear,s=i[8]?e.setUTCHours:e.setHours;i[9]&&(t=Number(i[9]+i[10]),n=Number(i[9]+i[11])),r.call(e,Number(i[1]),Number(i[2])-1,Number(i[3]));const a=Number(i[4]||0)-t,d=Number(i[5]||0)-n,h=Number(i[6]||0),p=Math.floor(1e3*parseFloat("0."+(i[7]||0)));return s.call(e,a,d,h,p),e}(n)}const e=new Date(i);if(!O7(e))throw new Error(`Unable to convert "${i}" into a date`);return e}(i);e=qu(t,e)||e;let d,a=[];for(;e;){if(d=UX.exec(e),!d){a.push(e);break}{a=a.concat(d.slice(1));const g=a.pop();if(!g)break;e=g}}let h=r.getTimezoneOffset();n&&(h=L7(n,h),r=function eQ(i,e,t){const n=t?-1:1,r=i.getTimezoneOffset(),s=L7(e,r);return function QX(i,e){return i=new Date(i.getTime()),i.setMinutes(i.getMinutes()+e),i}(i,n*(s-r))}(r,n,!0));let p="";return a.forEach(g=>{const v=function XX(i){if(kR[i])return kR[i];let e;switch(i){case"G":case"GG":case"GGG":e=ln(_i.Eras,Ki.Abbreviated);break;case"GGGG":e=ln(_i.Eras,Ki.Wide);break;case"GGGGG":e=ln(_i.Eras,Ki.Narrow);break;case"y":e=Tr(ki.FullYear,1,0,!1,!0);break;case"yy":e=Tr(ki.FullYear,2,0,!0,!0);break;case"yyy":e=Tr(ki.FullYear,3,0,!1,!0);break;case"yyyy":e=Tr(ki.FullYear,4,0,!1,!0);break;case"Y":e=E3(1);break;case"YY":e=E3(2,!0);break;case"YYY":e=E3(3);break;case"YYYY":e=E3(4);break;case"M":case"L":e=Tr(ki.Month,1,1);break;case"MM":case"LL":e=Tr(ki.Month,2,1);break;case"MMM":e=ln(_i.Months,Ki.Abbreviated);break;case"MMMM":e=ln(_i.Months,Ki.Wide);break;case"MMMMM":e=ln(_i.Months,Ki.Narrow);break;case"LLL":e=ln(_i.Months,Ki.Abbreviated,$o.Standalone);break;case"LLLL":e=ln(_i.Months,Ki.Wide,$o.Standalone);break;case"LLLLL":e=ln(_i.Months,Ki.Narrow,$o.Standalone);break;case"w":e=wR(1);break;case"ww":e=wR(2);break;case"W":e=wR(1,!0);break;case"d":e=Tr(ki.Date,1);break;case"dd":e=Tr(ki.Date,2);break;case"c":case"cc":e=Tr(ki.Day,1);break;case"ccc":e=ln(_i.Days,Ki.Abbreviated,$o.Standalone);break;case"cccc":e=ln(_i.Days,Ki.Wide,$o.Standalone);break;case"ccccc":e=ln(_i.Days,Ki.Narrow,$o.Standalone);break;case"cccccc":e=ln(_i.Days,Ki.Short,$o.Standalone);break;case"E":case"EE":case"EEE":e=ln(_i.Days,Ki.Abbreviated);break;case"EEEE":e=ln(_i.Days,Ki.Wide);break;case"EEEEE":e=ln(_i.Days,Ki.Narrow);break;case"EEEEEE":e=ln(_i.Days,Ki.Short);break;case"a":case"aa":case"aaa":e=ln(_i.DayPeriods,Ki.Abbreviated);break;case"aaaa":e=ln(_i.DayPeriods,Ki.Wide);break;case"aaaaa":e=ln(_i.DayPeriods,Ki.Narrow);break;case"b":case"bb":case"bbb":e=ln(_i.DayPeriods,Ki.Abbreviated,$o.Standalone,!0);break;case"bbbb":e=ln(_i.DayPeriods,Ki.Wide,$o.Standalone,!0);break;case"bbbbb":e=ln(_i.DayPeriods,Ki.Narrow,$o.Standalone,!0);break;case"B":case"BB":case"BBB":e=ln(_i.DayPeriods,Ki.Abbreviated,$o.Format,!0);break;case"BBBB":e=ln(_i.DayPeriods,Ki.Wide,$o.Format,!0);break;case"BBBBB":e=ln(_i.DayPeriods,Ki.Narrow,$o.Format,!0);break;case"h":e=Tr(ki.Hours,1,-12);break;case"hh":e=Tr(ki.Hours,2,-12);break;case"H":e=Tr(ki.Hours,1);break;case"HH":e=Tr(ki.Hours,2);break;case"m":e=Tr(ki.Minutes,1);break;case"mm":e=Tr(ki.Minutes,2);break;case"s":e=Tr(ki.Seconds,1);break;case"ss":e=Tr(ki.Seconds,2);break;case"S":e=Tr(ki.FractionalSeconds,1);break;case"SS":e=Tr(ki.FractionalSeconds,2);break;case"SSS":e=Tr(ki.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=k3(pd.Short);break;case"ZZZZZ":e=k3(pd.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=k3(pd.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=k3(pd.Long);break;default:return null}return kR[i]=e,e}(g);p+=v?v(r,t,h):"''"===g?"'":g.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),p}function C3(i,e,t){const n=new Date(0);return n.setFullYear(i,e,t),n.setHours(0,0,0),n}function qu(i,e){const t=function IX(i){return fs(i)[Qi.LocaleId]}(i);if(y3[t]??={},y3[t][e])return y3[t][e];let n="";switch(e){case"shortDate":n=f3(i,Zs.Short);break;case"mediumDate":n=f3(i,Zs.Medium);break;case"longDate":n=f3(i,Zs.Long);break;case"fullDate":n=f3(i,Zs.Full);break;case"shortTime":n=v3(i,Zs.Short);break;case"mediumTime":n=v3(i,Zs.Medium);break;case"longTime":n=v3(i,Zs.Long);break;case"fullTime":n=v3(i,Zs.Full);break;case"short":const r=qu(i,"shortTime"),s=qu(i,"shortDate");n=w3(b3(i,Zs.Short),[r,s]);break;case"medium":const a=qu(i,"mediumTime"),d=qu(i,"mediumDate");n=w3(b3(i,Zs.Medium),[a,d]);break;case"long":const h=qu(i,"longTime"),p=qu(i,"longDate");n=w3(b3(i,Zs.Long),[h,p]);break;case"full":const g=qu(i,"fullTime"),v=qu(i,"fullDate");n=w3(b3(i,Zs.Full),[g,v])}return n&&(y3[t][e]=n),n}function w3(i,e){return e&&(i=i.replace(/\{([^}]+)}/g,function(t,n){return null!=e&&n in e?e[n]:t})),i}function mc(i,e,t="-",n,r){let s="";(i<0||r&&i<=0)&&(r?i=1-i:(i=-i,s=t));let a=String(i);for(;a.length0||d>-t)&&(d+=t),i===ki.Hours)0===d&&-12===t&&(d=12);else if(i===ki.FractionalSeconds)return function qX(i,e){return mc(i,3).substring(0,e)}(d,e);const h=kl(a,Ar.MinusSign);return mc(d,e,h,n,r)}}function ln(i,e,t=$o.Format,n=!1){return function(r,s){return function YX(i,e,t,n,r,s){switch(t){case _i.Months:return function RX(i,e,t){const n=fs(i),s=_l([n[Qi.MonthsFormat],n[Qi.MonthsStandalone]],e);return _l(s,t)}(e,r,n)[i.getMonth()];case _i.Days:return function OX(i,e,t){const n=fs(i),s=_l([n[Qi.DaysFormat],n[Qi.DaysStandalone]],e);return _l(s,t)}(e,r,n)[i.getDay()];case _i.DayPeriods:const a=i.getHours(),d=i.getMinutes();if(s){const p=function HX(i){const e=fs(i);return M7(e),(e[Qi.ExtraData][2]||[]).map(n=>"string"==typeof n?CR(n):[CR(n[0]),CR(n[1])])}(e),g=function VX(i,e,t){const n=fs(i);M7(n);const s=_l([n[Qi.ExtraData][0],n[Qi.ExtraData][1]],e)||[];return _l(s,t)||[]}(e,r,n),v=p.findIndex(y=>{if(Array.isArray(y)){const[C,k]=y,E=a>=C.hours&&d>=C.minutes,x=a0?Math.floor(r/60):Math.ceil(r/60);switch(i){case pd.Short:return(r>=0?"+":"")+mc(a,2,s)+mc(Math.abs(r%60),2,s);case pd.ShortGMT:return"GMT"+(r>=0?"+":"")+mc(a,1,s);case pd.Long:return"GMT"+(r>=0?"+":"")+mc(a,2,s)+":"+mc(Math.abs(r%60),2,s);case pd.Extended:return 0===n?"Z":(r>=0?"+":"")+mc(a,2,s)+":"+mc(Math.abs(r%60),2,s);default:throw new Error(`Unknown zone width "${i}"`)}}}!function(i){i[i.Short=0]="Short",i[i.ShortGMT=1]="ShortGMT",i[i.Long=2]="Long",i[i.Extended=3]="Extended"}(pd||(pd={})),function(i){i[i.FullYear=0]="FullYear",i[i.Month=1]="Month",i[i.Date=2]="Date",i[i.Hours=3]="Hours",i[i.Minutes=4]="Minutes",i[i.Seconds=5]="Seconds",i[i.FractionalSeconds=6]="FractionalSeconds",i[i.Day=7]="Day"}(ki||(ki={})),function(i){i[i.DayPeriods=0]="DayPeriods",i[i.Days=1]="Days",i[i.Months=2]="Months",i[i.Eras=3]="Eras"}(_i||(_i={}));const ZX=0,_3=4;function I7(i){const e=i.getDay(),t=0===e?-3:_3-e;return C3(i.getFullYear(),i.getMonth(),i.getDate()+t)}function wR(i,e=!1){return function(t,n){let r;if(e){const s=new Date(t.getFullYear(),t.getMonth(),1).getDay()-1,a=t.getDate();r=1+Math.floor((a+s)/7)}else{const s=I7(t),a=function JX(i){const e=C3(i,ZX,1).getDay();return C3(i,0,1+(e<=_3?_3:_3+7)-e)}(s.getFullYear()),d=s.getTime()-a.getTime();r=1+Math.round(d/6048e5)}return mc(r,i,kl(n,Ar.MinusSign))}}function E3(i,e=!1){return function(t,n){return mc(I7(t).getFullYear(),i,kl(n,Ar.MinusSign),e)}}const kR={};function L7(i,e){i=i.replace(/:/g,"");const t=Date.parse("Jan 01, 1970 00:00:00 "+i)/6e4;return isNaN(t)?e:t}function O7(i){return i instanceof Date&&!isNaN(i.valueOf())}const nQ=/^(\d+)?\.((\d+)(-(\d+))?)?$/,R7=22,F3=".",p2="0",rQ=";",oQ=",",_R="#";function ER(i,e,t,n,r,s,a=!1){let d="",h=!1;if(isFinite(i)){let p=function uQ(i){let n,r,s,a,d,e=Math.abs(i)+"",t=0;for((r=e.indexOf(F3))>-1&&(e=e.replace(F3,"")),(s=e.search(/e/i))>0?(r<0&&(r=s),r+=+e.slice(s+1),e=e.substring(0,s)):r<0&&(r=e.length),s=0;e.charAt(s)===p2;s++);if(s===(d=e.length))n=[0],r=1;else{for(d--;e.charAt(d)===p2;)d--;for(r-=s,n=[],a=0;s<=d;s++,a++)n[a]=Number(e.charAt(s))}return r>R7&&(n=n.splice(0,R7-1),t=r-1,r=1),{digits:n,exponent:t,integerLen:r}}(i);a&&(p=function dQ(i){if(0===i.digits[0])return i;const e=i.digits.length-i.integerLen;return i.exponent?i.exponent+=2:(0===e?i.digits.push(0,0):1===e&&i.digits.push(0),i.integerLen+=2),i}(p));let g=e.minInt,v=e.minFrac,y=e.maxFrac;if(s){const D=s.match(nQ);if(null===D)throw new Error(`${s} is not a valid digit info`);const I=D[1],L=D[3],R=D[5];null!=I&&(g=xR(I)),null!=L&&(v=xR(L)),null!=R?y=xR(R):null!=L&&v>y&&(y=v)}!function hQ(i,e,t){if(e>t)throw new Error(`The minimum number of digits after fraction (${e}) is higher than the maximum (${t}).`);let n=i.digits,r=n.length-i.integerLen;const s=Math.min(Math.max(e,r),t);let a=s+i.integerLen,d=n[a];if(a>0){n.splice(Math.max(i.integerLen,a));for(let v=a;v=5)if(a-1<0){for(let v=0;v>a;v--)n.unshift(0),i.integerLen++;n.unshift(1),i.integerLen++}else n[a-1]++;for(;r=p?k.pop():h=!1),y>=10?1:0},0);g&&(n.unshift(g),i.integerLen++)}(p,v,y);let C=p.digits,k=p.integerLen;const E=p.exponent;let x=[];for(h=C.every(D=>!D);k0?x=C.splice(k,C.length):(x=C,C=[0]);const S=[];for(C.length>=e.lgSize&&S.unshift(C.splice(-e.lgSize,C.length).join(""));C.length>e.gSize;)S.unshift(C.splice(-e.gSize,C.length).join(""));C.length&&S.unshift(C.join("")),d=S.join(kl(t,n)),x.length&&(d+=kl(t,r)+x.join("")),E&&(d+=kl(t,Ar.Exponential)+"+"+E)}else d=kl(t,Ar.Infinity);return d=i<0&&!h?e.negPre+d+e.negSuf:e.posPre+d+e.posSuf,d}function aQ(i,e,t,n,r){const a=FR(yR(e,h2.Currency),kl(e,Ar.MinusSign));return a.minFrac=function $X(i){let e;const t=A7[i];return t&&(e=t[2]),"number"==typeof e?e:GX}(n),a.maxFrac=a.minFrac,ER(i,a,e,Ar.CurrencyGroup,Ar.CurrencyDecimal,r).replace("\xa4",t).replace("\xa4","").trim()}function FR(i,e="-"){const t={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},n=i.split(rQ),r=n[0],s=n[1],a=-1!==r.indexOf(F3)?r.split(F3):[r.substring(0,r.lastIndexOf(p2)+1),r.substring(r.lastIndexOf(p2)+1)],d=a[0],h=a[1]||"";t.posPre=d.substring(0,d.indexOf(_R));for(let g=0;g-1||(r=t.getPluralCategory(i,n),e.indexOf(r)>-1))return r;if(e.indexOf("other")>-1)return"other";throw new Error(`No plural message found for value "${i}"`)}class m2 extends G0{constructor(e){super(),this.locale=e}getPluralCategory(e,t){switch(BX(t||this.locale)(e)){case If.Zero:return"zero";case If.One:return"one";case If.Two:return"two";case If.Few:return"few";case If.Many:return"many";default:return"other"}}static{this.\u0275fac=function(t){return new(t||m2)(ve(Op))}}static{this.\u0275prov=ue({token:m2,factory:m2.\u0275fac})}}function B7(i,e){e=encodeURIComponent(e);for(const t of i.split(";")){const n=t.indexOf("="),[r,s]=-1==n?[t,""]:[t.slice(0,n),t.slice(n+1)];if(r.trim()===e)return decodeURIComponent(s)}return null}const SR=/\s+/,H7=[];class Pp{constructor(e,t){this._ngEl=e,this._renderer=t,this.initialClasses=H7,this.stateMap=new Map}set klass(e){this.initialClasses=null!=e?e.trim().split(SR):H7}set ngClass(e){this.rawClass="string"==typeof e?e.trim().split(SR):e}ngDoCheck(){for(const t of this.initialClasses)this._updateState(t,!0);const e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(const t of e)this._updateState(t,!0);else if(null!=e)for(const t of Object.keys(e))this._updateState(t,!!e[t]);this._applyStateDiff()}_updateState(e,t){const n=this.stateMap.get(e);void 0!==n?(n.enabled!==t&&(n.changed=!0,n.enabled=t),n.touched=!0):this.stateMap.set(e,{enabled:t,changed:!0,touched:!0})}_applyStateDiff(){for(const e of this.stateMap){const t=e[0],n=e[1];n.changed?(this._toggleClass(t,n.enabled),n.changed=!1):n.touched||(n.enabled&&this._toggleClass(t,!1),this.stateMap.delete(t)),n.touched=!1}}_toggleClass(e,t){(e=e.trim()).length>0&&e.split(SR).forEach(n=>{t?this._renderer.addClass(this._ngEl.nativeElement,n):this._renderer.removeClass(this._ngEl.nativeElement,n)})}static{this.\u0275fac=function(t){return new(t||Pp)(Z(wi),Z(Co))}}static{this.\u0275dir=De({type:Pp,selectors:[["","ngClass",""]],inputs:{klass:[0,"class","klass"],ngClass:"ngClass"},standalone:!0})}}class $0{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 t=this.ngComponentOutletInjector||this._viewContainerRef.parentInjector;this._needToReCreateNgModuleInstance(e)&&(this._moduleRef?.destroy(),this.ngComponentOutletNgModule?this._moduleRef=function nD(i,e){return new Dk(i,e??null,[])}(this.ngComponentOutletNgModule,V7(t)):this.ngComponentOutletNgModuleFactory?this._moduleRef=this.ngComponentOutletNgModuleFactory.create(V7(t)):this._moduleRef=void 0),this._componentRef=this._viewContainerRef.createComponent(this.ngComponentOutlet,{injector:t,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[t,n]of this._inputsUsed)n?(e.setInput(t,this.ngComponentOutletInputs[t]),this._inputsUsed.set(t,!1)):(e.setInput(t,void 0),this._inputsUsed.delete(t))}static{this.\u0275fac=function(t){return new(t||$0)(Z(wo))}}static{this.\u0275dir=De({type:$0,selectors:[["","ngComponentOutlet",""]],inputs:{ngComponentOutlet:"ngComponentOutlet",ngComponentOutletInputs:"ngComponentOutletInputs",ngComponentOutletInjector:"ngComponentOutletInjector",ngComponentOutletContent:"ngComponentOutletContent",ngComponentOutletNgModule:"ngComponentOutletNgModule",ngComponentOutletNgModuleFactory:"ngComponentOutletNgModuleFactory"},standalone:!0,features:[yi]})}}function V7(i){return i.get(sd).injector}class pQ{constructor(e,t,n,r){this.$implicit=e,this.ngForOf=t,this.index=n,this.count=r}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 Lf{set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}constructor(e,t,n){this._viewContainer=e,this._template=t,this._differs=n,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 t=this._viewContainer;e.forEachOperation((n,r,s)=>{if(null==n.previousIndex)t.createEmbeddedView(this._template,new pQ(n.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)t.remove(null===r?void 0:r);else if(null!==r){const a=t.get(r);t.move(a,s),z7(a,n)}});for(let n=0,r=t.length;n{z7(t.get(n.currentIndex),n)})}static ngTemplateContextGuard(e,t){return!0}static{this.\u0275fac=function(t){return new(t||Lf)(Z(wo),Z(jt),Z($u))}}static{this.\u0275dir=De({type:Lf,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0})}}function z7(i,e){i.context.$implicit=e.item}class Of{constructor(e,t){this._viewContainer=e,this._context=new mQ,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=t}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){G7("ngIfThen",e),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){G7("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,t){return!0}static{this.\u0275fac=function(t){return new(t||Of)(Z(wo),Z(jt))}}static{this.\u0275dir=De({type:Of,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0})}}class mQ{constructor(){this.$implicit=null,this.ngIf=null}}function G7(i,e){if(e&&!e.createEmbeddedView)throw new Error(`${i} must be a TemplateRef, but received '${Xn(e)}'.`)}class DR{constructor(e,t){this._viewContainerRef=e,this._templateRef=t,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 Np{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 t=e===this._ngSwitch;return this._lastCasesMatched||=t,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),t}_updateDefaultCases(e){if(this._defaultViews.length>0&&e!==this._defaultUsed){this._defaultUsed=e;for(const t of this._defaultViews)t.enforceState(e)}}static{this.\u0275fac=function(t){return new(t||Np)}}static{this.\u0275dir=De({type:Np,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"},standalone:!0})}}class W0{constructor(e,t,n){this.ngSwitch=n,n._addCase(),this._view=new DR(e,t)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}static{this.\u0275fac=function(t){return new(t||W0)(Z(wo),Z(jt),Z(Np,9))}}static{this.\u0275dir=De({type:W0,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"},standalone:!0})}}class U0{constructor(e,t,n){n._addDefault(new DR(e,t))}static{this.\u0275fac=function(t){return new(t||U0)(Z(wo),Z(jt),Z(Np,9))}}static{this.\u0275dir=De({type:U0,selectors:[["","ngSwitchDefault",""]],standalone:!0})}}class Rf{constructor(e){this._localization=e,this._caseViews={}}set ngPlural(e){this._updateView(e)}addCase(e,t){this._caseViews[e]=t}_updateView(e){this._clearViews();const n=N7(e,Object.keys(this._caseViews),this._localization);this._activateView(this._caseViews[n])}_clearViews(){this._activeView&&this._activeView.destroy()}_activateView(e){e&&(this._activeView=e,this._activeView.create())}static{this.\u0275fac=function(t){return new(t||Rf)(Z(G0))}}static{this.\u0275dir=De({type:Rf,selectors:[["","ngPlural",""]],inputs:{ngPlural:"ngPlural"},standalone:!0})}}class j0{constructor(e,t,n,r){this.value=e;const s=!isNaN(Number(e));r.addCase(s?`=${e}`:e,new DR(n,t))}static{this.\u0275fac=function(t){return new(t||j0)(dl("ngPluralCase"),Z(jt),Z(wo),Z(Rf,1))}}static{this.\u0275dir=De({type:j0,selectors:[["","ngPluralCase",""]],standalone:!0})}}class q0{constructor(e,t,n){this._ngEl=e,this._differs=t,this._renderer=n,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,t){const[n,r]=e.split("."),s=-1===n.indexOf("-")?void 0:vl.DashCase;null!=t?this._renderer.setStyle(this._ngEl.nativeElement,n,r?`${t}${r}`:t,s):this._renderer.removeStyle(this._ngEl.nativeElement,n,s)}_applyChanges(e){e.forEachRemovedItem(t=>this._setStyle(t.key,null)),e.forEachAddedItem(t=>this._setStyle(t.key,t.currentValue)),e.forEachChangedItem(t=>this._setStyle(t.key,t.currentValue))}static{this.\u0275fac=function(t){return new(t||q0)(Z(wi),Z(dd),Z(Co))}}static{this.\u0275dir=De({type:q0,selectors:[["","ngStyle",""]],inputs:{ngStyle:"ngStyle"},standalone:!0})}}class Bp{constructor(e){this._viewContainerRef=e,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(e){if(this._shouldRecreateView(e)){const t=this._viewContainerRef;if(this._viewRef&&t.remove(t.indexOf(this._viewRef)),!this.ngTemplateOutlet)return void(this._viewRef=null);const n=this._createContextForwardProxy();this._viewRef=t.createEmbeddedView(this.ngTemplateOutlet,n,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,t,n)=>!!this.ngTemplateOutletContext&&Reflect.set(this.ngTemplateOutletContext,t,n),get:(e,t,n)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,t,n)}})}static{this.\u0275fac=function(t){return new(t||Bp)(Z(wo))}}static{this.\u0275dir=De({type:Bp,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[yi]})}}function gc(i,e){return new j(2100,!1)}const vQ=new class fQ{createSubscription(e,t){return e.then(t,n=>{throw n})}dispose(e){}},bQ=new class gQ{createSubscription(e,t){return ud(()=>e.subscribe({next:t,error:n=>{throw n}}))}dispose(e){ud(()=>e.unsubscribe())}};class Pf{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,t=>this._updateLatestValue(e,t))}_selectStrategy(e){if(i2(e))return vQ;if(IH(e))return bQ;throw gc()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(e,t){e===this._obj&&(this._latestValue=t,this.markForCheckOnValueUpdate&&this._ref?.markForCheck())}static{this.\u0275fac=function(t){return new(t||Pf)(Z(bn,16))}}static{this.\u0275pipe=Xr({name:"async",type:Pf,pure:!1,standalone:!0})}}class Nf{transform(e){if(null==e)return null;if("string"!=typeof e)throw gc();return e.toLowerCase()}static{this.\u0275fac=function(t){return new(t||Nf)}}static{this.\u0275pipe=Xr({name:"lowercase",type:Nf,pure:!0,standalone:!0})}}const yQ=/(?:[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 Bf{transform(e){if(null==e)return null;if("string"!=typeof e)throw gc();return e.replace(yQ,t=>t[0].toUpperCase()+t.slice(1).toLowerCase())}static{this.\u0275fac=function(t){return new(t||Bf)}}static{this.\u0275pipe=Xr({name:"titlecase",type:Bf,pure:!0,standalone:!0})}}class Hf{transform(e){if(null==e)return null;if("string"!=typeof e)throw gc();return e.toUpperCase()}static{this.\u0275fac=function(t){return new(t||Hf)}}static{this.\u0275pipe=Xr({name:"uppercase",type:Hf,pure:!0,standalone:!0})}}const wQ=new ge(""),kQ=new ge("");class Vf{constructor(e,t,n){this.locale=e,this.defaultTimezone=t,this.defaultOptions=n}transform(e,t,n,r){if(null==e||""===e||e!=e)return null;try{const s=t??this.defaultOptions?.dateFormat??"mediumDate",a=n??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return jX(e,s,r||this.locale,a)}catch(s){throw gc(0,s.message)}}static{this.\u0275fac=function(t){return new(t||Vf)(Z(Op,16),Z(wQ,24),Z(kQ,24))}}static{this.\u0275pipe=Xr({name:"date",type:Vf,pure:!0,standalone:!0})}}const _Q=/#/g;class zf{constructor(e){this._localization=e}transform(e,t,n){if(null==e)return"";if("object"!=typeof t||null===t)throw gc();return t[N7(e,Object.keys(t),this._localization,n)].replace(_Q,e.toString())}static{this.\u0275fac=function(t){return new(t||zf)(Z(G0,16))}}static{this.\u0275pipe=Xr({name:"i18nPlural",type:zf,pure:!0,standalone:!0})}}class Gf{transform(e,t){if(null==e)return"";if("object"!=typeof t||"string"!=typeof e)throw gc();return t.hasOwnProperty(e)?t[e]:t.hasOwnProperty("other")?t.other:""}static{this.\u0275fac=function(t){return new(t||Gf)}}static{this.\u0275pipe=Xr({name:"i18nSelect",type:Gf,pure:!0,standalone:!0})}}class K0{transform(e){return JSON.stringify(e,null,2)}static{this.\u0275fac=function(t){return new(t||K0)}}static{this.\u0275pipe=Xr({name:"json",type:K0,pure:!1,standalone:!0})}}class Y0{constructor(e){this.differs=e,this.keyValues=[],this.compareFn=$7}transform(e,t=$7){if(!e||!(e instanceof Map)&&"object"!=typeof e)return null;this.differ??=this.differs.find(e).create();const n=this.differ.diff(e),r=t!==this.compareFn;return n&&(this.keyValues=[],n.forEachItem(s=>{this.keyValues.push(function EQ(i,e){return{key:i,value:e}}(s.key,s.currentValue))})),(n||r)&&(this.keyValues.sort(t),this.compareFn=t),this.keyValues}static{this.\u0275fac=function(t){return new(t||Y0)(Z(dd,16))}}static{this.\u0275pipe=Xr({name:"keyvalue",type:Y0,pure:!1,standalone:!0})}}function $7(i,e){const t=i.key,n=e.key;if(t===n)return 0;if(void 0===t)return 1;if(void 0===n)return-1;if(null===t)return 1;if(null===n)return-1;if("string"==typeof t&&"string"==typeof n)return tW7(K(hs))?new xQ(K(sr),window):new DQ})}}class xQ{constructor(e,t){this.document=e,this.window=t,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 t=function SQ(i,e){const t=i.getElementById(e)||i.getElementsByName(e)[0];if(t)return t;if("function"==typeof i.createTreeWalker&&i.body&&"function"==typeof i.body.attachShadow){const n=i.createTreeWalker(i.body,NodeFilter.SHOW_ELEMENT);let r=n.currentNode;for(;r;){const s=r.shadowRoot;if(s){const a=s.getElementById(e)||s.querySelector(`[name="${e}"]`);if(a)return a}r=n.nextNode()}}return null}(this.document,e);t&&(this.scrollToElement(t),t.focus())}setHistoryScrollRestoration(e){this.window.history.scrollRestoration=e}scrollToElement(e){const t=e.getBoundingClientRect(),n=t.left+this.window.pageXOffset,r=t.top+this.window.pageYOffset,s=this.offset();this.window.scrollTo(n-s[0],r-s[1])}}class DQ{setOffset(e){}getScrollPosition(){return[0,0]}scrollToPosition(e){}scrollToAnchor(e){}setHistoryScrollRestoration(e){}}class U7{}const S3="20";function Z0(i,e){return D3(i)?new URL(i):new URL(i,e.location.href)}function D3(i){return/^https?:\/\//.test(i)}function j7(i){return D3(i)?new URL(i).hostname:i}function q7(i){if("string"!=typeof i||""===i.trim())return!1;try{new URL(i);return!0}catch{return!1}}function TQ(i){return i.startsWith("/")?i.slice(1):i}const J0=i=>i.src,LR=new ge("",{providedIn:"root",factory:()=>J0});function A3(i,e){return function(n){return q7(n)||function MQ(i,e){throw new j(2959,!1)}(),n=function AQ(i){return i.endsWith("/")?i.slice(0,-1):i}(n),[{provide:LR,useValue:a=>(D3(a.src)&&function IQ(i,e){throw new j(2959,!1)}(0,a.src),i(n,{...a,src:TQ(a.src)}))}]}}A3(function LQ(i,e){let t="format=auto";return e.width&&(t+=`,width=${e.width}`),e.isPlaceholder&&(t+=`,quality=${S3}`),`${i}/cdn-cgi/image/${t}/${e.src}`});A3(function NQ(i,e){let n="f_auto,"+(e.isPlaceholder?"q_auto:low":"q_auto");return e.width&&(n+=`,w_${e.width}`),`${i}/image/upload/${n}/${e.src}`});A3(function zQ(i,e){const{src:t,width:n}=e,r=[];n&&r.push(`w-${n}`),e.isPlaceholder&&r.push(`q-${S3}`);const s=r.length?[i,`tr:${r.join(",")}`,t]:[i,t];return new URL(s.join("/")).href});A3(function UQ(i,e){const t=new URL(`${i}/${e.src}`);return t.searchParams.set("auto","format"),e.width&&t.searchParams.set("w",e.width.toString()),e.isPlaceholder&&t.searchParams.set("q",S3),t.href});function Yi(i,e=!0){return`The NgOptimizedImage directive ${e?`(activated on an element with the \`ngSrc="${i}"\`) `:""}has detected that`}function Y7(i){throw new j(2958,`Unexpected invocation of the ${i} in the prod mode. Please make sure that the prod mode is enabled for production builds.`)}class T3{constructor(){this.images=new Map,this.window=null,this.observer=null;const e=W7(K(hs));Y7("LCP checker");const t=K(sr).defaultView;e&&typeof PerformanceObserver<"u"&&(this.window=t,this.observer=this.initPerformanceObserver())}initPerformanceObserver(){const e=new PerformanceObserver(t=>{const n=t.getEntries();if(0===n.length)return;const s=n[n.length-1].element?.src??"";if(s.startsWith("data:")||s.startsWith("blob:"))return;const a=this.images.get(s);a&&(!a.priority&&!a.alreadyWarnedPriority&&(a.alreadyWarnedPriority=!0,function ZQ(i){const e=Yi(i);console.error(gi(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.`))}(s)),a.modified&&!a.alreadyWarnedModified&&(a.alreadyWarnedModified=!0,function JQ(i){const e=Yi(i);console.warn(gi(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.`))}(s)))});return e.observe({type:"largest-contentful-paint",buffered:!0}),e}registerImage(e,t,n){if(!this.observer)return;const r={priority:n,modified:!1,alreadyWarnedModified:!1,alreadyWarnedPriority:!1};this.images.set(Z0(e,this.window).href,r)}unregisterImage(e){this.observer&&this.images.delete(Z0(e,this.window).href)}updateImage(e,t){if(!this.observer)return;const n=Z0(e,this.window).href,r=this.images.get(n);r&&(r.modified=!0,this.images.set(Z0(t,this.window).href,r),this.images.delete(n))}ngOnDestroy(){this.observer&&(this.observer.disconnect(),this.images.clear())}static{this.\u0275fac=function(t){return new(t||T3)}}static{this.\u0275prov=ue({token:T3,factory:T3.\u0275fac,providedIn:"root"})}}const XQ=new Set(["localhost","127.0.0.1","0.0.0.0"]),QQ=new ge("");class M3{constructor(){this.document=K(sr),this.isServer=x3(K(hs)),this.preconnectLinks=null,this.alreadySeen=new Set,this.window=null,this.blocklist=new Set(XQ),Y7("preconnect link checker");const e=this.document.defaultView;typeof e<"u"&&(this.window=e);const t=K(QQ,{optional:!0});t&&this.populateBlocklist(t)}populateBlocklist(e){Array.isArray(e)?Z7(e,t=>{this.blocklist.add(j7(t))}):this.blocklist.add(j7(e))}assertPreconnect(e,t){if(this.isServer)return;const n=Z0(e,this.window);this.blocklist.has(n.hostname)||this.alreadySeen.has(n.origin)||(this.alreadySeen.add(n.origin),this.preconnectLinks??=this.queryPreconnectLinks(),this.preconnectLinks.has(n.origin)||console.warn(gi(2956,`${Yi(t)} 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,n=Array.from(this.document.querySelectorAll("link[rel=preconnect]"));for(let r of n){const s=Z0(r.href,this.window);e.add(s.origin)}return e}ngOnDestroy(){this.preconnectLinks?.clear(),this.alreadySeen.clear()}static{this.\u0275fac=function(t){return new(t||M3)}}static{this.\u0275prov=ue({token:M3,factory:M3.\u0275fac,providedIn:"root"})}}function Z7(i,e){for(let t of i)Array.isArray(t)?Z7(t,e):e(t)}const eee=new ge("NG_OPTIMIZED_PRELOADED_IMAGES",{providedIn:"root",factory:()=>new Set});class g2{constructor(){this.preloadedImages=K(eee),this.document=K(sr)}createPreloadLinkTag(e,t,n,r){if(this.preloadedImages.has(t))return;this.preloadedImages.add(t);const s=e.createElement("link");e.setAttribute(s,"as","image"),e.setAttribute(s,"href",t),e.setAttribute(s,"rel","preload"),e.setAttribute(s,"fetchpriority","high"),r&&e.setAttribute(s,"imageSizes",r),n&&e.setAttribute(s,"imageSrcset",n),e.appendChild(this.document.head,s)}static{this.\u0275fac=function(t){return new(t||g2)}}static{this.\u0275prov=ue({token:g2,factory:g2.\u0275fac,providedIn:"root"})}}const X7=/^((\s*\d+w\s*(,|$)){1,})$/,iee=[1,2];class PR{constructor(){this.imageLoader=K(LR),this.config=function aee(i){let e={};return i.breakpoints&&(e.breakpoints=i.breakpoints.sort((t,n)=>t-n)),Object.assign({},Mv,i,e)}(K(HF)),this.renderer=K(Co),this.imgElement=K(wi).nativeElement,this.injector=K(ze),this.isServer=x3(K(hs)),this.preloadLinkCreator=K(g2),this.lcpObserver=null,this._renderedSrc=null,this.priority=!1,this.disableOptimizedSrcset=!1,this.fill=!1}ngOnInit(){$r("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 t=this._renderedSrc;this.updateSrcAndSrcset(!0);const n=this._renderedSrc;null!==this.lcpObserver&&t&&n&&t!==n&&this.injector.get(ni).runOutsideAngular(()=>{this.lcpObserver?.updateImage(t,n)})}}callImageLoader(e){let t=e;return this.loaderParams&&(t.loaderParams=this.loaderParams),this.imageLoader(t)}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=X7.test(this.ngSrcset);return this.ngSrcset.split(",").filter(n=>""!==n).map(n=>{n=n.trim();const r=e?parseFloat(n):parseFloat(n)*this.width;return`${this.callImageLoader({src:this.ngSrc,width:r})} ${n}`}).join(", ")}getAutomaticSrcset(){return this.sizes?this.getResponsiveSrcset():this.getFixedSrcset()}getResponsiveSrcset(){const{breakpoints:e}=this.config;let t=e;return"100vw"===this.sizes?.trim()&&(t=e.filter(r=>r>=640)),t.map(r=>`${this.callImageLoader({src:this.ngSrc,width:r})} ${r}w`).join(", ")}updateSrcAndSrcset(e=!1){e&&(this._renderedSrc=null);const t=this.getRewrittenSrc();let n;return this.setHostAttribute("src",t),this.ngSrcset?n=this.getRewrittenSrcset():this.shouldGenerateAutomaticSrcset()&&(n=this.getAutomaticSrcset()),n&&this.setHostAttribute("srcset",n),n}getFixedSrcset(){return iee.map(t=>`${this.callImageLoader({src:this.ngSrc,width:this.width*t})} ${t}x`).join(", ")}shouldGenerateAutomaticSrcset(){let e=!1;return this.sizes||(e=this.width>1920||this.height>1080),!this.disableOptimizedSrcset&&!this.srcset&&this.imageLoader!==J0&&!e}generatePlaceholder(e){const{placeholderResolution:t}=this.config;return!0===e?`url(${this.callImageLoader({src:this.ngSrc,width:t,isPlaceholder:!0})})`:"string"==typeof e?`url(${e})`:null}shouldBlurPlaceholder(e){return!e||!e.hasOwnProperty("blur")||!!e.blur}removePlaceholderOnLoad(e){const t=()=>{const s=this.injector.get(bn);n(),r(),this.placeholder=!1,s.markForCheck()},n=this.renderer.listen(e,"load",t),r=this.renderer.listen(e,"error",t);BR(e,t)}ngOnDestroy(){}setHostAttribute(e,t){this.renderer.setAttribute(this.imgElement,e,t)}static{this.\u0275fac=function(t){return new(t||PR)}}static{this.\u0275dir=De({type:PR,selectors:[["img","ngSrc",""]],hostVars:18,hostBindings:function(t,n){2&t&&O5("position",n.fill?"absolute":null)("width",n.fill?"100%":null)("height",n.fill?"100%":null)("inset",n.fill?"0":null)("background-size",n.placeholder?"cover":null)("background-position",n.placeholder?"50% 50%":null)("background-repeat",n.placeholder?"no-repeat":null)("background-image",n.placeholder?n.generatePlaceholder(n.placeholder):null)("filter",n.placeholder&&n.shouldBlurPlaceholder(n.placeholderConfig)?"blur(15px)":null)},inputs:{ngSrc:[2,"ngSrc","ngSrc",mee],ngSrcset:"ngSrcset",sizes:"sizes",width:[2,"width","width",H0],height:[2,"height","height",H0],loading:"loading",priority:[2,"priority","priority",qi],loaderParams:"loaderParams",disableOptimizedSrcset:[2,"disableOptimizedSrcset","disableOptimizedSrcset",qi],fill:[2,"fill","fill",qi],placeholder:[2,"placeholder","placeholder",gee],placeholderConfig:"placeholderConfig",src:"src",srcset:"srcset"},standalone:!0,features:[wp,yi]})}}function BR(i,e){i.complete&&i.naturalWidth&&e()}function mee(i){return"string"==typeof i?i:Po(i)}function gee(i){return"string"==typeof i&&"true"!==i&&"false"!==i&&""!==i?i:qi(i)}class fee extends DX{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class HR extends fee{static makeCurrent(){!function SX(i){E7??=i}(new HR)}onAndCancel(e,t,n){return e.addEventListener(t,n),()=>{e.removeEventListener(t,n)}}dispatchEvent(e,t){e.dispatchEvent(t)}remove(e){e.remove()}createElement(e,t){return(t=t||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,t){return"window"===t?window:"document"===t?e:"body"===t?e.body:null}getBaseHref(e){const t=function vee(){return v2=v2||document.querySelector("base"),v2?v2.getAttribute("href"):null}();return null==t?null:function bee(i){return new URL(i,document.baseURI).pathname}(t)}resetBaseElement(){v2=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return B7(document.cookie,e)}}let v2=null;class b2{build(){return new XMLHttpRequest}static{this.\u0275fac=function(t){return new(t||b2)}}static{this.\u0275prov=ue({token:b2,factory:b2.\u0275fac})}}const L3=new ge("");class Q0{constructor(e,t){this._zone=t,this._eventNameToPlugin=new Map,e.forEach(n=>{n.manager=this}),this._plugins=e.slice().reverse()}addEventListener(e,t,n){return this._findPluginFor(t).addEventListener(e,t,n)}getZone(){return this._zone}_findPluginFor(e){let t=this._eventNameToPlugin.get(e);if(t)return t;if(t=this._plugins.find(r=>r.supports(e)),!t)throw new j(5101,!1);return this._eventNameToPlugin.set(e,t),t}static{this.\u0275fac=function(t){return new(t||Q0)(ve(L3),ve(ni))}}static{this.\u0275prov=ue({token:Q0,factory:Q0.\u0275fac})}}class VR{constructor(e){this._doc=e}}const zR="ng-app-id";class eb{constructor(e,t,n,r={}){this.doc=e,this.appId=t,this.nonce=n,this.platformId=r,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=x3(r),this.resetHostNodes()}addStyles(e){for(const t of e)1===this.changeUsageCount(t,1)&&this.onStyleAdded(t)}removeStyles(e){for(const t of e)this.changeUsageCount(t,-1)<=0&&this.onStyleRemoved(t)}ngOnDestroy(){const e=this.styleNodesInDOM;e&&(e.forEach(t=>t.remove()),e.clear());for(const t of this.getAllStyles())this.onStyleRemoved(t);this.resetHostNodes()}addHost(e){this.hostNodes.add(e);for(const t of this.getAllStyles())this.addStyleToHost(e,t)}removeHost(e){this.hostNodes.delete(e)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(e){for(const t of this.hostNodes)this.addStyleToHost(t,e)}onStyleRemoved(e){const t=this.styleRef;t.get(e)?.elements?.forEach(n=>n.remove()),t.delete(e)}collectServerRenderedStyles(){const e=this.doc.head?.querySelectorAll(`style[${zR}="${this.appId}"]`);if(e?.length){const t=new Map;return e.forEach(n=>{null!=n.textContent&&t.set(n.textContent,n)}),t}return null}changeUsageCount(e,t){const n=this.styleRef;if(n.has(e)){const r=n.get(e);return r.usage+=t,r.usage}return n.set(e,{usage:t,elements:[]}),t}getStyleElement(e,t){const n=this.styleNodesInDOM,r=n?.get(t);if(r?.parentNode===e)return n.delete(t),r.removeAttribute(zR),r;{const s=this.doc.createElement("style");return this.nonce&&s.setAttribute("nonce",this.nonce),s.textContent=t,this.platformIsServer&&s.setAttribute(zR,this.appId),e.appendChild(s),s}}addStyleToHost(e,t){const n=this.getStyleElement(e,t),r=this.styleRef,s=r.get(t)?.elements;s?s.push(n):r.set(t,{elements:[n],usage:1})}resetHostNodes(){const e=this.hostNodes;e.clear(),e.add(this.doc.head)}static{this.\u0275fac=function(t){return new(t||eb)(ve(sr),ve(Uh),ve(BF,8),ve(hs))}}static{this.\u0275prov=ue({token:eb,factory:eb.\u0275fac})}}const GR={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"},$R=/%COMP%/g,Cee="_nghost-%COMP%",wee="_ngcontent-%COMP%",_ee=new ge("",{providedIn:"root",factory:()=>true});function oV(i,e){return e.map(t=>t.replace($R,i))}class tb{constructor(e,t,n,r,s,a,d,h=null){this.eventManager=e,this.sharedStylesHost=t,this.appId=n,this.removeStylesOnCompDestroy=r,this.doc=s,this.platformId=a,this.ngZone=d,this.nonce=h,this.rendererByCompId=new Map,this.platformIsServer=x3(a),this.defaultRenderer=new WR(e,s,d,this.platformIsServer)}createRenderer(e,t){if(!e||!t)return this.defaultRenderer;this.platformIsServer&&t.encapsulation===Bt.ShadowDom&&(t={...t,encapsulation:Bt.Emulated});const n=this.getOrCreateRenderer(e,t);return n instanceof aV?n.applyToHost(e):n instanceof UR&&n.applyStyles(),n}getOrCreateRenderer(e,t){const n=this.rendererByCompId;let r=n.get(t.id);if(!r){const s=this.doc,a=this.ngZone,d=this.eventManager,h=this.sharedStylesHost,p=this.removeStylesOnCompDestroy,g=this.platformIsServer;switch(t.encapsulation){case Bt.Emulated:r=new aV(d,h,t,this.appId,p,s,a,g);break;case Bt.ShadowDom:return new See(d,h,e,t,s,a,this.nonce,g);default:r=new UR(d,h,t,p,s,a,g)}n.set(t.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}static{this.\u0275fac=function(t){return new(t||tb)(ve(Q0),ve(eb),ve(Uh),ve(_ee),ve(sr),ve(hs),ve(ni),ve(BF))}}static{this.\u0275prov=ue({token:tb,factory:tb.\u0275fac})}}class WR{constructor(e,t,n,r){this.eventManager=e,this.doc=t,this.ngZone=n,this.platformIsServer=r,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(e,t){return t?this.doc.createElementNS(GR[t]||t,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,t){(sV(e)?e.content:e).appendChild(t)}insertBefore(e,t,n){e&&(sV(e)?e.content:e).insertBefore(t,n)}removeChild(e,t){t.remove()}selectRootElement(e,t){let n="string"==typeof e?this.doc.querySelector(e):e;if(!n)throw new j(-5104,!1);return t||(n.textContent=""),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,t,n,r){if(r){t=r+":"+t;const s=GR[r];s?e.setAttributeNS(s,t,n):e.setAttribute(t,n)}else e.setAttribute(t,n)}removeAttribute(e,t,n){if(n){const r=GR[n];r?e.removeAttributeNS(r,t):e.removeAttribute(`${n}:${t}`)}else e.removeAttribute(t)}addClass(e,t){e.classList.add(t)}removeClass(e,t){e.classList.remove(t)}setStyle(e,t,n,r){r&(vl.DashCase|vl.Important)?e.style.setProperty(t,n,r&vl.Important?"important":""):e.style[t]=n}removeStyle(e,t,n){n&vl.DashCase?e.style.removeProperty(t):e.style[t]=""}setProperty(e,t,n){null!=e&&(e[t]=n)}setValue(e,t){e.nodeValue=t}listen(e,t,n){if("string"==typeof e&&!(e=Wu().getGlobalEventTarget(this.doc,e)))throw new Error(`Unsupported event target ${e} for event ${t}`);return this.eventManager.addEventListener(e,t,this.decoratePreventDefault(n))}decoratePreventDefault(e){return t=>{if("__ngUnwrap__"===t)return e;!1===(this.platformIsServer?this.ngZone.runGuarded(()=>e(t)):e(t))&&t.preventDefault()}}}function sV(i){return"TEMPLATE"===i.tagName&&void 0!==i.content}class See extends WR{constructor(e,t,n,r,s,a,d,h){super(e,s,a,h),this.sharedStylesHost=t,this.hostEl=n,this.shadowRoot=n.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const p=oV(r.id,r.styles);for(const g of p){const v=document.createElement("style");d&&v.setAttribute("nonce",d),v.textContent=g,this.shadowRoot.appendChild(v)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,t){return super.appendChild(this.nodeOrShadowRoot(e),t)}insertBefore(e,t,n){return super.insertBefore(this.nodeOrShadowRoot(e),t,n)}removeChild(e,t){return super.removeChild(null,t)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class UR extends WR{constructor(e,t,n,r,s,a,d,h){super(e,s,a,d),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=r,this.styles=h?oV(h,n.styles):n.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}}class aV extends UR{constructor(e,t,n,r,s,a,d,h){const p=r+"-"+n.id;super(e,t,n,s,a,d,h,p),this.contentAttr=function Eee(i){return wee.replace($R,i)}(p),this.hostAttr=function Fee(i){return Cee.replace($R,i)}(p)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,"")}createElement(e,t){const n=super.createElement(e,t);return super.setAttribute(n,this.contentAttr,""),n}}class y2 extends VR{constructor(e){super(e)}supports(e){return!0}addEventListener(e,t,n){return e.addEventListener(t,n,!1),()=>this.removeEventListener(e,t,n)}removeEventListener(e,t,n){return e.removeEventListener(t,n)}static{this.\u0275fac=function(t){return new(t||y2)(ve(sr))}}static{this.\u0275prov=ue({token:y2,factory:y2.\u0275fac})}}const lV=["alt","control","meta","shift"],Dee={"\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"},Aee={alt:i=>i.altKey,control:i=>i.ctrlKey,meta:i=>i.metaKey,shift:i=>i.shiftKey};class md extends VR{constructor(e){super(e)}supports(e){return null!=md.parseEventName(e)}addEventListener(e,t,n){const r=md.parseEventName(t),s=md.eventCallback(r.fullKey,n,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Wu().onAndCancel(e,r.domEventName,s))}static parseEventName(e){const t=e.toLowerCase().split("."),n=t.shift();if(0===t.length||"keydown"!==n&&"keyup"!==n)return null;const r=md._normalizeKey(t.pop());let s="",a=t.indexOf("code");if(a>-1&&(t.splice(a,1),s="code."),lV.forEach(h=>{const p=t.indexOf(h);p>-1&&(t.splice(p,1),s+=h+".")}),s+=r,0!=t.length||0===r.length)return null;const d={};return d.domEventName=n,d.fullKey=s,d}static matchEventFullKeyCode(e,t){let n=Dee[e.key]||e.key,r="";return t.indexOf("code.")>-1&&(n=e.code,r="code."),!(null==n||!n)&&(n=n.toLowerCase()," "===n?n="space":"."===n&&(n="dot"),lV.forEach(s=>{if(s!==n){(0,Aee[s])(e)&&(r+=s+".")}}),r+=n,r===t)}static eventCallback(e,t,n){return r=>{md.matchEventFullKeyCode(r,e)&&n.runGuarded(()=>t(r))}}static _normalizeKey(e){return"esc"===e?"escape":e}static{this.\u0275fac=function(t){return new(t||md)(ve(sr))}}static{this.\u0275prov=ue({token:md,factory:md.\u0275fac})}}const jR=[{provide:hs,useValue:MR},{provide:NF,useValue:function Tee(){HR.makeCurrent()},multi:!0},{provide:sr,useFactory:function Iee(){return function I4(i){WC=i}(document),document},deps:[]}],Lee=(s3(e7,"browser",jR),new ge("")),dV=[{provide:JD,useClass:class yee{addToWindow(e){Ji.getAngularTestability=(n,r=!0)=>{const s=e.findTestabilityInTree(n,r);if(null==s)throw new j(5103,!1);return s},Ji.getAllAngularTestabilities=()=>e.getAllTestabilities(),Ji.getAllAngularRootElements=()=>e.getAllRootElements();Ji.frameworkStabilizers||(Ji.frameworkStabilizers=[]),Ji.frameworkStabilizers.push(n=>{const r=Ji.getAllAngularTestabilities();let s=r.length;const a=function(){s--,0==s&&n()};r.forEach(d=>{d.whenStable(a)})})}findTestabilityInTree(e,t,n){if(null==t)return null;return e.getTestability(t)??(n?Wu().isShadowRoot(t)?this.findTestabilityInTree(e,t.host,!0):this.findTestabilityInTree(e,t.parentElement,!0):null)}},deps:[]},{provide:MH,useClass:Af,deps:[ni,Tf,JD]},{provide:Af,useClass:Af,deps:[ni,Tf,JD]}],uV=[{provide:Lt,useValue:"root"},{provide:pl,useFactory:function Mee(){return new pl},deps:[]},{provide:L3,useClass:y2,multi:!0,deps:[sr,ni,hs]},{provide:L3,useClass:md,multi:!0,deps:[sr]},tb,eb,Q0,{provide:Qw,useExisting:tb},{provide:U7,useClass:b2,deps:[]},[]];class C2{constructor(e){}static withServerTransition(e){return{ngModule:C2,providers:[{provide:Uh,useValue:e.appId}]}}static{this.\u0275fac=function(t){return new(t||C2)(ve(Lee,12))}}static{this.\u0275mod=Er({type:C2,exports:[Hp,o2]})}static{this.\u0275inj=Qn({providers:[...uV,...dV],imports:[Hp,o2]})}}class O3{constructor(e){this._doc=e,this._dom=Wu()}addTag(e,t=!1){return e?this._getOrCreateElement(e,t):null}addTags(e,t=!1){return e?e.reduce((n,r)=>(r&&n.push(this._getOrCreateElement(r,t)),n),[]):[]}getTag(e){return e&&this._doc.querySelector(`meta[${e}]`)||null}getTags(e){if(!e)return[];const t=this._doc.querySelectorAll(`meta[${e}]`);return t?[].slice.call(t):[]}updateTag(e,t){if(!e)return null;t=t||this._parseSelector(e);const n=this.getTag(t);return n?this._setMetaElementAttributes(e,n):this._getOrCreateElement(e,!0)}removeTag(e){this.removeTagElement(this.getTag(e))}removeTagElement(e){e&&this._dom.remove(e)}_getOrCreateElement(e,t=!1){if(!t){const s=this._parseSelector(e),a=this.getTags(s).filter(d=>this._containsAttributes(e,d))[0];if(void 0!==a)return a}const n=this._dom.createElement("meta");return this._setMetaElementAttributes(e,n),this._doc.getElementsByTagName("head")[0].appendChild(n),n}_setMetaElementAttributes(e,t){return Object.keys(e).forEach(n=>t.setAttribute(this._getMetaKeyMap(n),e[n])),t}_parseSelector(e){const t=e.name?"name":"property";return`${t}="${e[t]}"`}_containsAttributes(e,t){return Object.keys(e).every(n=>t.getAttribute(this._getMetaKeyMap(n))===e[n])}_getMetaKeyMap(e){return Oee[e]||e}static{this.\u0275fac=function(t){return new(t||O3)(ve(sr))}}static{this.\u0275prov=ue({token:O3,factory:O3.\u0275fac,providedIn:"root"})}}const Oee={httpEquiv:"http-equiv"};class w2{constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}static{this.\u0275fac=function(t){return new(t||w2)(ve(sr))}}static{this.\u0275prov=ue({token:w2,factory:w2.\u0275fac,providedIn:"root"})}}const Bee={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},qR=new ge("HammerGestureConfig"),mV=new ge("HammerLoader");class k2{constructor(){this.events=[],this.overrides={}}buildHammer(e){const t=new Hammer(e,this.options);t.get("pinch").set({enable:!0}),t.get("rotate").set({enable:!0});for(const n in this.overrides)t.get(n).set(this.overrides[n]);return t}static{this.\u0275fac=function(t){return new(t||k2)}}static{this.\u0275prov=ue({token:k2,factory:k2.\u0275fac})}}class _2 extends VR{constructor(e,t,n,r){super(e),this._config=t,this.console=n,this.loader=r,this._loaderPromise=null}supports(e){return!(!Bee.hasOwnProperty(e.toLowerCase())&&!this.isCustomEvent(e)||!window.Hammer&&!this.loader)}addEventListener(e,t,n){const r=this.manager.getZone();if(t=t.toLowerCase(),!window.Hammer&&this.loader){this._loaderPromise=this._loaderPromise||r.runOutsideAngular(()=>this.loader());let s=!1,a=()=>{s=!0};return r.runOutsideAngular(()=>this._loaderPromise.then(()=>{window.Hammer?s||(a=this.addEventListener(e,t,n)):a=()=>{}}).catch(()=>{a=()=>{}})),()=>{a()}}return r.runOutsideAngular(()=>{const s=this._config.buildHammer(e),a=function(d){r.runGuarded(function(){n(d)})};return s.on(t,a),()=>{s.off(t,a),"function"==typeof s.destroy&&s.destroy()}})}isCustomEvent(e){return this._config.events.indexOf(e)>-1}static{this.\u0275fac=function(t){return new(t||_2)(ve(sr),ve(qR),ve(Lp),ve(mV,8))}}static{this.\u0275prov=ue({token:_2,factory:_2.\u0275fac})}}class KR{static{this.\u0275fac=function(t){return new(t||KR)}}static{this.\u0275mod=Er({type:KR})}static{this.\u0275inj=Qn({providers:[{provide:L3,useClass:_2,multi:!0,deps:[sr,qR,Lp,[new Rs,mV]]},{provide:qR,useClass:k2,deps:[]}]})}}class E2{static{this.\u0275fac=function(t){return new(t||E2)}}static{this.\u0275prov=ue({token:E2,factory:function(t){let n=null;return n=t?new(t||E2):ve(F2),n},providedIn:"root"})}}class F2 extends E2{constructor(e){super(),this._doc=e}sanitize(e,t){if(null==t)return null;switch(e){case ps.NONE:return t;case ps.HTML:return fl(t,"HTML")?Po(t):cx(this._doc,String(t)).toString();case ps.STYLE:return fl(t,"Style")?Po(t):t;case ps.SCRIPT:if(fl(t,"Script"))return Po(t);throw new j(5200,!1);case ps.URL:return fl(t,"URL")?Po(t):Gv(String(t));case ps.RESOURCE_URL:if(fl(t,"ResourceURL"))return Po(t);throw new j(5201,!1);default:throw new j(5202,!1)}}bypassSecurityTrustHtml(e){return function JF(i){return new P4(i)}(e)}bypassSecurityTrustStyle(e){return function XF(i){return new N4(i)}(e)}bypassSecurityTrustScript(e){return function n8(i){return new ZF(i)}(e)}bypassSecurityTrustUrl(e){return function Qc(i){return new zv(i)}(e)}bypassSecurityTrustResourceUrl(e){return function _t(i){return new B4(i)}(e)}static{this.\u0275fac=function(t){return new(t||F2)(ve(sr))}}static{this.\u0275prov=ue({token:F2,factory:F2.\u0275fac,providedIn:"root"})}}var Vp;!function(i){i[i.NoHttpTransferCache=0]="NoHttpTransferCache",i[i.HttpTransferCacheOptions=1]="HttpTransferCacheOptions",i[i.I18nSupport=2]="I18nSupport",i[i.EventReplay=3]="EventReplay"}(Vp||(Vp={}));new P0("18.2.13");const Hee=[{provide:zu,useFactory:()=>new zu}];function gV(i){for(let e=i.length-1;e>=0;e--)if(void 0!==i[e])return i[e]}function Gee(i){const e=[];return i.forEach(t=>t&&e.push(...t)),e}const $ee=s3(e7,"coreDynamic",[{provide:i3,useValue:{},multi:!0},{provide:class CJ{},useClass:class Vee{constructor(e){const t={defaultEncapsulation:Bt.Emulated};this._defaultOptions=[t,...e]}createCompiler(e=[]){const t=function zee(i){return{defaultEncapsulation:gV(i.map(e=>e.defaultEncapsulation)),providers:Gee(i.map(e=>e.providers)),preserveWhitespaces:gV(i.map(e=>e.preserveWhitespaces))}}(this._defaultOptions.concat(e));return ze.create({providers:[Hee,{provide:g3.udt,useFactory:()=>new g3.udt({defaultEncapsulation:t.defaultEncapsulation,preserveWhitespaces:t.preserveWhitespaces}),deps:[]},t.providers]}).get(zu)}},deps:[i3]}]);class ib extends g3.WHm{get(e){let t,n;const r=new Promise((a,d)=>{t=a,n=d}),s=new XMLHttpRequest;return s.open("GET",e,!0),s.responseType="text",s.onload=function(){const a=s.response;let d=s.status;0===d&&(d=a?200:0),200<=d&&d<=300?t(a):n(`Failed to load ${e}`)},s.onerror=function(){n(`Failed to load ${e}`)},s.send(),r}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(ib)))(n||ib)}})()}static{this.\u0275prov=ue({token:ib,factory:ib.\u0275fac})}}const Wee=[jR,{provide:i3,useValue:{providers:[{provide:g3.WHm,useClass:ib,deps:[]}]},multi:!0},{provide:hs,useValue:MR}],Uee=(new P0("18.2.13"),s3($ee,"browserDynamic",Wee));function Oe(i,e,t,n){var a,r=arguments.length,s=r<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(i,e,t,n);else for(var d=i.length-1;d>=0;d--)(a=i[d])&&(s=(r<3?a(s):r>3?a(e,t,s):a(e,t))||s);return r>3&&s&&Object.defineProperty(e,t,s),s}function Xt(i,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(i,e)}Object.create;Object.create;"function"==typeof SuppressedError&&SuppressedError;function vV(i,e,t,n){return new(t||(t=Promise))(function(s,a){function d(g){try{p(n.next(g))}catch(v){a(v)}}function h(g){try{p(n.throw(g))}catch(v){a(v)}}function p(g){g.done?s(g.value):function r(s){return s instanceof t?s:new t(function(a){a(s)})}(g.value).then(d,h)}p((n=n.apply(i,e||[])).next())})}Object.create;function nP(i){var e="function"==typeof Symbol&&Symbol.iterator,t=e&&i[e],n=0;if(t)return t.call(i);if(i&&"number"==typeof i.length)return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function zp(i){return this instanceof zp?(this.v=i,this):new zp(i)}function yV(i,e,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,n=t.apply(i,e||[]),s=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),d("next"),d("throw"),d("return",function a(C){return function(k){return Promise.resolve(k).then(C,v)}}),r[Symbol.asyncIterator]=function(){return this},r;function d(C,k){n[C]&&(r[C]=function(E){return new Promise(function(x,S){s.push([C,E,x,S])>1||h(C,E)})},k&&(r[C]=k(r[C])))}function h(C,k){try{!function p(C){C.value instanceof zp?Promise.resolve(C.value.v).then(g,v):y(s[0][2],C)}(n[C](k))}catch(E){y(s[0][3],E)}}function g(C){h("next",C)}function v(C){h("throw",C)}function y(C,k){C(k),s.shift(),s.length&&h(s[0][0],s[0][1])}}function CV(i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,e=i[Symbol.asyncIterator];return e?e.call(i):(i=nP(i),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(s){t[s]=i[s]&&function(a){return new Promise(function(d,h){(function r(s,a,d,h){Promise.resolve(h).then(function(p){s({value:p,done:d})},a)})(d,h,(a=i[s](a)).done,a.value)})}}}Object.create;"function"==typeof SuppressedError&&SuppressedError;const rP=i=>i&&"number"==typeof i.length&&"function"!=typeof i;function wV(i){return ai(i?.then)}function kV(i){return ai(i[Nd])}function _V(i){return Symbol.asyncIterator&&ai(i?.[Symbol.asyncIterator])}function EV(i){return new TypeError(`You provided ${null!==i&&"object"==typeof i?"an invalid object":`'${i}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const FV=function Vte(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function xV(i){return ai(i?.[FV])}function SV(i){return yV(this,arguments,function*(){const t=i.getReader();try{for(;;){const{value:n,done:r}=yield zp(t.read());if(r)return yield zp(void 0);yield yield zp(n)}}finally{t.releaseLock()}})}function DV(i){return ai(i?.getReader)}function Cs(i){if(i instanceof ci)return i;if(null!=i){if(kV(i))return function zte(i){return new ci(e=>{const t=i[Nd]();if(ai(t.subscribe))return t.subscribe(e);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(i);if(rP(i))return function Gte(i){return new ci(e=>{for(let t=0;t{i.then(t=>{e.closed||(e.next(t),e.complete())},t=>e.error(t)).then(null,li)})}(i);if(_V(i))return AV(i);if(xV(i))return function Wte(i){return new ci(e=>{for(const t of i)if(e.next(t),e.closed)return;e.complete()})}(i);if(DV(i))return function Ute(i){return AV(SV(i))}(i)}throw EV(i)}function AV(i){return new ci(e=>{(function jte(i,e){var t,n,r,s;return vV(this,void 0,void 0,function*(){try{for(t=CV(i);!(n=yield t.next()).done;){const a=n.value;if(e.next(a),e.closed)return}}catch(a){r={error:a}}finally{try{n&&!n.done&&(s=t.return)&&(yield s.call(t))}finally{if(r)throw r.error}}e.complete()})})(i,e).catch(t=>e.error(t))})}function Ku(i,e,t,n=0,r=!1){const s=e.schedule(function(){t(),r?i.add(this.schedule(null,n)):this.unsubscribe()},n);if(i.add(s),!r)return s}function TV(i,e=0){return xi((t,n)=>{t.subscribe(vi(n,r=>Ku(n,i,()=>n.next(r),e),()=>Ku(n,i,()=>n.complete(),e),r=>Ku(n,i,()=>n.error(r),e)))})}function MV(i,e=0){return xi((t,n)=>{n.add(i.schedule(()=>t.subscribe(n),e))})}function IV(i,e){if(!i)throw new Error("Iterable cannot be null");return new ci(t=>{Ku(t,e,()=>{const n=i[Symbol.asyncIterator]();Ku(t,e,()=>{n.next().then(r=>{r.done?t.complete():t.next(r.value)})},0,!0)})})}function Xte(i,e){if(null!=i){if(kV(i))return function qte(i,e){return Cs(i).pipe(MV(e),TV(e))}(i,e);if(rP(i))return function Yte(i,e){return new ci(t=>{let n=0;return e.schedule(function(){n===i.length?t.complete():(t.next(i[n++]),t.closed||this.schedule())})})}(i,e);if(wV(i))return function Kte(i,e){return Cs(i).pipe(MV(e),TV(e))}(i,e);if(_V(i))return IV(i,e);if(xV(i))return function Zte(i,e){return new ci(t=>{let n;return Ku(t,e,()=>{n=i[FV](),Ku(t,e,()=>{let r,s;try{({value:r,done:s}=n.next())}catch(a){return void t.error(a)}s?t.complete():t.next(r)},0,!0)}),()=>ai(n?.return)&&n.return()})}(i,e);if(DV(i))return function Jte(i,e){return IV(SV(i),e)}(i,e)}throw EV(i)}function Mr(i,e){return e?Xte(i,e):Cs(i)}const{isArray:Qte}=Array,{getPrototypeOf:eie,prototype:tie,keys:iie}=Object;function LV(i){if(1===i.length){const e=i[0];if(Qte(e))return{args:e,keys:null};if(function nie(i){return i&&"object"==typeof i&&eie(i)===tie}(e)){const t=iie(e);return{args:t.map(n=>e[n]),keys:t}}}return{args:i,keys:null}}function OV(i){return i&&ai(i.schedule)}function oP(i){return i[i.length-1]}function RV(i){return ai(oP(i))?i.pop():void 0}function S2(i){return OV(oP(i))?i.pop():void 0}const{isArray:oie}=Array;function sP(i){return qe(e=>function sie(i,e){return oie(e)?i(...e):i(e)}(i,e))}function PV(i,e){return i.reduce((t,n,r)=>(t[n]=e[r],t),{})}function NV(...i){const e=RV(i),{args:t,keys:n}=LV(i),r=new ci(s=>{const{length:a}=t;if(!a)return void s.complete();const d=new Array(a);let h=a,p=a;for(let g=0;g{v||(v=!0,p--),d[g]=y},()=>h--,void 0,()=>{(!h||!v)&&(p||s.next(n?PV(n,d):d),s.complete())}))}});return e?r.pipe(sP(e)):r}class D2{constructor(e,t){this._renderer=e,this._elementRef=t,this.onChange=n=>{},this.onTouched=()=>{}}setProperty(e,t){this._renderer.setProperty(this._elementRef.nativeElement,e,t)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static{this.\u0275fac=function(t){return new(t||D2)(Z(Co),Z(wi))}}static{this.\u0275dir=De({type:D2})}}class fc extends D2{static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(fc)))(n||fc)}})()}static{this.\u0275dir=De({type:fc,features:[Fi]})}}const vc=new ge(""),aie={provide:vc,useExisting:Di(()=>Gp),multi:!0};class Gp extends fc{writeValue(e){this.setProperty("checked",e)}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(Gp)))(n||Gp)}})()}static{this.\u0275dir=De({type:Gp,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(t,n){1&t&&Gn("change",function(s){return n.onChange(s.target.checked)})("blur",function(){return n.onTouched()})},features:[vn([aie]),Fi]})}}const lie={provide:vc,useExisting:Di(()=>$p),multi:!0};const die=new ge("");class $p extends D2{constructor(e,t,n){super(e,t),this._compositionMode=n,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function cie(){const i=Wu()?Wu().getUserAgent():"";return/android (\d+)/.test(i.toLowerCase())}())}writeValue(e){const t=e??"";this.setProperty("value",t)}_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{this.\u0275fac=function(t){return new(t||$p)(Z(Co),Z(wi),Z(die,8))}}static{this.\u0275dir=De({type:$p,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(t,n){1&t&&Gn("input",function(s){return n._handleInput(s.target.value)})("blur",function(){return n.onTouched()})("compositionstart",function(){return n._compositionStart()})("compositionend",function(s){return n._compositionEnd(s.target.value)})},features:[vn([lie]),Fi]})}}function Wp(i){return null==i||("string"==typeof i||Array.isArray(i))&&0===i.length}function BV(i){return null!=i&&"number"==typeof i.length}const Wo=new ge(""),Up=new ge(""),uie=/^(?=.{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 HV(i){return e=>{if(Wp(e.value)||Wp(i))return null;const t=parseFloat(e.value);return!isNaN(t)&&t{if(Wp(e.value)||Wp(i))return null;const t=parseFloat(e.value);return!isNaN(t)&&t>i?{max:{max:i,actual:e.value}}:null}}function zV(i){return Wp(i.value)?{required:!0}:null}function GV(i){return!0===i.value?null:{required:!0}}function $V(i){return Wp(i.value)||uie.test(i.value)?null:{email:!0}}function WV(i){return e=>Wp(e.value)||!BV(e.value)?null:e.value.lengthBV(e.value)&&e.value.length>i?{maxlength:{requiredLength:i,actualLength:e.value.length}}:null}function jV(i){if(!i)return P3;let e,t;return"string"==typeof i?(t="","^"!==i.charAt(0)&&(t+="^"),t+=i,"$"!==i.charAt(i.length-1)&&(t+="$"),e=new RegExp(t)):(t=i.toString(),e=i),n=>{if(Wp(n.value))return null;const r=n.value;return e.test(r)?null:{pattern:{requiredPattern:t,actualValue:r}}}}function P3(i){return null}function qV(i){return null!=i}function KV(i){return i2(i)?Mr(i):i}function YV(i){let e={};return i.forEach(t=>{e=null!=t?{...e,...t}:e}),0===Object.keys(e).length?null:e}function ZV(i,e){return e.map(t=>t(i))}function JV(i){return i.map(e=>function hie(i){return!i.validate}(e)?e:t=>e.validate(t))}function XV(i){if(!i)return null;const e=i.filter(qV);return 0==e.length?null:function(t){return YV(ZV(t,e))}}function aP(i){return null!=i?XV(JV(i)):null}function QV(i){if(!i)return null;const e=i.filter(qV);return 0==e.length?null:function(t){return NV(ZV(t,e).map(KV)).pipe(qe(YV))}}function lP(i){return null!=i?QV(JV(i)):null}function ez(i,e){return null===i?[e]:Array.isArray(i)?[...i,e]:[i,e]}function tz(i){return i._rawValidators}function iz(i){return i._rawAsyncValidators}function cP(i){return i?Array.isArray(i)?i:[i]:[]}function N3(i,e){return Array.isArray(i)?i.includes(e):i===e}function nz(i,e){const t=cP(e);return cP(i).forEach(r=>{N3(t,r)||t.push(r)}),t}function rz(i,e){return cP(e).filter(t=>!N3(i,t))}class oz{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=aP(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=lP(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,t){return!!this.control&&this.control.hasError(e,t)}getError(e,t){return this.control?this.control.getError(e,t):null}}class ws extends oz{get formDirective(){return null}get path(){return null}}class jp extends oz{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class sz{constructor(e){this._cd=e}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}}class nb extends sz{constructor(e){super(e)}static{this.\u0275fac=function(t){return new(t||nb)(Z(jp,2))}}static{this.\u0275dir=De({type:nb,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(t,n){2&t&&zo("ng-untouched",n.isUntouched)("ng-touched",n.isTouched)("ng-pristine",n.isPristine)("ng-dirty",n.isDirty)("ng-valid",n.isValid)("ng-invalid",n.isInvalid)("ng-pending",n.isPending)},features:[Fi]})}}class rb extends sz{constructor(e){super(e)}static{this.\u0275fac=function(t){return new(t||rb)(Z(ws,10))}}static{this.\u0275dir=De({type:rb,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(t,n){2&t&&zo("ng-untouched",n.isUntouched)("ng-touched",n.isTouched)("ng-pristine",n.isPristine)("ng-dirty",n.isDirty)("ng-valid",n.isValid)("ng-invalid",n.isInvalid)("ng-pending",n.isPending)("ng-submitted",n.isSubmitted)},features:[Fi]})}}const A2="VALID",H3="INVALID",ob="PENDING",T2="DISABLED";class sb{}class lz extends sb{constructor(e,t){super(),this.value=e,this.source=t}}class hP extends sb{constructor(e,t){super(),this.pristine=e,this.source=t}}class pP extends sb{constructor(e,t){super(),this.touched=e,this.source=t}}class V3 extends sb{constructor(e,t){super(),this.status=e,this.source=t}}class vie extends sb{constructor(e){super(),this.source=e}}class bie extends sb{constructor(e){super(),this.source=e}}function mP(i){return(z3(i)?i.validators:i)||null}function gP(i,e){return(z3(e)?e.asyncValidators:i)||null}function z3(i){return null!=i&&!Array.isArray(i)&&"object"==typeof i}function cz(i,e,t){const n=i.controls;if(!(e?Object.keys(n):n).length)throw new j(1e3,"");if(!n[t])throw new j(1001,"")}function dz(i,e,t){i._forEachChild((n,r)=>{if(void 0===t[r])throw new j(1002,"")})}class G3{constructor(e,t){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=null,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this._status=c2(()=>this.statusReactive()),this.statusReactive=Cl(void 0),this._pristine=c2(()=>this.pristineReactive()),this.pristineReactive=Cl(!0),this._touched=c2(()=>this.touchedReactive()),this.touchedReactive=Cl(!1),this._events=new mi,this.events=this._events.asObservable(),this._onDisabledChange=[],this._assignValidators(e),this._assignAsyncValidators(t)}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 status(){return ud(this.statusReactive)}set status(e){ud(()=>this.statusReactive.set(e))}get valid(){return this.status===A2}get invalid(){return this.status===H3}get pending(){return this.status==ob}get disabled(){return this.status===T2}get enabled(){return this.status!==T2}get pristine(){return ud(this.pristineReactive)}set pristine(e){ud(()=>this.pristineReactive.set(e))}get dirty(){return!this.pristine}get touched(){return ud(this.touchedReactive)}set touched(e){ud(()=>this.touchedReactive.set(e))}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(nz(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(nz(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(rz(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(rz(e,this._rawAsyncValidators))}hasValidator(e){return N3(this._rawValidators,e)}hasAsyncValidator(e){return N3(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){const t=!1===this.touched;this.touched=!0;const n=e.sourceControl??this;this._parent&&!e.onlySelf&&this._parent.markAsTouched({...e,sourceControl:n}),t&&!1!==e.emitEvent&&this._events.next(new pP(!0,n))}markAllAsTouched(e={}){this.markAsTouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsTouched(e))}markAsUntouched(e={}){const t=!0===this.touched;this.touched=!1,this._pendingTouched=!1;const n=e.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:n})}),this._parent&&!e.onlySelf&&this._parent._updateTouched(e,n),t&&!1!==e.emitEvent&&this._events.next(new pP(!1,n))}markAsDirty(e={}){const t=!0===this.pristine;this.pristine=!1;const n=e.sourceControl??this;this._parent&&!e.onlySelf&&this._parent.markAsDirty({...e,sourceControl:n}),t&&!1!==e.emitEvent&&this._events.next(new hP(!1,n))}markAsPristine(e={}){const t=!1===this.pristine;this.pristine=!0,this._pendingDirty=!1;const n=e.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:e.emitEvent})}),this._parent&&!e.onlySelf&&this._parent._updatePristine(e,n),t&&!1!==e.emitEvent&&this._events.next(new hP(!0,n))}markAsPending(e={}){this.status=ob;const t=e.sourceControl??this;!1!==e.emitEvent&&(this._events.next(new V3(this.status,t)),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.markAsPending({...e,sourceControl:t})}disable(e={}){const t=this._parentMarkedDirty(e.onlySelf);this.status=T2,this.errors=null,this._forEachChild(r=>{r.disable({...e,onlySelf:!0})}),this._updateValue();const n=e.sourceControl??this;!1!==e.emitEvent&&(this._events.next(new lz(this.value,n)),this._events.next(new V3(this.status,n)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...e,skipPristineCheck:t},this),this._onDisabledChange.forEach(r=>r(!0))}enable(e={}){const t=this._parentMarkedDirty(e.onlySelf);this.status=A2,this._forEachChild(n=>{n.enable({...e,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors({...e,skipPristineCheck:t},this),this._onDisabledChange.forEach(n=>n(!1))}_updateAncestors(e,t){this._parent&&!e.onlySelf&&(this._parent.updateValueAndValidity(e),e.skipPristineCheck||this._parent._updatePristine({},t),this._parent._updateTouched({},t))}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){const n=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===A2||this.status===ob)&&this._runAsyncValidator(n,e.emitEvent)}const t=e.sourceControl??this;!1!==e.emitEvent&&(this._events.next(new lz(this.value,t)),this._events.next(new V3(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.updateValueAndValidity({...e,sourceControl:t})}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?T2:A2}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e,t){if(this.asyncValidator){this.status=ob,this._hasOwnPendingAsyncValidator={emitEvent:!1!==t};const n=KV(this.asyncValidator(this));this._asyncValidationSubscription=n.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:t,shouldHaveEmitted:e})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();const e=this._hasOwnPendingAsyncValidator?.emitEvent??!1;return this._hasOwnPendingAsyncValidator=null,e}return!1}setErrors(e,t={}){this.errors=e,this._updateControlsErrors(!1!==t.emitEvent,this,t.shouldHaveEmitted)}get(e){let t=e;return null==t||(Array.isArray(t)||(t=t.split(".")),0===t.length)?null:t.reduce((n,r)=>n&&n._find(r),this)}getError(e,t){const n=t?this.get(t):this;return n&&n.errors?n.errors[e]:null}hasError(e,t){return!!this.getError(e,t)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e,t,n){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),(e||n)&&this._events.next(new V3(this.status,t)),this._parent&&this._parent._updateControlsErrors(e,t,n)}_initObservables(){this.valueChanges=new Je,this.statusChanges=new Je}_calculateStatus(){return this._allControlsDisabled()?T2:this.errors?H3:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(ob)?ob:this._anyControlsHaveStatus(H3)?H3:A2}_anyControlsHaveStatus(e){return this._anyControls(t=>t.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e,t){const n=!this._anyControlsDirty(),r=this.pristine!==n;this.pristine=n,this._parent&&!e.onlySelf&&this._parent._updatePristine(e,t),r&&this._events.next(new hP(this.pristine,t))}_updateTouched(e={},t){this.touched=this._anyControlsTouched(),this._events.next(new pP(this.touched,t)),this._parent&&!e.onlySelf&&this._parent._updateTouched(e,t)}_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){z3(e)&&null!=e.updateOn&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){const t=this._parent&&this._parent.dirty;return!e&&!!t&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=function yie(i){return Array.isArray(i)?aP(i):i||null}(this._rawValidators)}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=function Cie(i){return Array.isArray(i)?lP(i):i||null}(this._rawAsyncValidators)}}class M2 extends G3{constructor(e,t,n){super(mP(t),gP(n,t)),this.controls=e,this._initObservables(),this._setUpdateStrategy(t),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(e,t){return this.controls[e]?this.controls[e]:(this.controls[e]=t,t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange),t)}addControl(e,t,n={}){this.registerControl(e,t),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}removeControl(e,t={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],this.updateValueAndValidity({emitEvent:t.emitEvent}),this._onCollectionChange()}setControl(e,t,n={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],t&&this.registerControl(e,t),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}contains(e){return this.controls.hasOwnProperty(e)&&this.controls[e].enabled}setValue(e,t={}){dz(this,0,e),Object.keys(e).forEach(n=>{cz(this,!0,n),this.controls[n].setValue(e[n],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)}patchValue(e,t={}){null!=e&&(Object.keys(e).forEach(n=>{const r=this.controls[n];r&&r.patchValue(e[n],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t))}reset(e={},t={}){this._forEachChild((n,r)=>{n.reset(e?e[r]:null,{onlySelf:!0,emitEvent:t.emitEvent})}),this._updatePristine(t,this),this._updateTouched(t,this),this.updateValueAndValidity(t)}getRawValue(){return this._reduceChildren({},(e,t,n)=>(e[n]=t.getRawValue(),e))}_syncPendingControls(){let e=this._reduceChildren(!1,(t,n)=>!!n._syncPendingControls()||t);return e&&this.updateValueAndValidity({onlySelf:!0}),e}_forEachChild(e){Object.keys(this.controls).forEach(t=>{const n=this.controls[t];n&&e(n,t)})}_setUpControls(){this._forEachChild(e=>{e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(e){for(const[t,n]of Object.entries(this.controls))if(this.contains(t)&&e(n))return!0;return!1}_reduceValue(){return this._reduceChildren({},(t,n,r)=>((n.enabled||this.disabled)&&(t[r]=n.value),t))}_reduceChildren(e,t){let n=e;return this._forEachChild((r,s)=>{n=t(n,r,s)}),n}_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 uz extends M2{}const qf=new ge("CallSetDisabledState",{providedIn:"root",factory:()=>I2}),I2="always";function $3(i,e){return[...e.path,i]}function L2(i,e,t=I2){fP(i,e),e.valueAccessor.writeValue(i.value),(i.disabled||"always"===t)&&e.valueAccessor.setDisabledState?.(i.disabled),function kie(i,e){e.valueAccessor.registerOnChange(t=>{i._pendingValue=t,i._pendingChange=!0,i._pendingDirty=!0,"change"===i.updateOn&&hz(i,e)})}(i,e),function Eie(i,e){const t=(n,r)=>{e.valueAccessor.writeValue(n),r&&e.viewToModelUpdate(n)};i.registerOnChange(t),e._registerOnDestroy(()=>{i._unregisterOnChange(t)})}(i,e),function _ie(i,e){e.valueAccessor.registerOnTouched(()=>{i._pendingTouched=!0,"blur"===i.updateOn&&i._pendingChange&&hz(i,e),"submit"!==i.updateOn&&i.markAsTouched()})}(i,e),function wie(i,e){if(e.valueAccessor.setDisabledState){const t=n=>{e.valueAccessor.setDisabledState(n)};i.registerOnDisabledChange(t),e._registerOnDestroy(()=>{i._unregisterOnDisabledChange(t)})}}(i,e)}function W3(i,e,t=!0){const n=()=>{};e.valueAccessor&&(e.valueAccessor.registerOnChange(n),e.valueAccessor.registerOnTouched(n)),j3(i,e),i&&(e._invokeOnDestroyCallbacks(),i._registerOnCollectionChange(()=>{}))}function U3(i,e){i.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(e)})}function fP(i,e){const t=tz(i);null!==e.validator?i.setValidators(ez(t,e.validator)):"function"==typeof t&&i.setValidators([t]);const n=iz(i);null!==e.asyncValidator?i.setAsyncValidators(ez(n,e.asyncValidator)):"function"==typeof n&&i.setAsyncValidators([n]);const r=()=>i.updateValueAndValidity();U3(e._rawValidators,r),U3(e._rawAsyncValidators,r)}function j3(i,e){let t=!1;if(null!==i){if(null!==e.validator){const r=tz(i);if(Array.isArray(r)&&r.length>0){const s=r.filter(a=>a!==e.validator);s.length!==r.length&&(t=!0,i.setValidators(s))}}if(null!==e.asyncValidator){const r=iz(i);if(Array.isArray(r)&&r.length>0){const s=r.filter(a=>a!==e.asyncValidator);s.length!==r.length&&(t=!0,i.setAsyncValidators(s))}}}const n=()=>{};return U3(e._rawValidators,n),U3(e._rawAsyncValidators,n),t}function hz(i,e){i._pendingDirty&&i.markAsDirty(),i.setValue(i._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1}function pz(i,e){fP(i,e)}function bP(i,e){if(!i.hasOwnProperty("model"))return!1;const t=i.model;return!!t.isFirstChange()||!Object.is(e,t.currentValue)}function mz(i,e){i._syncPendingControls(),e.forEach(t=>{const n=t.control;"submit"===n.updateOn&&n._pendingChange&&(t.viewToModelUpdate(n._pendingValue),n._pendingChange=!1)})}function yP(i,e){if(!e)return null;let t,n,r;return Array.isArray(e),e.forEach(s=>{s.constructor===$p?t=s:function Sie(i){return Object.getPrototypeOf(i.constructor)===fc}(s)?n=s:r=s}),r||n||t||null}const Aie={provide:ws,useExisting:Di(()=>qp)},O2=Promise.resolve();class qp extends ws{get submitted(){return ud(this.submittedReactive)}constructor(e,t,n){super(),this.callSetDisabledState=n,this._submitted=c2(()=>this.submittedReactive()),this.submittedReactive=Cl(!1),this._directives=new Set,this.ngSubmit=new Je,this.form=new M2({},aP(e),lP(t))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){O2.then(()=>{const t=this._findContainer(e.path);e.control=t.registerControl(e.name,e.control),L2(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){O2.then(()=>{const t=this._findContainer(e.path);t&&t.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){O2.then(()=>{const t=this._findContainer(e.path),n=new M2({});pz(n,e),t.registerControl(e.name,n),n.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){O2.then(()=>{const t=this._findContainer(e.path);t&&t.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,t){O2.then(()=>{this.form.get(e.path).setValue(t)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submittedReactive.set(!0),mz(this.form,this._directives),this.ngSubmit.emit(e),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submittedReactive.set(!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{this.\u0275fac=function(t){return new(t||qp)(Z(Wo,10),Z(Up,10),Z(qf,8))}}static{this.\u0275dir=De({type:qp,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(t,n){1&t&&Gn("submit",function(s){return n.onSubmit(s)})("reset",function(){return n.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[vn([Aie]),Fi]})}}function gz(i,e){const t=i.indexOf(e);t>-1&&i.splice(t,1)}function fz(i){return"object"==typeof i&&null!==i&&2===Object.keys(i).length&&"value"in i&&"disabled"in i}const R2=class extends G3{constructor(e=null,t,n){super(mP(t),gP(n,t)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(e),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),z3(t)&&(t.nonNullable||t.initialValueIsDefault)&&(fz(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,t={}){this.value=this._pendingValue=e,this._onChange.length&&!1!==t.emitModelToViewChange&&this._onChange.forEach(n=>n(this.value,!1!==t.emitViewToModelChange)),this.updateValueAndValidity(t)}patchValue(e,t={}){this.setValue(e,t)}reset(e=this.defaultValue,t={}){this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),this._pendingChange=!1}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){gz(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){gz(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){fz(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 ab extends ws{ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return $3(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(ab)))(n||ab)}})()}static{this.\u0275dir=De({type:ab,features:[Fi]})}}const Mie={provide:ws,useExisting:Di(()=>Kp)};class Kp extends ab{constructor(e,t,n){super(),this.name="",this._parent=e,this._setValidators(t),this._setAsyncValidators(n)}_checkParentType(){!(this._parent instanceof Kp)&&this._parent}static{this.\u0275fac=function(t){return new(t||Kp)(Z(ws,5),Z(Wo,10),Z(Up,10))}}static{this.\u0275dir=De({type:Kp,selectors:[["","ngModelGroup",""]],inputs:{name:[0,"ngModelGroup","name"]},exportAs:["ngModelGroup"],features:[vn([Mie]),Fi]})}}const Iie={provide:jp,useExisting:Di(()=>Kf)},vz=Promise.resolve();class Kf extends jp{constructor(e,t,n,r,s,a){super(),this._changeDetectorRef=s,this.callSetDisabledState=a,this.control=new R2,this._registered=!1,this.name="",this.update=new Je,this._parent=e,this._setValidators(t),this._setAsyncValidators(n),this.valueAccessor=yP(0,r)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){const t=e.name.previousValue;this.formDirective.removeControl({name:t,path:this._getPath(t)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),bP(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(){L2(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){vz.then(()=>{this.control.setValue(e,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(e){const t=e.isDisabled.currentValue,n=0!==t&&qi(t);vz.then(()=>{n&&!this.control.disabled?this.control.disable():!n&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(e){return this._parent?$3(e,this._parent):[e]}static{this.\u0275fac=function(t){return new(t||Kf)(Z(ws,9),Z(Wo,10),Z(Up,10),Z(vc,10),Z(bn,8),Z(qf,8))}}static{this.\u0275dir=De({type:Kf,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:[vn([Iie]),Fi,yi]})}}class lb{static{this.\u0275fac=function(t){return new(t||lb)}}static{this.\u0275dir=De({type:lb,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]})}}const Lie={provide:vc,useExisting:Di(()=>Yp),multi:!0};class Yp extends fc{writeValue(e){const t=e??"";this.setProperty("value",t)}registerOnChange(e){this.onChange=t=>{e(""==t?null:parseFloat(t))}}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(Yp)))(n||Yp)}})()}static{this.\u0275dir=De({type:Yp,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(t,n){1&t&&Gn("input",function(s){return n.onChange(s.target.value)})("blur",function(){return n.onTouched()})},features:[vn([Lie]),Fi]})}}const Oie={provide:vc,useExisting:Di(()=>Yf),multi:!0};class P2{constructor(){this._accessors=[]}add(e,t){this._accessors.push([e,t])}remove(e){for(let t=this._accessors.length-1;t>=0;--t)if(this._accessors[t][1]===e)return void this._accessors.splice(t,1)}select(e){this._accessors.forEach(t=>{this._isSameGroup(t,e)&&t[1]!==e&&t[1].fireUncheck(e.value)})}_isSameGroup(e,t){return!!e[0].control&&(e[0]._parent===t._control._parent&&e[1].name===t.name)}static{this.\u0275fac=function(t){return new(t||P2)}}static{this.\u0275prov=ue({token:P2,factory:P2.\u0275fac,providedIn:"root"})}}class Yf extends fc{constructor(e,t,n,r){super(e,t),this._registry=n,this._injector=r,this.setDisabledStateFired=!1,this.onChange=()=>{},this.callSetDisabledState=K(qf,{optional:!0})??I2}ngOnInit(){this._control=this._injector.get(jp),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{this.\u0275fac=function(t){return new(t||Yf)(Z(Co),Z(wi),Z(P2),Z(ze))}}static{this.\u0275dir=De({type:Yf,selectors:[["input","type","radio","formControlName",""],["input","type","radio","formControl",""],["input","type","radio","ngModel",""]],hostBindings:function(t,n){1&t&&Gn("change",function(){return n.onChange()})("blur",function(){return n.onTouched()})},inputs:{name:"name",formControlName:"formControlName",value:"value"},features:[vn([Oie]),Fi]})}}const Rie={provide:vc,useExisting:Di(()=>Zp),multi:!0};class Zp extends fc{writeValue(e){this.setProperty("value",parseFloat(e))}registerOnChange(e){this.onChange=t=>{e(""==t?null:parseFloat(t))}}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(Zp)))(n||Zp)}})()}static{this.\u0275dir=De({type:Zp,selectors:[["input","type","range","formControlName",""],["input","type","range","formControl",""],["input","type","range","ngModel",""]],hostBindings:function(t,n){1&t&&Gn("change",function(s){return n.onChange(s.target.value)})("input",function(s){return n.onChange(s.target.value)})("blur",function(){return n.onTouched()})},features:[vn([Rie]),Fi]})}}const CP=new ge(""),Pie={provide:jp,useExisting:Di(()=>Zf)};class Zf extends jp{set isDisabled(e){}static{this._ngModelWarningSentOnce=!1}constructor(e,t,n,r,s){super(),this._ngModelWarningConfig=r,this.callSetDisabledState=s,this.update=new Je,this._ngModelWarningSent=!1,this._setValidators(e),this._setAsyncValidators(t),this.valueAccessor=yP(0,n)}ngOnChanges(e){if(this._isControlChanged(e)){const t=e.form.previousValue;t&&W3(t,this,!1),L2(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}bP(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&W3(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{this.\u0275fac=function(t){return new(t||Zf)(Z(Wo,10),Z(Up,10),Z(vc,10),Z(CP,8),Z(qf,8))}}static{this.\u0275dir=De({type:Zf,selectors:[["","formControl",""]],inputs:{form:[0,"formControl","form"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[vn([Pie]),Fi,yi]})}}const Nie={provide:ws,useExisting:Di(()=>Jp)};class Jp extends ws{get submitted(){return ud(this._submittedReactive)}set submitted(e){this._submittedReactive.set(e)}constructor(e,t,n){super(),this.callSetDisabledState=n,this._submitted=c2(()=>this._submittedReactive()),this._submittedReactive=Cl(!1),this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new Je,this._setValidators(e),this._setAsyncValidators(t)}ngOnChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(j3(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 t=this.form.get(e.path);return L2(t,e,this.callSetDisabledState),t.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),t}getControl(e){return this.form.get(e.path)}removeControl(e){W3(e.control||null,e,!1),function Die(i,e){const t=i.indexOf(e);t>-1&&i.splice(t,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,t){this.form.get(e.path).setValue(t)}onSubmit(e){return this._submittedReactive.set(!0),mz(this.form,this.directives),this.ngSubmit.emit(e),this.form._events.next(new vie(this.control)),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this._submittedReactive.set(!1),this.form._events.next(new bie(this.form))}_updateDomValue(){this.directives.forEach(e=>{const t=e.control,n=this.form.get(e.path);t!==n&&(W3(t||null,e),(i=>i instanceof R2)(n)&&(L2(n,e,this.callSetDisabledState),e.control=n))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){const t=this.form.get(e.path);pz(t,e),t.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){const t=this.form.get(e.path);t&&function Fie(i,e){return j3(i,e)}(t,e)&&t.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){fP(this.form,this),this._oldForm&&j3(this._oldForm,this)}_checkFormPresent(){this.form}static{this.\u0275fac=function(t){return new(t||Jp)(Z(Wo,10),Z(Up,10),Z(qf,8))}}static{this.\u0275dir=De({type:Jp,selectors:[["","formGroup",""]],hostBindings:function(t,n){1&t&&Gn("submit",function(s){return n.onSubmit(s)})("reset",function(){return n.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[vn([Nie]),Fi,yi]})}}const Bie={provide:ws,useExisting:Di(()=>Xp)};class Xp extends ab{constructor(e,t,n){super(),this.name=null,this._parent=e,this._setValidators(t),this._setAsyncValidators(n)}_checkParentType(){bz(this._parent)}static{this.\u0275fac=function(t){return new(t||Xp)(Z(ws,13),Z(Wo,10),Z(Up,10))}}static{this.\u0275dir=De({type:Xp,selectors:[["","formGroupName",""]],inputs:{name:[0,"formGroupName","name"]},features:[vn([Bie]),Fi]})}}const Hie={provide:ws,useExisting:Di(()=>Qp)};class Qp extends ws{constructor(e,t,n){super(),this.name=null,this._parent=e,this._setValidators(t),this._setAsyncValidators(n)}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 $3(null==this.name?this.name:this.name.toString(),this._parent)}_checkParentType(){bz(this._parent)}static{this.\u0275fac=function(t){return new(t||Qp)(Z(ws,13),Z(Wo,10),Z(Up,10))}}static{this.\u0275dir=De({type:Qp,selectors:[["","formArrayName",""]],inputs:{name:[0,"formArrayName","name"]},features:[vn([Hie]),Fi]})}}function bz(i){return!(i instanceof Xp||i instanceof Jp||i instanceof Qp)}const Vie={provide:jp,useExisting:Di(()=>Jf)};class Jf extends jp{set isDisabled(e){}static{this._ngModelWarningSentOnce=!1}constructor(e,t,n,r,s){super(),this._ngModelWarningConfig=s,this._added=!1,this.name=null,this.update=new Je,this._ngModelWarningSent=!1,this._parent=e,this._setValidators(t),this._setAsyncValidators(n),this.valueAccessor=yP(0,r)}ngOnChanges(e){this._added||this._setUpControl(),bP(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 $3(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{this.\u0275fac=function(t){return new(t||Jf)(Z(ws,13),Z(Wo,10),Z(Up,10),Z(vc,10),Z(CP,8))}}static{this.\u0275dir=De({type:Jf,selectors:[["","formControlName",""]],inputs:{name:[0,"formControlName","name"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},features:[vn([Vie]),Fi,yi]})}}const zie={provide:vc,useExisting:Di(()=>Yu),multi:!0};function yz(i,e){return null==i?`${e}`:(e&&"object"==typeof e&&(e="Object"),`${i}: ${e}`.slice(0,50))}class Yu extends fc{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 n=yz(this._getOptionId(e),e);this.setProperty("value",n)}registerOnChange(e){this.onChange=t=>{this.value=this._getOptionValue(t),e(this.value)}}_registerOption(){return(this._idCounter++).toString()}_getOptionId(e){for(const t of this._optionMap.keys())if(this._compareWith(this._optionMap.get(t),e))return t;return null}_getOptionValue(e){const t=function Gie(i){return i.split(":")[0]}(e);return this._optionMap.has(t)?this._optionMap.get(t):e}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(Yu)))(n||Yu)}})()}static{this.\u0275dir=De({type:Yu,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(t,n){1&t&&Gn("change",function(s){return n.onChange(s.target.value)})("blur",function(){return n.onTouched()})},inputs:{compareWith:"compareWith"},features:[vn([zie]),Fi]})}}class cb{constructor(e,t,n){this._element=e,this._renderer=t,this._select=n,this._select&&(this.id=this._select._registerOption())}set ngValue(e){null!=this._select&&(this._select._optionMap.set(this.id,e),this._setElementValue(yz(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{this.\u0275fac=function(t){return new(t||cb)(Z(wi),Z(Co),Z(Yu,9))}}static{this.\u0275dir=De({type:cb,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}})}}const $ie={provide:vc,useExisting:Di(()=>Zu),multi:!0};function Cz(i,e){return null==i?`${e}`:("string"==typeof e&&(e=`'${e}'`),e&&"object"==typeof e&&(e="Object"),`${i}: ${e}`.slice(0,50))}class Zu extends fc{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(e){this._compareWith=e}writeValue(e){let t;if(this.value=e,Array.isArray(e)){const n=e.map(r=>this._getOptionId(r));t=(r,s)=>{r._setSelected(n.indexOf(s.toString())>-1)}}else t=(n,r)=>{n._setSelected(!1)};this._optionMap.forEach(t)}registerOnChange(e){this.onChange=t=>{const n=[],r=t.selectedOptions;if(void 0!==r){const s=r;for(let a=0;a{let e;return function(n){return(e||(e=Vi(Zu)))(n||Zu)}})()}static{this.\u0275dir=De({type:Zu,selectors:[["select","multiple","","formControlName",""],["select","multiple","","formControl",""],["select","multiple","","ngModel",""]],hostBindings:function(t,n){1&t&&Gn("change",function(s){return n.onChange(s.target)})("blur",function(){return n.onTouched()})},inputs:{compareWith:"compareWith"},features:[vn([$ie]),Fi]})}}class db{constructor(e,t,n){this._element=e,this._renderer=t,this._select=n,this._select&&(this.id=this._select._registerOption(this))}set ngValue(e){null!=this._select&&(this._value=e,this._setElementValue(Cz(this.id,e)),this._select.writeValue(this._select.value))}set value(e){this._select?(this._value=e,this._setElementValue(Cz(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{this.\u0275fac=function(t){return new(t||db)(Z(wi),Z(Co),Z(Zu,9))}}static{this.\u0275dir=De({type:db,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}})}}function wz(i){return"number"==typeof i?i:parseInt(i,10)}function kz(i){return"number"==typeof i?i:parseFloat(i)}class gd{constructor(){this._validator=P3}ngOnChanges(e){if(this.inputName in e){const t=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(t),this._validator=this._enabled?this.createValidator(t):P3,this._onChange&&this._onChange()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return null!=e}static{this.\u0275fac=function(t){return new(t||gd)}}static{this.\u0275dir=De({type:gd,features:[yi]})}}const Uie={provide:Wo,useExisting:Di(()=>em),multi:!0};class em extends gd{constructor(){super(...arguments),this.inputName="max",this.normalizeInput=e=>kz(e),this.createValidator=e=>VV(e)}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(em)))(n||em)}})()}static{this.\u0275dir=De({type:em,selectors:[["input","type","number","max","","formControlName",""],["input","type","number","max","","formControl",""],["input","type","number","max","","ngModel",""]],hostVars:1,hostBindings:function(t,n){2&t&&ko("max",n._enabled?n.max:null)},inputs:{max:"max"},features:[vn([Uie]),Fi]})}}const jie={provide:Wo,useExisting:Di(()=>tm),multi:!0};class tm extends gd{constructor(){super(...arguments),this.inputName="min",this.normalizeInput=e=>kz(e),this.createValidator=e=>HV(e)}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(tm)))(n||tm)}})()}static{this.\u0275dir=De({type:tm,selectors:[["input","type","number","min","","formControlName",""],["input","type","number","min","","formControl",""],["input","type","number","min","","ngModel",""]],hostVars:1,hostBindings:function(t,n){2&t&&ko("min",n._enabled?n.min:null)},inputs:{min:"min"},features:[vn([jie]),Fi]})}}const qie={provide:Wo,useExisting:Di(()=>Ju),multi:!0},Kie={provide:Wo,useExisting:Di(()=>im),multi:!0};class Ju extends gd{constructor(){super(...arguments),this.inputName="required",this.normalizeInput=qi,this.createValidator=e=>zV}enabled(e){return e}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(Ju)))(n||Ju)}})()}static{this.\u0275dir=De({type:Ju,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(t,n){2&t&&ko("required",n._enabled?"":null)},inputs:{required:"required"},features:[vn([qie]),Fi]})}}class im extends Ju{constructor(){super(...arguments),this.createValidator=e=>GV}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(im)))(n||im)}})()}static{this.\u0275dir=De({type:im,selectors:[["input","type","checkbox","required","","formControlName",""],["input","type","checkbox","required","","formControl",""],["input","type","checkbox","required","","ngModel",""]],hostVars:1,hostBindings:function(t,n){2&t&&ko("required",n._enabled?"":null)},features:[vn([Kie]),Fi]})}}const Yie={provide:Wo,useExisting:Di(()=>nm),multi:!0};class nm extends gd{constructor(){super(...arguments),this.inputName="email",this.normalizeInput=qi,this.createValidator=e=>$V}enabled(e){return e}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(nm)))(n||nm)}})()}static{this.\u0275dir=De({type:nm,selectors:[["","email","","formControlName",""],["","email","","formControl",""],["","email","","ngModel",""]],inputs:{email:"email"},features:[vn([Yie]),Fi]})}}const Zie={provide:Wo,useExisting:Di(()=>rm),multi:!0};class rm extends gd{constructor(){super(...arguments),this.inputName="minlength",this.normalizeInput=e=>wz(e),this.createValidator=e=>WV(e)}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(rm)))(n||rm)}})()}static{this.\u0275dir=De({type:rm,selectors:[["","minlength","","formControlName",""],["","minlength","","formControl",""],["","minlength","","ngModel",""]],hostVars:1,hostBindings:function(t,n){2&t&&ko("minlength",n._enabled?n.minlength:null)},inputs:{minlength:"minlength"},features:[vn([Zie]),Fi]})}}const Jie={provide:Wo,useExisting:Di(()=>om),multi:!0};class om extends gd{constructor(){super(...arguments),this.inputName="maxlength",this.normalizeInput=e=>wz(e),this.createValidator=e=>UV(e)}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(om)))(n||om)}})()}static{this.\u0275dir=De({type:om,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(t,n){2&t&&ko("maxlength",n._enabled?n.maxlength:null)},inputs:{maxlength:"maxlength"},features:[vn([Jie]),Fi]})}}const Xie={provide:Wo,useExisting:Di(()=>sm),multi:!0};class sm extends gd{constructor(){super(...arguments),this.inputName="pattern",this.normalizeInput=e=>e,this.createValidator=e=>jV(e)}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(sm)))(n||sm)}})()}static{this.\u0275dir=De({type:sm,selectors:[["","pattern","","formControlName",""],["","pattern","","formControl",""],["","pattern","","ngModel",""]],hostVars:1,hostBindings:function(t,n){2&t&&ko("pattern",n._enabled?n.pattern:null)},inputs:{pattern:"pattern"},features:[vn([Xie]),Fi]})}}class Xf{static{this.\u0275fac=function(t){return new(t||Xf)}}static{this.\u0275mod=Er({type:Xf,declarations:[lb,cb,db,$p,Yp,Zp,Gp,Yu,Zu,Yf,nb,rb,Ju,rm,om,sm,im,nm,tm,em],exports:[lb,cb,db,$p,Yp,Zp,Gp,Yu,Zu,Yf,nb,rb,Ju,rm,om,sm,im,nm,tm,em]})}static{this.\u0275inj=Qn({})}}class _z extends G3{constructor(e,t,n){super(mP(t),gP(n,t)),this.controls=e,this._initObservables(),this._setUpdateStrategy(t),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}at(e){return this.controls[this._adjustIndex(e)]}push(e,t={}){this.controls.push(e),this._registerControl(e),this.updateValueAndValidity({emitEvent:t.emitEvent}),this._onCollectionChange()}insert(e,t,n={}){this.controls.splice(e,0,t),this._registerControl(t),this.updateValueAndValidity({emitEvent:n.emitEvent})}removeAt(e,t={}){let n=this._adjustIndex(e);n<0&&(n=0),this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),this.controls.splice(n,1),this.updateValueAndValidity({emitEvent:t.emitEvent})}setControl(e,t,n={}){let r=this._adjustIndex(e);r<0&&(r=0),this.controls[r]&&this.controls[r]._registerOnCollectionChange(()=>{}),this.controls.splice(r,1),t&&(this.controls.splice(r,0,t),this._registerControl(t)),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(e,t={}){dz(this,0,e),e.forEach((n,r)=>{cz(this,!1,r),this.at(r).setValue(n,{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)}patchValue(e,t={}){null!=e&&(e.forEach((n,r)=>{this.at(r)&&this.at(r).patchValue(n,{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t))}reset(e=[],t={}){this._forEachChild((n,r)=>{n.reset(e[r],{onlySelf:!0,emitEvent:t.emitEvent})}),this._updatePristine(t,this),this._updateTouched(t,this),this.updateValueAndValidity(t)}getRawValue(){return this.controls.map(e=>e.getRawValue())}clear(e={}){this.controls.length<1||(this._forEachChild(t=>t._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((t,n)=>!!n._syncPendingControls()||t,!1);return e&&this.updateValueAndValidity({onlySelf:!0}),e}_forEachChild(e){this.controls.forEach((t,n)=>{e(t,n)})}_updateValue(){this.value=this.controls.filter(e=>e.enabled||this.disabled).map(e=>e.value)}_anyControls(e){return this.controls.some(t=>t.enabled&&e(t))}_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 Ez(i){return!!i&&(void 0!==i.asyncValidators||void 0!==i.validators||void 0!==i.updateOn)}class Qf{constructor(){this.useNonNullable=!1}get nonNullable(){const e=new Qf;return e.useNonNullable=!0,e}group(e,t=null){const n=this._reduceControls(e);let r={};return Ez(t)?r=t:null!==t&&(r.validators=t.validator,r.asyncValidators=t.asyncValidator),new M2(n,r)}record(e,t=null){const n=this._reduceControls(e);return new uz(n,t)}control(e,t,n){let r={};return this.useNonNullable?(Ez(t)?r=t:(r.validators=t,r.asyncValidators=n),new R2(e,{...r,nonNullable:!0})):new R2(e,t,n)}array(e,t,n){const r=e.map(s=>this._createControl(s));return new _z(r,t,n)}_reduceControls(e){const t={};return Object.keys(e).forEach(n=>{t[n]=this._createControl(e[n])}),t}_createControl(e){if(e instanceof R2)return e;if(e instanceof G3)return e;if(Array.isArray(e)){const t=e[0],n=e.length>1?e[1]:null,r=e.length>2?e[2]:null;return this.control(t,n,r)}return this.control(e)}static{this.\u0275fac=function(t){return new(t||Qf)}}static{this.\u0275prov=ue({token:Qf,factory:Qf.\u0275fac,providedIn:"root"})}}class wP{static{this.\u0275fac=function(t){return new(t||wP)}}static{this.\u0275prov=ue({token:wP,factory:()=>K(Qf).nonNullable,providedIn:"root"})}}class N2 extends Qf{group(e,t=null){return super.group(e,t)}control(e,t,n){return super.control(e,t,n)}array(e,t,n){return super.array(e,t,n)}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(N2)))(n||N2)}})()}static{this.\u0275prov=ue({token:N2,factory:N2.\u0275fac,providedIn:"root"})}}new P0("18.2.13");class B2{static withConfig(e){return{ngModule:B2,providers:[{provide:qf,useValue:e.callSetDisabledState??I2}]}}static{this.\u0275fac=function(t){return new(t||B2)}}static{this.\u0275mod=Er({type:B2,declarations:[Kf,Kp,qp],exports:[Xf,Kf,Kp,qp]})}static{this.\u0275inj=Qn({imports:[Xf]})}}class q3{static withConfig(e){return{ngModule:q3,providers:[{provide:CP,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:qf,useValue:e.callSetDisabledState??I2}]}}static{this.\u0275fac=function(t){return new(t||q3)}}static{this.\u0275mod=Er({type:q3,declarations:[Zf,Jp,Jf,Xp,Qp],exports:[Xf,Zf,Jp,Jf,Xp,Qp]})}static{this.\u0275inj=Qn({imports:[Xf]})}}function He(...i){return Mr(i,S2(i))}function _o(i,e,t=1/0){return ai(e)?_o((n,r)=>qe((s,a)=>e(n,s,r,a))(Cs(i(n,r))),t):("number"==typeof e&&(t=e),xi((n,r)=>function Qie(i,e,t,n,r,s,a,d){const h=[];let p=0,g=0,v=!1;const y=()=>{v&&!h.length&&!p&&e.complete()},C=E=>p{s&&e.next(E),p++;let x=!1;Cs(t(E,g++)).subscribe(vi(e,S=>{r?.(S),s?C(S):e.next(S)},()=>{x=!0},void 0,()=>{if(x)try{for(p--;h.length&&pk(S)):k(S)}y()}catch(S){e.error(S)}}))};return i.subscribe(vi(e,C,()=>{v=!0,y()})),()=>{d?.()}}(n,r,i,t)))}function e1(i,e){return ai(e)?_o(i,e,1):_o(i,1)}function H2(i){return xi((e,t)=>{try{e.subscribe(t)}finally{t.add(i)}})}function Js(i,e){return xi((t,n)=>{let r=null,s=0,a=!1;const d=()=>a&&!r&&n.complete();t.subscribe(vi(n,h=>{r?.unsubscribe();let p=0;const g=s++;Cs(i(h,g)).subscribe(r=vi(n,v=>n.next(e?e(h,v,g,p++):v),()=>{r=null,d()}))},()=>{a=!0,d()}))})}class K3{}class Y3{}class Ta{constructor(e){this.normalizedNames=new Map,this.lazyUpdate=null,e?"string"==typeof e?this.lazyInit=()=>{this.headers=new Map,e.split("\n").forEach(t=>{const n=t.indexOf(":");if(n>0){const r=t.slice(0,n),s=r.toLowerCase(),a=t.slice(n+1).trim();this.maybeSetNormalizedName(r,s),this.headers.has(s)?this.headers.get(s).push(a):this.headers.set(s,[a])}})}:typeof Headers<"u"&&e instanceof Headers?(this.headers=new Map,e.forEach((t,n)=>{this.setHeaderEntries(n,t)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(e).forEach(([t,n])=>{this.setHeaderEntries(t,n)})}:this.headers=new Map}has(e){return this.init(),this.headers.has(e.toLowerCase())}get(e){this.init();const t=this.headers.get(e.toLowerCase());return t&&t.length>0?t[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(e){return this.init(),this.headers.get(e.toLowerCase())||null}append(e,t){return this.clone({name:e,value:t,op:"a"})}set(e,t){return this.clone({name:e,value:t,op:"s"})}delete(e,t){return this.clone({name:e,value:t,op:"d"})}maybeSetNormalizedName(e,t){this.normalizedNames.has(t)||this.normalizedNames.set(t,e)}init(){this.lazyInit&&(this.lazyInit instanceof Ta?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(t=>{this.headers.set(t,e.headers.get(t)),this.normalizedNames.set(t,e.normalizedNames.get(t))})}clone(e){const t=new Ta;return t.lazyInit=this.lazyInit&&this.lazyInit instanceof Ta?this.lazyInit:this,t.lazyUpdate=(this.lazyUpdate||[]).concat([e]),t}applyUpdate(e){const t=e.name.toLowerCase();switch(e.op){case"a":case"s":let n=e.value;if("string"==typeof n&&(n=[n]),0===n.length)return;this.maybeSetNormalizedName(e.name,t);const r=("a"===e.op?this.headers.get(t):void 0)||[];r.push(...n),this.headers.set(t,r);break;case"d":const s=e.value;if(s){let a=this.headers.get(t);if(!a)return;a=a.filter(d=>-1===s.indexOf(d)),0===a.length?(this.headers.delete(t),this.normalizedNames.delete(t)):this.headers.set(t,a)}else this.headers.delete(t),this.normalizedNames.delete(t)}}setHeaderEntries(e,t){const n=(Array.isArray(t)?t:[t]).map(s=>s.toString()),r=e.toLowerCase();this.headers.set(r,n),this.maybeSetNormalizedName(e,r)}forEach(e){this.init(),Array.from(this.normalizedNames.keys()).forEach(t=>e(this.normalizedNames.get(t),this.headers.get(t)))}}class ene{encodeKey(e){return Fz(e)}encodeValue(e){return Fz(e)}decodeKey(e){return decodeURIComponent(e)}decodeValue(e){return decodeURIComponent(e)}}const ine=/%(\d[a-f0-9])/gi,nne={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function Fz(i){return encodeURIComponent(i).replace(ine,(e,t)=>nne[t]??e)}function Z3(i){return`${i}`}class am{constructor(e={}){if(this.updates=null,this.cloneFrom=null,this.encoder=e.encoder||new ene,e.fromString){if(e.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function tne(i,e){const t=new Map;return i.length>0&&i.replace(/^\?/,"").split("&").forEach(r=>{const s=r.indexOf("="),[a,d]=-1==s?[e.decodeKey(r),""]:[e.decodeKey(r.slice(0,s)),e.decodeValue(r.slice(s+1))],h=t.get(a)||[];h.push(d),t.set(a,h)}),t}(e.fromString,this.encoder)}else e.fromObject?(this.map=new Map,Object.keys(e.fromObject).forEach(t=>{const n=e.fromObject[t],r=Array.isArray(n)?n.map(Z3):[Z3(n)];this.map.set(t,r)})):this.map=null}has(e){return this.init(),this.map.has(e)}get(e){this.init();const t=this.map.get(e);return t?t[0]:null}getAll(e){return this.init(),this.map.get(e)||null}keys(){return this.init(),Array.from(this.map.keys())}append(e,t){return this.clone({param:e,value:t,op:"a"})}appendAll(e){const t=[];return Object.keys(e).forEach(n=>{const r=e[n];Array.isArray(r)?r.forEach(s=>{t.push({param:n,value:s,op:"a"})}):t.push({param:n,value:r,op:"a"})}),this.clone(t)}set(e,t){return this.clone({param:e,value:t,op:"s"})}delete(e,t){return this.clone({param:e,value:t,op:"d"})}toString(){return this.init(),this.keys().map(e=>{const t=this.encoder.encodeKey(e);return this.map.get(e).map(n=>t+"="+this.encoder.encodeValue(n)).join("&")}).filter(e=>""!==e).join("&")}clone(e){const t=new am({encoder:this.encoder});return t.cloneFrom=this.cloneFrom||this,t.updates=(this.updates||[]).concat(e),t}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 t=("a"===e.op?this.map.get(e.param):void 0)||[];t.push(Z3(e.value)),this.map.set(e.param,t);break;case"d":if(void 0===e.value){this.map.delete(e.param);break}{let n=this.map.get(e.param)||[];const r=n.indexOf(Z3(e.value));-1!==r&&n.splice(r,1),n.length>0?this.map.set(e.param,n):this.map.delete(e.param)}}}),this.cloneFrom=this.updates=null)}}class rne{constructor(){this.map=new Map}set(e,t){return this.map.set(e,t),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 xz(i){return typeof ArrayBuffer<"u"&&i instanceof ArrayBuffer}function Sz(i){return typeof Blob<"u"&&i instanceof Blob}function Dz(i){return typeof FormData<"u"&&i instanceof FormData}class V2{constructor(e,t,n,r){let s;if(this.url=t,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=e.toUpperCase(),function one(i){switch(i){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||r?(this.body=void 0!==n?n:null,s=r):s=n,s&&(this.reportProgress=!!s.reportProgress,this.withCredentials=!!s.withCredentials,s.responseType&&(this.responseType=s.responseType),s.headers&&(this.headers=s.headers),s.context&&(this.context=s.context),s.params&&(this.params=s.params),this.transferCache=s.transferCache),this.headers??=new Ta,this.context??=new rne,this.params){const a=this.params.toString();if(0===a.length)this.urlWithParams=t;else{const d=t.indexOf("?"),h=-1===d?"?":dy.set(C,e.setHeaders[C]),p)),e.setParams&&(g=Object.keys(e.setParams).reduce((y,C)=>y.set(C,e.setParams[C]),g)),new V2(t,n,a,{params:g,headers:p,context:v,reportProgress:h,responseType:r,withCredentials:d,transferCache:s})}}var fd;!function(i){i[i.Sent=0]="Sent",i[i.UploadProgress=1]="UploadProgress",i[i.ResponseHeader=2]="ResponseHeader",i[i.DownloadProgress=3]="DownloadProgress",i[i.Response=4]="Response",i[i.User=5]="User"}(fd||(fd={}));class kP{constructor(e,t=200,n="OK"){this.headers=e.headers||new Ta,this.status=void 0!==e.status?e.status:t,this.statusText=e.statusText||n,this.url=e.url||null,this.ok=this.status>=200&&this.status<300}}class J3 extends kP{constructor(e={}){super(e),this.type=fd.ResponseHeader}clone(e={}){return new J3({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 lm extends kP{constructor(e={}){super(e),this.type=fd.Response,this.body=void 0!==e.body?e.body:null}clone(e={}){return new lm({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 cm extends kP{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 Az;function EP(i,e){return{body:e,headers:i.headers,context:i.context,observe:i.observe,params:i.params,reportProgress:i.reportProgress,responseType:i.responseType,withCredentials:i.withCredentials,transferCache:i.transferCache}}!function(i){i[i.Continue=100]="Continue",i[i.SwitchingProtocols=101]="SwitchingProtocols",i[i.Processing=102]="Processing",i[i.EarlyHints=103]="EarlyHints",i[i.Ok=200]="Ok",i[i.Created=201]="Created",i[i.Accepted=202]="Accepted",i[i.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",i[i.NoContent=204]="NoContent",i[i.ResetContent=205]="ResetContent",i[i.PartialContent=206]="PartialContent",i[i.MultiStatus=207]="MultiStatus",i[i.AlreadyReported=208]="AlreadyReported",i[i.ImUsed=226]="ImUsed",i[i.MultipleChoices=300]="MultipleChoices",i[i.MovedPermanently=301]="MovedPermanently",i[i.Found=302]="Found",i[i.SeeOther=303]="SeeOther",i[i.NotModified=304]="NotModified",i[i.UseProxy=305]="UseProxy",i[i.Unused=306]="Unused",i[i.TemporaryRedirect=307]="TemporaryRedirect",i[i.PermanentRedirect=308]="PermanentRedirect",i[i.BadRequest=400]="BadRequest",i[i.Unauthorized=401]="Unauthorized",i[i.PaymentRequired=402]="PaymentRequired",i[i.Forbidden=403]="Forbidden",i[i.NotFound=404]="NotFound",i[i.MethodNotAllowed=405]="MethodNotAllowed",i[i.NotAcceptable=406]="NotAcceptable",i[i.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",i[i.RequestTimeout=408]="RequestTimeout",i[i.Conflict=409]="Conflict",i[i.Gone=410]="Gone",i[i.LengthRequired=411]="LengthRequired",i[i.PreconditionFailed=412]="PreconditionFailed",i[i.PayloadTooLarge=413]="PayloadTooLarge",i[i.UriTooLong=414]="UriTooLong",i[i.UnsupportedMediaType=415]="UnsupportedMediaType",i[i.RangeNotSatisfiable=416]="RangeNotSatisfiable",i[i.ExpectationFailed=417]="ExpectationFailed",i[i.ImATeapot=418]="ImATeapot",i[i.MisdirectedRequest=421]="MisdirectedRequest",i[i.UnprocessableEntity=422]="UnprocessableEntity",i[i.Locked=423]="Locked",i[i.FailedDependency=424]="FailedDependency",i[i.TooEarly=425]="TooEarly",i[i.UpgradeRequired=426]="UpgradeRequired",i[i.PreconditionRequired=428]="PreconditionRequired",i[i.TooManyRequests=429]="TooManyRequests",i[i.RequestHeaderFieldsTooLarge=431]="RequestHeaderFieldsTooLarge",i[i.UnavailableForLegalReasons=451]="UnavailableForLegalReasons",i[i.InternalServerError=500]="InternalServerError",i[i.NotImplemented=501]="NotImplemented",i[i.BadGateway=502]="BadGateway",i[i.ServiceUnavailable=503]="ServiceUnavailable",i[i.GatewayTimeout=504]="GatewayTimeout",i[i.HttpVersionNotSupported=505]="HttpVersionNotSupported",i[i.VariantAlsoNegotiates=506]="VariantAlsoNegotiates",i[i.InsufficientStorage=507]="InsufficientStorage",i[i.LoopDetected=508]="LoopDetected",i[i.NotExtended=510]="NotExtended",i[i.NetworkAuthenticationRequired=511]="NetworkAuthenticationRequired"}(Az||(Az={}));class Mi{constructor(e){this.handler=e}request(e,t,n={}){let r;if(e instanceof V2)r=e;else{let d,h;d=n.headers instanceof Ta?n.headers:new Ta(n.headers),n.params&&(h=n.params instanceof am?n.params:new am({fromObject:n.params})),r=new V2(e,t,void 0!==n.body?n.body:null,{headers:d,context:n.context,params:h,reportProgress:n.reportProgress,responseType:n.responseType||"json",withCredentials:n.withCredentials,transferCache:n.transferCache})}const s=He(r).pipe(e1(d=>this.handler.handle(d)));if(e instanceof V2||"events"===n.observe)return s;const a=s.pipe(rn(d=>d instanceof lm));switch(n.observe||"body"){case"body":switch(r.responseType){case"arraybuffer":return a.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 a.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 a.pipe(qe(d=>{if(null!==d.body&&"string"!=typeof d.body)throw new Error("Response is not a string.");return d.body}));default:return a.pipe(qe(d=>d.body))}case"response":return a;default:throw new Error(`Unreachable: unhandled observe type ${n.observe}}`)}}delete(e,t={}){return this.request("DELETE",e,t)}get(e,t={}){return this.request("GET",e,t)}head(e,t={}){return this.request("HEAD",e,t)}jsonp(e,t){return this.request("JSONP",e,{params:(new am).append(t,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,t={}){return this.request("OPTIONS",e,t)}patch(e,t,n={}){return this.request("PATCH",e,EP(n,t))}post(e,t,n={}){return this.request("POST",e,EP(n,t))}put(e,t,n={}){return this.request("PUT",e,EP(n,t))}static{this.\u0275fac=function(t){return new(t||Mi)(ve(K3))}}static{this.\u0275prov=ue({token:Mi,factory:Mi.\u0275fac})}}const lne=/^\)\]\}',?\n/;function Tz(i){if(i.url)return i.url;const e="X-Request-URL".toLocaleLowerCase();return i.headers.get(e)}class t1{constructor(){this.fetchImpl=K(dne,{optional:!0})?.fetch??((...e)=>globalThis.fetch(...e)),this.ngZone=K(ni)}handle(e){return new ci(t=>{const n=new AbortController;return this.doRequest(e,n.signal,t).then(FP,r=>t.error(new cm({error:r}))),()=>n.abort()})}doRequest(e,t,n){var r=this;return yn(function*(){const s=r.createRequestInit(e);let a;try{const C=r.ngZone.runOutsideAngular(()=>r.fetchImpl(e.urlWithParams,{signal:t,...s}));(function une(i){i.then(FP,FP)})(C),n.next({type:fd.Sent}),a=yield C}catch(C){return void n.error(new cm({error:C,status:C.status??0,statusText:C.statusText,url:e.urlWithParams,headers:C.headers}))}const d=new Ta(a.headers),h=a.statusText,p=Tz(a)??e.urlWithParams;let g=a.status,v=null;if(e.reportProgress&&n.next(new J3({headers:d,status:g,statusText:h,url:p})),a.body){const C=a.headers.get("content-length"),k=[],E=a.body.getReader();let S,D,x=0;const I=typeof Zone<"u"&&Zone.current;yield r.ngZone.runOutsideAngular(yn(function*(){for(;;){const{done:R,value:W}=yield E.read();if(R)break;if(k.push(W),x+=W.length,e.reportProgress){D="text"===e.responseType?(D??"")+(S??=new TextDecoder).decode(W,{stream:!0}):void 0;const re=()=>n.next({type:fd.DownloadProgress,total:C?+C:void 0,loaded:x,partialText:D});I?I.run(re):re()}}}));const L=r.concatChunks(k,x);try{const R=a.headers.get("Content-Type")??"";v=r.parseBody(e,L,R)}catch(R){return void n.error(new cm({error:R,headers:new Ta(a.headers),status:a.status,statusText:a.statusText,url:Tz(a)??e.urlWithParams}))}}0===g&&(g=v?200:0),g>=200&&g<300?(n.next(new lm({body:v,headers:d,status:g,statusText:h,url:p})),n.complete()):n.error(new cm({error:v,headers:d,status:g,statusText:h,url:p}))})()}parseBody(e,t,n){switch(e.responseType){case"json":const r=(new TextDecoder).decode(t).replace(lne,"");return""===r?null:JSON.parse(r);case"text":return(new TextDecoder).decode(t);case"blob":return new Blob([t],{type:n});case"arraybuffer":return t.buffer}}createRequestInit(e){const t={},n=e.withCredentials?"include":void 0;if(e.headers.forEach((r,s)=>t[r]=s.join(",")),e.headers.has("Accept")||(t.Accept="application/json, text/plain, */*"),!e.headers.has("Content-Type")){const r=e.detectContentTypeHeader();null!==r&&(t["Content-Type"]=r)}return{body:e.serializeBody(),method:e.method,headers:t,credentials:n}}concatChunks(e,t){const n=new Uint8Array(t);let r=0;for(const s of e)n.set(s,r),r+=s.length;return n}static{this.\u0275fac=function(t){return new(t||t1)}}static{this.\u0275prov=ue({token:t1,factory:t1.\u0275fac})}}class dne{}function FP(){}function Mz(i,e){return e(i)}function hne(i,e){return(t,n)=>e.intercept(t,{handle:r=>i(r,n)})}const Iz=new ge(""),z2=new ge(""),Lz=new ge(""),Oz=new ge("",{providedIn:"root",factory:()=>!0});function mne(){let i=null;return(e,t)=>{null===i&&(i=(K(Iz,{optional:!0})??[]).reduceRight(hne,Mz));const n=K(Qr);if(K(Oz)){const s=n.add();return i(e,t).pipe(H2(()=>n.remove(s)))}return i(e,t)}}class ub extends K3{constructor(e,t){super(),this.backend=e,this.injector=t,this.chain=null,this.pendingTasks=K(Qr),this.contributeToStability=K(Oz)}handle(e){if(null===this.chain){const t=Array.from(new Set([...this.injector.get(z2),...this.injector.get(Lz,[])]));this.chain=t.reduceRight((n,r)=>function pne(i,e,t){return(n,r)=>Oo(t,()=>e(n,s=>i(s,r)))}(n,r,this.injector),Mz)}if(this.contributeToStability){const t=this.pendingTasks.add();return this.chain(e,n=>this.backend.handle(n)).pipe(H2(()=>this.pendingTasks.remove(t)))}return this.chain(e,t=>this.backend.handle(t))}static{this.\u0275fac=function(t){return new(t||ub)(ve(Y3),ve(Nr))}}static{this.\u0275prov=ue({token:ub,factory:ub.\u0275fac})}}let Rz,fne=0;class Pz{}function wne(){return"object"==typeof window?window:{}}class hb{constructor(e,t){this.callbackMap=e,this.document=t,this.resolvedPromise=Promise.resolve()}nextCallback(){return"ng_jsonp_callback_"+fne++}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 ci(t=>{const n=this.nextCallback(),r=e.urlWithParams.replace(/=JSONP_CALLBACK(&|$)/,`=${n}$1`),s=this.document.createElement("script");s.src=r;let a=null,d=!1;this.callbackMap[n]=v=>{delete this.callbackMap[n],a=v,d=!0};const h=()=>{s.removeEventListener("load",p),s.removeEventListener("error",g),s.remove(),delete this.callbackMap[n]},p=v=>{this.resolvedPromise.then(()=>{h(),d?(t.next(new lm({body:a,status:200,statusText:"OK",url:r})),t.complete()):t.error(new cm({url:r,status:0,statusText:"JSONP Error",error:new Error("JSONP injected script did not invoke callback.")}))})},g=v=>{h(),t.error(new cm({error:v,status:0,statusText:"JSONP Error",url:r}))};return s.addEventListener("load",p),s.addEventListener("error",g),this.document.body.appendChild(s),t.next({type:fd.Sent}),()=>{d||this.removeListeners(s),h()}})}removeListeners(e){Rz??=this.document.implementation.createHTMLDocument(),Rz.adoptNode(e)}static{this.\u0275fac=function(t){return new(t||hb)(ve(Pz),ve(sr))}}static{this.\u0275prov=ue({token:hb,factory:hb.\u0275fac})}}function Nz(i,e){return"JSONP"===i.method?K(hb).handle(i):e(i)}class X3{constructor(e){this.injector=e}intercept(e,t){return Oo(this.injector,()=>Nz(e,n=>t.handle(n)))}static{this.\u0275fac=function(t){return new(t||X3)(ve(Nr))}}static{this.\u0275prov=ue({token:X3,factory:X3.\u0275fac})}}const kne=/^\)\]\}',?\n/;class pb{constructor(e){this.xhrFactory=e}handle(e){if("JSONP"===e.method)throw new j(-2800,!1);const t=this.xhrFactory;return(t.\u0275loadImpl?Mr(t.\u0275loadImpl()):He(null)).pipe(Js(()=>new ci(r=>{const s=t.build();if(s.open(e.method,e.urlWithParams),e.withCredentials&&(s.withCredentials=!0),e.headers.forEach((k,E)=>s.setRequestHeader(k,E.join(","))),e.headers.has("Accept")||s.setRequestHeader("Accept","application/json, text/plain, */*"),!e.headers.has("Content-Type")){const k=e.detectContentTypeHeader();null!==k&&s.setRequestHeader("Content-Type",k)}if(e.responseType){const k=e.responseType.toLowerCase();s.responseType="json"!==k?k:"text"}const a=e.serializeBody();let d=null;const h=()=>{if(null!==d)return d;const k=s.statusText||"OK",E=new Ta(s.getAllResponseHeaders()),x=function _ne(i){return"responseURL"in i&&i.responseURL?i.responseURL:/^X-Request-URL:/m.test(i.getAllResponseHeaders())?i.getResponseHeader("X-Request-URL"):null}(s)||e.url;return d=new J3({headers:E,status:s.status,statusText:k,url:x}),d},p=()=>{let{headers:k,status:E,statusText:x,url:S}=h(),D=null;204!==E&&(D=typeof s.response>"u"?s.responseText:s.response),0===E&&(E=D?200:0);let I=E>=200&&E<300;if("json"===e.responseType&&"string"==typeof D){const L=D;D=D.replace(kne,"");try{D=""!==D?JSON.parse(D):null}catch(R){D=L,I&&(I=!1,D={error:R,text:D})}}I?(r.next(new lm({body:D,headers:k,status:E,statusText:x,url:S||void 0})),r.complete()):r.error(new cm({error:D,headers:k,status:E,statusText:x,url:S||void 0}))},g=k=>{const{url:E}=h(),x=new cm({error:k,status:s.status||0,statusText:s.statusText||"Unknown Error",url:E||void 0});r.error(x)};let v=!1;const y=k=>{v||(r.next(h()),v=!0);let E={type:fd.DownloadProgress,loaded:k.loaded};k.lengthComputable&&(E.total=k.total),"text"===e.responseType&&s.responseText&&(E.partialText=s.responseText),r.next(E)},C=k=>{let E={type:fd.UploadProgress,loaded:k.loaded};k.lengthComputable&&(E.total=k.total),r.next(E)};return s.addEventListener("load",p),s.addEventListener("error",g),s.addEventListener("timeout",g),s.addEventListener("abort",g),e.reportProgress&&(s.addEventListener("progress",y),null!==a&&s.upload&&s.upload.addEventListener("progress",C)),s.send(a),r.next({type:fd.Sent}),()=>{s.removeEventListener("error",g),s.removeEventListener("abort",g),s.removeEventListener("load",p),s.removeEventListener("timeout",g),e.reportProgress&&(s.removeEventListener("progress",y),null!==a&&s.upload&&s.upload.removeEventListener("progress",C)),s.readyState!==s.DONE&&s.abort()}})))}static{this.\u0275fac=function(t){return new(t||pb)(ve(U7))}}static{this.\u0275prov=ue({token:pb,factory:pb.\u0275fac})}}const Q3=new ge(""),Bz="XSRF-TOKEN",Hz=new ge("",{providedIn:"root",factory:()=>Bz}),Vz="X-XSRF-TOKEN",zz=new ge("",{providedIn:"root",factory:()=>Vz});class xP{}class mb{constructor(e,t,n){this.doc=e,this.platform=t,this.cookieName=n,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=B7(e,this.cookieName),this.lastCookieString=e),this.lastToken}static{this.\u0275fac=function(t){return new(t||mb)(ve(sr),ve(hs),ve(Hz))}}static{this.\u0275prov=ue({token:mb,factory:mb.\u0275fac})}}function Gz(i,e){const t=i.url.toLowerCase();if(!K(Q3)||"GET"===i.method||"HEAD"===i.method||t.startsWith("http://")||t.startsWith("https://"))return e(i);const n=K(xP).getToken(),r=K(zz);return null!=n&&!i.headers.has(r)&&(i=i.clone({headers:i.headers.set(r,n)})),e(i)}class gb{constructor(e){this.injector=e}intercept(e,t){return Oo(this.injector,()=>Gz(e,n=>t.handle(n)))}static{this.\u0275fac=function(t){return new(t||gb)(ve(Nr))}}static{this.\u0275prov=ue({token:gb,factory:gb.\u0275fac})}}var Xu;function i1(i,e){return{\u0275kind:i,\u0275providers:e}}function $z(...i){const e=[Mi,pb,ub,{provide:K3,useExisting:ub},{provide:Y3,useFactory:()=>K(t1,{optional:!0})??K(pb)},{provide:z2,useValue:Gz,multi:!0},{provide:Q3,useValue:!0},{provide:xP,useClass:mb}];for(const t of i)e.push(...t.\u0275providers);return q1(e)}!function(i){i[i.Interceptors=0]="Interceptors",i[i.LegacyInterceptors=1]="LegacyInterceptors",i[i.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",i[i.NoXsrfProtection=3]="NoXsrfProtection",i[i.JsonpSupport=4]="JsonpSupport",i[i.RequestsMadeViaParent=5]="RequestsMadeViaParent",i[i.Fetch=6]="Fetch"}(Xu||(Xu={}));const Wz=new ge("");function Uz(){return i1(Xu.LegacyInterceptors,[{provide:Wz,useFactory:mne},{provide:z2,useExisting:Wz,multi:!0}])}function jz({cookieName:i,headerName:e}){const t=[];return void 0!==i&&t.push({provide:Hz,useValue:i}),void 0!==e&&t.push({provide:zz,useValue:e}),i1(Xu.CustomXsrfConfiguration,t)}class G2{static disable(){return{ngModule:G2,providers:[i1(Xu.NoXsrfProtection,[{provide:Q3,useValue:!1}]).\u0275providers]}}static withOptions(e={}){return{ngModule:G2,providers:jz(e).\u0275providers}}static{this.\u0275fac=function(t){return new(t||G2)}}static{this.\u0275mod=Er({type:G2})}static{this.\u0275inj=Qn({providers:[gb,{provide:Iz,useExisting:gb,multi:!0},{provide:xP,useClass:mb},jz({cookieName:Bz,headerName:Vz}).\u0275providers,{provide:Q3,useValue:!0}]})}}class SP{static{this.\u0275fac=function(t){return new(t||SP)}}static{this.\u0275mod=Er({type:SP})}static{this.\u0275inj=Qn({providers:[$z(Uz())]})}}class DP{static{this.\u0275fac=function(t){return new(t||DP)}}static{this.\u0275mod=Er({type:DP})}static{this.\u0275inj=Qn({providers:[i1(Xu.JsonpSupport,[hb,{provide:Pz,useFactory:wne},{provide:z2,useValue:Nz,multi:!0}]).\u0275providers]})}}new ge(""),new ge("");function dm(i){return xi((e,t)=>{Cs(i).subscribe(vi(t,()=>t.complete(),Yr)),!t.closed&&e.subscribe(t)})}class One extends Bi{constructor(e,t){super()}schedule(e,t=0){return this}}const tA={setInterval(i,e,...t){const{delegate:n}=tA;return n?.setInterval?n.setInterval(i,e,...t):setInterval(i,e,...t)},clearInterval(i){const{delegate:e}=tA;return(e?.clearInterval||clearInterval)(i)},delegate:void 0};class AP extends One{constructor(e,t){super(e,t),this.scheduler=e,this.work=t,this.pending=!1}schedule(e,t=0){var n;if(this.closed)return this;this.state=e;const r=this.id,s=this.scheduler;return null!=r&&(this.id=this.recycleAsyncId(s,r,t)),this.pending=!0,this.delay=t,this.id=null!==(n=this.id)&&void 0!==n?n:this.requestAsyncId(s,this.id,t),this}requestAsyncId(e,t,n=0){return tA.setInterval(e.flush.bind(e,this),n)}recycleAsyncId(e,t,n=0){if(null!=n&&this.delay===n&&!1===this.pending)return t;null!=t&&tA.clearInterval(t)}execute(e,t){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const n=this._execute(e,t);if(n)return n;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(e,t){let r,n=!1;try{this.work(e)}catch(s){n=!0,r=s||new Error("Scheduled action threw falsy error")}if(n)return this.unsubscribe(),r}unsubscribe(){if(!this.closed){const{id:e,scheduler:t}=this,{actions:n}=t;this.work=this.state=this.scheduler=null,this.pending=!1,L1(n,this),null!=e&&(this.id=this.recycleAsyncId(t,e,null)),this.delay=null,super.unsubscribe()}}}const TP={now:()=>(TP.delegate||Date).now(),delegate:void 0};class $2{constructor(e,t=$2.now){this.schedulerActionCtor=e,this.now=t}schedule(e,t=0,n){return new this.schedulerActionCtor(this,e).schedule(n,t)}}$2.now=TP.now;class MP extends $2{constructor(e,t=$2.now){super(e,t),this.actions=[],this._active=!1}flush(e){const{actions:t}=this;if(this._active)return void t.push(e);let n;this._active=!0;do{if(n=e.execute(e.state,e.delay))break}while(e=t.shift());if(this._active=!1,n){for(;e=t.shift();)e.unsubscribe();throw n}}}const IP=new MP(AP),Rne=IP;function Bne(i=0,e,t=Rne){let n=-1;return null!=e&&(OV(e)?t=e:n=e),new ci(r=>{let s=function Nne(i){return i instanceof Date&&!isNaN(i)}(i)?+i-t.now():i;s<0&&(s=0);let a=0;return t.schedule(function(){r.closed||(r.next(a++),0<=n?this.schedule(void 0,n):r.complete())},s)})}function Hne(i,e=IP){return function Pne(i){return xi((e,t)=>{let n=!1,r=null,s=null,a=!1;const d=()=>{if(s?.unsubscribe(),s=null,n){n=!1;const p=r;r=null,t.next(p)}a&&t.complete()},h=()=>{s=null,a&&t.complete()};e.subscribe(vi(t,p=>{n=!0,r=p,s||Cs(i(p)).subscribe(s=vi(t,d,h))},()=>{a=!0,(!n||!s||s.closed)&&t.complete()}))})}(()=>Bne(i,e))}function fb(i=1/0){return _o(ja,i)}function W2(...i){return function Vne(){return fb(1)}()(Mr(i,S2(i)))}function eG(...i){const e=S2(i);return xi((t,n)=>{(e?W2(i,t,e):W2(i,t)).subscribe(n)})}function Uo(i,e,t){const n=ai(i)||e||t?{next:i,error:e,complete:t}:i;return n?xi((r,s)=>{var a;null===(a=n.subscribe)||void 0===a||a.call(n);let d=!0;r.subscribe(vi(s,h=>{var p;null===(p=n.next)||void 0===p||p.call(n,h),s.next(h)},()=>{var h;d=!1,null===(h=n.complete)||void 0===h||h.call(n),s.complete()},h=>{var p;d=!1,null===(p=n.error)||void 0===p||p.call(n,h),s.error(h)},()=>{var h,p;d&&(null===(h=n.unsubscribe)||void 0===h||h.call(n)),null===(p=n.finalize)||void 0===p||p.call(n)}))}):ja}function tG(i,e=IP){return xi((t,n)=>{let r=null,s=null,a=null;const d=()=>{if(r){r.unsubscribe(),r=null;const p=s;s=null,n.next(p)}};function h(){const p=a+i,g=e.now();if(g{s=p,a=e.now(),r||(r=e.schedule(h,i),n.add(r))},()=>{d(),n.complete()},void 0,()=>{s=r=null}))})}const U2={schedule(i){let e=requestAnimationFrame,t=cancelAnimationFrame;const{delegate:n}=U2;n&&(e=n.requestAnimationFrame,t=n.cancelAnimationFrame);const r=e(s=>{t=void 0,i(s)});return new Bi(()=>t?.(r))},requestAnimationFrame(...i){const{delegate:e}=U2;return(e?.requestAnimationFrame||requestAnimationFrame)(...i)},cancelAnimationFrame(...i){const{delegate:e}=U2;return(e?.cancelAnimationFrame||cancelAnimationFrame)(...i)},delegate:void 0};const $ne=new class Gne extends MP{flush(e){this._active=!0;const t=this._scheduled;this._scheduled=void 0;const{actions:n}=this;let r;e=e||n.shift();do{if(r=e.execute(e.state,e.delay))break}while((e=n[0])&&e.id===t&&n.shift());if(this._active=!1,r){for(;(e=n[0])&&e.id===t&&n.shift();)e.unsubscribe();throw r}}}(class zne extends AP{constructor(e,t){super(e,t),this.scheduler=e,this.work=t}requestAsyncId(e,t,n=0){return null!==n&&n>0?super.requestAsyncId(e,t,n):(e.actions.push(this),e._scheduled||(e._scheduled=U2.requestAnimationFrame(()=>e.flush(void 0))))}recycleAsyncId(e,t,n=0){var r;if(null!=n?n>0:this.delay>0)return super.recycleAsyncId(e,t,n);const{actions:s}=e;null!=t&&(null===(r=s[s.length-1])||void 0===r?void 0:r.id)!==t&&(U2.cancelAnimationFrame(t),e._scheduled=void 0)}});let LP,Wne=1;const iA={};function iG(i){return i in iA&&(delete iA[i],!0)}const Une={setImmediate(i){const e=Wne++;return iA[e]=!0,LP||(LP=Promise.resolve()),LP.then(()=>iG(e)&&i()),e},clearImmediate(i){iG(i)}},{setImmediate:jne,clearImmediate:qne}=Une,nA={setImmediate(...i){const{delegate:e}=nA;return(e?.setImmediate||jne)(...i)},clearImmediate(i){const{delegate:e}=nA;return(e?.clearImmediate||qne)(i)},delegate:void 0};const Zne=new class Yne extends MP{flush(e){this._active=!0;const t=this._scheduled;this._scheduled=void 0;const{actions:n}=this;let r;e=e||n.shift();do{if(r=e.execute(e.state,e.delay))break}while((e=n[0])&&e.id===t&&n.shift());if(this._active=!1,r){for(;(e=n[0])&&e.id===t&&n.shift();)e.unsubscribe();throw r}}}(class Kne extends AP{constructor(e,t){super(e,t),this.scheduler=e,this.work=t}requestAsyncId(e,t,n=0){return null!==n&&n>0?super.requestAsyncId(e,t,n):(e.actions.push(this),e._scheduled||(e._scheduled=nA.setImmediate(e.flush.bind(e,void 0))))}recycleAsyncId(e,t,n=0){var r;if(null!=n?n>0:this.delay>0)return super.recycleAsyncId(e,t,n);const{actions:s}=e;null!=t&&(null===(r=s[s.length-1])||void 0===r?void 0:r.id)!==t&&(nA.clearImmediate(t),e._scheduled===t&&(e._scheduled=void 0))}}),Jne=["addListener","removeListener"],Xne=["addEventListener","removeEventListener"],Qne=["on","off"];function vb(i,e,t,n){if(ai(t)&&(n=t,t=void 0),n)return vb(i,e,t).pipe(sP(n));const[r,s]=function ire(i){return ai(i.addEventListener)&&ai(i.removeEventListener)}(i)?Xne.map(a=>d=>i[a](e,d,t)):function ere(i){return ai(i.addListener)&&ai(i.removeListener)}(i)?Jne.map(nG(i,e)):function tre(i){return ai(i.on)&&ai(i.off)}(i)?Qne.map(nG(i,e)):[];if(!r&&rP(i))return _o(a=>vb(a,e,t))(Cs(i));if(!r)throw new TypeError("Invalid event target");return new ci(a=>{const d=(...h)=>a.next(1s(d)})}function nG(i,e){return t=>n=>i[t](e,n)}function OP(...i){const e=S2(i),t=function rie(i,e){return"number"==typeof oP(i)?i.pop():e}(i,1/0),n=i;return n.length?1===n.length?Cs(n[0]):fb(t)(Mr(n,e)):wr}const nre=["content"],rre=["scroll"],ore=["padding"],rG=["*"],j2=i=>({searchTerm:i});function sre(i,e){if(1&i&&(ji(0,"div",3),ND(1,6),fn()),2&i){const t=Jt();Ot(),or("ngTemplateOutlet",t.headerTemplate)("ngTemplateOutletContext",Df(2,j2,t.filterValue))}}function are(i,e){if(1&i&&(ji(0,"div",5),ND(1,6),fn()),2&i){const t=Jt();Ot(),or("ngTemplateOutlet",t.footerTemplate)("ngTemplateOutletContext",Df(2,j2,t.filterValue))}}const lre=["searchInput"],cre=["clearButton"],dre=(i,e,t)=>({item:i,clear:e,label:t}),ure=(i,e)=>({items:i,clear:e}),hre=(i,e,t,n)=>({item:i,item$:e,index:t,searchTerm:n});function pre(i,e){if(1&i&&(ji(0,"div",20),pc(1),fn()),2&i){const t=Jt(2);Ot(),Ip(t.placeholder)}}function mre(i,e){}function gre(i,e){if(1&i&&zn(0,pre,2,1,"ng-template",null,1,Vu)(2,mre,0,0,"ng-template",19),2&i){const t=hc(1),n=Jt();Ot(2),or("ngTemplateOutlet",n.placeholderTemplate||t)}}function fre(i,e){if(1&i){const t=Mp();ji(0,"span",23),Gn("click",function(){tr(t);const r=Jt().$implicit;return Hn(Jt(2).unselect(r))}),pc(1,"\xd7"),fn(),Tp(2,"span",24)}if(2&i){const t=Jt().$implicit,n=Jt(2);Ot(2),or("ngItemLabel",t.label)("escape",n.escapeHTML)}}function vre(i,e){}function bre(i,e){if(1&i&&(ji(0,"div",22),zn(1,fre,3,2,"ng-template",null,2,Vu)(3,vre,0,0,"ng-template",12),fn()),2&i){const t=e.$implicit,n=hc(2),r=Jt(2);zo("ng-value-disabled",t.disabled),Ot(3),or("ngTemplateOutlet",r.labelTemplate||n)("ngTemplateOutletContext",rH(4,dre,t.value,r.clearItem,t.label))}}function yre(i,e){if(1&i&&H5(0,bre,4,8,"div",21,P5().trackByOption,!0),2&i){V5(Jt().selectedItems)}}function Cre(i,e){}function wre(i,e){if(1&i&&zn(0,Cre,0,0,"ng-template",12),2&i){const t=Jt();or("ngTemplateOutlet",t.multiLabelTemplate)("ngTemplateOutletContext",nH(2,ure,t.selectedValues,t.clearItem))}}function kre(i,e){1&i&&Tp(0,"div",25)}function _re(i,e){}function Ere(i,e){if(1&i&&zn(0,kre,1,0,"ng-template",null,3,Vu)(2,_re,0,0,"ng-template",19),2&i){const t=hc(1),n=Jt();Ot(2),or("ngTemplateOutlet",n.loadingSpinnerTemplate||t)}}function Fre(i,e){if(1&i&&(ji(0,"span",15,4)(2,"span",26),pc(3,"\xd7"),fn()()),2&i){U5("title",Jt().clearAllText)}}function xre(i,e){if(1&i&&Tp(0,"span",31),2&i){const t=Jt().$implicit,n=Jt(2);or("ngItemLabel",t.label)("escape",n.escapeHTML)}}function Sre(i,e){}function Dre(i,e){if(1&i){const t=Mp();ji(0,"div",30),Gn("click",function(){const r=tr(t).$implicit;return Hn(Jt(2).toggleItem(r))})("mouseover",function(){const r=tr(t).$implicit;return Hn(Jt(2).onItemHover(r))}),zn(1,xre,1,2,"ng-template",null,5,Vu)(3,Sre,0,0,"ng-template",12),fn()}if(2&i){const t=e.$implicit,n=hc(2),r=Jt(2);zo("ng-option-disabled",t.disabled)("ng-option-selected",t.selected)("ng-optgroup",t.children)("ng-option",!t.children)("ng-option-child",!!t.parent)("ng-option-marked",t===r.itemsList.markedItem),ko("role",t.children?"group":"option")("aria-selected",t.selected)("id",null==t?null:t.htmlId),Ot(3),or("ngTemplateOutlet",t.children?r.optgroupTemplate||n:r.optionTemplate||n)("ngTemplateOutletContext",oH(17,hre,t.value,t,t.index,r.searchTerm))}}function Are(i,e){if(1&i&&(ji(0,"span")(1,"span",33),pc(2),fn(),pc(3),fn()),2&i){const t=Jt(3);Ot(2),Ip(t.addTagText),Ot(),WD('"',t.searchTerm,'"')}}function Tre(i,e){}function Mre(i,e){if(1&i){const t=Mp();ji(0,"div",32),Gn("mouseover",function(){tr(t);return Hn(Jt(2).itemsList.unmarkItem())})("click",function(){tr(t);return Hn(Jt(2).selectTag())}),zn(1,Are,4,2,"ng-template",null,6,Vu)(3,Tre,0,0,"ng-template",12),fn()}if(2&i){const t=hc(2),n=Jt(2);zo("ng-option-marked",!n.itemsList.markedItem),Ot(3),or("ngTemplateOutlet",n.tagTemplate||t)("ngTemplateOutletContext",Df(4,j2,n.searchTerm))}}function Ire(i,e){if(1&i&&(ji(0,"div",34),pc(1),fn()),2&i){const t=Jt(3);Ot(),Ip(t.notFoundText)}}function Lre(i,e){}function Ore(i,e){if(1&i&&zn(0,Ire,2,1,"ng-template",null,7,Vu)(2,Lre,0,0,"ng-template",12),2&i){const t=hc(1),n=Jt(2);Ot(2),or("ngTemplateOutlet",n.notFoundTemplate||t)("ngTemplateOutletContext",Df(2,j2,n.searchTerm))}}function Rre(i,e){if(1&i&&(ji(0,"div",34),pc(1),fn()),2&i){const t=Jt(3);Ot(),Ip(t.typeToSearchText)}}function Pre(i,e){}function Nre(i,e){if(1&i&&zn(0,Rre,2,1,"ng-template",null,8,Vu)(2,Pre,0,0,"ng-template",19),2&i){const t=hc(1),n=Jt(2);Ot(2),or("ngTemplateOutlet",n.typeToSearchTemplate||t)}}function Bre(i,e){if(1&i&&(ji(0,"div",34),pc(1),fn()),2&i){const t=Jt(3);Ot(),Ip(t.loadingText)}}function Hre(i,e){}function Vre(i,e){if(1&i&&zn(0,Bre,2,1,"ng-template",null,9,Vu)(2,Hre,0,0,"ng-template",12),2&i){const t=hc(1),n=Jt(2);Ot(2),or("ngTemplateOutlet",n.loadingTextTemplate||t)("ngTemplateOutletContext",Df(2,j2,n.searchTerm))}}function zre(i,e){if(1&i){const t=Mp();ji(0,"ng-dropdown-panel",27),Gn("update",function(r){tr(t);return Hn(Jt().viewPortItems=r)})("scroll",function(r){tr(t);return Hn(Jt().scroll.emit(r))})("scrollToEnd",function(r){tr(t);return Hn(Jt().scrollToEnd.emit(r))})("outsideClick",function(){tr(t);return Hn(Jt().close())}),RD(1),H5(2,Dre,4,22,"div",28,P5().trackByOption,!0),zn(4,Mre,4,6,"div",29),PD(),zn(5,Ore,3,4)(6,Nre,3,1)(7,Vre,3,4),fn()}if(2&i){const t=Jt();zo("ng-select-multiple",t.multiple),or("virtualScroll",t.virtualScroll)("bufferAmount",t.bufferAmount)("appendTo",t.appendTo)("position",t.dropdownPosition)("headerTemplate",t.headerTemplate)("footerTemplate",t.footerTemplate)("filterValue",t.searchTerm)("items",t.itemsList.filteredItems)("markedItem",t.itemsList.markedItem)("ngClass",t.appendTo?t.ngClass?t.ngClass:t.classes:null)("id",t.dropdownId),Ot(2),V5(t.viewPortItems),Ot(2),Da(t.showAddTag?4:-1),Ot(),Da(t.showNoItemsFound()?5:-1),Ot(),Da(t.showTypeToSearch()?6:-1),Ot(),Da(t.loading&&0===t.itemsList.filteredItems.length?7:-1)}}const oG=/[&<>"']/g,Gre=RegExp(oG.source),$re={"&":"&","<":"<",">":">",'"':""","'":"'"};function $n(i){return null!=i}function q2(i){return"object"==typeof i&&$n(i)}function rA(i){return i instanceof Function}class K2{constructor(e){this.element=e,this.escape=!0}ngOnChanges(e){this.element.nativeElement.innerHTML=this.escape?function Wre(i){return i&&Gre.test(i)?i.replace(oG,e=>$re[e]):i}(this.ngItemLabel):this.ngItemLabel}static{this.\u0275fac=function(t){return new(t||K2)(Z(wi))}}static{this.\u0275dir=De({type:K2,selectors:[["","ngItemLabel",""]],inputs:{ngItemLabel:"ngItemLabel",escape:"escape"},standalone:!0,features:[yi]})}}class bb{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||bb)(Z(jt))}}static{this.\u0275dir=De({type:bb,selectors:[["","ng-option-tmp",""]],standalone:!0})}}class yb{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||yb)(Z(jt))}}static{this.\u0275dir=De({type:yb,selectors:[["","ng-optgroup-tmp",""]],standalone:!0})}}class Cb{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||Cb)(Z(jt))}}static{this.\u0275dir=De({type:Cb,selectors:[["","ng-label-tmp",""]],standalone:!0})}}class wb{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||wb)(Z(jt))}}static{this.\u0275dir=De({type:wb,selectors:[["","ng-multi-label-tmp",""]],standalone:!0})}}class kb{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||kb)(Z(jt))}}static{this.\u0275dir=De({type:kb,selectors:[["","ng-header-tmp",""]],standalone:!0})}}class _b{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||_b)(Z(jt))}}static{this.\u0275dir=De({type:_b,selectors:[["","ng-footer-tmp",""]],standalone:!0})}}class Eb{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||Eb)(Z(jt))}}static{this.\u0275dir=De({type:Eb,selectors:[["","ng-notfound-tmp",""]],standalone:!0})}}class Fb{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||Fb)(Z(jt))}}static{this.\u0275dir=De({type:Fb,selectors:[["","ng-placeholder-tmp",""]],standalone:!0})}}class xb{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||xb)(Z(jt))}}static{this.\u0275dir=De({type:xb,selectors:[["","ng-typetosearch-tmp",""]],standalone:!0})}}class Sb{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||Sb)(Z(jt))}}static{this.\u0275dir=De({type:Sb,selectors:[["","ng-loadingtext-tmp",""]],standalone:!0})}}class Db{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||Db)(Z(jt))}}static{this.\u0275dir=De({type:Db,selectors:[["","ng-tag-tmp",""]],standalone:!0})}}class Ab{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||Ab)(Z(jt))}}static{this.\u0275dir=De({type:Ab,selectors:[["","ng-loadingspinner-tmp",""]],standalone:!0})}}function sG(){return"axxxxxxxxxxx".replace(/[x]/g,()=>(16*Math.random()|0).toString(16))}const jre={"\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 oA(i){return i.replace(/[^\u0000-\u007E]/g,t=>jre[t]||t)}class qre{constructor(e,t){this._ngSelect=e,this._selectionModel=t,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 t=this.selectedItems[e];if(!t.disabled)return t}return null}setItems(e){this._items=e.map((t,n)=>this.mapItem(t,n)),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 t=this._ngSelect.multiple;t||this.clearSelected(),this._selectionModel.select(e,t,this._ngSelect.selectableGroupAsModel),this._ngSelect.hideSelected&&this._hideSelected(e)}unselect(e){e.selected&&(this._selectionModel.unselect(e,this._ngSelect.multiple),this._ngSelect.hideSelected&&$n(e.index)&&this._ngSelect.multiple&&this._showSelected(e))}findItem(e){let t;return t=this._ngSelect.compareWith?n=>this._ngSelect.compareWith(n.value,e):this._ngSelect.bindValue?n=>!n.children&&this.resolveNested(n.value,this._ngSelect.bindValue)===e:n=>n.value===e||!n.children&&n.label&&n.label===this.resolveNested(e,this._ngSelect.bindLabel),this._items.find(n=>t(n))}addItem(e){const t=this.mapItem(e,this._items.length);return this._items.push(t),this._filteredItems.push(t),t}clearSelected(e=!1){this._selectionModel.clear(e),this._items.forEach(t=>{t.selected=e&&t.selected&&t.disabled,t.marked=!1}),this._ngSelect.hideSelected&&this.resetFilteredItems()}findByLabel(e){return e=oA(e).toLocaleLowerCase(),this.filteredItems.find(t=>oA(t.label).toLocaleLowerCase().substr(0,e.length)===e)}filter(e){if(!e)return void this.resetFilteredItems();this._filteredItems=[],e=this._ngSelect.searchFn?e:oA(e).toLocaleLowerCase();const t=this._ngSelect.searchFn||this._defaultSearchFn,n=this._ngSelect.hideSelected;for(const r of Array.from(this._groups.keys())){const s=[];for(const a of this._groups.get(r)){if(n&&(a.parent&&a.parent.selected||a.selected))continue;t(e,this._ngSelect.searchFn?a.value:a)&&s.push(a)}if(s.length>0){const[a]=s.slice(-1);if(a.parent){const d=this._items.find(h=>h===a.parent);this._filteredItems.push(d)}this._filteredItems.push(...s)}}}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 t=this._getLastMarkedIndex();this._markedIndex=t>-1?t:e?this.filteredItems.findIndex(n=>!n.disabled):-1}resolveNested(e,t){if(!q2(e))return e;if(-1===t.indexOf("."))return e[t];{const n=t.split(".");let r=e;for(let s=0,a=n.length;s-1===this.selectedItems.indexOf(t)))}_showSelected(e){if(this._filteredItems.push(e),e.parent){const t=e.parent;this._filteredItems.find(r=>r===t)||this._filteredItems.push(t)}else if(e.children)for(const t of e.children)t.selected=!1,this._filteredItems.push(t);this._filteredItems=[...this._filteredItems.sort((t,n)=>t.index-n.index)]}_hideSelected(e){this._filteredItems=this._filteredItems.filter(t=>t!==e),e.parent?e.parent.children.every(n=>n.selected)&&(this._filteredItems=this._filteredItems.filter(n=>n!==e.parent)):e.children&&(this._filteredItems=this.filteredItems.filter(t=>t.parent!==e))}_defaultSearchFn(e,t){return oA(t.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(t=>t.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,t){const n=new Map;if(0===e.length)return n;if(Array.isArray(e[0].value[t])){for(const a of e){const d=(a.value[t]||[]).map((h,p)=>this.mapItem(h,p));n.set(a,d)}return n}const r=rA(this._ngSelect.groupBy),s=a=>{const d=r?t(a.value):a.value[t];return $n(d)?d:void 0};for(const a of e){const d=s(a),h=n.get(d);h?h.push(a):n.set(d,[a])}return n}_flatten(e){const t=rA(this._ngSelect.groupBy),n=[];for(const r of Array.from(e.keys())){let s=n.length;if(void 0===r){const v=e.get(void 0)||[];n.push(...v.map(y=>(y.index=s++,y)));continue}const a=q2(r),d={label:a?"":String(r),children:void 0,parent:null,index:s++,disabled:!this._ngSelect.selectableGroup,htmlId:sG()},h=t?this._ngSelect.bindLabel:this._ngSelect.groupBy,p=this._ngSelect.groupValue||(()=>a?r.value:{[h]:r}),g=e.get(r).map(v=>(v.parent=d,v.children=void 0,v.index=s++,v));d.children=g,d.value=p(r,g.map(v=>v.value)),n.push(d),n.push(...g)}return n}}var bc;!function(i){i[i.Tab=9]="Tab",i[i.Enter=13]="Enter",i[i.Esc=27]="Esc",i[i.Space=32]="Space",i[i.ArrowUp=38]="ArrowUp",i[i.ArrowDown=40]="ArrowDown",i[i.Backspace=8]="Backspace"}(bc||(bc={}));class Tb{constructor(){this._dimensions={itemHeight:0,panelHeight:0,itemsPerViewport:0}}get dimensions(){return this._dimensions}calculateItems(e,t,n){const r=this._dimensions,s=r.itemHeight*t,d=Math.max(0,e)/s*t;let h=Math.min(t,Math.ceil(d)+(r.itemsPerViewport+1));const g=Math.max(0,h-r.itemsPerViewport);let v=Math.min(g,Math.floor(d)),y=r.itemHeight*Math.ceil(v)-r.itemHeight*Math.min(v,n);return y=isNaN(y)?0:y,v=isNaN(v)?-1:v,h=isNaN(h)?-1:h,v-=n,v=Math.max(0,v),h+=n,h=Math.min(t,h),{topPadding:y,scrollHeight:s,start:v,end:h}}setDimensions(e,t){const n=Math.max(1,Math.floor(t/e));this._dimensions={itemHeight:e,panelHeight:t,itemsPerViewport:n}}getScrollTo(e,t,n){const{panelHeight:r}=this.dimensions,s=e+t,d=n+r;return r>=s&&n===e?null:s>d?n+s-d:e<=n?e:null}static{this.\u0275fac=function(t){return new(t||Tb)}}static{this.\u0275prov=ue({token:Tb,factory:Tb.\u0275fac})}}const aG=["top","right","bottom","left"],Kre=typeof requestAnimationFrame<"u"?$ne:Zne;class Mb{constructor(e,t,n,r,s){this._renderer=e,this._zone=t,this._panelService=n,this._document=s,this.items=[],this.position="auto",this.virtualScroll=!1,this.filterValue=null,this.update=new Je,this.scroll=new Je,this.scrollToEnd=new Je,this.outsideClick=new Je,this._destroy$=new mi,this._scrollToEndFired=!1,this._updateScrollHeight=!1,this._lastScrollPosition=0,this._dropdown=r.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:t}=this._panelService.dimensions,n=this.markedItem.index*e;return t>n?0:n}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 t=e.items;this._onItemsChange(t.currentValue,t.firstChange)}}ngOnDestroy(){this._destroy$.next(),this._destroy$.complete(),this._destroy$.unsubscribe(),this.appendTo&&this._renderer.removeChild(this._dropdown.parentNode,this._dropdown)}scrollTo(e,t=!1){if(!e)return;const n=this.items.indexOf(e);if(n<0||n>=this.itemsLength)return;let r;if(this.virtualScroll){const s=this._panelService.dimensions.itemHeight;r=this._panelService.getScrollTo(n*s,s,this._lastScrollPosition)}else{const s=this._dropdown.querySelector(`#${e.htmlId}`),a=t?s.offsetTop:this._lastScrollPosition;r=this._panelService.getScrollTo(s.offsetTop,s.clientHeight,a)}$n(r)&&(this._scrollablePanel.scrollTop=r)}scrollToTag(){const e=this._scrollablePanel;e.scrollTop=e.scrollHeight-e.clientHeight}adjustPosition(){this._updateYPosition()}_handleDropdownPosition(){this._currentPosition=this._calculateCurrentPosition(this._dropdown),aG.includes(this._currentPosition)?this._updateDropdownClass(this._currentPosition):this._updateDropdownClass("bottom"),this.appendTo&&this._updateYPosition(),this._dropdown.style.opacity="1"}_updateDropdownClass(e){aG.forEach(n=>{const r=`ng-select-${n}`;this._renderer.removeClass(this._dropdown,r),this._renderer.removeClass(this._select,r)});const t=`ng-select-${e}`;this._renderer.addClass(this._dropdown,t),this._renderer.addClass(this._select,t)}_handleScroll(){this._zone.runOutsideAngular(()=>{vb(this.scrollElementRef.nativeElement,"scroll").pipe(dm(this._destroy$),Hne(0,Kre)).subscribe(e=>{const t=e.path||e.composedPath&&e.composedPath();if(!t||0===t.length&&!e.target)return;const n=t&&0!==t.length?t[0].scrollTop:e.target.scrollTop;this._onContentScrolled(n)})})}_handleOutsideClick(){this._document&&this._zone.runOutsideAngular(()=>{OP(vb(this._document,"touchstart",{capture:!0}),vb(this._document,"click",{capture:!0})).pipe(dm(this._destroy$)).subscribe(e=>this._checkToClose(e))})}_checkToClose(e){if(this._select.contains(e.target)||this._dropdown.contains(e.target))return;const t=e.path||e.composedPath&&e.composedPath();e.target&&e.target.shadowRoot&&t&&t[0]&&this._select.contains(t[0])||this._zone.run(()=>this.outsideClick.emit())}_onItemsChange(e,t){this.items=e||[],this._scrollToEndFired=!1,this.itemsLength=e.length,this.virtualScroll?this._updateItemsRange(t):(this._setVirtualHeight(),this._updateItems(t))}_updateItems(e){this.update.emit(this.items),!1!==e&&this._zone.runOutsideAngular(()=>{Promise.resolve().then(()=>{const t=this._scrollablePanel.clientHeight;this._panelService.setDimensions(0,t),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 t=this._panelService.calculateItems(e,this.itemsLength,this.bufferAmount);this._updateVirtualHeight(t.scrollHeight),this._contentPanel.style.transform=`translateY(${t.topPadding}px)`,this._zone.run(()=>{this.update.emit(this.items.slice(t.start,t.end)),this.scroll.emit({start:t.start,end:t.end})}),$n(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 n=this._dropdown.querySelector(`#${e.htmlId}`).clientHeight;this._virtualPadding.style.height=n*this.itemsLength+"px";const r=this._scrollablePanel.clientHeight;return this._panelService.setDimensions(n,r),this._panelService.dimensions})}_fireScrollToEnd(e){if(this._scrollToEndFired||0===e)return;const t=this.virtualScroll?this._virtualPadding:this._contentPanel;e+this._dropdown.clientHeight>=t.clientHeight-1&&(this._zone.run(()=>this.scrollToEnd.emit()),this._scrollToEndFired=!0)}_calculateCurrentPosition(e){if("auto"!==this.position)return this.position;const t=this._select.getBoundingClientRect(),n=document.documentElement.scrollTop||document.body.scrollTop;return t.top+window.pageYOffset+t.height+e.getBoundingClientRect().height>n+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(),t=this._parent.getBoundingClientRect(),n=e.left-t.left;this._dropdown.style.left=n+"px",this._dropdown.style.width=e.width+"px",this._dropdown.style.minWidth=e.width+"px"}_updateYPosition(){const e=this._select.getBoundingClientRect(),t=this._parent.getBoundingClientRect(),n=e.height;if("top"===this._currentPosition){const r=t.bottom-e.bottom;this._dropdown.style.bottom=r+n+"px",this._dropdown.style.top="auto"}else if("bottom"===this._currentPosition){const r=e.top-t.top;this._dropdown.style.top=r+n+"px",this._dropdown.style.bottom="auto"}}_setupMousedownListener(){this._zone.runOutsideAngular(()=>{vb(this._dropdown,"mousedown").pipe(dm(this._destroy$)).subscribe(e=>{"INPUT"!==e.target.tagName&&e.preventDefault()})})}static{this.\u0275fac=function(t){return new(t||Mb)(Z(Co),Z(ni),Z(Tb),Z(wi),Z(sr,8))}}static{this.\u0275cmp=Kd({type:Mb,selectors:[["ng-dropdown-panel"]],viewQuery:function(t,n){if(1&t&&(Sf(nre,7,wi),Sf(rre,7,wi),Sf(ore,7,wi)),2&t){let r;mr(r=gr())&&(n.contentElementRef=r.first),mr(r=gr())&&(n.scrollElementRef=r.first),mr(r=gr())&&(n.paddingElementRef=r.first)}},inputs:{items:"items",markedItem:"markedItem",position:"position",appendTo:"appendTo",bufferAmount:"bufferAmount",virtualScroll:[2,"virtualScroll","virtualScroll",qi],headerTemplate:"headerTemplate",footerTemplate:"footerTemplate",filterValue:"filterValue"},outputs:{update:"update",scroll:"scroll",scrollToEnd:"scrollToEnd",outsideClick:"outsideClick"},standalone:!0,features:[wp,yi,L0],ngContentSelectors:rG,decls:9,vars:6,consts:[["scroll",""],["padding",""],["content",""],[1,"ng-dropdown-header"],["role","listbox",1,"ng-dropdown-panel-items","scroll-host"],[1,"ng-dropdown-footer"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(t,n){1&t&&(GD(),zn(0,sre,2,4,"div",3),ji(1,"div",4,0),Tp(3,"div",null,1),ji(5,"div",null,2),$D(7),fn()(),zn(8,are,2,4,"div",5)),2&t&&(Da(n.headerTemplate?0:-1),Ot(3),zo("total-padding",n.virtualScroll),Ot(2),zo("scrollable-content",n.virtualScroll&&n.items.length),Ot(3),Da(n.footerTemplate?8:-1))},dependencies:[Bp],encapsulation:2,changeDetection:0})}}class Ib{constructor(e){this.elementRef=e,this.disabled=!1,this.stateChange$=new mi}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()}static{this.\u0275fac=function(t){return new(t||Ib)(Z(wi))}}static{this.\u0275cmp=Kd({type:Ib,selectors:[["ng-option"]],inputs:{value:"value",disabled:[2,"disabled","disabled",qi]},standalone:!0,features:[wp,yi,L0],ngContentSelectors:rG,decls:1,vars:0,template:function(t,n){1&t&&(GD(),$D(0))},encapsulation:2,changeDetection:0})}}function lG(){return new Yre}class Yre{constructor(){this._selected=[]}get value(){return this._selected}select(e,t,n){if(e.selected=!0,(!e.children||!t&&n)&&this._selected.push(e),t)if(e.parent){const r=e.parent.children.length,s=e.parent.children.filter(a=>a.selected).length;e.parent.selected=r===s}else e.children&&(this._setChildrenSelectedState(e.children,!0),this._removeChildren(e),n&&this._activeChildren(e)?this._selected=[...this._selected.filter(r=>r.parent!==e),e]:this._selected=[...this._selected,...e.children.filter(r=>!r.disabled)])}unselect(e,t){if(this._selected=this._selected.filter(n=>n!==e),e.selected=!1,t)if(e.parent&&e.parent.selected){const n=e.parent.children;this._removeParent(e.parent),this._removeChildren(e.parent),this._selected.push(...n.filter(r=>r!==e&&!r.disabled)),e.parent.selected=!1}else e.children&&(this._setChildrenSelectedState(e.children,!1),this._removeChildren(e))}clear(e){this._selected=e?this._selected.filter(t=>t.disabled):[]}_setChildrenSelectedState(e,t){for(const n of e)n.disabled||(n.selected=t)}_removeChildren(e){this._selected=[...this._selected.filter(t=>t.parent!==e),...e.children.filter(t=>t.parent===e&&t.disabled&&t.selected)]}_removeParent(e){this._selected=this._selected.filter(t=>t!==e)}_activeChildren(e){return e.children.every(t=>!t.disabled||t.selected)}}class Y2{constructor(){this.fixedPlaceholder=!0,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{this.\u0275fac=function(t){return new(t||Y2)}}static{this.\u0275prov=ue({token:Y2,factory:Y2.\u0275fac,providedIn:"root"})}}class Z2{warn(e){console.warn(e)}static{this.\u0275fac=function(t){return new(t||Z2)}}static{this.\u0275prov=ue({token:Z2,factory:Z2.\u0275fac,providedIn:"root"})}}const cG=new ge("ng-select-selection-model");class Lb{constructor(e,t,n,r,s,a,d){this.classes=e,this.autoFocus=t,this.config=n,this._cd=a,this._console=d,this.markFirst=!0,this.fixedPlaceholder=!0,this.preventToggleOnRightClick=!1,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.ngClass=null,this.multiple=!1,this.addTag=!1,this.searchable=!0,this.clearable=!0,this.isOpen=!1,this.blurEvent=new Je,this.focusEvent=new Je,this.changeEvent=new Je,this.openEvent=new Je,this.closeEvent=new Je,this.searchEvent=new Je,this.clearEvent=new Je,this.addEvent=new Je,this.removeEvent=new Je,this.scroll=new Je,this.scrollToEnd=new Je,this.useDefaultClass=!0,this.viewPortItems=[],this.searchTerm=null,this.dropdownId=sG(),this.escapeHTML=!0,this._defaultLabel="label",this._pressedKeys=[],this._isComposing=!1,this._destroy$=new mi,this._keyPress$=new mi,this._items=[],this.keyDownFn=h=>!0,this.clearItem=h=>{const p=this.selectedItems.find(g=>g.value===h);this.unselect(p)},this.trackByOption=(h,p)=>this.trackByFn?this.trackByFn(p.value):p,this._onChange=h=>{},this._onTouched=()=>{},this._mergeGlobalConfig(n),this.itemsList=new qre(this,r?r():lG()),this.element=s.nativeElement}get filtered(){return!!this.searchTerm&&this.searchable||this._isComposing}get single(){return!this.multiple}get items(){return this._items}set items(e){this._itemsAreUsed=!0,this._items=e??[]}get disabled(){return this.readonly||this._disabled}get compareWith(){return this._compareWith}set compareWith(e){if(null!=e&&!rA(e))throw Error("`compareWith` must be a function.");this._compareWith=e}get clearSearchOnAdd(){return $n(this._clearSearchOnAdd)?this._clearSearchOnAdd:$n(this.config.clearSearchOnAdd)?this.config.clearSearchOnAdd:this.closeOnSelect}set clearSearchOnAdd(e){this._clearSearchOnAdd=e}get deselectOnClick(){return $n(this._deselectOnClick)?this._deselectOnClick:$n(this.config.deselectOnClick)?this.config.deselectOnClick:this.multiple}set deselectOnClick(e){this._deselectOnClick=e}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}get showAddTag(){if(!this._validTerm)return!1;const e=this.searchTerm.toLowerCase().trim();return this.addTag&&!this.itemsList.filteredItems.some(t=>t.label.toLowerCase()===e)&&(!this.hideSelected&&this.isOpen||!this.selectedItems.some(t=>t.label.toLowerCase()===e))&&!this.loading}get _editableSearchTerm(){return this.editableSearchTerm&&!this.multiple}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}ngOnInit(){this._handleKeyPresses(),this._setInputAttributes()}ngOnChanges(e){e.multiple&&this.itemsList.clearSelected(),e.items&&this._setItems(e.items.currentValue||[]),e.isOpen&&(this._manualOpen=$n(e.isOpen.currentValue))}ngAfterViewInit(){this._itemsAreUsed||(this.escapeHTML=!1,this._setItemsFromNgOptions()),$n(this.autoFocus)&&this.focus()}ngOnDestroy(){this._destroy$.next(),this._destroy$.complete()}handleKeyDown(e){if(bc[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 t=e.target;this.clearButton&&this.clearButton.nativeElement===t?this.handleKeyCodeClear(e):this.handleKeyCodeInput(e)}handleKeyCodeInput(e){switch(e.which){case bc.ArrowDown:this._handleArrowDown(e);break;case bc.ArrowUp:this._handleArrowUp(e);break;case bc.Space:this._handleSpace(e);break;case bc.Enter:this._handleEnter(e);break;case bc.Tab:this._handleTab(e);break;case bc.Esc:this.close(),e.preventDefault();break;case bc.Backspace:this._handleBackspace()}}handleKeyCodeClear(e){if(e.which===bc.Enter)this.handleClearClick(),e.preventDefault()}handleMousedown(e){if(this.preventToggleOnRightClick&&2===e.button)return!1;const t=e.target;"INPUT"!==t.tagName&&e.preventDefault(),t.classList.contains("ng-clear-wrapper")?this.handleClearClick():t.classList.contains("ng-arrow-wrapper")?this.handleArrowClick():t.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())}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(),this._onSelectionChanged()}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),this._onSelectionChanged())}selectTag(){let e;e=rA(this.addTag)?this.addTag(this.searchTerm):this._primitive?this.searchTerm:{[this.bindLabel]:this.searchTerm};const t=n=>this._isTypeahead||!this.isOpen?this.itemsList.mapItem(n,null):this.itemsList.addItem(n);!function Ure(i){return i instanceof Promise}(e)?e&&this.select(t(e)):e.then(n=>this.select(t(n))).catch(()=>{})}showClear(){return this.clearable&&(this.hasValue||this.searchTerm)&&!this.disabled}focusOnClear(){this.blur(),this.clearButton&&this.clearButton.nativeElement.focus()}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(t=>t.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 t=e[0];this.bindLabel=this.bindLabel||this._defaultLabel,this._primitive=$n(t)?!q2(t):this._primitive||this.bindLabel===this._defaultLabel,this.itemsList.setItems(e),e.length>0&&this.hasValue&&this.itemsList.mapSelectedItems(),this.isOpen&&$n(this.searchTerm)&&!this._isTypeahead&&this.itemsList.filter(this.searchTerm),(this._isTypeahead||this.isOpen)&&this.itemsList.markSelectedOrDefault(this.markFirst)}_setItemsFromNgOptions(){const e=n=>{this.items=n.map(r=>({$ngOptionValue:r.value,$ngOptionLabel:r.elementRef.nativeElement.innerHTML,disabled:r.disabled})),this.itemsList.setItems(this.items),this.hasValue&&this.itemsList.mapSelectedItems(),this.detectChanges()},t=()=>{const n=OP(this.ngOptions.changes,this._destroy$);OP(...this.ngOptions.map(r=>r.stateChange$)).pipe(dm(n)).subscribe(r=>{const s=this.itemsList.findItem(r.value);s.disabled=r.disabled,s.label=r.label||s.label,this._cd.detectChanges()})};this.ngOptions.changes.pipe(eG(this.ngOptions),dm(this._destroy$)).subscribe(n=>{this.bindLabel=this._defaultLabel,e(n),t()})}_isValidWriteValue(e){if(!$n(e)||this.multiple&&""===e||Array.isArray(e)&&0===e.length)return!1;const t=n=>!(!$n(this.compareWith)&&q2(n)&&this.bindValue)||(this._console.warn(`Setting object(${JSON.stringify(n)}) as your model with bindValue is not allowed unless [compareWith] is used.`),!1);return this.multiple?Array.isArray(e)?e.every(n=>t(n)):(this._console.warn("Multiple select ngModel should be array."),!1):t(e)}_handleWriteValue(e){if(!this._isValidWriteValue(e))return;const t=n=>{let r=this.itemsList.findItem(n);if(r)this.itemsList.select(r);else{const s=q2(n),a=!s&&!this.bindValue;s||a?this.itemsList.select(this.itemsList.mapItem(n,null)):this.bindValue&&(r={[this.bindLabel]:null,[this.bindValue]:n},this.itemsList.select(this.itemsList.mapItem(r,null)))}};this.multiple?e.forEach(n=>t(n)):t(e)}_handleKeyPresses(){this.searchable||this._keyPress$.pipe(dm(this._destroy$),Uo(e=>this._pressedKeys.push(e)),tG(200),rn(()=>this._pressedKeys.length>0),qe(()=>this._pressedKeys.join(""))).subscribe(e=>{const t=this.itemsList.findByLabel(e);t&&(this.isOpen?(this.itemsList.markItem(t),this._scrollToMarked(),this._cd.markForCheck()):this.select(t)),this._pressedKeys=[]})}_setInputAttributes(){const e=this.searchInput.nativeElement,t={type:"text",autocorrect:"off",autocapitalize:"off",autocomplete:this.labelForId?"off":this.dropdownId,...this.inputAttrs};for(const n of Object.keys(t))e.setAttribute(n,t[n])}_updateNgModel(){const e=[];for(const n of this.selectedItems)if(this.bindValue){let r=null;if(n.children){const s=this.groupValue?this.bindValue:this.groupBy;r=n.value[s||this.groupBy]}else r=this.itemsList.resolveNested(n.value,this.bindValue);e.push(r)}else e.push(n.value);const t=this.selectedItems.map(n=>n.value);this.multiple?(this._onChange(e),this.changeEvent.emit(t)):(this._onChange($n(e[0])?e[0]:null),this.changeEvent.emit(t[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()&&!e.shiftKey)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 t=this.itemsList.markedIndex+e;return this.addTag&&this.searchTerm&&this.itemsList.markedItem&&(t<0||t===this.itemsList.filteredItems.length)}_handleBackspace(){this.searchTerm||!this.clearable||!this.clearOnBackspace||!this.hasValue||(this.multiple?this.unselect(this.itemsList.lastSelectedItem):this.clearModel())}_mergeGlobalConfig(e){this.placeholder=this.placeholder||e.placeholder,this.fixedPlaceholder=this.fixedPlaceholder||e.fixedPlaceholder,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=$n(this.virtualScroll)?this.virtualScroll:!!$n(e.disableVirtualScroll)&&!e.disableVirtualScroll,this.openOnEnter=$n(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{this.\u0275fac=function(t){return new(t||Lb)(dl("class"),dl("autofocus"),Z(Y2),Z(cG,8),Z(wi),Z(bn),Z(Z2))}}static{this.\u0275cmp=Kd({type:Lb,selectors:[["ng-select"]],contentQueries:function(t,n,r){if(1&t&&(bs(r,bb,5,jt),bs(r,yb,5,jt),bs(r,Cb,5,jt),bs(r,wb,5,jt),bs(r,kb,5,jt),bs(r,_b,5,jt),bs(r,Eb,5,jt),bs(r,Fb,5,jt),bs(r,xb,5,jt),bs(r,Sb,5,jt),bs(r,Db,5,jt),bs(r,Ab,5,jt),bs(r,Ib,5)),2&t){let s;mr(s=gr())&&(n.optionTemplate=s.first),mr(s=gr())&&(n.optgroupTemplate=s.first),mr(s=gr())&&(n.labelTemplate=s.first),mr(s=gr())&&(n.multiLabelTemplate=s.first),mr(s=gr())&&(n.headerTemplate=s.first),mr(s=gr())&&(n.footerTemplate=s.first),mr(s=gr())&&(n.notFoundTemplate=s.first),mr(s=gr())&&(n.placeholderTemplate=s.first),mr(s=gr())&&(n.typeToSearchTemplate=s.first),mr(s=gr())&&(n.loadingTextTemplate=s.first),mr(s=gr())&&(n.tagTemplate=s.first),mr(s=gr())&&(n.loadingSpinnerTemplate=s.first),mr(s=gr())&&(n.ngOptions=s)}},viewQuery:function(t,n){if(1&t&&(Sf(Mb,5),Sf(lre,7),Sf(cre,5)),2&t){let r;mr(r=gr())&&(n.dropdownPanel=r.first),mr(r=gr())&&(n.searchInput=r.first),mr(r=gr())&&(n.clearButton=r.first)}},hostVars:20,hostBindings:function(t,n){1&t&&Gn("keydown",function(s){return n.handleKeyDown(s)}),2&t&&zo("ng-select-typeahead",n.typeahead)("ng-select-multiple",n.multiple)("ng-select-taggable",n.addTag)("ng-select-searchable",n.searchable)("ng-select-clearable",n.clearable)("ng-select-opened",n.isOpen)("ng-select",n.useDefaultClass)("ng-select-filtered",n.filtered)("ng-select-single",n.single)("ng-select-disabled",n.disabled)},inputs:{bindLabel:"bindLabel",bindValue:"bindValue",ariaLabel:"ariaLabel",markFirst:[2,"markFirst","markFirst",qi],placeholder:"placeholder",fixedPlaceholder:"fixedPlaceholder",notFoundText:"notFoundText",typeToSearchText:"typeToSearchText",preventToggleOnRightClick:"preventToggleOnRightClick",addTagText:"addTagText",loadingText:"loadingText",clearAllText:"clearAllText",appearance:"appearance",dropdownPosition:"dropdownPosition",appendTo:"appendTo",loading:[2,"loading","loading",qi],closeOnSelect:[2,"closeOnSelect","closeOnSelect",qi],hideSelected:[2,"hideSelected","hideSelected",qi],selectOnTab:[2,"selectOnTab","selectOnTab",qi],openOnEnter:[2,"openOnEnter","openOnEnter",qi],maxSelectedItems:[2,"maxSelectedItems","maxSelectedItems",H0],groupBy:"groupBy",groupValue:"groupValue",bufferAmount:[2,"bufferAmount","bufferAmount",H0],virtualScroll:[2,"virtualScroll","virtualScroll",qi],selectableGroup:[2,"selectableGroup","selectableGroup",qi],selectableGroupAsModel:[2,"selectableGroupAsModel","selectableGroupAsModel",qi],searchFn:"searchFn",trackByFn:"trackByFn",clearOnBackspace:[2,"clearOnBackspace","clearOnBackspace",qi],labelForId:"labelForId",inputAttrs:"inputAttrs",tabIndex:[2,"tabIndex","tabIndex",H0],readonly:[2,"readonly","readonly",qi],searchWhileComposing:[2,"searchWhileComposing","searchWhileComposing",qi],minTermLength:[2,"minTermLength","minTermLength",H0],editableSearchTerm:[2,"editableSearchTerm","editableSearchTerm",qi],ngClass:"ngClass",typeahead:"typeahead",multiple:[2,"multiple","multiple",qi],addTag:"addTag",searchable:[2,"searchable","searchable",qi],clearable:[2,"clearable","clearable",qi],isOpen:"isOpen",items:"items",compareWith:"compareWith",clearSearchOnAdd:"clearSearchOnAdd",deselectOnClick:"deselectOnClick",keyDownFn:"keyDownFn"},outputs:{blurEvent:"blur",focusEvent:"focus",changeEvent:"change",openEvent:"open",closeEvent:"close",searchEvent:"search",clearEvent:"clear",addEvent:"add",removeEvent:"remove",scroll:"scroll",scrollToEnd:"scrollToEnd"},standalone:!0,features:[vn([{provide:vc,useExisting:Di(()=>Lb),multi:!0},Tb]),wp,yi,L0],decls:13,vars:19,consts:[["searchInput",""],["defaultPlaceholderTemplate",""],["defaultLabelTemplate",""],["defaultLoadingSpinnerTemplate",""],["clearButton",""],["defaultOptionTemplate",""],["defaultTagTemplate",""],["defaultNotFoundTemplate",""],["defaultTypeToSearchTemplate",""],["defaultLoadingTextTemplate",""],[1,"ng-select-container",3,"mousedown"],[1,"ng-value-container"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"ng-input"],["aria-autocomplete","list","role","combobox",3,"blur","change","compositionend","compositionstart","focus","input","disabled","readOnly","value"],["role","button","tabindex","0",1,"ng-clear-wrapper",3,"title"],[1,"ng-arrow-wrapper"],[1,"ng-arrow"],["role","listbox","aria-label","Options list",1,"ng-dropdown-panel",3,"virtualScroll","bufferAmount","appendTo","position","headerTemplate","footerTemplate","filterValue","items","markedItem","ng-select-multiple","ngClass","id"],[3,"ngTemplateOutlet"],[1,"ng-placeholder"],[1,"ng-value",3,"ng-value-disabled"],[1,"ng-value"],["aria-hidden","true",1,"ng-value-icon","left",3,"click"],[1,"ng-value-label",3,"ngItemLabel","escape"],[1,"ng-spinner-loader"],["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"],[1,"ng-option",3,"ng-option-disabled","ng-option-selected","ng-optgroup","ng-option","ng-option-child","ng-option-marked"],["role","option",1,"ng-option",3,"ng-option-marked"],[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(t,n){if(1&t){const r=Mp();ji(0,"div",10),Gn("mousedown",function(a){return tr(r),Hn(n.handleMousedown(a))}),ji(1,"div",11),zn(2,gre,3,1)(3,yre,2,0)(4,wre,1,5,null,12),ji(5,"div",13)(6,"input",14,0),Gn("blur",function(a){return tr(r),Hn(n.onInputBlur(a))})("change",function(a){return tr(r),Hn(a.stopPropagation())})("compositionend",function(){tr(r);const a=hc(7);return Hn(n.onCompositionEnd(a.value))})("compositionstart",function(){return tr(r),Hn(n.onCompositionStart())})("focus",function(a){return tr(r),Hn(n.onInputFocus(a))})("input",function(){tr(r);const a=hc(7);return Hn(n.filter(a.value))}),fn()()(),zn(8,Ere,3,1)(9,Fre,4,1,"span",15),ji(10,"span",16),Tp(11,"span",17),fn()(),zn(12,zre,8,17,"ng-dropdown-panel",18)}2&t&&(zo("ng-appearance-outline","outline"===n.appearance)("ng-has-value",n.hasValue),Ot(2),Da(0===n.selectedItems.length&&!n.searchTerm||!0===n.fixedPlaceholder?2:-1),Ot(),Da(n.multiLabelTemplate&&n.multiple||!(n.selectedItems.length>0)?-1:3),Ot(),Da(n.multiple&&n.multiLabelTemplate&&n.selectedValues.length>0?4:-1),Ot(2),or("disabled",n.disabled)("readOnly",!n.searchable||n.itemsList.maxItemsSelected)("value",n.searchTerm?n.searchTerm:""),ko("aria-activedescendant",n.isOpen?null==n.itemsList||null==n.itemsList.markedItem?null:n.itemsList.markedItem.htmlId:null)("aria-controls",n.isOpen?n.dropdownId:null)("aria-expanded",n.isOpen)("aria-label",n.ariaLabel)("id",n.labelForId)("tabindex",n.tabIndex),Ot(2),Da(n.loading?8:-1),Ot(),Da(n.showClear()?9:-1),Ot(3),Da(n.isOpen?12:-1))},dependencies:[Bp,K2,Mb,Pp],styles:['@charset "UTF-8";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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:unset;user-select:unset;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}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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})}}class sA{static{this.\u0275fac=function(t){return new(t||sA)}}static{this.\u0275mod=Er({type:sA,imports:[Mb,Ib,Lb,yb,bb,Cb,wb,kb,_b,Fb,Eb,xb,Sb,Db,Ab,K2],exports:[Lb,Ib,yb,bb,Cb,wb,kb,_b,Fb,Eb,xb,Sb,Db,Ab]})}static{this.\u0275inj=Qn({providers:[{provide:cG,useValue:lG}]})}}const Zre=["*"],Jre=i=>["nav-item",i];function Xre(i,e){if(1&i){const t=Mp();ji(0,"span",7),Gn("click",function(r){tr(t);const s=Jt().$implicit,a=Jt();return r.preventDefault(),Hn(a.removeTab(s))}),pc(1," \u274c"),fn()}}function Qre(i,e){if(1&i){const t=Mp();ji(0,"li",3),Gn("keydown",function(r){const s=tr(t).index;return Hn(Jt().keyNavActions(r,s))}),ji(1,"a",4),Gn("click",function(){return Hn(tr(t).$implicit.active=!0)}),ji(2,"span",5),pc(3),fn(),zn(4,Xre,2,0,"span",6),fn()()}if(2&i){const t=e.$implicit;zo("active",t.active)("disabled",t.disabled),or("ngClass",Df(15,Jre,t.customClass||"")),Ot(),zo("active",t.active)("disabled",t.disabled),ko("aria-controls",t.id?t.id:"")("aria-selected",!!t.active)("id",t.id?t.id+"-link":""),Ot(),or("ngTransclude",t.headingRef),Ot(),Ip(t.heading),Ot(),or("ngIf",t.removable)}}class Ob{set ngTransclude(e){this._ngTransclude=e,e&&this.viewRef.createEmbeddedView(e)}get ngTransclude(){return this._ngTransclude}constructor(e){this.viewRef=e}static{this.\u0275fac=function(t){return new(t||Ob)(Z(wo))}}static{this.\u0275dir=De({type:Ob,selectors:[["","ngTransclude",""]],inputs:{ngTransclude:"ngTransclude"},standalone:!0})}}class J2{constructor(){this.type="tabs",this.isKeysAllowed=!0,this.ariaLabel="Tabs"}static{this.\u0275fac=function(t){return new(t||J2)}}static{this.\u0275prov=ue({token:J2,factory:J2.\u0275fac,providedIn:"root"})}}class Rb{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,t,n){this.renderer=t,this.elementRef=n,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,t={reselect:!0,emit:!0}){const n=this.tabs.indexOf(e);if(-1!==n&&!this.isDestroyed){if(t.reselect&&e.active&&this.hasAvailableTabs(n)){const r=this.getClosestTabIndex(n);this.tabs[r].active=!0}t.emit&&e.removed.emit(e),this.tabs.splice(n,1),e.elementRef.nativeElement.parentNode&&this.renderer.removeChild(e.elementRef.nativeElement.parentNode,e.elementRef.nativeElement)}}keyNavActions(e,t){if(!this.isKeysAllowed)return;const n=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 n[t%n.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[t].removable){if(this.removeTab(this.tabs[t]),n[t+1])return void n[(t+1)%n.length].focus();n[n.length-1]&&n[0].focus()}}else{e.preventDefault();let r,s=1,a=t;do{a-s<0?(a=n.length-1,r=n[a],s=0):r=n[a-s],s++}while(r.classList.contains("disabled"));r.focus()}else{e.preventDefault();let r,s=0;do{r=n[s%n.length],s++}while(r.classList.contains("disabled"));r.focus()}else{let r,s=1,a=t;do{a-s<0?(a=n.length-1,r=n[a],s=0):r=n[a-s],s++}while(r.classList.contains("disabled"));r.focus()}else{let r,s=1;do{r=n[(t+s)%n.length],s++}while(r.classList.contains("disabled"));r.focus()}}getClosestTabIndex(e){const t=this.tabs.length;if(!t)return-1;for(let n=1;n<=t;n+=1){const r=e-n,s=e+n;if(this.tabs[r]&&!this.tabs[r].disabled)return r;if(this.tabs[s]&&!this.tabs[s].disabled)return s}return-1}hasAvailableTabs(e){const t=this.tabs.length;if(!t)return!1;for(let n=0;n{this.renderer.removeClass(this.elementRef.nativeElement,t)}),this._customClass=e?e.trim():"",this.customClass&&this.customClass.split(" ").forEach(t=>{this.renderer.addClass(this.elementRef.nativeElement,t)})}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(t=>{t!==this&&(t.active=!1)})}}get ariaLabelledby(){return this.id?`${this.id}-link`:""}constructor(e,t,n){this.elementRef=t,this.renderer=n,this.disabled=!1,this.removable=!1,this.selectTab=new Je,this.deselect=new Je,this.removed=new Je,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{this.\u0275fac=function(t){return new(t||Pb)(Z(Rb),Z(wi),Z(Co))}}static{this.\u0275dir=De({type:Pb,selectors:[["tab"],["","tab",""]],hostVars:7,hostBindings:function(t,n){2&t&&(ko("id",n.id)("role",n.role)("aria-labelledby",n.ariaLabelledby),zo("active",n.active)("tab-pane",n.addClass))},inputs:{heading:"heading",id:"id",disabled:"disabled",removable:"removable",customClass:"customClass",active:"active"},outputs:{selectTab:"selectTab",deselect:"deselect",removed:"removed"},exportAs:["tab"],standalone:!0})}}class X2{constructor(e,t){t.headingRef=e}static{this.\u0275fac=function(t){return new(t||X2)(Z(jt),Z(Pb))}}static{this.\u0275dir=De({type:X2,selectors:[["","tabHeading",""]],standalone:!0})}}class Q2{static forRoot(){return{ngModule:Q2,providers:[]}}static{this.\u0275fac=function(t){return new(t||Q2)}}static{this.\u0275mod=Er({type:Q2,imports:[Hp,Ob,Pb,Rb,X2],exports:[Pb,Rb,X2,Ob]})}static{this.\u0275inj=Qn({imports:[Hp]})}}function vd(i){return!!i&&(i instanceof ci||ai(i.lift)&&ai(i.subscribe))}function e_(i){return new ci(e=>{Cs(i()).subscribe(e)})}class eoe extends mi{constructor(e=1/0,t=1/0,n=TP){super(),this._bufferSize=e,this._windowTime=t,this._timestampProvider=n,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=t===1/0,this._bufferSize=Math.max(1,e),this._windowTime=Math.max(1,t)}next(e){const{isStopped:t,_buffer:n,_infiniteTimeWindow:r,_timestampProvider:s,_windowTime:a}=this;t||(n.push(e),!r&&n.push(s.now()+a)),this._trimBuffer(),super.next(e)}_subscribe(e){this._throwIfClosed(),this._trimBuffer();const t=this._innerSubscribe(e),{_infiniteTimeWindow:n,_buffer:r}=this,s=r.slice();for(let a=0;a{n.unsubscribe(),i()}});return Cs(e(...t)).subscribe(n)}function dG(i,e,t){let n,r=!1;return i&&"object"==typeof i?({bufferSize:n=1/0,windowTime:e=1/0,refCount:r=!1,scheduler:t}=i):n=i??1/0,function toe(i={}){const{connector:e=()=>new mi,resetOnError:t=!0,resetOnComplete:n=!0,resetOnRefCountZero:r=!0}=i;return s=>{let a,d,h,p=0,g=!1,v=!1;const y=()=>{d?.unsubscribe(),d=void 0},C=()=>{y(),a=h=void 0,g=v=!1},k=()=>{const E=a;C(),E?.unsubscribe()};return xi((E,x)=>{p++,!v&&!g&&y();const S=h=h??e();x.add(()=>{p--,0===p&&!v&&!g&&(d=RP(k,r))}),S.subscribe(x),!a&&p>0&&(a=new ca({next:D=>S.next(D),error:D=>{v=!0,y(),d=RP(C,t,D),S.error(D)},complete:()=>{g=!0,y(),d=RP(C,n),S.complete()}}),Cs(E).subscribe(a))})(s)}}({connector:()=>new eoe(n,e,t),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:r})}class t_{}class n1 extends t_{getTranslation(e){return He({})}static \u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(n1)))(n||n1)}})();static \u0275prov=ue({token:n1,factory:n1.\u0275fac})}class PP{}class Nb{handle(e){return e.key}static \u0275fac=function(t){return new(t||Nb)};static \u0275prov=ue({token:Nb,factory:Nb.\u0275fac})}function i_(i,e){if(i===e)return!0;if(null===i||null===e)return!1;if(i!=i&&e!=e)return!0;let r,s,a,t=typeof i;if(t==typeof e&&"object"==t){if(!Array.isArray(i)){if(Array.isArray(e))return!1;for(s in a=Object.create(null),i){if(!i_(i[s],e[s]))return!1;a[s]=!0}for(s in e)if(!(s in a)&&typeof e[s]<"u")return!1;return!0}if(!Array.isArray(e))return!1;if((r=i.length)==e.length){for(s=0;s{NP(e[n])?n in i?t[n]=uG(i[n],e[n]):Object.assign(t,{[n]:e[n]}):Object.assign(t,{[n]:e[n]})}),t}class aA{}class r1 extends aA{templateMatcher=/{{\s?([^{}\s]*)\s?}}/g;interpolate(e,t){let n;return n="string"==typeof e?this.interpolateString(e,t):"function"==typeof e?this.interpolateFunction(e,t):e,n}getValue(e,t){let n="string"==typeof t?t.split("."):[t];t="";do{t+=n.shift(),!Ma(e)||!Ma(e[t])||"object"!=typeof e[t]&&n.length?n.length?t+=".":e=void 0:(e=e[t],t="")}while(n.length);return e}interpolateFunction(e,t){return e(t)}interpolateString(e,t){return t?e.replace(this.templateMatcher,(n,r)=>{let s=this.getValue(t,r);return Ma(s)?s:n}):e}static \u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(r1)))(n||r1)}})();static \u0275prov=ue({token:r1,factory:r1.\u0275fac})}class lA{}class o1 extends lA{compile(e,t){return e}compileTranslations(e,t){return e}static \u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(o1)))(n||o1)}})();static \u0275prov=ue({token:o1,factory:o1.\u0275fac})}class hG{defaultLang;currentLang=this.defaultLang;translations={};langs=[];onTranslationChange=new Je;onLangChange=new Je;onDefaultLangChange=new Je}const BP=new ge("USE_STORE"),HP=new ge("USE_DEFAULT_LANG"),VP=new ge("DEFAULT_LANGUAGE"),zP=new ge("USE_EXTEND");class zt{store;currentLoader;compiler;parser;missingTranslationHandler;useDefaultLang;isolate;extend;loadingTranslations;pending=!1;_onTranslationChange=new Je;_onLangChange=new Je;_onDefaultLangChange=new Je;_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,t,n,r,s,a=!0,d=!1,h=!1,p){this.store=e,this.currentLoader=t,this.compiler=n,this.parser=r,this.missingTranslationHandler=s,this.useDefaultLang=a,this.isolate=d,this.extend=h,p&&this.setDefaultLang(p)}setDefaultLang(e){if(e===this.defaultLang)return;let t=this.retrieveTranslations(e);typeof t<"u"?(null==this.defaultLang&&(this.defaultLang=e),t.pipe(Zr(1)).subscribe(n=>{this.changeDefaultLang(e)})):this.changeDefaultLang(e)}getDefaultLang(){return this.defaultLang}use(e){if(e===this.currentLang)return He(this.translations[e]);let t=this.retrieveTranslations(e);return typeof t<"u"?(this.currentLang||(this.currentLang=e),t.pipe(Zr(1)).subscribe(n=>{this.changeLang(e)}),t):(this.changeLang(e),He(this.translations[e]))}retrieveTranslations(e){let t;return(typeof this.translations[e]>"u"||this.extend)&&(this._translationRequests[e]=this._translationRequests[e]||this.getTranslation(e),t=this._translationRequests[e]),t}getTranslation(e){this.pending=!0;const t=this.currentLoader.getTranslation(e).pipe(dG(1),Zr(1));return this.loadingTranslations=t.pipe(qe(n=>this.compiler.compileTranslations(n,e)),dG(1),Zr(1)),this.loadingTranslations.subscribe({next:n=>{this.translations[e]=this.extend&&this.translations[e]?{...n,...this.translations[e]}:n,this.updateLangs(),this.pending=!1},error:n=>{this.pending=!1}}),t}setTranslation(e,t,n=!1){t=this.compiler.compileTranslations(t,e),(n||this.extend)&&this.translations[e]?this.translations[e]=uG(this.translations[e],t):this.translations[e]=t,this.updateLangs(),this.onTranslationChange.emit({lang:e,translations:this.translations[e]})}getLangs(){return this.langs}addLangs(e){e.forEach(t=>{-1===this.langs.indexOf(t)&&this.langs.push(t)})}updateLangs(){this.addLangs(Object.keys(this.translations))}getParsedResult(e,t,n){let r;if(t instanceof Array){let s={},a=!1;for(let d of t)s[d]=this.getParsedResult(e,d,n),vd(s[d])&&(a=!0);if(a){return NV(t.map(h=>vd(s[h])?s[h]:He(s[h]))).pipe(qe(h=>{let p={};return h.forEach((g,v)=>{p[t[v]]=g}),p}))}return s}if(e&&(r=this.parser.interpolate(this.parser.getValue(e,t),n)),typeof r>"u"&&null!=this.defaultLang&&this.defaultLang!==this.currentLang&&this.useDefaultLang&&(r=this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang],t),n)),typeof r>"u"){let s={key:t,translateService:this};typeof n<"u"&&(s.interpolateParams=n),r=this.missingTranslationHandler.handle(s)}return typeof r<"u"?r:t}get(e,t){if(!Ma(e)||!e.length)throw new Error('Parameter "key" required');if(this.pending)return this.loadingTranslations.pipe(e1(n=>vd(n=this.getParsedResult(n,e,t))?n:He(n)));{let n=this.getParsedResult(this.translations[this.currentLang],e,t);return vd(n)?n:He(n)}}getStreamOnTranslationChange(e,t){if(!Ma(e)||!e.length)throw new Error('Parameter "key" required');return W2(e_(()=>this.get(e,t)),this.onTranslationChange.pipe(Js(n=>{const r=this.getParsedResult(n.translations,e,t);return"function"==typeof r.subscribe?r:He(r)})))}stream(e,t){if(!Ma(e)||!e.length)throw new Error('Parameter "key" required');return W2(e_(()=>this.get(e,t)),this.onLangChange.pipe(Js(n=>{const r=this.getParsedResult(n.translations,e,t);return vd(r)?r:He(r)})))}instant(e,t){if(!Ma(e)||!e.length)throw new Error('Parameter "key" required');let n=this.getParsedResult(this.translations[this.currentLang],e,t);if(vd(n)){if(e instanceof Array){let r={};return e.forEach((s,a)=>{r[e[a]]=e[a]}),r}return e}return n}set(e,t,n=this.currentLang){this.translations[n][e]=this.compiler.compile(t,n),this.updateLangs(),this.onTranslationChange.emit({lang:n,translations:this.translations[n]})}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(t){return new(t||zt)(ve(hG),ve(t_),ve(lA),ve(aA),ve(PP),ve(HP),ve(BP),ve(zP),ve(VP))};static \u0275prov=ue({token:zt,factory:zt.\u0275fac})}class n_{translateService;element;_ref;key;lastParams;currentParams;onLangChangeSub;onDefaultLangChangeSub;onTranslationChangeSub;set translate(e){e&&(this.key=e,this.checkNodes())}set translateParams(e){i_(this.currentParams,e)||(this.currentParams=e,this.checkNodes(!0))}constructor(e,t,n){this.translateService=e,this.element=t,this._ref=n,this.onTranslationChangeSub||(this.onTranslationChangeSub=this.translateService.onTranslationChange.subscribe(r=>{r.lang===this.translateService.currentLang&&this.checkNodes(!0,r.translations)})),this.onLangChangeSub||(this.onLangChangeSub=this.translateService.onLangChange.subscribe(r=>{this.checkNodes(!0,r.translations)})),this.onDefaultLangChangeSub||(this.onDefaultLangChangeSub=this.translateService.onDefaultLangChange.subscribe(r=>{this.checkNodes(!0)}))}ngAfterViewChecked(){this.checkNodes()}checkNodes(e=!1,t){let n=this.element.nativeElement.childNodes;n.length||(this.setContent(this.element.nativeElement,this.key),n=this.element.nativeElement.childNodes);for(let r=0;r{s!==e&&(t.lastKey=e),t.originalContent||(t.originalContent=this.getContent(t)),t.currentValue=Ma(s)?s:t.originalContent||e,this.setContent(t,this.key?t.currentValue:t.originalContent.replace(e,t.currentValue)),this._ref.markForCheck()};if(Ma(n)){let s=this.translateService.getParsedResult(n,e,this.currentParams);vd(s)?s.subscribe({next:r}):r(s)}else this.translateService.get(e,this.currentParams).subscribe(r)}}getContent(e){return Ma(e.textContent)?e.textContent:e.data}setContent(e,t){Ma(e.textContent)?e.textContent=t:e.data=t}ngOnDestroy(){this.onLangChangeSub&&this.onLangChangeSub.unsubscribe(),this.onDefaultLangChangeSub&&this.onDefaultLangChangeSub.unsubscribe(),this.onTranslationChangeSub&&this.onTranslationChangeSub.unsubscribe()}static \u0275fac=function(t){return new(t||n_)(Z(zt),Z(wi),Z(bn))};static \u0275dir=De({type:n_,selectors:[["","translate",""],["","ngx-translate",""]],inputs:{translate:"translate",translateParams:"translateParams"}})}class s1{translate;_ref;value="";lastKey=null;lastParams=[];onTranslationChange;onLangChange;onDefaultLangChange;constructor(e,t){this.translate=e,this._ref=t}updateValue(e,t,n){let r=s=>{this.value=void 0!==s?s:e,this.lastKey=e,this._ref.markForCheck()};if(n){let s=this.translate.getParsedResult(n,e,t);vd(s.subscribe)?s.subscribe(r):r(s)}this.translate.get(e,t).subscribe(r)}transform(e,...t){if(!e||!e.length)return e;if(i_(e,this.lastKey)&&i_(t,this.lastParams))return this.value;let n;if(Ma(t[0])&&t.length)if("string"==typeof t[0]&&t[0].length){let r=t[0].replace(/(\')?([a-zA-Z0-9_]+)(\')?(\s)?:/g,'"$2":').replace(/:(\s)?(\')(.*?)(\')/g,':"$3"');try{n=JSON.parse(r)}catch{throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${t[0]}`)}}else"object"==typeof t[0]&&!Array.isArray(t[0])&&(n=t[0]);return this.lastKey=e,this.lastParams=t,this.updateValue(e,n),this._dispose(),this.onTranslationChange||(this.onTranslationChange=this.translate.onTranslationChange.subscribe(r=>{this.lastKey&&r.lang===this.translate.currentLang&&(this.lastKey=null,this.updateValue(e,n,r.translations))})),this.onLangChange||(this.onLangChange=this.translate.onLangChange.subscribe(r=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,n,r.translations))})),this.onDefaultLangChange||(this.onDefaultLangChange=this.translate.onDefaultLangChange.subscribe(()=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,n))})),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(t){return new(t||s1)(Z(zt,16),Z(bn,16))};static \u0275pipe=Xr({name:"translate",type:s1,pure:!1});static \u0275prov=ue({token:s1,factory:s1.\u0275fac})}class Qu{static forRoot(e={}){return{ngModule:Qu,providers:[e.loader||{provide:t_,useClass:n1},e.compiler||{provide:lA,useClass:o1},e.parser||{provide:aA,useClass:r1},e.missingTranslationHandler||{provide:PP,useClass:Nb},hG,{provide:BP,useValue:e.isolate},{provide:HP,useValue:e.useDefaultLang},{provide:zP,useValue:e.extend},{provide:VP,useValue:e.defaultLanguage},zt]}}static forChild(e={}){return{ngModule:Qu,providers:[e.loader||{provide:t_,useClass:n1},e.compiler||{provide:lA,useClass:o1},e.parser||{provide:aA,useClass:r1},e.missingTranslationHandler||{provide:PP,useClass:Nb},{provide:BP,useValue:e.isolate},{provide:HP,useValue:e.useDefaultLang},{provide:zP,useValue:e.extend},{provide:VP,useValue:e.defaultLanguage},zt]}}static \u0275fac=function(t){return new(t||Qu)};static \u0275mod=Er({type:Qu,declarations:[s1,n_],exports:[s1,n_]});static \u0275inj=Qn({})}class ioe{http;prefix;suffix;constructor(e,t="/assets/i18n/",n=".json"){this.http=e,this.prefix=t,this.suffix=n}getTranslation(e){return this.http.get(`${this.prefix}${e}${this.suffix}`)}}const{entries:pG,setPrototypeOf:mG,isFrozen:noe,getPrototypeOf:roe,getOwnPropertyDescriptor:ooe}=Object;let{freeze:ks,seal:El,create:gG}=Object,{apply:GP,construct:$P}=typeof Reflect<"u"&&Reflect;ks||(ks=function(e){return e}),El||(El=function(e){return e}),GP||(GP=function(e,t,n){return e.apply(t,n)}),$P||($P=function(e,t){return new e(...t)});const cA=Ia(Array.prototype.forEach),fG=Ia(Array.prototype.pop),r_=Ia(Array.prototype.push),dA=Ia(String.prototype.toLowerCase),WP=Ia(String.prototype.toString),vG=Ia(String.prototype.match),o_=Ia(String.prototype.replace),soe=Ia(String.prototype.indexOf),aoe=Ia(String.prototype.trim),yc=Ia(Object.prototype.hasOwnProperty),_s=Ia(RegExp.prototype.test),s_=function loe(i){return function(){for(var e=arguments.length,t=new Array(e),n=0;n1?t-1:0),r=1;r2&&void 0!==arguments[2]?arguments[2]:dA;mG&&mG(i,null);let n=e.length;for(;n--;){let r=e[n];if("string"==typeof r){const s=t(r);s!==r&&(noe(e)||(e[n]=s),r=s)}i[r]=!0}return i}function coe(i){for(let e=0;e/gm),moe=El(/\$\{[\w\W]*}/gm),goe=El(/^data-[\-\w.\u00B7-\uFFFF]+$/),foe=El(/^aria-[\-\w]+$/),kG=El(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),voe=El(/^(?:\w+script|data):/i),boe=El(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),_G=El(/^html$/i),yoe=El(/^[a-z][.\w]*(-[.\w]+)+$/i);var EG=Object.freeze({__proto__:null,ARIA_ATTR:foe,ATTR_WHITESPACE:boe,CUSTOM_ELEMENT:yoe,DATA_ATTR:goe,DOCTYPE_NAME:_G,ERB_EXPR:poe,IS_ALLOWED_URI:kG,IS_SCRIPT_OR_DATA:voe,MUSTACHE_EXPR:hoe,TMPLIT_EXPR:moe});const l__element=1,l__text=3,l__progressingInstruction=7,l__comment=8,l__document=9;var koe=function xG(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:typeof window>"u"?null:window;const e=Ye=>xG(Ye);if(e.version="3.2.3",e.removed=[],!i||!i.document||i.document.nodeType!==l__document)return e.isSupported=!1,e;let{document:t}=i;const n=t,r=n.currentScript,{DocumentFragment:s,HTMLTemplateElement:a,Node:d,Element:h,NodeFilter:p,NamedNodeMap:g=i.NamedNodeMap||i.MozNamedAttrMap,HTMLFormElement:v,DOMParser:y,trustedTypes:C}=i,k=h.prototype,E=a_(k,"cloneNode"),x=a_(k,"remove"),S=a_(k,"nextSibling"),D=a_(k,"childNodes"),I=a_(k,"parentNode");if("function"==typeof a){const Ye=t.createElement("template");Ye.content&&Ye.content.ownerDocument&&(t=Ye.content.ownerDocument)}let L,R="";const{implementation:W,createNodeIterator:re,createDocumentFragment:ie,getElementsByTagName:se}=t,{importNode:Se}=n;let Ie={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};e.isSupported="function"==typeof pG&&"function"==typeof I&&W&&void 0!==W.createHTMLDocument;const{MUSTACHE_EXPR:tt,ERB_EXPR:mt,TMPLIT_EXPR:qt,DATA_ATTR:Kt,ARIA_ATTR:Et,IS_SCRIPT_OR_DATA:Ae,ATTR_WHITESPACE:yt,CUSTOM_ELEMENT:Ni}=EG;let{IS_ALLOWED_URI:Xo}=EG,Gt=null;const Lr=Qt({},[...bG,...UP,...jP,...qP,...yG]);let pi=null;const ur=Qt({},[...CG,...KP,...wG,...uA]);let ht=Object.seal(gG(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),qr=null,Ha=null,Ml=!0,Ld=!0,mh=!1,Le=!0,gt=!1,nn=!0,Ln=!1,So=!1,Do=!1,Va=!1,ra=!1,Kr=!1,Mm=!0,Pq=!1,xN=!0,kE=!1,Fy={},xy=null;const Nq=Qt({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Bq=null;const Hq=Qt({},["audio","video","img","source","image","track"]);let SN=null;const Vq=Qt({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),rI="http://www.w3.org/1998/Math/MathML",oI="http://www.w3.org/2000/svg",gh="http://www.w3.org/1999/xhtml";let Sy=gh,DN=!1,AN=null;const Uye=Qt({},[rI,oI,gh],WP);let sI=Qt({},["mi","mo","mn","ms","mtext"]),aI=Qt({},["annotation-xml"]);const jye=Qt({},["title","style","font","a","script"]);let _E=null;const qye=["application/xhtml+xml","text/html"];let io=null,Dy=null;const Yye=t.createElement("form"),zq=function(V){return V instanceof RegExp||V instanceof Function},TN=function(){let V=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!Dy||Dy!==V){if((!V||"object"!=typeof V)&&(V={}),V=a1(V),_E=-1===qye.indexOf(V.PARSER_MEDIA_TYPE)?"text/html":V.PARSER_MEDIA_TYPE,io="application/xhtml+xml"===_E?WP:dA,Gt=yc(V,"ALLOWED_TAGS")?Qt({},V.ALLOWED_TAGS,io):Lr,pi=yc(V,"ALLOWED_ATTR")?Qt({},V.ALLOWED_ATTR,io):ur,AN=yc(V,"ALLOWED_NAMESPACES")?Qt({},V.ALLOWED_NAMESPACES,WP):Uye,SN=yc(V,"ADD_URI_SAFE_ATTR")?Qt(a1(Vq),V.ADD_URI_SAFE_ATTR,io):Vq,Bq=yc(V,"ADD_DATA_URI_TAGS")?Qt(a1(Hq),V.ADD_DATA_URI_TAGS,io):Hq,xy=yc(V,"FORBID_CONTENTS")?Qt({},V.FORBID_CONTENTS,io):Nq,qr=yc(V,"FORBID_TAGS")?Qt({},V.FORBID_TAGS,io):{},Ha=yc(V,"FORBID_ATTR")?Qt({},V.FORBID_ATTR,io):{},Fy=!!yc(V,"USE_PROFILES")&&V.USE_PROFILES,Ml=!1!==V.ALLOW_ARIA_ATTR,Ld=!1!==V.ALLOW_DATA_ATTR,mh=V.ALLOW_UNKNOWN_PROTOCOLS||!1,Le=!1!==V.ALLOW_SELF_CLOSE_IN_ATTR,gt=V.SAFE_FOR_TEMPLATES||!1,nn=!1!==V.SAFE_FOR_XML,Ln=V.WHOLE_DOCUMENT||!1,Va=V.RETURN_DOM||!1,ra=V.RETURN_DOM_FRAGMENT||!1,Kr=V.RETURN_TRUSTED_TYPE||!1,Do=V.FORCE_BODY||!1,Mm=!1!==V.SANITIZE_DOM,Pq=V.SANITIZE_NAMED_PROPS||!1,xN=!1!==V.KEEP_CONTENT,kE=V.IN_PLACE||!1,Xo=V.ALLOWED_URI_REGEXP||kG,Sy=V.NAMESPACE||gh,sI=V.MATHML_TEXT_INTEGRATION_POINTS||sI,aI=V.HTML_INTEGRATION_POINTS||aI,ht=V.CUSTOM_ELEMENT_HANDLING||{},V.CUSTOM_ELEMENT_HANDLING&&zq(V.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(ht.tagNameCheck=V.CUSTOM_ELEMENT_HANDLING.tagNameCheck),V.CUSTOM_ELEMENT_HANDLING&&zq(V.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(ht.attributeNameCheck=V.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),V.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof V.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(ht.allowCustomizedBuiltInElements=V.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),gt&&(Ld=!1),ra&&(Va=!0),Fy&&(Gt=Qt({},yG),pi=[],!0===Fy.html&&(Qt(Gt,bG),Qt(pi,CG)),!0===Fy.svg&&(Qt(Gt,UP),Qt(pi,KP),Qt(pi,uA)),!0===Fy.svgFilters&&(Qt(Gt,jP),Qt(pi,KP),Qt(pi,uA)),!0===Fy.mathMl&&(Qt(Gt,qP),Qt(pi,wG),Qt(pi,uA))),V.ADD_TAGS&&(Gt===Lr&&(Gt=a1(Gt)),Qt(Gt,V.ADD_TAGS,io)),V.ADD_ATTR&&(pi===ur&&(pi=a1(pi)),Qt(pi,V.ADD_ATTR,io)),V.ADD_URI_SAFE_ATTR&&Qt(SN,V.ADD_URI_SAFE_ATTR,io),V.FORBID_CONTENTS&&(xy===Nq&&(xy=a1(xy)),Qt(xy,V.FORBID_CONTENTS,io)),xN&&(Gt["#text"]=!0),Ln&&Qt(Gt,["html","head","body"]),Gt.table&&(Qt(Gt,["tbody"]),delete qr.tbody),V.TRUSTED_TYPES_POLICY){if("function"!=typeof V.TRUSTED_TYPES_POLICY.createHTML)throw s_('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof V.TRUSTED_TYPES_POLICY.createScriptURL)throw s_('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');L=V.TRUSTED_TYPES_POLICY,R=L.createHTML("")}else void 0===L&&(L=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const r="data-tt-policy-suffix";t&&t.hasAttribute(r)&&(n=t.getAttribute(r));const s="dompurify"+(n?"#"+n:"");try{return e.createPolicy(s,{createHTML:a=>a,createScriptURL:a=>a})}catch{return console.warn("TrustedTypes policy "+s+" could not be created."),null}}(C,r)),null!==L&&"string"==typeof R&&(R=L.createHTML(""));ks&&ks(V),Dy=V}},Gq=Qt({},[...UP,...jP,...doe]),$q=Qt({},[...qP,...uoe]),Od=function(V){r_(e.removed,{element:V});try{I(V).removeChild(V)}catch{x(V)}},lI=function(V,fe){try{r_(e.removed,{attribute:fe.getAttributeNode(V),from:fe})}catch{r_(e.removed,{attribute:null,from:fe})}if(fe.removeAttribute(V),"is"===V)if(Va||ra)try{Od(fe)}catch{}else try{fe.setAttribute(V,"")}catch{}},Wq=function(V){let fe=null,Be=null;if(Do)V=""+V;else{const Ao=vG(V,/^[\r\n\t ]+/);Be=Ao&&Ao[0]}"application/xhtml+xml"===_E&&Sy===gh&&(V=''+V+"");const On=L?L.createHTML(V):V;if(Sy===gh)try{fe=(new y).parseFromString(On,_E)}catch{}if(!fe||!fe.documentElement){fe=W.createDocument(Sy,"template",null);try{fe.documentElement.innerHTML=DN?R:On}catch{}}const Qo=fe.body||fe.documentElement;return V&&Be&&Qo.insertBefore(t.createTextNode(Be),Qo.childNodes[0]||null),Sy===gh?se.call(fe,Ln?"html":"body")[0]:Ln?fe.documentElement:Qo},Uq=function(V){return re.call(V.ownerDocument||V,V,p.SHOW_ELEMENT|p.SHOW_COMMENT|p.SHOW_TEXT|p.SHOW_PROCESSING_INSTRUCTION|p.SHOW_CDATA_SECTION,null)},MN=function(V){return V instanceof v&&("string"!=typeof V.nodeName||"string"!=typeof V.textContent||"function"!=typeof V.removeChild||!(V.attributes instanceof g)||"function"!=typeof V.removeAttribute||"function"!=typeof V.setAttribute||"string"!=typeof V.namespaceURI||"function"!=typeof V.insertBefore||"function"!=typeof V.hasChildNodes)},jq=function(V){return"function"==typeof d&&V instanceof d};function fh(Ye,V,fe){cA(Ye,Be=>{Be.call(e,V,fe,Dy)})}const qq=function(V){let fe=null;if(fh(Ie.beforeSanitizeElements,V,null),MN(V))return Od(V),!0;const Be=io(V.nodeName);if(fh(Ie.uponSanitizeElement,V,{tagName:Be,allowedTags:Gt}),V.hasChildNodes()&&!jq(V.firstElementChild)&&_s(/<[/\w]/g,V.innerHTML)&&_s(/<[/\w]/g,V.textContent)||V.nodeType===l__progressingInstruction||nn&&V.nodeType===l__comment&&_s(/<[/\w]/g,V.data))return Od(V),!0;if(!Gt[Be]||qr[Be]){if(!qr[Be]&&Yq(Be)&&(ht.tagNameCheck instanceof RegExp&&_s(ht.tagNameCheck,Be)||ht.tagNameCheck instanceof Function&&ht.tagNameCheck(Be)))return!1;if(xN&&!xy[Be]){const On=I(V)||V.parentNode,Qo=D(V)||V.childNodes;if(Qo&&On){for(let oa=Qo.length-1;oa>=0;--oa){const Rd=E(Qo[oa],!0);Rd.__removalCount=(V.__removalCount||0)+1,On.insertBefore(Rd,S(V))}}}return Od(V),!0}return V instanceof h&&!function(V){let fe=I(V);(!fe||!fe.tagName)&&(fe={namespaceURI:Sy,tagName:"template"});const Be=dA(V.tagName),On=dA(fe.tagName);return!!AN[V.namespaceURI]&&(V.namespaceURI===oI?fe.namespaceURI===gh?"svg"===Be:fe.namespaceURI===rI?"svg"===Be&&("annotation-xml"===On||sI[On]):!!Gq[Be]:V.namespaceURI===rI?fe.namespaceURI===gh?"math"===Be:fe.namespaceURI===oI?"math"===Be&&aI[On]:!!$q[Be]:V.namespaceURI===gh?!(fe.namespaceURI===oI&&!aI[On]||fe.namespaceURI===rI&&!sI[On])&&!$q[Be]&&(jye[Be]||!Gq[Be]):!("application/xhtml+xml"!==_E||!AN[V.namespaceURI]))}(V)||("noscript"===Be||"noembed"===Be||"noframes"===Be)&&_s(/<\/no(script|embed|frames)/i,V.innerHTML)?(Od(V),!0):(gt&&V.nodeType===l__text&&(fe=V.textContent,cA([tt,mt,qt],On=>{fe=o_(fe,On," ")}),V.textContent!==fe&&(r_(e.removed,{element:V.cloneNode()}),V.textContent=fe)),fh(Ie.afterSanitizeElements,V,null),!1)},Kq=function(V,fe,Be){if(Mm&&("id"===fe||"name"===fe)&&(Be in t||Be in Yye))return!1;if((!Ld||Ha[fe]||!_s(Kt,fe))&&(!Ml||!_s(Et,fe)))if(!pi[fe]||Ha[fe]){if(!(Yq(V)&&(ht.tagNameCheck instanceof RegExp&&_s(ht.tagNameCheck,V)||ht.tagNameCheck instanceof Function&&ht.tagNameCheck(V))&&(ht.attributeNameCheck instanceof RegExp&&_s(ht.attributeNameCheck,fe)||ht.attributeNameCheck instanceof Function&&ht.attributeNameCheck(fe))||"is"===fe&&ht.allowCustomizedBuiltInElements&&(ht.tagNameCheck instanceof RegExp&&_s(ht.tagNameCheck,Be)||ht.tagNameCheck instanceof Function&&ht.tagNameCheck(Be))))return!1}else if(!SN[fe]&&!_s(Xo,o_(Be,yt,""))&&("src"!==fe&&"xlink:href"!==fe&&"href"!==fe||"script"===V||0!==soe(Be,"data:")||!Bq[V])&&(!mh||_s(Ae,o_(Be,yt,"")))&&Be)return!1;return!0},Yq=function(V){return"annotation-xml"!==V&&vG(V,Ni)},Zq=function(V){fh(Ie.beforeSanitizeAttributes,V,null);const{attributes:fe}=V;if(!fe||MN(V))return;const Be={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:pi,forceKeepAttr:void 0};let On=fe.length;for(;On--;){const Qo=fe[On],{name:Ao,namespaceURI:oa,value:Rd}=Qo,EE=io(Ao);let Ss="value"===Ao?Rd:aoe(Rd);if(Be.attrName=EE,Be.attrValue=Ss,Be.keepAttr=!0,Be.forceKeepAttr=void 0,fh(Ie.uponSanitizeAttribute,V,Be),Ss=Be.attrValue,Pq&&("id"===EE||"name"===EE)&&(lI(Ao,V),Ss="user-content-"+Ss),nn&&_s(/((--!?|])>)|<\/(style|title)/i,Ss)){lI(Ao,V);continue}if(Be.forceKeepAttr||(lI(Ao,V),!Be.keepAttr))continue;if(!Le&&_s(/\/>/i,Ss)){lI(Ao,V);continue}gt&&cA([tt,mt,qt],Xq=>{Ss=o_(Ss,Xq," ")});const Jq=io(V.nodeName);if(Kq(Jq,EE,Ss)){if(L&&"object"==typeof C&&"function"==typeof C.getAttributeType&&!oa)switch(C.getAttributeType(Jq,EE)){case"TrustedHTML":Ss=L.createHTML(Ss);break;case"TrustedScriptURL":Ss=L.createScriptURL(Ss)}try{oa?V.setAttributeNS(oa,Ao,Ss):V.setAttribute(Ao,Ss),MN(V)?Od(V):fG(e.removed)}catch{}}}fh(Ie.afterSanitizeAttributes,V,null)},Jye=function Ye(V){let fe=null;const Be=Uq(V);for(fh(Ie.beforeSanitizeShadowDOM,V,null);fe=Be.nextNode();)fh(Ie.uponSanitizeShadowNode,fe,null),qq(fe),Zq(fe),fe.content instanceof s&&Ye(fe.content);fh(Ie.afterSanitizeShadowDOM,V,null)};return e.sanitize=function(Ye){let V=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},fe=null,Be=null,On=null,Qo=null;if(DN=!Ye,DN&&(Ye="\x3c!--\x3e"),"string"!=typeof Ye&&!jq(Ye)){if("function"!=typeof Ye.toString)throw s_("toString is not a function");if("string"!=typeof(Ye=Ye.toString()))throw s_("dirty is not a string, aborting")}if(!e.isSupported)return Ye;if(So||TN(V),e.removed=[],"string"==typeof Ye&&(kE=!1),kE){if(Ye.nodeName){const Rd=io(Ye.nodeName);if(!Gt[Rd]||qr[Rd])throw s_("root node is forbidden and cannot be sanitized in-place")}}else if(Ye instanceof d)fe=Wq("\x3c!----\x3e"),Be=fe.ownerDocument.importNode(Ye,!0),Be.nodeType===l__element&&"BODY"===Be.nodeName||"HTML"===Be.nodeName?fe=Be:fe.appendChild(Be);else{if(!Va&&!gt&&!Ln&&-1===Ye.indexOf("<"))return L&&Kr?L.createHTML(Ye):Ye;if(fe=Wq(Ye),!fe)return Va?null:Kr?R:""}fe&&Do&&Od(fe.firstChild);const Ao=Uq(kE?Ye:fe);for(;On=Ao.nextNode();)qq(On),Zq(On),On.content instanceof s&&Jye(On.content);if(kE)return Ye;if(Va){if(ra)for(Qo=ie.call(fe.ownerDocument);fe.firstChild;)Qo.appendChild(fe.firstChild);else Qo=fe;return(pi.shadowroot||pi.shadowrootmode)&&(Qo=Se.call(n,Qo,!0)),Qo}let oa=Ln?fe.outerHTML:fe.innerHTML;return Ln&&Gt["!doctype"]&&fe.ownerDocument&&fe.ownerDocument.doctype&&fe.ownerDocument.doctype.name&&_s(_G,fe.ownerDocument.doctype.name)&&(oa="\n"+oa),gt&&cA([tt,mt,qt],Rd=>{oa=o_(oa,Rd," ")}),L&&Kr?L.createHTML(oa):oa},e.setConfig=function(){let Ye=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};TN(Ye),So=!0},e.clearConfig=function(){Dy=null,So=!1},e.isValidAttribute=function(Ye,V,fe){Dy||TN({});const Be=io(Ye),On=io(V);return Kq(Be,On,fe)},e.addHook=function(Ye,V){"function"==typeof V&&r_(Ie[Ye],V)},e.removeHook=function(Ye){return fG(Ie[Ye])},e.removeHooks=function(Ye){Ie[Ye]=[]},e.removeAllHooks=function(){Ie={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},e}();var Eoe=z(856),Foe=z.n(Eoe);function YP(...i){const e=S2(i),t=RV(i),{args:n,keys:r}=LV(i);if(0===n.length)return Mr([],e);const s=new ci(function xoe(i,e,t=ja){return n=>{SG(e,()=>{const{length:r}=i,s=new Array(r);let a=r,d=r;for(let h=0;h{const p=Mr(i[h],e);let g=!1;p.subscribe(vi(n,v=>{s[h]=v,g||(g=!0,d--),d||n.next(t(s.slice()))},()=>{--a||n.complete()}))},n)},n)}}(n,e,r?a=>PV(r,a):ja));return t?s.pipe(sP(t)):s}function SG(i,e,t){i?Ku(t,i,e):e()}function hA(i,e){const t=ai(i)?i:()=>i,n=r=>r.error(t());return new ci(e?r=>e.schedule(n,0,r):n)}function ZP(){return xi((i,e)=>{let t=null;i._refCount++;const n=vi(e,void 0,void 0,void 0,()=>{if(!i||i._refCount<=0||0<--i._refCount)return void(t=null);const r=i._connection,s=t;t=null,r&&(!s||r===s)&&r.unsubscribe(),e.unsubscribe()});i.subscribe(n),n.closed||(t=i.connect())})}class DG extends ci{constructor(e,t){super(),this.source=e,this.subjectFactory=t,this._subject=null,this._refCount=0,this._connection=null,Ts(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 Bi;const t=this.getSubject();e.add(this.source.subscribe(vi(t,void 0,()=>{this._teardown(),t.complete()},n=>{this._teardown(),t.error(n)},()=>this._teardown()))),e.closed&&(this._connection=null,e=Bi.EMPTY)}return e}refCount(){return ZP()(this)}}function l1(i){return xi((e,t)=>{let s,n=null,r=!1;n=e.subscribe(vi(t,void 0,void 0,a=>{s=Cs(i(a,l1(i)(e))),n?(n.unsubscribe(),n=null,s.subscribe(t)):r=!0})),r&&(n.unsubscribe(),n=null,s.subscribe(t))})}function Doe(i,e){return xi(function Soe(i,e,t,n,r){return(s,a)=>{let d=t,h=e,p=0;s.subscribe(vi(a,g=>{const v=p++;h=d?i(h,g,v):(d=!0,g),n&&a.next(h)},r&&(()=>{d&&a.next(h),a.complete()})))}}(i,e,arguments.length>=2,!0))}function JP(i){return i<=0?()=>wr:xi((e,t)=>{let n=[];e.subscribe(vi(t,r=>{n.push(r),i{for(const r of n)t.next(r);t.complete()},void 0,()=>{n=null}))})}const Tt="primary",c_=Symbol("RouteTitle");class Moe{constructor(e){this.params=e||{}}has(e){return Object.prototype.hasOwnProperty.call(this.params,e)}get(e){if(this.has(e)){const t=this.params[e];return Array.isArray(t)?t[0]:t}return null}getAll(e){if(this.has(e)){const t=this.params[e];return Array.isArray(t)?t:[t]}return[]}get keys(){return Object.keys(this.params)}}function Bb(i){return new Moe(i)}function Ioe(i,e,t){const n=t.path.split("/");if(n.length>i.length||"full"===t.pathMatch&&(e.hasChildren()||n.lengthn[s]===r)}return i===e}function TG(i){return i.length>0?i[i.length-1]:null}function um(i){return vd(i)?i:i2(i)?Mr(Promise.resolve(i)):He(i)}const Ooe={exact:function LG(i,e,t){if(!d1(i.segments,e.segments)||!pA(i.segments,e.segments,t)||i.numberOfChildren!==e.numberOfChildren)return!1;for(const n in e.children)if(!i.children[n]||!LG(i.children[n],e.children[n],t))return!1;return!0},subset:OG},MG={exact:function Roe(i,e){return bd(i,e)},subset:function Poe(i,e){return Object.keys(e).length<=Object.keys(i).length&&Object.keys(e).every(t=>AG(i[t],e[t]))},ignored:()=>!0};function IG(i,e,t){return Ooe[t.paths](i.root,e.root,t.matrixParams)&&MG[t.queryParams](i.queryParams,e.queryParams)&&!("exact"===t.fragment&&i.fragment!==e.fragment)}function OG(i,e,t){return RG(i,e,e.segments,t)}function RG(i,e,t,n){if(i.segments.length>t.length){const r=i.segments.slice(0,t.length);return!(!d1(r,t)||e.hasChildren()||!pA(r,t,n))}if(i.segments.length===t.length){if(!d1(i.segments,t)||!pA(i.segments,t,n))return!1;for(const r in e.children)if(!i.children[r]||!OG(i.children[r],e.children[r],n))return!1;return!0}{const r=t.slice(0,i.segments.length),s=t.slice(i.segments.length);return!!(d1(i.segments,r)&&pA(i.segments,r,n)&&i.children[Tt])&&RG(i.children[Tt],e,s,n)}}function pA(i,e,t){return e.every((n,r)=>MG[t](i[r].parameters,n.parameters))}class c1{constructor(e=new Zi([],{}),t={},n=null){this.root=e,this.queryParams=t,this.fragment=n}get queryParamMap(){return this._queryParamMap??=Bb(this.queryParams),this._queryParamMap}toString(){return Hoe.serialize(this)}}class Zi{constructor(e,t){this.segments=e,this.children=t,this.parent=null,Object.values(t).forEach(n=>n.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return gA(this)}}class d_{constructor(e,t){this.path=e,this.parameters=t}get parameterMap(){return this._parameterMap??=Bb(this.parameters),this._parameterMap}toString(){return BG(this)}}function d1(i,e){return i.length===e.length&&i.every((t,n)=>t.path===e[n].path)}class eh{static{this.\u0275fac=function(t){return new(t||eh)}}static{this.\u0275prov=ue({token:eh,factory:()=>new mA,providedIn:"root"})}}class mA{parse(e){const t=new Zoe(e);return new c1(t.parseRootSegment(),t.parseQueryParams(),t.parseFragment())}serialize(e){const t=`/${u_(e.root,!0)}`,n=function Goe(i){const e=Object.entries(i).map(([t,n])=>Array.isArray(n)?n.map(r=>`${fA(t)}=${fA(r)}`).join("&"):`${fA(t)}=${fA(n)}`).filter(t=>t);return e.length?`?${e.join("&")}`:""}(e.queryParams),r="string"==typeof e.fragment?`#${function Voe(i){return encodeURI(i)}(e.fragment)}`:"";return`${t}${n}${r}`}}const Hoe=new mA;function gA(i){return i.segments.map(e=>BG(e)).join("/")}function u_(i,e){if(!i.hasChildren())return gA(i);if(e){const t=i.children[Tt]?u_(i.children[Tt],!1):"",n=[];return Object.entries(i.children).forEach(([r,s])=>{r!==Tt&&n.push(`${r}:${u_(s,!1)}`)}),n.length>0?`${t}(${n.join("//")})`:t}{const t=function Boe(i,e){let t=[];return Object.entries(i.children).forEach(([n,r])=>{n===Tt&&(t=t.concat(e(r,n)))}),Object.entries(i.children).forEach(([n,r])=>{n!==Tt&&(t=t.concat(e(r,n)))}),t}(i,(n,r)=>r===Tt?[u_(i.children[Tt],!1)]:[`${r}:${u_(n,!1)}`]);return 1===Object.keys(i.children).length&&null!=i.children[Tt]?`${gA(i)}/${t[0]}`:`${gA(i)}/(${t.join("//")})`}}function PG(i){return encodeURIComponent(i).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function fA(i){return PG(i).replace(/%3B/gi,";")}function QP(i){return PG(i).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function vA(i){return decodeURIComponent(i)}function NG(i){return vA(i.replace(/\+/g,"%20"))}function BG(i){return`${QP(i.path)}${function zoe(i){return Object.entries(i).map(([e,t])=>`;${QP(e)}=${QP(t)}`).join("")}(i.parameters)}`}const $oe=/^[^\/()?;#]+/;function e6(i){const e=i.match($oe);return e?e[0]:""}const Woe=/^[^\/()?;=#]+/;const joe=/^[^=?&#]+/;const Koe=/^[^&#]+/;class Zoe{constructor(e){this.url=e,this.remaining=e}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Zi([],{}):new Zi([],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 t={};this.peekStartsWith("/(")&&(this.capture("/"),t=this.parseParens(!0));let n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(e.length>0||Object.keys(t).length>0)&&(n[Tt]=new Zi(e,t)),n}parseSegment(){const e=e6(this.remaining);if(""===e&&this.peekStartsWith(";"))throw new j(4009,!1);return this.capture(e),new d_(vA(e),this.parseMatrixParams())}parseMatrixParams(){const e={};for(;this.consumeOptional(";");)this.parseParam(e);return e}parseParam(e){const t=function Uoe(i){const e=i.match(Woe);return e?e[0]:""}(this.remaining);if(!t)return;this.capture(t);let n="";if(this.consumeOptional("=")){const r=e6(this.remaining);r&&(n=r,this.capture(n))}e[vA(t)]=vA(n)}parseQueryParam(e){const t=function qoe(i){const e=i.match(joe);return e?e[0]:""}(this.remaining);if(!t)return;this.capture(t);let n="";if(this.consumeOptional("=")){const a=function Yoe(i){const e=i.match(Koe);return e?e[0]:""}(this.remaining);a&&(n=a,this.capture(n))}const r=NG(t),s=NG(n);if(e.hasOwnProperty(r)){let a=e[r];Array.isArray(a)||(a=[a],e[r]=a),a.push(s)}else e[r]=s}parseParens(e){const t={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const n=e6(this.remaining),r=this.remaining[n.length];if("/"!==r&&")"!==r&&";"!==r)throw new j(4010,!1);let s;n.indexOf(":")>-1?(s=n.slice(0,n.indexOf(":")),this.capture(s),this.capture(":")):e&&(s=Tt);const a=this.parseChildren();t[s]=1===Object.keys(a).length?a[Tt]:new Zi([],a),this.consumeOptional("//")}return t}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 HG(i){return i.segments.length>0?new Zi([],{[Tt]:i}):i}function VG(i){const e={};for(const[n,r]of Object.entries(i.children)){const s=VG(r);if(n===Tt&&0===s.segments.length&&s.hasChildren())for(const[a,d]of Object.entries(s.children))e[a]=d;else(s.segments.length>0||s.hasChildren())&&(e[n]=s)}return function Joe(i){if(1===i.numberOfChildren&&i.children[Tt]){const e=i.children[Tt];return new Zi(i.segments.concat(e.segments),e.children)}return i}(new Zi(i.segments,e))}function u1(i){return i instanceof c1}function zG(i){let e;const n=function t(s){const a={};for(const h of s.children){const p=t(h);a[h.outlet]=p}const d=new Zi(s.url,a);return s===i&&(e=d),d}(i.root),r=HG(n);return e??r}function GG(i,e,t,n){let r=i;for(;r.parent;)r=r.parent;if(0===e.length)return t6(r,r,r,t,n);const s=function Qoe(i){if("string"==typeof i[0]&&1===i.length&&"/"===i[0])return new WG(!0,0,i);let e=0,t=!1;const n=i.reduce((r,s,a)=>{if("object"==typeof s&&null!=s){if(s.outlets){const d={};return Object.entries(s.outlets).forEach(([h,p])=>{d[h]="string"==typeof p?p.split("/"):p}),[...r,{outlets:d}]}if(s.segmentPath)return[...r,s.segmentPath]}return"string"!=typeof s?[...r,s]:0===a?(s.split("/").forEach((d,h)=>{0==h&&"."===d||(0==h&&""===d?t=!0:".."===d?e++:""!=d&&r.push(d))}),r):[...r,s]},[]);return new WG(t,e,n)}(e);if(s.toRoot())return t6(r,r,new Zi([],{}),t,n);const a=function ese(i,e,t){if(i.isAbsolute)return new yA(e,!0,0);if(!t)return new yA(e,!1,NaN);if(null===t.parent)return new yA(t,!0,0);const n=bA(i.commands[0])?0:1,r=t.segments.length-1+n;return function tse(i,e,t){let n=i,r=e,s=t;for(;s>r;){if(s-=r,n=n.parent,!n)throw new j(4005,!1);r=n.segments.length}return new yA(n,!1,r-s)}(t,r,i.numberOfDoubleDots)}(s,r,i),d=a.processChildren?p_(a.segmentGroup,a.index,s.commands):UG(a.segmentGroup,a.index,s.commands);return t6(r,a.segmentGroup,d,t,n)}function bA(i){return"object"==typeof i&&null!=i&&!i.outlets&&!i.segmentPath}function h_(i){return"object"==typeof i&&null!=i&&i.outlets}function t6(i,e,t,n,r){let a,s={};n&&Object.entries(n).forEach(([h,p])=>{s[h]=Array.isArray(p)?p.map(g=>`${g}`):`${p}`}),a=i===e?t:$G(i,e,t);const d=HG(VG(a));return new c1(d,s,r)}function $G(i,e,t){const n={};return Object.entries(i.children).forEach(([r,s])=>{n[r]=s===e?t:$G(s,e,t)}),new Zi(i.segments,n)}class WG{constructor(e,t,n){if(this.isAbsolute=e,this.numberOfDoubleDots=t,this.commands=n,e&&n.length>0&&bA(n[0]))throw new j(4003,!1);const r=n.find(h_);if(r&&r!==TG(n))throw new j(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class yA{constructor(e,t,n){this.segmentGroup=e,this.processChildren=t,this.index=n}}function UG(i,e,t){if(i??=new Zi([],{}),0===i.segments.length&&i.hasChildren())return p_(i,e,t);const n=function nse(i,e,t){let n=0,r=e;const s={match:!1,pathIndex:0,commandIndex:0};for(;r=t.length)return s;const a=i.segments[r],d=t[n];if(h_(d))break;const h=`${d}`,p=n0&&void 0===h)break;if(h&&p&&"object"==typeof p&&void 0===p.outlets){if(!qG(h,p,a))return s;n+=2}else{if(!qG(h,{},a))return s;n++}r++}return{match:!0,pathIndex:r,commandIndex:n}}(i,e,t),r=t.slice(n.commandIndex);if(n.match&&n.pathIndexs!==Tt)&&i.children[Tt]&&1===i.numberOfChildren&&0===i.children[Tt].segments.length){const s=p_(i.children[Tt],e,t);return new Zi(i.segments,s.children)}return Object.entries(n).forEach(([s,a])=>{"string"==typeof a&&(a=[a]),null!==a&&(r[s]=UG(i.children[s],e,a))}),Object.entries(i.children).forEach(([s,a])=>{void 0===n[s]&&(r[s]=a)}),new Zi(i.segments,r)}}function i6(i,e,t){const n=i.segments.slice(0,e);let r=0;for(;r{"string"==typeof n&&(n=[n]),null!==n&&(e[t]=i6(new Zi([],{}),0,n))}),e}function jG(i){const e={};return Object.entries(i).forEach(([t,n])=>e[t]=`${n}`),e}function qG(i,e,t){return i==t.path&&bd(e,t.parameters)}const m_="imperative";var ei,Xs,g_;!function(i){i[i.NavigationStart=0]="NavigationStart",i[i.NavigationEnd=1]="NavigationEnd",i[i.NavigationCancel=2]="NavigationCancel",i[i.NavigationError=3]="NavigationError",i[i.RoutesRecognized=4]="RoutesRecognized",i[i.ResolveStart=5]="ResolveStart",i[i.ResolveEnd=6]="ResolveEnd",i[i.GuardsCheckStart=7]="GuardsCheckStart",i[i.GuardsCheckEnd=8]="GuardsCheckEnd",i[i.RouteConfigLoadStart=9]="RouteConfigLoadStart",i[i.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",i[i.ChildActivationStart=11]="ChildActivationStart",i[i.ChildActivationEnd=12]="ChildActivationEnd",i[i.ActivationStart=13]="ActivationStart",i[i.ActivationEnd=14]="ActivationEnd",i[i.Scroll=15]="Scroll",i[i.NavigationSkipped=16]="NavigationSkipped"}(ei||(ei={}));class yd{constructor(e,t){this.id=e,this.url=t}}class CA extends yd{constructor(e,t,n="imperative",r=null){super(e,t),this.type=ei.NavigationStart,this.navigationTrigger=n,this.restoredState=r}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class Cd extends yd{constructor(e,t,n){super(e,t),this.urlAfterRedirects=n,this.type=ei.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}!function(i){i[i.Redirect=0]="Redirect",i[i.SupersededByNewNavigation=1]="SupersededByNewNavigation",i[i.NoDataFromResolver=2]="NoDataFromResolver",i[i.GuardRejected=3]="GuardRejected"}(Xs||(Xs={})),function(i){i[i.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",i[i.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy"}(g_||(g_={}));class h1 extends yd{constructor(e,t,n,r){super(e,t),this.reason=n,this.code=r,this.type=ei.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class Hb extends yd{constructor(e,t,n,r){super(e,t),this.reason=n,this.code=r,this.type=ei.NavigationSkipped}}class n6 extends yd{constructor(e,t,n,r){super(e,t),this.error=n,this.target=r,this.type=ei.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class KG extends yd{constructor(e,t,n,r){super(e,t),this.urlAfterRedirects=n,this.state=r,this.type=ei.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ose extends yd{constructor(e,t,n,r){super(e,t),this.urlAfterRedirects=n,this.state=r,this.type=ei.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class sse extends yd{constructor(e,t,n,r,s){super(e,t),this.urlAfterRedirects=n,this.state=r,this.shouldActivate=s,this.type=ei.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class ase extends yd{constructor(e,t,n,r){super(e,t),this.urlAfterRedirects=n,this.state=r,this.type=ei.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class lse extends yd{constructor(e,t,n,r){super(e,t),this.urlAfterRedirects=n,this.state=r,this.type=ei.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class cse{constructor(e){this.route=e,this.type=ei.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class dse{constructor(e){this.route=e,this.type=ei.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class use{constructor(e){this.snapshot=e,this.type=ei.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class hse{constructor(e){this.snapshot=e,this.type=ei.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class pse{constructor(e){this.snapshot=e,this.type=ei.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class mse{constructor(e){this.snapshot=e,this.type=ei.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class YG{constructor(e,t,n){this.routerEvent=e,this.position=t,this.anchor=n,this.type=ei.Scroll}toString(){const e=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${e}')`}}class r6{}class wA{constructor(e,t){this.url=e,this.navigationBehaviorOptions=t}}function Cc(i){return i.outlet||Tt}function f_(i){if(!i)return null;if(i.routeConfig?._injector)return i.routeConfig._injector;for(let e=i.parent;e;e=e.parent){const t=e.routeConfig;if(t?._loadedInjector)return t._loadedInjector;if(t?._injector)return t._injector}return null}class Cse{get injector(){return f_(this.route?.snapshot)??this.rootInjector}set injector(e){}constructor(e){this.rootInjector=e,this.outlet=null,this.route=null,this.children=new th(this.rootInjector),this.attachRef=null}}class th{constructor(e){this.rootInjector=e,this.contexts=new Map}onChildOutletCreated(e,t){const n=this.getOrCreateContext(e);n.outlet=t,this.contexts.set(e,n)}onChildOutletDestroyed(e){const t=this.getContext(e);t&&(t.outlet=null,t.attachRef=null)}onOutletDeactivated(){const e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let t=this.getContext(e);return t||(t=new Cse(this.rootInjector),this.contexts.set(e,t)),t}getContext(e){return this.contexts.get(e)||null}static{this.\u0275fac=function(t){return new(t||th)(ve(Nr))}}static{this.\u0275prov=ue({token:th,factory:th.\u0275fac,providedIn:"root"})}}class ZG{constructor(e){this._root=e}get root(){return this._root.value}parent(e){const t=this.pathFromRoot(e);return t.length>1?t[t.length-2]:null}children(e){const t=o6(e,this._root);return t?t.children.map(n=>n.value):[]}firstChild(e){const t=o6(e,this._root);return t&&t.children.length>0?t.children[0].value:null}siblings(e){const t=s6(e,this._root);return t.length<2?[]:t[t.length-2].children.map(r=>r.value).filter(r=>r!==e)}pathFromRoot(e){return s6(e,this._root).map(t=>t.value)}}function o6(i,e){if(i===e.value)return e;for(const t of e.children){const n=o6(i,t);if(n)return n}return null}function s6(i,e){if(i===e.value)return[e];for(const t of e.children){const n=s6(i,t);if(n.length)return n.unshift(e),n}return[]}class wc{constructor(e,t){this.value=e,this.children=t}toString(){return`TreeNode(${this.value})`}}function Vb(i){const e={};return i&&i.children.forEach(t=>e[t.value.outlet]=t),e}class JG extends ZG{constructor(e,t){super(e),this.snapshot=t,a6(this,e)}toString(){return this.snapshot.toString()}}function XG(i){const e=function wse(i){const e={},t={},n={},r="",s=new _A([],e,n,r,t,Tt,i,null,{});return new QG("",new wc(s,[]))}(i),t=new Wt([new d_("",{})]),n=new Wt({}),r=new Wt({}),s=new Wt({}),a=new Wt(""),d=new zb(t,n,s,a,r,Tt,i,e.root);return d.snapshot=e.root,new JG(new wc(d,[]),e)}class zb{constructor(e,t,n,r,s,a,d,h){this.urlSubject=e,this.paramsSubject=t,this.queryParamsSubject=n,this.fragmentSubject=r,this.dataSubject=s,this.outlet=a,this.component=d,this._futureSnapshot=h,this.title=this.dataSubject?.pipe(qe(p=>p[c_]))??He(void 0),this.url=e,this.params=t,this.queryParams=n,this.fragment=r,this.data=s}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=>Bb(e))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(qe(e=>Bb(e))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function kA(i,e,t="emptyOnly"){let n;const{routeConfig:r}=i;return n=null===e||"always"!==t&&""!==r?.path&&(e.component||e.routeConfig?.loadComponent)?{params:{...i.params},data:{...i.data},resolve:{...i.data,...i._resolvedData??{}}}:{params:{...e.params,...i.params},data:{...e.data,...i.data},resolve:{...i.data,...e.data,...r?.data,...i._resolvedData}},r&&t$(r)&&(n.resolve[c_]=r.title),n}class _A{get title(){return this.data?.[c_]}constructor(e,t,n,r,s,a,d,h,p){this.url=e,this.params=t,this.queryParams=n,this.fragment=r,this.data=s,this.outlet=a,this.component=d,this.routeConfig=h,this._resolve=p}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??=Bb(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Bb(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(n=>n.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class QG extends ZG{constructor(e,t){super(t),this.url=e,a6(this,t)}toString(){return e$(this._root)}}function a6(i,e){e.value._routerState=i,e.children.forEach(t=>a6(i,t))}function e$(i){const e=i.children.length>0?` { ${i.children.map(e$).join(", ")} } `:"";return`${i.value}${e}`}function l6(i){if(i.snapshot){const e=i.snapshot,t=i._futureSnapshot;i.snapshot=t,bd(e.queryParams,t.queryParams)||i.queryParamsSubject.next(t.queryParams),e.fragment!==t.fragment&&i.fragmentSubject.next(t.fragment),bd(e.params,t.params)||i.paramsSubject.next(t.params),function Loe(i,e){if(i.length!==e.length)return!1;for(let t=0;tbd(t.parameters,e[n].parameters))}(i.url,e.url),n=!i.parent!=!e.parent;return t&&!n&&(!i.parent||c6(i.parent,e.parent))}function t$(i){return"string"==typeof i.title||null===i.title}class p1{constructor(){this.activated=null,this._activatedRoute=null,this.name=Tt,this.activateEvents=new Je,this.deactivateEvents=new Je,this.attachEvents=new Je,this.detachEvents=new Je,this.parentContexts=K(th),this.location=K(wo),this.changeDetector=K(bn),this.inputBinder=K(EA,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(e){if(e.name){const{firstChange:t,previousValue:n}=e.name;if(t)return;this.isTrackedInParentContexts(n)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(n)),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,t){this.activated=e,this._activatedRoute=t,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,t){if(this.isActivated)throw new j(4013,!1);this._activatedRoute=e;const n=this.location,s=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,d=new d6(e,a,n.injector);this.activated=n.createComponent(s,{index:n.length,injector:d,environmentInjector:t}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static{this.\u0275fac=function(t){return new(t||p1)}}static{this.\u0275dir=De({type:p1,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[yi]})}}class d6{__ngOutletInjector(e){return new d6(this.route,this.childContexts,e)}constructor(e,t,n){this.route=e,this.childContexts=t,this.parent=n}get(e,t){return e===zb?this.route:e===th?this.childContexts:this.parent.get(e,t)}}const EA=new ge("");class Gb{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:t}=e,n=YP([t.queryParams,t.params,t.data]).pipe(Js(([r,s,a],d)=>(a={...r,...s,...a},0===d?He(a):Promise.resolve(a)))).subscribe(r=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==t||null===t.component)return void this.unsubscribeFromRouteData(e);const s=function xX(i){const e=At(i);if(!e)return null;const t=new fp(e);return{get selector(){return t.selector},get type(){return t.componentType},get inputs(){return t.inputs},get outputs(){return t.outputs},get ngContentSelectors(){return t.ngContentSelectors},get isStandalone(){return e.standalone},get isSignal(){return e.signals}}}(t.component);if(s)for(const{templateName:a}of s.inputs)e.activatedComponentRef.setInput(a,r[a]);else this.unsubscribeFromRouteData(e)});this.outletDataSubscriptions.set(e,n)}static{this.\u0275fac=function(t){return new(t||Gb)}}static{this.\u0275prov=ue({token:Gb,factory:Gb.\u0275fac})}}function v_(i,e,t){if(t&&i.shouldReuseRoute(e.value,t.value.snapshot)){const n=t.value;n._futureSnapshot=e.value;const r=function _se(i,e,t){return e.children.map(n=>{for(const r of t.children)if(i.shouldReuseRoute(n.value,r.value.snapshot))return v_(i,n,r);return v_(i,n)})}(i,e,t);return new wc(n,r)}{if(i.shouldAttach(e.value)){const s=i.retrieve(e.value);if(null!==s){const a=s.route;return a.value._futureSnapshot=e.value,a.children=e.children.map(d=>v_(i,d)),a}}const n=function Ese(i){return new zb(new Wt(i.url),new Wt(i.params),new Wt(i.queryParams),new Wt(i.fragment),new Wt(i.data),i.outlet,i.component,i)}(e.value),r=e.children.map(s=>v_(i,s));return new wc(n,r)}}class u6{constructor(e,t){this.redirectTo=e,this.navigationBehaviorOptions=t}}const i$="ngNavigationCancelingError";function FA(i,e){const{redirectTo:t,navigationBehaviorOptions:n}=u1(e)?{redirectTo:e,navigationBehaviorOptions:void 0}:e,r=n$(!1,Xs.Redirect);return r.url=t,r.navigationBehaviorOptions=n,r}function n$(i,e){const t=new Error(`NavigationCancelingError: ${i||""}`);return t[i$]=!0,t.cancellationCode=e,t}function r$(i){return!!i&&i[i$]}class Sse{constructor(e,t,n,r,s){this.routeReuseStrategy=e,this.futureState=t,this.currState=n,this.forwardEvent=r,this.inputBindingEnabled=s}activate(e){const t=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(t,n,e),l6(this.futureState.root),this.activateChildRoutes(t,n,e)}deactivateChildRoutes(e,t,n){const r=Vb(t);e.children.forEach(s=>{const a=s.value.outlet;this.deactivateRoutes(s,r[a],n),delete r[a]}),Object.values(r).forEach(s=>{this.deactivateRouteAndItsChildren(s,n)})}deactivateRoutes(e,t,n){const r=e.value,s=t?t.value:null;if(r===s)if(r.component){const a=n.getContext(r.outlet);a&&this.deactivateChildRoutes(e,t,a.children)}else this.deactivateChildRoutes(e,t,n);else s&&this.deactivateRouteAndItsChildren(t,n)}deactivateRouteAndItsChildren(e,t){e.value.component&&this.routeReuseStrategy.shouldDetach(e.value.snapshot)?this.detachAndStoreRouteSubtree(e,t):this.deactivateRouteAndOutlet(e,t)}detachAndStoreRouteSubtree(e,t){const n=t.getContext(e.value.outlet),r=n&&e.value.component?n.children:t,s=Vb(e);for(const a of Object.values(s))this.deactivateRouteAndItsChildren(a,r);if(n&&n.outlet){const a=n.outlet.detach(),d=n.children.onOutletDeactivated();this.routeReuseStrategy.store(e.value.snapshot,{componentRef:a,route:e,contexts:d})}}deactivateRouteAndOutlet(e,t){const n=t.getContext(e.value.outlet),r=n&&e.value.component?n.children:t,s=Vb(e);for(const a of Object.values(s))this.deactivateRouteAndItsChildren(a,r);n&&(n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated()),n.attachRef=null,n.route=null)}activateChildRoutes(e,t,n){const r=Vb(t);e.children.forEach(s=>{this.activateRoutes(s,r[s.value.outlet],n),this.forwardEvent(new mse(s.value.snapshot))}),e.children.length&&this.forwardEvent(new hse(e.value.snapshot))}activateRoutes(e,t,n){const r=e.value,s=t?t.value:null;if(l6(r),r===s)if(r.component){const a=n.getOrCreateContext(r.outlet);this.activateChildRoutes(e,t,a.children)}else this.activateChildRoutes(e,t,n);else if(r.component){const a=n.getOrCreateContext(r.outlet);if(this.routeReuseStrategy.shouldAttach(r.snapshot)){const d=this.routeReuseStrategy.retrieve(r.snapshot);this.routeReuseStrategy.store(r.snapshot,null),a.children.onOutletReAttached(d.contexts),a.attachRef=d.componentRef,a.route=d.route.value,a.outlet&&a.outlet.attach(d.componentRef,d.route.value),l6(d.route.value),this.activateChildRoutes(e,null,a.children)}else a.attachRef=null,a.route=r,a.outlet&&a.outlet.activateWith(r,a.injector),this.activateChildRoutes(e,null,a.children)}else this.activateChildRoutes(e,null,n)}}class o${constructor(e){this.path=e,this.route=this.path[this.path.length-1]}}class xA{constructor(e,t){this.component=e,this.route=t}}function Dse(i,e,t){const n=i._root;return b_(n,e?e._root:null,t,[n.value])}function $b(i,e){const t=Symbol(),n=e.get(i,t);return n===t?"function"!=typeof i||function VN(i){return null!==Ny(i)}(i)?e.get(i):i:n}function b_(i,e,t,n,r={canDeactivateChecks:[],canActivateChecks:[]}){const s=Vb(e);return i.children.forEach(a=>{(function Tse(i,e,t,n,r={canDeactivateChecks:[],canActivateChecks:[]}){const s=i.value,a=e?e.value:null,d=t?t.getContext(i.value.outlet):null;if(a&&s.routeConfig===a.routeConfig){const h=function Mse(i,e,t){if("function"==typeof t)return t(i,e);switch(t){case"pathParamsChange":return!d1(i.url,e.url);case"pathParamsOrQueryParamsChange":return!d1(i.url,e.url)||!bd(i.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!c6(i,e)||!bd(i.queryParams,e.queryParams);default:return!c6(i,e)}}(a,s,s.routeConfig.runGuardsAndResolvers);h?r.canActivateChecks.push(new o$(n)):(s.data=a.data,s._resolvedData=a._resolvedData),s.component?b_(i,e,d?d.children:null,n,r):b_(i,e,t,n,r),h&&d&&d.outlet&&d.outlet.isActivated&&r.canDeactivateChecks.push(new xA(d.outlet.component,a))}else a&&y_(e,d,r),r.canActivateChecks.push(new o$(n)),s.component?b_(i,null,d?d.children:null,n,r):b_(i,null,t,n,r);return r})(a,s[a.value.outlet],t,n.concat([a.value]),r),delete s[a.value.outlet]}),Object.entries(s).forEach(([a,d])=>y_(d,t.getContext(a),r)),r}function y_(i,e,t){const n=Vb(i),r=i.value;Object.entries(n).forEach(([s,a])=>{r.component?y_(a,e?e.children.getContext(s):null,t):y_(a,e,t)}),r.component&&e&&e.outlet&&e.outlet.isActivated?t.canDeactivateChecks.push(new xA(e.outlet.component,r)):t.canDeactivateChecks.push(new xA(null,r))}function C_(i){return"function"==typeof i}function s$(i){return i instanceof ro||"EmptyError"===i?.name}const SA=Symbol("INITIAL_VALUE");function Wb(){return Js(i=>YP(i.map(e=>e.pipe(Zr(1),eG(SA)))).pipe(qe(e=>{for(const t of e)if(!0!==t){if(t===SA)return SA;if(!1===t||Bse(t))return t}return!0}),rn(e=>e!==SA),Zr(1)))}function Bse(i){return u1(i)||i instanceof u6}function Hse(i,e){return _o(t=>{const{targetSnapshot:n,currentSnapshot:r,guards:{canActivateChecks:s,canDeactivateChecks:a}}=t;return 0===a.length&&0===s.length?He({...t,guardsResult:!0}):function Vse(i,e,t,n){return Mr(i).pipe(_o(r=>function jse(i,e,t,n,r){const s=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!s||0===s.length)return He(!0);const a=s.map(d=>{const h=f_(e)??r,p=$b(d,h);return um(function Pse(i){return i&&C_(i.canDeactivate)}(p)?p.canDeactivate(i,e,t,n):Oo(h,()=>p(i,e,t,n))).pipe(qa())});return He(a).pipe(Wb())}(r.component,r.route,t,e,n)),qa(r=>!0!==r,!0))}(a,n,r,i).pipe(_o(d=>d&&function Ise(i){return"boolean"==typeof i}(d)?function zse(i,e,t,n){return Mr(e).pipe(e1(r=>W2(function $se(i,e){return null!==i&&e&&e(new use(i)),He(!0)}(r.route.parent,n),function Gse(i,e){return null!==i&&e&&e(new pse(i)),He(!0)}(r.route,n),function Use(i,e,t){const n=e[e.length-1],s=e.slice(0,e.length-1).reverse().map(a=>function Ase(i){const e=i.routeConfig?i.routeConfig.canActivateChild:null;return e&&0!==e.length?{node:i,guards:e}:null}(a)).filter(a=>null!==a).map(a=>e_(()=>He(a.guards.map(h=>{const p=f_(a.node)??t,g=$b(h,p);return um(function Rse(i){return i&&C_(i.canActivateChild)}(g)?g.canActivateChild(n,i):Oo(p,()=>g(n,i))).pipe(qa())})).pipe(Wb())));return He(s).pipe(Wb())}(i,r.path,t),function Wse(i,e,t){const n=e.routeConfig?e.routeConfig.canActivate:null;if(!n||0===n.length)return He(!0);const r=n.map(s=>e_(()=>{const a=f_(e)??t,d=$b(s,a);return um(function Ose(i){return i&&C_(i.canActivate)}(d)?d.canActivate(e,i):Oo(a,()=>d(e,i))).pipe(qa())}));return He(r).pipe(Wb())}(i,r.route,t))),qa(r=>!0!==r,!0))}(n,s,i,e):He(d)),qe(d=>({...t,guardsResult:d})))})}function qse(i,e,t,n){const r=e.canLoad;if(void 0===r||0===r.length)return He(!0);return He(r.map(a=>{const d=$b(a,i);return um(function Lse(i){return i&&C_(i.canLoad)}(d)?d.canLoad(e,t):Oo(i,()=>d(e,t)))})).pipe(Wb(),a$(n))}function a$(i){return function mI(...i){return xE(i)}(Uo(e=>{if("boolean"!=typeof e)throw FA(0,e)}),qe(e=>!0===e))}function Kse(i,e,t,n){const r=e.canMatch;if(!r||0===r.length)return He(!0);return He(r.map(a=>{const d=$b(a,i);return um(function Nse(i){return i&&C_(i.canMatch)}(d)?d.canMatch(e,t):Oo(i,()=>d(e,t)))})).pipe(Wb(),a$())}class h6{constructor(e){this.segmentGroup=e||null}}class DA extends Error{constructor(e){super(),this.urlTree=e}}function Ub(i){return hA(new h6(i))}class Jse{constructor(e,t){this.urlSerializer=e,this.urlTree=t}lineralizeSegments(e,t){let n=[],r=t.root;for(;;){if(n=n.concat(r.segments),0===r.numberOfChildren)return He(n);if(r.numberOfChildren>1||!r.children[Tt])return e.redirectTo,hA(new j(4e3,!1));r=r.children[Tt]}}applyRedirectCommands(e,t,n,r,s){if("string"!=typeof t){const d=t,{queryParams:h,fragment:p,routeConfig:g,url:v,outlet:y,params:C,data:k,title:E}=r,x=Oo(s,()=>d({params:C,data:k,queryParams:h,fragment:p,routeConfig:g,url:v,outlet:y,title:E}));if(x instanceof c1)throw new DA(x);t=x}const a=this.applyRedirectCreateUrlTree(t,this.urlSerializer.parse(t),e,n);if("/"===t[0])throw new DA(a);return a}applyRedirectCreateUrlTree(e,t,n,r){const s=this.createSegmentGroup(e,t.root,n,r);return new c1(s,this.createQueryParams(t.queryParams,this.urlTree.queryParams),t.fragment)}createQueryParams(e,t){const n={};return Object.entries(e).forEach(([r,s])=>{if("string"==typeof s&&":"===s[0]){const d=s.substring(1);n[r]=t[d]}else n[r]=s}),n}createSegmentGroup(e,t,n,r){const s=this.createSegments(e,t.segments,n,r);let a={};return Object.entries(t.children).forEach(([d,h])=>{a[d]=this.createSegmentGroup(e,h,n,r)}),new Zi(s,a)}createSegments(e,t,n,r){return t.map(s=>":"===s.path[0]?this.findPosParam(e,s,r):this.findOrReturn(s,n))}findPosParam(e,t,n){const r=n[t.path.substring(1)];if(!r)throw new j(4001,!1);return r}findOrReturn(e,t){let n=0;for(const r of t){if(r.path===e.path)return t.splice(n),r;n++}return e}}const p6={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Xse(i,e,t,n,r){const s=l$(i,e,t);return s.matched?(n=function gse(i,e){return i.providers&&!i._injector&&(i._injector=w0(i.providers,e,`Route: ${i.path}`)),i._injector??e}(e,n),Kse(n,e,t).pipe(qe(a=>!0===a?s:{...p6}))):He(s)}function l$(i,e,t){if("**"===e.path)return function Qse(i){return{matched:!0,parameters:i.length>0?TG(i).parameters:{},consumedSegments:i,remainingSegments:[],positionalParamSegments:{}}}(t);if(""===e.path)return"full"===e.pathMatch&&(i.hasChildren()||t.length>0)?{...p6}:{matched:!0,consumedSegments:[],remainingSegments:t,parameters:{},positionalParamSegments:{}};const r=(e.matcher||Ioe)(t,i,e);if(!r)return{...p6};const s={};Object.entries(r.posParams??{}).forEach(([d,h])=>{s[d]=h.path});const a=r.consumed.length>0?{...s,...r.consumed[r.consumed.length-1].parameters}:s;return{matched:!0,consumedSegments:r.consumed,remainingSegments:t.slice(r.consumed.length),parameters:a,positionalParamSegments:r.posParams??{}}}function c$(i,e,t,n){return t.length>0&&function iae(i,e,t){return t.some(n=>AA(i,e,n)&&Cc(n)!==Tt)}(i,t,n)?{segmentGroup:new Zi(e,tae(n,new Zi(t,i.children))),slicedSegments:[]}:0===t.length&&function nae(i,e,t){return t.some(n=>AA(i,e,n))}(i,t,n)?{segmentGroup:new Zi(i.segments,eae(i,t,n,i.children)),slicedSegments:t}:{segmentGroup:new Zi(i.segments,i.children),slicedSegments:t}}function eae(i,e,t,n){const r={};for(const s of t)if(AA(i,e,s)&&!n[Cc(s)]){const a=new Zi([],{});r[Cc(s)]=a}return{...n,...r}}function tae(i,e){const t={};t[Tt]=e;for(const n of i)if(""===n.path&&Cc(n)!==Tt){const r=new Zi([],{});t[Cc(n)]=r}return t}function AA(i,e,t){return(!(i.hasChildren()||e.length>0)||"full"!==t.pathMatch)&&""===t.path}class oae{}class lae{constructor(e,t,n,r,s,a,d){this.injector=e,this.configLoader=t,this.rootComponentType=n,this.config=r,this.urlTree=s,this.paramsInheritanceStrategy=a,this.urlSerializer=d,this.applyRedirects=new Jse(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(e){return new j(4002,`'${e.segmentGroup}'`)}recognize(){const e=c$(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(e).pipe(qe(({children:t,rootSnapshot:n})=>{const r=new wc(n,t),s=new QG("",r),a=function Xoe(i,e,t=null,n=null){return GG(zG(i),e,t,n)}(n,[],this.urlTree.queryParams,this.urlTree.fragment);return a.queryParams=this.urlTree.queryParams,s.url=this.urlSerializer.serialize(a),{state:s,tree:a}}))}match(e){const t=new _A([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,Object.freeze({}),Tt,this.rootComponentType,null,{});return this.processSegmentGroup(this.injector,this.config,e,Tt,t).pipe(qe(n=>({children:n,rootSnapshot:t})),l1(n=>{if(n instanceof DA)return this.urlTree=n.urlTree,this.match(n.urlTree.root);throw n instanceof h6?this.noMatchError(n):n}))}processSegmentGroup(e,t,n,r,s){return 0===n.segments.length&&n.hasChildren()?this.processChildren(e,t,n,s):this.processSegment(e,t,n,n.segments,r,!0,s).pipe(qe(a=>a instanceof wc?[a]:[]))}processChildren(e,t,n,r){const s=[];for(const a of Object.keys(n.children))"primary"===a?s.unshift(a):s.push(a);return Mr(s).pipe(e1(a=>{const d=n.children[a],h=function yse(i,e){const t=i.filter(n=>Cc(n)===e);return t.push(...i.filter(n=>Cc(n)!==e)),t}(t,a);return this.processSegmentGroup(e,h,d,a,r)}),Doe((a,d)=>(a.push(...d),a)),Bm(null),function Aoe(i,e){const t=arguments.length>=2;return n=>n.pipe(i?rn((r,s)=>i(r,s,n)):ja,JP(1),t?Bm(e):Jn(()=>new ro))}(),_o(a=>{if(null===a)return Ub(n);const d=d$(a);return function cae(i){i.sort((e,t)=>e.value.outlet===Tt?-1:t.value.outlet===Tt?1:e.value.outlet.localeCompare(t.value.outlet))}(d),He(d)}))}processSegment(e,t,n,r,s,a,d){return Mr(t).pipe(e1(h=>this.processSegmentAgainstRoute(h._injector??e,t,h,n,r,s,a,d).pipe(l1(p=>{if(p instanceof h6)return He(null);throw p}))),qa(h=>!!h),l1(h=>{if(s$(h))return function rae(i,e,t){return 0===e.length&&!i.children[t]}(n,r,s)?He(new oae):Ub(n);throw h}))}processSegmentAgainstRoute(e,t,n,r,s,a,d,h){return Cc(n)===a||a!==Tt&&AA(r,s,n)?void 0===n.redirectTo?this.matchSegmentAgainstRoute(e,r,n,s,a,h):this.allowRedirects&&d?this.expandSegmentAgainstRouteUsingRedirect(e,r,t,n,s,a,h):Ub(r):Ub(r)}expandSegmentAgainstRouteUsingRedirect(e,t,n,r,s,a,d){const{matched:h,parameters:p,consumedSegments:g,positionalParamSegments:v,remainingSegments:y}=l$(t,r,s);if(!h)return Ub(t);"string"==typeof r.redirectTo&&"/"===r.redirectTo[0]&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>31&&(this.allowRedirects=!1));const C=new _A(s,p,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,u$(r),Cc(r),r.component??r._loadedComponent??null,r,h$(r)),k=kA(C,d,this.paramsInheritanceStrategy);C.params=Object.freeze(k.params),C.data=Object.freeze(k.data);const E=this.applyRedirects.applyRedirectCommands(g,r.redirectTo,v,C,e);return this.applyRedirects.lineralizeSegments(r,E).pipe(_o(x=>this.processSegment(e,n,t,x.concat(y),a,!1,d)))}matchSegmentAgainstRoute(e,t,n,r,s,a){const d=Xse(t,n,r,e,this.urlSerializer);return"**"===n.path&&(t.children={}),d.pipe(Js(h=>h.matched?(e=n._injector??e,this.getChildConfig(e,n,r).pipe(Js(({routes:p})=>{const g=n._loadedInjector??e,{parameters:v,consumedSegments:y,remainingSegments:C}=h,k=new _A(y,v,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,u$(n),Cc(n),n.component??n._loadedComponent??null,n,h$(n)),E=kA(k,a,this.paramsInheritanceStrategy);k.params=Object.freeze(E.params),k.data=Object.freeze(E.data);const{segmentGroup:x,slicedSegments:S}=c$(t,y,C,p);if(0===S.length&&x.hasChildren())return this.processChildren(g,p,x,k).pipe(qe(I=>new wc(k,I)));if(0===p.length&&0===S.length)return He(new wc(k,[]));const D=Cc(n)===s;return this.processSegment(g,p,x,S,D?Tt:s,!0,k).pipe(qe(I=>new wc(k,I instanceof wc?[I]:[])))}))):Ub(t)))}getChildConfig(e,t,n){return t.children?He({routes:t.children,injector:e}):t.loadChildren?void 0!==t._loadedRoutes?He({routes:t._loadedRoutes,injector:t._loadedInjector}):qse(e,t,n,this.urlSerializer).pipe(_o(r=>r?this.configLoader.loadChildren(e,t).pipe(Uo(s=>{t._loadedRoutes=s.routes,t._loadedInjector=s.injector})):function Zse(i){return hA(n$(!1,Xs.GuardRejected))}())):He({routes:[],injector:e})}}function dae(i){const e=i.value.routeConfig;return e&&""===e.path}function d$(i){const e=[],t=new Set;for(const n of i){if(!dae(n)){e.push(n);continue}const r=e.find(s=>n.value.routeConfig===s.value.routeConfig);void 0!==r?(r.children.push(...n.children),t.add(r)):e.push(n)}for(const n of t){const r=d$(n.children);e.push(new wc(n.value,r))}return e.filter(n=>!t.has(n))}function u$(i){return i.data||{}}function h$(i){return i.resolve||{}}function uae(i,e,t,n,r,s){return _o(a=>function sae(i,e,t,n,r,s,a="emptyOnly"){return new lae(i,e,t,n,r,a,s).recognize()}(i,e,t,n,a.extractedUrl,r,s).pipe(qe(({state:d,tree:h})=>({...a,targetSnapshot:d,urlAfterRedirects:h}))))}function hae(i,e){return _o(t=>{const{targetSnapshot:n,guards:{canActivateChecks:r}}=t;if(!r.length)return He(t);const s=new Set(r.map(h=>h.route)),a=new Set;for(const h of s)if(!a.has(h))for(const p of p$(h))a.add(p);let d=0;return Mr(a).pipe(e1(h=>s.has(h)?function pae(i,e,t,n){const r=i.routeConfig,s=i._resolve;return void 0!==r?.title&&!t$(r)&&(s[c_]=r.title),function mae(i,e,t,n){const r=XP(i);if(0===r.length)return He({});const s={};return Mr(r).pipe(_o(a=>function gae(i,e,t,n){const r=f_(e)??n,s=$b(i,r),a=s.resolve?s.resolve(e,t):Oo(r,()=>s(e,t));return um(a)}(i[a],e,t,n).pipe(qa(),Uo(d=>{if(d instanceof u6)throw FA(new mA,d);s[a]=d}))),JP(1),function Toe(i){return qe(()=>i)}(s),l1(a=>s$(a)?wr:hA(a)))}(s,i,e,n).pipe(qe(a=>(i._resolvedData=a,i.data=kA(i,i.parent,t).resolve,null)))}(h,n,i,e):(h.data=kA(h,h.parent,i).resolve,He(void 0))),Uo(()=>d++),JP(1),_o(h=>d===a.size?He(t):wr))})}function p$(i){const e=i.children.map(t=>p$(t)).flat();return[i,...e]}function m6(i){return Js(e=>{const t=i(e);return t?Mr(t).pipe(qe(()=>e)):He(e)})}class w_{buildTitle(e){let t,n=e.root;for(;void 0!==n;)t=this.getResolvedTitleForRoute(n)??t,n=n.children.find(r=>r.outlet===Tt);return t}getResolvedTitleForRoute(e){return e.data[c_]}static{this.\u0275fac=function(t){return new(t||w_)}}static{this.\u0275prov=ue({token:w_,factory:()=>K(k_),providedIn:"root"})}}class k_ extends w_{constructor(e){super(),this.title=e}updateTitle(e){const t=this.buildTitle(e);void 0!==t&&this.title.setTitle(t)}static{this.\u0275fac=function(t){return new(t||k_)(ve(w2))}}static{this.\u0275prov=ue({token:k_,factory:k_.\u0275fac,providedIn:"root"})}}const jb=new ge("",{providedIn:"root",factory:()=>({})});class m1{static{this.\u0275fac=function(t){return new(t||m1)}}static{this.\u0275cmp=Kd({type:m1,selectors:[["ng-component"]],standalone:!0,features:[L0],decls:1,vars:0,template:function(t,n){1&t&&Tp(0,"router-outlet")},dependencies:[p1],encapsulation:2})}}function g6(i){const e=i.children&&i.children.map(g6),t=e?{...i,children:e}:{...i};return!t.component&&!t.loadComponent&&(e||t.loadChildren)&&t.outlet&&t.outlet!==Tt&&(t.component=m1),t}const qb=new ge("");class g1{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=K(zu)}loadComponent(e){if(this.componentLoaders.get(e))return this.componentLoaders.get(e);if(e._loadedComponent)return He(e._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(e);const t=um(e.loadComponent()).pipe(qe(m$),Uo(r=>{this.onLoadEndListener&&this.onLoadEndListener(e),e._loadedComponent=r}),H2(()=>{this.componentLoaders.delete(e)})),n=new DG(t,()=>new mi).pipe(ZP());return this.componentLoaders.set(e,n),n}loadChildren(e,t){if(this.childrenLoaders.get(t))return this.childrenLoaders.get(t);if(t._loadedRoutes)return He({routes:t._loadedRoutes,injector:t._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(t);const r=function fae(i,e,t,n){return um(i.loadChildren()).pipe(qe(m$),_o(r=>r instanceof Sk||Array.isArray(r)?He(r):Mr(e.compileModuleAsync(r))),qe(r=>{n&&n(i);let s,a,d=!1;return Array.isArray(r)?(a=r,d=!0):(s=r.create(t).injector,a=s.get(qb,[],{optional:!0,self:!0}).flat()),{routes:a.map(g6),injector:s}}))}(t,this.compiler,e,this.onLoadEndListener).pipe(H2(()=>{this.childrenLoaders.delete(t)})),s=new DG(r,()=>new mi).pipe(ZP());return this.childrenLoaders.set(t,s),s}static{this.\u0275fac=function(t){return new(t||g1)}}static{this.\u0275prov=ue({token:g1,factory:g1.\u0275fac,providedIn:"root"})}}function m$(i){return function vae(i){return i&&"object"==typeof i&&"default"in i}(i)?i.default:i}class Kb{static{this.\u0275fac=function(t){return new(t||Kb)}}static{this.\u0275prov=ue({token:Kb,factory:()=>K(__),providedIn:"root"})}}class __{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,t){return e}static{this.\u0275fac=function(t){return new(t||__)}}static{this.\u0275prov=ue({token:__,factory:__.\u0275fac,providedIn:"root"})}}const g$=new ge(""),f$=new ge("");function bae(i,e,t){const n=i.get(f$),r=i.get(sr);return i.get(ni).runOutsideAngular(()=>{if(!r.startViewTransition||n.skipNextTransition)return n.skipNextTransition=!1,new Promise(p=>setTimeout(p));let s;const a=new Promise(p=>{s=p}),d=r.startViewTransition(()=>(s(),function yae(i){return new Promise(e=>{ff({read:()=>setTimeout(e)},{injector:i})})}(i))),{onViewTransitionCreated:h}=n;return h&&Oo(i,()=>h({transition:d,from:e,to:t})),a})}const v$=new ge("");class hm{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new mi,this.transitionAbortSubject=new mi,this.configLoader=K(g1),this.environmentInjector=K(Nr),this.urlSerializer=K(eh),this.rootContexts=K(th),this.location=K(ju),this.inputBindingEnabled=null!==K(EA,{optional:!0}),this.titleStrategy=K(w_),this.options=K(jb,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=K(Kb),this.createViewTransition=K(g$,{optional:!0}),this.navigationErrorHandler=K(v$,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>He(void 0),this.rootComponentType=null;this.configLoader.onLoadEndListener=n=>this.events.next(new dse(n)),this.configLoader.onLoadStartListener=n=>this.events.next(new cse(n))}complete(){this.transitions?.complete()}handleNavigationRequest(e){const t=++this.navigationId;this.transitions?.next({...this.transitions.value,...e,id:t})}setupNavigations(e,t,n){return this.transitions=new Wt({id:0,currentUrlTree:t,currentRawUrl:t,extractedUrl:this.urlHandlingStrategy.extract(t),urlAfterRedirects:this.urlHandlingStrategy.extract(t),rawUrl:t,extras:{},resolve:()=>{},reject:()=>{},promise:Promise.resolve(!0),source:m_,restoredState:null,currentSnapshot:n.snapshot,targetSnapshot:null,currentRouterState:n,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(rn(r=>0!==r.id),qe(r=>({...r,extractedUrl:this.urlHandlingStrategy.extract(r.rawUrl)})),Js(r=>{let s=!1,a=!1;return He(r).pipe(Js(d=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,"",Xs.SupersededByNewNavigation),wr;this.currentTransition=r,this.currentNavigation={id:d.id,initialUrl:d.rawUrl,extractedUrl:d.extractedUrl,targetBrowserUrl:"string"==typeof d.extras.browserUrl?this.urlSerializer.parse(d.extras.browserUrl):d.extras.browserUrl,trigger:d.source,extras:d.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null};const h=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),p=d.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!h&&"reload"!==p){const g="";return this.events.next(new Hb(d.id,this.urlSerializer.serialize(d.rawUrl),g,g_.IgnoredSameUrlNavigation)),d.resolve(!1),wr}if(this.urlHandlingStrategy.shouldProcessUrl(d.rawUrl))return He(d).pipe(Js(g=>{const v=this.transitions?.getValue();return this.events.next(new CA(g.id,this.urlSerializer.serialize(g.extractedUrl),g.source,g.restoredState)),v!==this.transitions?.getValue()?wr:Promise.resolve(g)}),uae(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy),Uo(g=>{r.targetSnapshot=g.targetSnapshot,r.urlAfterRedirects=g.urlAfterRedirects,this.currentNavigation={...this.currentNavigation,finalUrl:g.urlAfterRedirects};const v=new KG(g.id,this.urlSerializer.serialize(g.extractedUrl),this.urlSerializer.serialize(g.urlAfterRedirects),g.targetSnapshot);this.events.next(v)}));if(h&&this.urlHandlingStrategy.shouldProcessUrl(d.currentRawUrl)){const{id:g,extractedUrl:v,source:y,restoredState:C,extras:k}=d,E=new CA(g,this.urlSerializer.serialize(v),y,C);this.events.next(E);const x=XG(this.rootComponentType).snapshot;return this.currentTransition=r={...d,targetSnapshot:x,urlAfterRedirects:v,extras:{...k,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.finalUrl=v,He(r)}{const g="";return this.events.next(new Hb(d.id,this.urlSerializer.serialize(d.extractedUrl),g,g_.IgnoredByUrlHandlingStrategy)),d.resolve(!1),wr}}),Uo(d=>{const h=new ose(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot);this.events.next(h)}),qe(d=>(this.currentTransition=r={...d,guards:Dse(d.targetSnapshot,d.currentSnapshot,this.rootContexts)},r)),Hse(this.environmentInjector,d=>this.events.next(d)),Uo(d=>{if(r.guardsResult=d.guardsResult,d.guardsResult&&"boolean"!=typeof d.guardsResult)throw FA(this.urlSerializer,d.guardsResult);const h=new sse(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot,!!d.guardsResult);this.events.next(h)}),rn(d=>!!d.guardsResult||(this.cancelNavigationTransition(d,"",Xs.GuardRejected),!1)),m6(d=>{if(d.guards.canActivateChecks.length)return He(d).pipe(Uo(h=>{const p=new ase(h.id,this.urlSerializer.serialize(h.extractedUrl),this.urlSerializer.serialize(h.urlAfterRedirects),h.targetSnapshot);this.events.next(p)}),Js(h=>{let p=!1;return He(h).pipe(hae(this.paramsInheritanceStrategy,this.environmentInjector),Uo({next:()=>p=!0,complete:()=>{p||this.cancelNavigationTransition(h,"",Xs.NoDataFromResolver)}}))}),Uo(h=>{const p=new lse(h.id,this.urlSerializer.serialize(h.extractedUrl),this.urlSerializer.serialize(h.urlAfterRedirects),h.targetSnapshot);this.events.next(p)}))}),m6(d=>{const h=p=>{const g=[];p.routeConfig?.loadComponent&&!p.routeConfig._loadedComponent&&g.push(this.configLoader.loadComponent(p.routeConfig).pipe(Uo(v=>{p.component=v}),qe(()=>{})));for(const v of p.children)g.push(...h(v));return g};return YP(h(d.targetSnapshot.root)).pipe(Bm(null),Zr(1))}),m6(()=>this.afterPreactivation()),Js(()=>{const{currentSnapshot:d,targetSnapshot:h}=r,p=this.createViewTransition?.(this.environmentInjector,d.root,h.root);return p?Mr(p).pipe(qe(()=>r)):He(r)}),qe(d=>{const h=function kse(i,e,t){const n=v_(i,e._root,t?t._root:void 0);return new JG(n,e)}(e.routeReuseStrategy,d.targetSnapshot,d.currentRouterState);return this.currentTransition=r={...d,targetRouterState:h},this.currentNavigation.targetRouterState=h,r}),Uo(()=>{this.events.next(new r6)}),((i,e,t,n)=>qe(r=>(new Sse(e,r.targetRouterState,r.currentRouterState,t,n).activate(i),r)))(this.rootContexts,e.routeReuseStrategy,d=>this.events.next(d),this.inputBindingEnabled),Zr(1),Uo({next:d=>{s=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new Cd(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects))),this.titleStrategy?.updateTitle(d.targetRouterState.snapshot),d.resolve(!0)},complete:()=>{s=!0}}),dm(this.transitionAbortSubject.pipe(Uo(d=>{throw d}))),H2(()=>{!s&&!a&&this.cancelNavigationTransition(r,"",Xs.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation=null,this.currentTransition=null)}),l1(d=>{if(a=!0,r$(d))this.events.next(new h1(r.id,this.urlSerializer.serialize(r.extractedUrl),d.message,d.cancellationCode)),function Fse(i){return r$(i)&&u1(i.url)}(d)?this.events.next(new wA(d.url,d.navigationBehaviorOptions)):r.resolve(!1);else{const h=new n6(r.id,this.urlSerializer.serialize(r.extractedUrl),d,r.targetSnapshot??void 0);try{const p=Oo(this.environmentInjector,()=>this.navigationErrorHandler?.(h));if(p instanceof u6){const{message:g,cancellationCode:v}=FA(this.urlSerializer,p);this.events.next(new h1(r.id,this.urlSerializer.serialize(r.extractedUrl),g,v)),this.events.next(new wA(p.redirectTo,p.navigationBehaviorOptions))}else{this.events.next(h);const g=e.errorHandler(d);r.resolve(!!g)}}catch(p){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(p)}}return wr}))}))}cancelNavigationTransition(e,t,n){const r=new h1(e.id,this.urlSerializer.serialize(e.extractedUrl),t,n);this.events.next(r),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){const e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),t=this.currentNavigation?.targetBrowserUrl??this.currentNavigation?.extractedUrl;return e.toString()!==t?.toString()&&!this.currentNavigation?.extras.skipLocationChange}static{this.\u0275fac=function(t){return new(t||hm)}}static{this.\u0275prov=ue({token:hm,factory:hm.\u0275fac,providedIn:"root"})}}function Cae(i){return i!==m_}class TA{static{this.\u0275fac=function(t){return new(t||TA)}}static{this.\u0275prov=ue({token:TA,factory:()=>K(Yb),providedIn:"root"})}}class wae{shouldDetach(e){return!1}store(e,t){}shouldAttach(e){return!1}retrieve(e){return null}shouldReuseRoute(e,t){return e.routeConfig===t.routeConfig}}class Yb extends wae{static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(Yb)))(n||Yb)}})()}static{this.\u0275prov=ue({token:Yb,factory:Yb.\u0275fac,providedIn:"root"})}}class E_{static{this.\u0275fac=function(t){return new(t||E_)}}static{this.\u0275prov=ue({token:E_,factory:()=>K(Zb),providedIn:"root"})}}class Zb extends E_{constructor(){super(...arguments),this.location=K(ju),this.urlSerializer=K(eh),this.options=K(jb,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=K(Kb),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new c1,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=XG(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(t=>{"popstate"===t.type&&e(t.url,t.state)})}handleRouterEvent(e,t){if(e instanceof CA)this.stateMemento=this.createStateMemento();else if(e instanceof Hb)this.rawUrlTree=t.initialUrl;else if(e instanceof KG){if("eager"===this.urlUpdateStrategy&&!t.extras.skipLocationChange){const n=this.urlHandlingStrategy.merge(t.finalUrl,t.initialUrl);this.setBrowserUrl(t.targetBrowserUrl??n,t)}}else e instanceof r6?(this.currentUrlTree=t.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(t.finalUrl,t.initialUrl),this.routerState=t.targetRouterState,"deferred"===this.urlUpdateStrategy&&!t.extras.skipLocationChange&&this.setBrowserUrl(t.targetBrowserUrl??this.rawUrlTree,t)):e instanceof h1&&(e.code===Xs.GuardRejected||e.code===Xs.NoDataFromResolver)?this.restoreHistory(t):e instanceof n6?this.restoreHistory(t,!0):e instanceof Cd&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,t){const n=e instanceof c1?this.urlSerializer.serialize(e):e;if(this.location.isCurrentPathEqualTo(n)||t.extras.replaceUrl){const r=this.browserPageId,s={...t.extras.state,...this.generateNgRouterState(t.id,r)};this.location.replaceState(n,"",s)}else{const r={...t.extras.state,...this.generateNgRouterState(t.id,this.browserPageId+1)};this.location.go(n,"",r)}}restoreHistory(e,t=!1){if("computed"===this.canceledNavigationResolution){const n=this.browserPageId,r=this.currentPageId-n;0!==r?this.location.historyGo(r):this.currentUrlTree===e.finalUrl&&0===r&&(this.resetState(e),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(t&&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,t){return"computed"===this.canceledNavigationResolution?{navigationId:e,\u0275routerPageId:t}:{navigationId:e}}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Vi(Zb)))(n||Zb)}})()}static{this.\u0275prov=ue({token:Zb,factory:Zb.\u0275fac,providedIn:"root"})}}var Jb;function b$(i,e){i.events.pipe(rn(t=>t instanceof Cd||t instanceof h1||t instanceof n6||t instanceof Hb),qe(t=>t instanceof Cd||t instanceof Hb?Jb.COMPLETE:t instanceof h1&&(t.code===Xs.Redirect||t.code===Xs.SupersededByNewNavigation)?Jb.REDIRECTING:Jb.FAILED),rn(t=>t!==Jb.REDIRECTING),Zr(1)).subscribe(()=>{e()})}function kae(i){throw i}!function(i){i[i.COMPLETE=0]="COMPLETE",i[i.FAILED=1]="FAILED",i[i.REDIRECTING=2]="REDIRECTING"}(Jb||(Jb={}));const _ae={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},Eae={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};class jo{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=K(Lp),this.stateManager=K(E_),this.options=K(jb,{optional:!0})||{},this.pendingTasks=K(Qr),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=K(hm),this.urlSerializer=K(eh),this.location=K(ju),this.urlHandlingStrategy=K(Kb),this._events=new mi,this.errorHandler=this.options.errorHandler||kae,this.navigated=!1,this.routeReuseStrategy=K(TA),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=K(qb,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!K(EA,{optional:!0}),this.eventsSubscription=new Bi,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(t=>{try{const n=this.navigationTransitions.currentTransition,r=this.navigationTransitions.currentNavigation;if(null!==n&&null!==r)if(this.stateManager.handleRouterEvent(t,r),t instanceof h1&&t.code!==Xs.Redirect&&t.code!==Xs.SupersededByNewNavigation)this.navigated=!0;else if(t instanceof Cd)this.navigated=!0;else if(t instanceof wA){const s=t.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(t.url,n.currentRawUrl),d={browserUrl:n.extras.browserUrl,info:n.extras.info,skipLocationChange:n.extras.skipLocationChange,replaceUrl:n.extras.replaceUrl||"eager"===this.urlUpdateStrategy||Cae(n.source),...s};this.scheduleNavigation(a,m_,null,d,{resolve:n.resolve,reject:n.reject,promise:n.promise})}(function xae(i){return!(i instanceof r6||i instanceof wA)})(t)&&this._events.next(t)}catch(n){this.navigationTransitions.transitionAbortSubject.next(n)}});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),m_,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,t)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(e,"popstate",t)},0)})}navigateToSyncWithBrowser(e,t,n){const r={replaceUrl:!0},s=n?.navigationId?n:null;if(n){const d={...n};delete d.navigationId,delete d.\u0275routerPageId,0!==Object.keys(d).length&&(r.state=d)}const a=this.parseUrl(e);this.scheduleNavigation(a,t,s,r)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(g6),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,t={}){const{relativeTo:n,queryParams:r,fragment:s,queryParamsHandling:a,preserveFragment:d}=t,h=d?this.currentUrlTree.fragment:s;let g,p=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":p={...this.currentUrlTree.queryParams,...r};break;case"preserve":p=this.currentUrlTree.queryParams;break;default:p=r||null}null!==p&&(p=this.removeEmptyProps(p));try{g=zG(n?n.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof e[0]||"/"!==e[0][0])&&(e=[]),g=this.currentUrlTree.root}return GG(g,e,p,h??null)}navigateByUrl(e,t={skipLocationChange:!1}){const n=u1(e)?e:this.parseUrl(e),r=this.urlHandlingStrategy.merge(n,this.rawUrlTree);return this.scheduleNavigation(r,m_,null,t)}navigate(e,t={skipLocationChange:!1}){return function Fae(i){for(let e=0;e(null!=r&&(t[n]=r),t),{})}scheduleNavigation(e,t,n,r,s){if(this.disposed)return Promise.resolve(!1);let a,d,h;s?(a=s.resolve,d=s.reject,h=s.promise):h=new Promise((g,v)=>{a=g,d=v});const p=this.pendingTasks.add();return b$(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(p))}),this.navigationTransitions.handleNavigationRequest({source:t,restoredState:n,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:r,resolve:a,reject:d,promise:h,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),h.catch(g=>Promise.reject(g))}static{this.\u0275fac=function(t){return new(t||jo)}}static{this.\u0275prov=ue({token:jo,factory:jo.\u0275fac,providedIn:"root"})}}class pm{constructor(e,t,n,r,s,a){this.router=e,this.route=t,this.tabIndexAttribute=n,this.renderer=r,this.el=s,this.locationStrategy=a,this.href=null,this.onChanges=new mi,this.preserveFragment=!1,this.skipLocationChange=!1,this.replaceUrl=!1,this.routerLinkInput=null;const d=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===d||"area"===d,this.isAnchorElement?this.subscription=e.events.subscribe(h=>{h instanceof Cd&&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.routerLinkInput=null,this.setTabIndexIfNotOnNativeEl(null)):(u1(e)?this.routerLinkInput=e:this.routerLinkInput=Array.isArray(e)?e:[e],this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,t,n,r,s){const a=this.urlTree;if(null===a||this.isAnchorElement&&(0!==e||t||n||r||s||"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(a,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 t=null===this.href?null:Ct(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",t)}applyAttributeValue(e,t){const n=this.renderer,r=this.el.nativeElement;null!==t?n.setAttribute(r,e,t):n.removeAttribute(r,e)}get urlTree(){return null===this.routerLinkInput?null:u1(this.routerLinkInput)?this.routerLinkInput:this.router.createUrlTree(this.routerLinkInput,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static{this.\u0275fac=function(t){return new(t||pm)(Z(jo),Z(zb),dl("tabindex"),Z(Co),Z(wi),Z(hd))}}static{this.\u0275dir=De({type:pm,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(t,n){1&t&&Gn("click",function(s){return n.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),2&t&&ko("target",n.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",qi],skipLocationChange:[2,"skipLocationChange","skipLocationChange",qi],replaceUrl:[2,"replaceUrl","replaceUrl",qi],routerLink:"routerLink"},standalone:!0,features:[wp,yi]})}}class Xb{get isActive(){return this._isActive}constructor(e,t,n,r,s){this.router=e,this.element=t,this.renderer=n,this.cdr=r,this.link=s,this.classes=[],this._isActive=!1,this.routerLinkActiveOptions={exact:!1},this.isActiveChange=new Je,this.routerEventsSubscription=e.events.subscribe(a=>{a instanceof Cd&&this.update()})}ngAfterContentInit(){He(this.links.changes,He(null)).pipe(fb()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();const e=[...this.links.toArray(),this.link].filter(t=>!!t).map(t=>t.onChanges);this.linkInputChangesSubscription=Mr(e).pipe(fb()).subscribe(t=>{this._isActive!==this.isLinkActive(this.router)(t)&&this.update()})}set routerLinkActive(e){const t=Array.isArray(e)?e:e.split(" ");this.classes=t.filter(n=>!!n)}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(t=>{e?this.renderer.addClass(this.element.nativeElement,t):this.renderer.removeClass(this.element.nativeElement,t)}),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 t=function Sae(i){return!!i.paths}(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return n=>{const r=n.urlTree;return!!r&&e.isActive(r,t)}}hasActiveLinks(){const e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static{this.\u0275fac=function(t){return new(t||Xb)(Z(jo),Z(wi),Z(Co),Z(bn),Z(pm,8))}}static{this.\u0275dir=De({type:Xb,selectors:[["","routerLinkActive",""]],contentQueries:function(t,n,r){if(1&t&&bs(r,pm,5),2&t){let s;mr(s=gr())&&(n.links=s)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],standalone:!0,features:[yi]})}}class y${}class MA{preload(e,t){return t().pipe(l1(()=>He(null)))}static{this.\u0275fac=function(t){return new(t||MA)}}static{this.\u0275prov=ue({token:MA,factory:MA.\u0275fac,providedIn:"root"})}}class IA{preload(e,t){return He(null)}static{this.\u0275fac=function(t){return new(t||IA)}}static{this.\u0275prov=ue({token:IA,factory:IA.\u0275fac,providedIn:"root"})}}class F_{constructor(e,t,n,r,s){this.router=e,this.injector=n,this.preloadingStrategy=r,this.loader=s}setUpPreloading(){this.subscription=this.router.events.pipe(rn(e=>e instanceof Cd),e1(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(e,t){const n=[];for(const r of t){r.providers&&!r._injector&&(r._injector=w0(r.providers,e,`Route: ${r.path}`));const s=r._injector??e,a=r._loadedInjector??s;(r.loadChildren&&!r._loadedRoutes&&void 0===r.canLoad||r.loadComponent&&!r._loadedComponent)&&n.push(this.preloadConfig(s,r)),(r.children||r._loadedRoutes)&&n.push(this.processRoutes(a,r.children??r._loadedRoutes))}return Mr(n).pipe(fb())}preloadConfig(e,t){return this.preloadingStrategy.preload(t,()=>{let n;n=t.loadChildren&&void 0===t.canLoad?this.loader.loadChildren(e,t):He(null);const r=n.pipe(_o(s=>null===s?He(void 0):(t._loadedRoutes=s.routes,t._loadedInjector=s.injector,this.processRoutes(s.injector??e,s.routes))));if(t.loadComponent&&!t._loadedComponent){return Mr([r,this.loader.loadComponent(t)]).pipe(fb())}return r})}static{this.\u0275fac=function(t){return new(t||F_)(ve(jo),ve(zu),ve(Nr),ve(y$),ve(g1))}}static{this.\u0275prov=ue({token:F_,factory:F_.\u0275fac,providedIn:"root"})}}const f6=new ge("");class x_{constructor(e,t,n,r,s={}){this.urlSerializer=e,this.transitions=t,this.viewportScroller=n,this.zone=r,this.options=s,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},s.scrollPositionRestoration||="disabled",s.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 CA?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof Cd?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof Hb&&e.code===g_.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 YG&&(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,t){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new YG(e,"popstate"===this.lastSource?this.store[this.restoredId]:null,t))})},0)})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static{this.\u0275fac=function(t){Ox()}}static{this.\u0275prov=ue({token:x_,factory:x_.\u0275fac})}}function C$(i){return i.routerState.root}function wd(i,e){return{\u0275kind:i,\u0275providers:e}}new ge("",{providedIn:"root",factory:()=>!1});function w$(){const i=K(ze);return e=>{const t=i.get(Go);if(e!==t.components[0])return;const n=i.get(jo),r=i.get(k$);1===i.get(v6)&&n.initialNavigation(),i.get(_$,null,Dt.Optional)?.setUpPreloading(),i.get(f6,null,Dt.Optional)?.init(),n.resetRootComponentType(t.componentTypes[0]),r.closed||(r.next(),r.complete(),r.unsubscribe())}}const k$=new ge("",{factory:()=>new mi}),v6=new ge("",{providedIn:"root",factory:()=>1});const _$=new ge("");function Mae(i){return wd(0,[{provide:_$,useExisting:F_},{provide:y$,useExisting:i}])}function Lae(i){return wd(9,[{provide:g$,useValue:bae},{provide:f$,useValue:{skipNextTransition:!!i?.skipInitialTransition,...i}}])}const E$=new ge("ROUTER_FORROOT_GUARD"),Oae=[ju,{provide:eh,useClass:mA},jo,th,{provide:zb,useFactory:C$,deps:[jo]},g1,[]];class f1{constructor(e){}static forRoot(e,t){return{ngModule:f1,providers:[Oae,[],{provide:qb,multi:!0,useValue:e},{provide:E$,useFactory:Bae,deps:[[jo,new Rs,new Ud]]},{provide:jb,useValue:t||{}},t?.useHash?{provide:hd,useClass:u2}:{provide:hd,useClass:z0},{provide:f6,useFactory:()=>{const i=K(IR),e=K(ni),t=K(jb),n=K(hm),r=K(eh);return t.scrollOffset&&i.setOffset(t.scrollOffset),new x_(r,n,i,e,t)}},t?.preloadingStrategy?Mae(t.preloadingStrategy).\u0275providers:[],t?.initialNavigation?Hae(t):[],t?.bindToComponentInputs?wd(8,[Gb,{provide:EA,useExisting:Gb}]).\u0275providers:[],t?.enableViewTransitions?Lae().\u0275providers:[],[{provide:F$,useFactory:w$},{provide:QD,multi:!0,useExisting:F$}]]}}static forChild(e){return{ngModule:f1,providers:[{provide:qb,multi:!0,useValue:e}]}}static{this.\u0275fac=function(t){return new(t||f1)(ve(E$,8))}}static{this.\u0275mod=Er({type:f1,imports:[p1,pm,Xb,m1],exports:[p1,pm,Xb,m1]})}static{this.\u0275inj=Qn({})}}function Bae(i){return"guarded"}function Hae(i){return["disabled"===i.initialNavigation?wd(3,[{provide:XD,multi:!0,useFactory:()=>{const e=K(jo);return()=>{e.setUpLocationChangeListener()}}},{provide:v6,useValue:2}]).\u0275providers:[],"enabledBlocking"===i.initialNavigation?wd(2,[{provide:v6,useValue:0},{provide:XD,multi:!0,deps:[ze],useFactory:e=>{const t=e.get(F7,Promise.resolve());return()=>t.then(()=>new Promise(n=>{const r=e.get(jo),s=e.get(k$);b$(r,()=>{n(!0)}),e.get(hm).afterPreactivation=()=>(n(!0),s.closed?He(void 0):s),r.initialNavigation()}))}}]).\u0275providers:[]]}const F$=new ge("");new P0("18.2.13");let LA=class{router;constructor(e){this.router=e}ngOnInit(){this.router.events.pipe(rn(e=>e instanceof Cd)).pipe(tG(0)).subscribe(()=>{const e=document.querySelector(".nav-link.active");e&&e.scrollIntoView({block:"nearest"})})}static ctorParameters=()=>[{type:jo}]};LA=Oe([We({selector:"app-root",template:'\n\n
\n
\n
\n \n
\n\n
\n
\n \n
\n
\n
\n
',styles:[Foe()]}),Xt("design:paramtypes",[jo])],LA);let OA=class{title="Angular-Slickgrid - Demo Site";subTitle="This site is to demo multiple usage of Angular-Slickgrid, choose an example from the left side menu"};OA=Oe([We({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'})],OA);var Gae=z(649),$ae=z.n(Gae);var Cn;!function(i){i.local="local",i.remote="remote"}(Cn||(Cn={}));class x${constructor(e){this.rxjs=e,this._infiniteScrollBottomHit=!1}addRxJsResource(e){this.rxjs=e}executeBackendProcessesCallback(e,t,n,r){const s=new Date;t&&n.service.postProcess&&n.service.postProcess(t),t&&n?.internalPostProcess&&n.internalPostProcess(t),void 0!==n.postProcess&&(t instanceof Object&&(t.metrics={startTime:e,endTime:s,executionTime:s.valueOf()-e.valueOf(),itemCount:r,totalItemCount:r},n.service.options?.infiniteScroll&&(t.infiniteScrollBottomHit=this._infiniteScrollBottomHit,delete t.itemCount)),n.postProcess(t),this.setInfiniteScrollBottomHit(!1))}onBackendError(e,t){if("function"!=typeof t?.onError)throw e;t.onError(e)}executeBackendCallback(e,t,n,r,s,a){if(e){n&&!n.clearFilterTriggered&&!n.clearSortTriggered&&a?.emitActionChangedCallback&&a.emitActionChangedCallback.call(this,Cn.remote);const d=e.process(t);if(d instanceof Promise&&d.then)d.then(h=>{this.executeBackendProcessesCallback(r,h,e,s),a?.successCallback?.call(this,n)}).catch(h=>{a?.errorCallback?.call(this,n),this.onBackendError(h,e)});else if(this.rxjs?.isObservable(d)){const h=this.rxjs;h.isObservable(a?.httpCancelRequestSubject)&&a?.httpCancelRequestSubject.next(),d.pipe(h.takeUntil(h.iif(()=>h.isObservable(a?.httpCancelRequestSubject),a?.httpCancelRequestSubject,h.EMPTY))).subscribe(p=>{this.executeBackendProcessesCallback(r,p,e,s),a?.successCallback?.call(this,n)},p=>{a?.errorCallback?.call(this,n),this.onBackendError(p,e)})}}}refreshBackendDataset(e){let t="";const n=e?.backendServiceApi;if(!n||!n.service||!n.process)throw new Error('BackendServiceApi requires at least a "process" function and a "service" defined');if(n.service&&(t=n.service.buildQuery()),t&&""!==t){const r=new Date;n.preProcess&&n.preProcess();const s=e?.pagination?.totalItems??0;this.executeBackendCallback(n,t,null,r,s)}}setInfiniteScrollBottomHit(e){this._infiniteScrollBottomHit=e}}function S_(i,e){if(Array.isArray(i)){const t=["pop","push","reverse","shift","unshift","splice","sort"],n=[];return t.forEach(s=>{i[s]=(...a)=>{const d=Array.prototype[s].apply(i,a);return n.push({method:s,action:d}),e.apply(i,[i,a]),d}}),{disconnect:()=>t.forEach(s=>{i[s]=()=>n[s].action})}}return null}function RA(i,e,t){let n=i[e];Object.defineProperty(i,e,{configurable:!0,get:()=>n,set(r){n=r,t.apply(i,[r,i[e]])}})}Array.prototype.map,Array.prototype.reduce;const jae=i=>i;class oe{}var v1,kc,st;oe.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_FILTER_SHORTCUTS:"Filter Shortcuts",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"},oe.treeDataProperties={CHILDREN_PROP:"children",COLLAPSED_PROP:"__collapsed",HAS_CHILDREN_PROP:"__hasChildren",TREE_LEVEL_PROP:"__treeLevel",PARENT_PROP:"__parentId"},oe.DEFAULT_FORMATTER_NUMBER_MIN_DECIMAL=2,oe.DEFAULT_FORMATTER_NUMBER_MAX_DECIMAL=2,oe.DEFAULT_FORMATTER_CURRENCY_MIN_DECIMAL=2,oe.DEFAULT_FORMATTER_CURRENCY_MAX_DECIMAL=4,oe.DEFAULT_FORMATTER_PERCENT_MIN_DECIMAL=void 0,oe.DEFAULT_FORMATTER_PERCENT_MAX_DECIMAL=void 0,oe.DEFAULT_NUMBER_DECIMAL_SEPARATOR=".",oe.DEFAULT_NUMBER_THOUSAND_SEPARATOR="",oe.DEFAULT_NEGATIVE_NUMBER_WRAPPED_IN_BRAQUET=!1,oe.SLIDER_DEFAULT_MIN_VALUE=0,oe.SLIDER_DEFAULT_MAX_VALUE=100,oe.SLIDER_DEFAULT_STEP=1,oe.VALIDATION_REQUIRED_FIELD="Field is required",oe.VALIDATION_EDITOR_VALID_NUMBER="Please enter a valid number",oe.VALIDATION_EDITOR_VALID_INTEGER="Please enter a valid integer number",oe.VALIDATION_EDITOR_INTEGER_BETWEEN="Please enter a valid integer number between {{minValue}} and {{maxValue}}",oe.VALIDATION_EDITOR_INTEGER_MAX="Please enter a valid integer number that is lower than {{maxValue}}",oe.VALIDATION_EDITOR_INTEGER_MAX_INCLUSIVE="Please enter a valid integer number that is lower than or equal to {{maxValue}}",oe.VALIDATION_EDITOR_INTEGER_MIN="Please enter a valid integer number that is greater than {{minValue}}",oe.VALIDATION_EDITOR_INTEGER_MIN_INCLUSIVE="Please enter a valid integer number that is greater than or equal to {{minValue}}",oe.VALIDATION_EDITOR_NUMBER_BETWEEN="Please enter a valid number between {{minValue}} and {{maxValue}}",oe.VALIDATION_EDITOR_NUMBER_MAX="Please enter a valid number that is lower than {{maxValue}}",oe.VALIDATION_EDITOR_NUMBER_MAX_INCLUSIVE="Please enter a valid number that is lower than or equal to {{maxValue}}",oe.VALIDATION_EDITOR_NUMBER_MIN="Please enter a valid number that is greater than {{minValue}}",oe.VALIDATION_EDITOR_NUMBER_MIN_INCLUSIVE="Please enter a valid number that is greater than or equal to {{minValue}}",oe.VALIDATION_EDITOR_DECIMAL_BETWEEN="Please enter a valid number with a maximum of {{maxDecimal}} decimals",oe.VALIDATION_EDITOR_TEXT_LENGTH_BETWEEN="Please make sure your text length is between {{minLength}} and {{maxLength}} characters",oe.VALIDATION_EDITOR_TEXT_MAX_LENGTH="Please make sure your text is less than {{maxLength}} characters",oe.VALIDATION_EDITOR_TEXT_MAX_LENGTH_INCLUSIVE="Please make sure your text is less than or equal to {{maxLength}} characters",oe.VALIDATION_EDITOR_TEXT_MIN_LENGTH="Please make sure your text is more than {{minLength}} character(s)",oe.VALIDATION_EDITOR_TEXT_MIN_LENGTH_INCLUSIVE="Please make sure your text is at least {{minLength}} character(s)",function(i){i[i.camelCase=0]="camelCase",i[i.pascalCase=1]="pascalCase",i[i.snakeCase=2]="snakeCase",i[i.kebabCase=3]="kebabCase"}(v1||(v1={})),function(i){i.colon=":",i.comma=",",i.equalSign="=",i.pipe="|",i.semicolon=";",i.space=" ",i.tab="\t",i.doubleColon="::",i.doublePipe="||",i.doubleSemicolon=";;"}(kc||(kc={})),function(i){i.autoTooltip="autoTooltip",i.cellExternalCopyManager="cellExternalCopyManager",i.cellMenu="cellMenu",i.checkboxSelector="checkboxSelector",i.columnPicker="columnPicker",i.contextMenu="contextMenu",i.customTooltip="customTooltip",i.draggableGrouping="draggableGrouping",i.groupItemMetaProvider="groupItemMetaProvider",i.gridMenu="gridMenu",i.headerButton="headerButton",i.headerMenu="headerMenu",i.rowBasedEdit="rowBasedEdit",i.rowDetailView="rowDetailView",i.rowMoveManager="rowMoveManager",i.rowSelection="rowSelection"}(st||(st={}));const M={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 Ii,D_,qo,te,ar,Li,mm;!function(i){i.csv="csv",i.txt="txt",i.xls="xls",i.xlsx="xlsx"}(Ii||(Ii={})),function(i){i.merge="merge",i.chain="chain"}(D_||(D_={})),function(i){i.columns="columns",i.filter="filter",i.pagination="pagination",i.pinning="pinning",i.rowSelection="rowSelection",i.sorter="sorter",i.treeData="treeData"}(qo||(qo={})),function(i){i.empty="",i.custom="Custom",i.contains="Contains",i.notContains="Not_Contains",i.lessThan="LT",i.lessThanOrEqual="LE",i.greaterThan="GT",i.greaterThanOrEqual="GE",i.notEqual="NE",i.equal="EQ",i.endsWith="EndsWith",i.rangeInclusive="RangeInclusive",i.rangeExclusive="RangeExclusive",i.startsWith="StartsWith",i.startsWithEndsWith="StartsWithEndsWith",i.in="IN",i.notIn="NOT_IN",i.inContains="IN_CONTAINS",i.notInContains="NOT_IN_CONTAINS",i.inCollection="IN_COLLECTION",i.notInCollection="NOT_IN_COLLECTION"}(te||(te={})),function(i){i.asc="asc",i.ASC="ASC",i.desc="desc",i.DESC="DESC"}(ar||(ar={})),function(i){i[i.asc=1]="asc",i[i.desc=-1]="desc",i[i.neutral=0]="neutral"}(Li||(Li={})),function(i){i.toggleCollapse="toggle-collapse",i.fullExpand="full-expand",i.fullCollapse="full-collapse",i.toggleExpand="toggle-expand"}(mm||(mm={}));class A_ extends Error{constructor(e){super(e),Object.setPrototypeOf(this,A_.prototype)}}function D$(i){let e=!1;return i instanceof Promise?{promise:i.then(t=>{if(e)throw new A_("Cancelled Promise");return t}),cancel:()=>e=!0}:i}function y6(i,e,t=""){let n=e;if(e instanceof Promise)return e;if(i.isObservable(e)&&(n=i.firstValueFrom(e)),!(n instanceof Promise))throw new Error(`Something went wrong, Slickgrid-Universal ${t} is not able to convert the Observable into a Promise.`);return n}function PA(i,e,t=0){const n=fr(e,"childrenPropName");Array.isArray(i)&&i.forEach(r=>{r&&(Array.isArray(r[n])&&r[n].length>0&&(t++,PA(r[n],e,t),t--),r[e.levelPropName]=t)})}function T_(i,e,t=0,n=null){const r=fr(e,"childrenPropName"),{aggregator:s}=e;Array.isArray(i)&&i.forEach(a=>{if(a){const d=Array.isArray(a[r]);Array.isArray(a[r])&&a[r].length>0&&(s.init(a,!0),t++,T_(a[r],e,t,a),t--),n&&s.isInitialized&&"function"==typeof s.accumulate&&!a?.__filteredOut&&(s.accumulate(a,d),s.storeResult(n.__treeTotals)),a[e.levelPropName]=t}})}function A$(i,e){const t=fr(e,"identifierPropName"),n=fr(e,"childrenPropName"),r=fr(e,"hasChildrenPropName"),s=fr(e,"parentPropName"),a=fr(e,"levelPropName");return e?.shouldAddTreeLevelNumber&&(Array.isArray(e?.aggregators)?e.aggregators.forEach(h=>{T_(i,{childrenPropName:n,levelPropName:a,aggregator:h})}):PA(i,{childrenPropName:n,levelPropName:a})),function qae(i,e,t=jae,n=()=>{}){const r=i&&i.length?[{pointer:i,offset:0}]:[],s=[];let a;for(;r.length;)for(a=r.pop();a.offseth[n],(h,p)=>({[t]:h[t],[s]:void 0!==p?p[t]:null,[r]:!!h[n],...I$(h,n)}))}function fr(i,e,t="id"){let n="";switch(e){case"childrenPropName":n=i?.childrenPropName??oe.treeDataProperties.CHILDREN_PROP;break;case"collapsedPropName":n=i?.collapsedPropName??oe.treeDataProperties.COLLAPSED_PROP;break;case"hasChildrenPropName":n=i?.hasChildrenPropName??oe.treeDataProperties.HAS_CHILDREN_PROP;break;case"identifierPropName":n=i?.identifierPropName??t;break;case"levelPropName":n=i?.levelPropName??oe.treeDataProperties.TREE_LEVEL_PROP;break;case"parentPropName":n=i?.parentPropName??oe.treeDataProperties.PARENT_PROP}return n}function T$(i,e){const t=fr(e,"identifierPropName"),n=fr(e,"childrenPropName"),r=fr(e,"parentPropName"),s=fr(e,"levelPropName"),a=fr(e,"collapsedPropName"),h=[],p={};return(i||[]).forEach(g=>{p[g[t]]=g,delete g[n]}),Object.keys(p).forEach(g=>{const v=p[g];if(r in v&&null!==v[r]&&void 0!==v[r]&&""!==v[r]){if(v[r]in p){const y=p[v[r]];n in y||(y[n]=[]),y[n].push(v),void 0===y[a]&&(y[a]=e?.initiallyCollapsed??!1)}}else h.push(v)}),Array.isArray(e?.aggregators)?e.aggregators.forEach(g=>{T_(h,{childrenPropName:n,levelPropName:s,aggregator:g},0)}):PA(h,{childrenPropName:n,levelPropName:s},0),h}function gm(i,e,t){if(!t)throw new Error('findItemInTreeStructure requires parameter "childrenPropertyName"');const n=i.find(e),r=i.filter(s=>t in s&&s[t]);if(n)return n;if(r.length){const s=[];for(const a of r)t in a&&s.push(...a[t]);return gm(s,e,t)}}function _c(i,e,t,n=".",r=""){if(isNaN(+i))return i;const s=void 0===e?2:e,a=void 0===t?2:t;let d=String(Math.round(+i*Math.pow(10,a))/Math.pow(10,a));for(d.indexOf(".")<0&&s>0&&(d+=".");d.length-d.indexOf(".")<=s;)d+="0";const h=d.split(".");let p,g;p=r?h.length>=1?nh(h[0],r):void 0:h.length>=1?h[0]:d,h.length>1&&(g=h[1]);let v="";return void 0!==p&&void 0!==g?v=`${p}${n}${g}`:null!=p&&(v=p),v}function wn(i,e,t,n,r="",s="",a=".",d=""){if(isNaN(+i))return i;const h=Math.round(1e6*parseFloat(i))/1e6;if(h<0){const p=Math.abs(h);if(n){if(!isNaN(e)||!isNaN(t))return`(${r}${_c(p,e,t,a,d)}${s})`;return`(${r}${nh(`${p}`,d)}${s})`}if(!isNaN(e)||!isNaN(t))return`-${r}${_c(p,e,t,a,d)}${s}`;return`-${r}${nh(`${p}`,d)}${s}`}if(!isNaN(e)||!isNaN(t))return`${r}${_c(i,e,t,a,d)}${s}`;return`${r}${nh(`${i}`,d)}${s}`}function M_(i,e,t){if("function"==typeof i.queryFieldNameGetterFn){const n=i.queryFieldNameGetterFn(e);t=n?.indexOf(".")>=0?Wn(e,n):e.hasOwnProperty(n)?e[n]:t}return t}function Wn(i,e){return i&&e?e.split(".").reduce((t,n)=>t&&t[n],i):i}function Fl(i){return i&&i.translationNamespace?i.translationNamespace+(i.translationNamespaceSeparator||""):""}function I_(i){return i.outputType||i.type||M.string}function ih(i){switch(i){case M.date:case M.dateTime:case M.dateIso:case M.dateTimeIso:case M.dateTimeShortIso:case M.dateTimeIsoAmPm:case M.dateTimeIsoAM_PM:case M.dateEuro:case M.dateEuroShort:case M.dateTimeEuro:case M.dateTimeShortEuro:case M.dateTimeEuroAmPm:case M.dateTimeEuroAM_PM:case M.dateTimeEuroShort:case M.dateTimeEuroShortAmPm:case M.dateTimeEuroShortAM_PM:case M.dateUs:case M.dateUsShort:case M.dateTimeUs:case M.dateTimeShortUs:case M.dateTimeUsAmPm:case M.dateTimeUsAM_PM:case M.dateTimeUsShort:case M.dateTimeUsShortAmPm:case M.dateTimeUsShortAM_PM:case M.dateUtc:return!0;default:return!1}}function M$(i){let e;switch(i){case"<":case"LT":e=te.lessThan;break;case"<=":case"LE":e=te.lessThanOrEqual;break;case">":case"GT":e=te.greaterThan;break;case">=":case"GE":e=te.greaterThanOrEqual;break;case"!=":case"NE":e=te.notEqual;break;case"*":case"a*":case"StartsWith":e=te.startsWith;break;case"*z":case"EndsWith":e=te.endsWith;break;case"=":case"==":case"EQ":e=te.equal;break;case"IN":e=te.in;break;case"NIN":case"NOT_IN":e=te.notIn;break;case"<>":case"Not_Contains":case"NOT_CONTAINS":e=te.notContains;break;default:e=te.contains}return e}function Qb(i){let e="";switch(i){case te.greaterThan:case">":e=">";break;case te.greaterThanOrEqual:case">=":e=">=";break;case te.lessThan:case"<":e="<";break;case te.lessThanOrEqual:case"<=":e="<=";break;case te.notEqual:case"<>":e="<>";break;case te.equal:case"=":case"==":case"EQ":e="=";break;case te.startsWith:case"a*":case"*":e="a*";break;case te.endsWith:case"*z":e="*z";break;default:e=i}return e}function L_(i){let e;if(ih(i))e=te.equal;else switch(i){case M.unknown:case M.string:case M.text:case M.password:case M.readonly:e=te.contains;break;case M.float:case M.number:default:e=te.equal}return e}function I$(i,e){return Object.keys(i).reduce((t,n)=>(n!==e&&(t[n]=i[n]),t),{})}function nh(i,e=","){if(null!=i){const t=`${i}`,n=t.split(".");return 2===n.length?`${n[0].replace(/\B(?=(\d{3})+(?!\d))/g,e)}.${n[1]}`:t.replace(/\B(?=(\d{3})+(?!\d))/g,e)}return i}function rh(i,e,t={}){return Array.isArray(i)?i.find(e)||t:i}function O_(i){if(Array.isArray(i))for(;i.length>0;){const e=i.pop();e?.unsubscribe&&e.unsubscribe()}return i}function R_(i){let e=0,t=0,n=0,r=0;const s=window.innerHeight||0,a=window.innerWidth||0,d=w6(),h=d.top,p=d.left,g=kn(i);if(g){const v=g.top,y=g.left;t=v-h,n=y-p,e=s-(v-h+i.clientHeight),r=a-(y-p+i.clientWidth)}return{top:t,bottom:e,left:n,right:r}}function O(i,e,t){const n=document.createElement(i);return e&&Object.keys(e).forEach(r=>{"innerHTML"===r&&console.warn(`[Slickgrid-Universal] For better CSP (Content Security Policy) support, do not use "innerHTML" directly in "createDomElement('${i}', { innerHTML: 'some html'})", it is better as separate assignment: "const elm = createDomElement('span'); elm.innerHTML = 'some html';"`);const s=e[r];"object"==typeof s?Object.assign(n[r],s):n[r]=e[r]}),t?.appendChild&&t.appendChild(n),n}function Oi(i=""){return i.split(" ").filter(e=>e)}function C6(i){"object"==typeof i&&Object.keys(i).forEach(e=>{Array.isArray(i[e])&&C6(i[e]),i[e]instanceof HTMLElement&&(i[e]=null)})}function ui(i){for(;i?.firstChild;)i.removeChild(i.firstChild);return i}function Un(i,e="innerHTML"){return i instanceof DocumentFragment?[].map.call(i.childNodes,t=>t[e]).join("")||i.textContent||"":i instanceof HTMLElement?i[e]:String(i??"")}function L$(i,e){if(!i||!e)return;const t=i.getBoundingClientRect(),n=e.getBoundingClientRect();return{top:n.top-t.top,right:n.right-t.right,bottom:n.bottom-t.bottom,left:n.left-t.left}}function kn(i){let e=0,t=0,n=0,r=0;if(!i||!i.getBoundingClientRect)return{top:e,bottom:n,left:t,right:r};const s=i.getBoundingClientRect(),a=document.documentElement;return void 0!==s?.top&&void 0!==s.left&&(e=s.top+window.pageYOffset-a.clientTop,t=s.left+window.pageXOffset-a.clientLeft,r=s.right,n=s.bottom),{top:e,left:t,bottom:n,right:r}}function NA(i,e){let t=0;if(i){const r="height"===e?["top","bottom"]:["left","right"];t=i["height"===e?"clientHeight":"clientWidth"];for(const s of r){t-=parseFloat(O$(i,`padding-${s}`)||"")||0}}return t}function O$(i,e){return i?window.getComputedStyle(i).getPropertyValue(e):null}function P_(i,e){if(i)for(const t of e){const n=i.getAttribute(t);if(n)return n}return null}function oh(i,e="auto"){return(/^[0-9]+$/i.test(`${i}`)?+i+"px":i)||e}function R$(i){const e="string"==typeof i?i:String(i),t={"&":"&","<":"<",">":">",'"':""","'":"'"};return(e||"").toString().replace(/[&<>"']/g,n=>t[n])}function P$(i){return i.replace(/&#(\d+);/g,(e,t)=>String.fromCharCode(t))}function N$(i,e){const t=i.length;let n=R$(i);if(t"u"||BA.call(e,r)},W$=function(e,t){V$&&"__proto__"===t.name?V$(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},U$=function(e,t){if("__proto__"===t){if(!BA.call(e,t))return;if(z$)return z$(e,t).value}return e[t]};function en(...i){let e,t,n,r,s,a,d=i[0],h=1;const p=i.length;let g=!1;for("boolean"==typeof d&&(g=d,d=i[1]||{},h=2),(null==d||"object"!=typeof d&&"function"!=typeof d)&&(d={});hr[t]===e[t]):i.findIndex(r=>r===e),n<0&&i.push(e)}function ey(i,e=" "){let t="";for(let n=0;ne!==n)}function q$(i){if(!Array.isArray(i)&&!fm(i))return i;return en(!0,Array.isArray(i)?[]:{},i)}function b1(i,...e){if(!e.length)return i;const t=e.shift();return i=!fm(i)&&fm(t)?{}:i,fm(i)&&fm(t)&&Object.keys(t).forEach(n=>{t.hasOwnProperty(n)&&(n in i?"object"!=typeof i[n]||"object"!=typeof t[n]?i[n]=t[n]:i[n].concat&&t[n].concat?i[n]=i[n].concat(t[n]):i[n]=b1(i[n],t[n]):i[n]=t[n])}),b1(i,...e)}function K$(i){return fm(i)&&Object.keys(i).forEach(e=>{i.hasOwnProperty(e)&&delete i[e]}),i=null,i={}}function _6(i,e=!0){let t=!1;return{params:(s=>{const h=s.toString().replace(/(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,)]*(('(?:\\'|[^'\r\n])*')|("(?:\\"|[^"\r\n])*"))|(\s*=[^,)]*))/gm,"");return h.slice(h.indexOf("(")+1,h.indexOf(")")).match(/([^\s,]+)/g)??[]})(i),body:(s=>{const a=s.toString();if(t=a.includes("async "),a.replaceAll(" ","").includes("=>({")){const p=a.match(/(({.*}))/g)||[];return p.length>=1?`return ${p[0].trimStart()}`:a}const d=!a.includes("{")&&a.includes("=>"),h=a.substring(a.indexOf("{")+1||a.indexOf("=>")+2,a.includes("}")?a.lastIndexOf("}"):a.length);return e&&d&&!h.startsWith("return")?"return "+h.trimStart():h})(i),isAsync:t}}function E6(i){return null==i||0===Object.entries(i).length}function ri(i){return null!=i&&""!==i}function y1(i){return null!==i&&!isNaN(i)&&""!==i}function fm(i){return!(null===i||"object"!=typeof i||Array.isArray(i)||i instanceof Date)}function N_(i){return"boolean"==typeof i||"number"==typeof i||"string"==typeof i||null==i}function C1(i){return i instanceof HTMLElement||i instanceof DocumentFragment||N_(i)}function pt(i,e=!1){return e?null!=i&&"string"!=typeof i&&!isNaN(i):null!=i&&""!==i&&!isNaN(+i)}function Y$(i){return!i||i&&"object"==typeof i&&0===Object.keys(i).length}function HA(i){return/(true|1)/i.test(i+"")}function ty(i,e=!1){const t="function"==typeof i.normalize?i.normalize("NFD").replace(/[\u0300-\u036f]/g,""):i;return e?t.toLowerCase():t}function Ko(i,e,t){if("string"==typeof e&&(e=e.split(".")),e.length>1){const n=e.shift();i&&void 0!==n&&Ko(i[n]=ri(i[n])&&(Array.isArray(i[n])||"[object Object]"===Object.prototype.toString.call(i[n]))?i[n]:{},e,t)}else i&&e[0]&&(i[e[0]]=t)}function Qs(i,e=!1){return"string"==typeof i?e?i.replace(/\w\S*/g,t=>t.charAt(0).toUpperCase()+t.substring(1).toLowerCase()):i.charAt(0).toUpperCase()+i.slice(1):i}function VA(i){return"string"==typeof i?i.replace(/(?:^\w|[A-Z]|\b\w|[\s+\-_/])/g,(e,t)=>/[\s+\-_/]/.test(e)?"":0===t?e.toLowerCase():e.toUpperCase()):i}function iy(i){return"string"==typeof i?VA(i).replace(/([A-Z])|([-_])/g,"-$1").toLowerCase():i}function kd(i){if("string"==typeof i){const e=i.replace(/([A-Z])|([-_])/g," $1").replace(/\s+/g," ").trim();return e.charAt(0).toUpperCase()+e.slice(1)}return i}function Zae(i){return"string"==typeof i?VA(i).replace(/([A-Z])/g,"_$1").toLowerCase():i}function Z$(i){return Array.isArray(i)&&i.length>0?i.filter((e,t)=>i.indexOf(e)>=t):i}function Jae(i,e="id"){if(Array.isArray(i)&&i.length>0){const t=[],n=new Map;for(const r of i)r&&!n.has(r[e])&&(n.set(r[e],!0),t.push({id:r[e],name:r.name}));return t}return i}const B_=Symbol("plaintext"),J$=Symbol("html"),X$=Symbol("comment"),Xae=/<(\w*)>/g,Qae=/<\/?([^\s/>]+)/;function _n(i,e,t){function a(h){let p=new Set;if("string"==typeof h){let g;for(;g=Xae.exec(h);)p.add(g[1])}else"function"==typeof h[Symbol.iterator]&&(p=new Set(h));return p}function d(h){const p=Qae.exec(h);return p?p[1].toLowerCase():null}return function n(h,p,g){if("string"!=typeof h&&(pt(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 s(h,p){const g=p.allowable_tags,v=p.tag_replacement;let y=p.state,C=p.tag_buffer,k=p.depth,E=p.in_quote_char,x="";for(let S=0,D=h.length;S":if(E)break;if(k){k--;break}E="",y=B_,C+=">",g.has(d(C))?x+=C:x+=v,C="";break;case'"':case"'":E=I===E?"":E||I,C+=I;break;case"-":""===I)"--"===C.slice(-2)&&(y=B_),C="";else C+=I}return p.state=y,p.tag_buffer=C,p.depth=k,p.in_quote_char=E,x}(h||"",function r(h,p){return{allowable_tags:a(h),tag_replacement:p,state:B_,tag_buffer:"",depth:0,in_quote_char:""}}(p||"",g||""))}(i,e,t)}const Q$=(i,e,t=Li.neutral,n,r)=>{const s=n?.valueCouldBeUndefined??r?.cellValueCouldBeUndefined??!1,a=isNaN(i)||""===i||null===i||s&&void 0===i?-1/0:parseFloat(i),d=isNaN(e)||""===e||null===e||s&&void 0===e?-1/0:parseFloat(e);return t*(a===d?0:a>d?1:-1)};var eW=/^([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 _d(i){if(i||(i=new Date),i instanceof Date){const e=new Date(i);return e.setMilliseconds(0),e}if(function tle(i){const e=i.match(eW);if(e){const t=Number(e[2]);if(t<1||t>12)return!1;if(void 0!==typeof e[3]){const n=Number(e[3]);if(n<1||n>31)return!1}if(void 0!==typeof e[4]){const n=Number(e[4]);if(n<0||n>23)return!1}return!0}return!1}(i=i.trim()))return new Date(function ile(i){const e=i.match(eW);return e&&typeof e[4]>"u"?i+="T00:00:00":i}(i));throw new Error(`Non ISO 8601 compliant date (${i}).`)}function H_(i,e=1){const t=_d(i);return t.setDate(t.getDate()+e),t}var F6="1999-03-04T02:05:01.000Z",x6=new Map,S6=[["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"}]],D6=[["HH",{hour:"2-digit"}],["H",{hour:"numeric"}]],A6=[["hh",{hour:"2-digit"}],["h",{hour:"numeric"}],["a",{dayPeriod:"narrow"}],["A",{dayPeriod:"narrow"}]],zA={DD:2,HH:2,MM:2,YY:2,YYYY:4,hh:2,mm:2,ss:2};function tW(i){if(/^[+-]\d{2}:\d{2}/.test(i))return 6;if(/^[+-]\d{4}/.test(i))return 5;throw new Error("Invalid offset format")}var nle=["MMMM","MMM","dddd","ddd"],jn=new Map([...S6,...D6,...A6].map(i=>[i[0],i])),iW=new Map,nW=["full","long","medium","short"],vm=i=>String(i).padStart(2,"0"),T6=i=>String(i).padStart(2,"0");function sh(i){return"literal"===i.type&&(i.value=i.value.normalize("NFKC")),i}function rle(i,e,t,n=!1,r=null){const s=function ole(i,e,t,n=!1){const r=_d(i),s=e.filter(g=>g.hour12),a=e.filter(g=>!g.hour12),d=[],h=[];function p(g,v=!1){const y=`${t}-u-hc-${v?"h12":"h23"}`;if(d.push(...new Intl.DateTimeFormat(y,g.reduce((C,k)=>"literal"===k.partName?C:(n&&nle.includes(k.token)&&h.push(k),Object.assign(C,k.option)),{timeZone:"UTC"})).formatToParts(r).map(sh)),n&&h.length)for(const C of h){let k=[];switch(C.token){case"MMMM":k=new Intl.DateTimeFormat(y,{dateStyle:"long",timeZone:"UTC"}).formatToParts(r).map(sh);break;case"MMM":k=new Intl.DateTimeFormat(y,{dateStyle:"medium",timeZone:"UTC"}).formatToParts(r).map(sh)}const E=k.find(S=>S.type===C.partName),x=d.findIndex(S=>S.type===C.partName);E&&x>-1&&(d[x]=E)}}return s.length&&p(s,!0),a.length&&p(a),d.reduce((g,v)=>(g[v.type]=v.value,g),{})}(i,e,t,n),a=_d(i);function d({partName:h,partValue:p,token:g}){if("literal"===h)return p;const v=s[h];if("hour"===h&&"H"===g)return v.replace(/^0/,"")||"0";if(["mm","ss","MM"].includes(g)&&1===v.length)return`0${v}`;if("dayPeriod"===h){const y=ny(a.getUTCHours()<12?"am":"pm",t);return"A"===g?y.toUpperCase():y.toLowerCase()}return"timeZoneName"===h?r??rW(-1*a.getTimezoneOffset(),g):v}return e.map(h=>({...h,value:d(h)}))}function rW(i,e="Z"){const t=String(Math.floor(Math.abs(i/60))).padStart(2,"0"),n=String(Math.abs(i%60)).padStart(2,"0"),r=i<0?"-":"+";return"ZZ"===e?`${r}${t}${n}`:`${r}${t}:${n}`}function oW(i,e="Z"){if(!(n=>{switch(n){case"Z":return/^([+-])[0-3][0-9]:[0-6][0-9]$/.test(i);case"ZZ":return/^([+-])[0-3][0-9][0-6][0-9]$/.test(i)}})(e))throw new Error(`Invalid offset: ${i}`);return i}function lle(i){return["numeric","2-digit"].includes(i.partValue)}function ny(i,e){const t=iW.get(e);if(t&&t[i])return t[i];const n=new Date(F6);n.setUTCHours("am"===i?5:20);const s=new Intl.DateTimeFormat(e,{timeStyle:"full",timeZone:"UTC",hour12:!0}).formatToParts(n).map(sh).find(a=>"dayPeriod"===a.type);if(s){const a=t||{};return iW.set(e,Object.assign(a,{[i]:s.value})),s.value}return i}function sW(i,e="+00:00"){const t=_d(i),n=(()=>{switch(tW(e)){case 5:return"ZZ";case 6:return"Z"}})(),r=function sle(i,e){oW(i,e);const[t,n,r,s]=i.match(/([+-])([0-3][0-9]):?([0-6][0-9])/),a=60*Number(r)+Number(s);return"+"===n?a:-a}(e,n);return new Date(t.getTime()+1e3*r*60)}function aW(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function lW(i,e){const t=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(i).map(sh),n={};return t.forEach(r=>{n[r.type]=r.value}),new Date(`${n.year}-${n.month}-${n.day}T${n.hour}:${n.minute}:${n.second}Z`)}function GA(i,e="UTC",t="device",n="Z"){var r;t="device"===t?null!=(r=aW())?r:"utc":t;const s=_d(i),a=lW(s,e),d=lW(s,t);return rW(Math.round((d.getTime()-a.getTime())/1e3/60),n)}function cW(i){const e=_d(i);return e.setHours(0,0,0),e}function M6(i,e){if(nW.includes(i)||"object"==typeof i)return function hle(i,e){const t={timeZone:"UTC"};"string"==typeof i?t.dateStyle=i:("date"in i&&(t.dateStyle=i.date),"time"in i&&(t.timeStyle=i.time));const n=new Intl.DateTimeFormat(e,t),r=n.formatToParts(new Date(F6)).map(sh),a=n.formatToParts(new Date("1999-04-05T23:05:01.000Z")).map(sh).find(h=>"hour"===h.type),d=a&&"23"===a.value?24:12;return r.map(h=>{const p=h.type,g=function ple(i,e,t,n,r){const s=e.length,a=!isNaN(Number(e));let d;switch(i){case"year":return 2===s?jn.get("YY"):jn.get("YYYY");case"month":return a?1===s?jn.get("M"):jn.get("MM"):"long"===(d=dW(t,i,e),d)?jn.get("MMMM"):jn.get("MMM");case"day":return 1===s?jn.get("D"):jn.get("DD");case"weekday":switch(d=dW(t,i,e),d){case"narrow":return jn.get("d");case"short":return jn.get("ddd");default:return jn.get("dddd")}case"hour":return 12===n?1===s?jn.get("h"):jn.get("hh"):1===s?jn.get("H"):jn.get("HH");case"minute":return 1===s?jn.get("m"):jn.get("mm");case"second":return 1===s?jn.get("s"):jn.get("ss");case"dayPeriod":return/^[A-Z]+$/u.test(e)?jn.get("A"):jn.get("a");case"literal":return[e,{literal:e},new RegExp("")];case"timeZoneName":return"full"===r.timeStyle?jn.get("Z"):jn.get("ZZ");default:return}}(h.type,h.value,e,"hour"===h.type?d:void 0,t);if(void 0===g)return;const v=g[1][p];return v?(g[2]||(g[2]=new RegExp(`${g[0]}`,"g")),{option:{[p]:v},partName:p,partValue:v,token:g[0],pattern:g[2],hour12:12===d}):void 0}).filter(h=>!!h)}(i,e);let t=i,n=0;const r=g=>{if(g[2]||(g[2]=new RegExp(`(.)?(${g[0]})`,"g")),g[2].test(t)){let v=0;return t=t.replace(g[2],(y,C,k)=>"\\"===C?k:`${"string"==typeof C?C:""}{!${v++?n:n++}!}`),!!v}return!1};function a(g,[v,y,C]){const k=Object.keys(y)[0];return{option:y,partName:k,partValue:y[k],token:v,pattern:C,hour12:g}}const h=function s(g){const v=g.map(C=>C.partName),y=new Set(v);if(v.length>y.size)throw new Error("Cannot reuse format tokens.");return g}(S6.filter(r).concat(D6.filter(r)).map(a.bind(null,!1)).concat(A6.filter(r).map(a.bind(null,!0)))),p=/^\{!(\d+)!\}$/;return t.split(/(\{!\d+!\})/).map(g=>{const v=g.match(p);return v?h[Number(v[1])]:{option:{literal:g},partName:"literal",partValue:g,token:g,pattern:new RegExp(""),hour12:!1}}).filter(g=>!("literal"===g.partName&&""===g.partValue))}function dW(i,e,t){if(!x6.has(i)){const r=new Date(F6),s=[3,8,9,7,6,4,3],a=["weekday","month","dayPeriod"],d=["long","short","narrow"],h={};for(let p=0;p<12;p++){r.setMonth(0+p),p in s&&r.setDate(s[p]),r.setUTCHours(8+p);for(const g of d){const v=new Intl.DateTimeFormat(i,a.reduce((y,C)=>Object.assign(y,{[C]:g}),{hour12:!0,timeZone:"UTC"})).formatToParts(r).map(sh);if("long"===g||"short"===g){const C=new Intl.DateTimeFormat(i,{dateStyle:"short"===g?"medium":"long",timeZone:"UTC"}).formatToParts(r).map(sh).find(E=>"month"===E.type),k=v.findIndex(E=>"month"===E.type);k>-1&&C&&(v[k]=C)}v.forEach(y=>{if("literal"===y.type)return;const C=y.type;h[C]=Object.assign(h[C]||{},{[y.value]:g})})}}x6.set(i,h)}const n=x6.get(i);return n?n[e][t]:void 0}function uW(i,e="+00:00"){const t="+"===e.slice(0,1);return sW(i,e.replace(t?"+":"-",t?"-":"+"))}function vr(i,e="long",t="device",n=!1,r){let s,a;return"object"==typeof i&&!(i instanceof Date)&&({date:i,format:e,locale:t,genitive:n,partFilter:r,tz:s}=i),"ISO8601"===e?_d(i).toISOString():(s&&(a=GA(i,"utc",s,function dle(i){return"string"==typeof i?i.includes("ZZ")?"ZZ":"Z":"time"in i&&"full"===i.time?"Z":"ZZ"}(e))),s??(s=aW()),"utc"!==s?.toLowerCase()&&(i=uW(i,GA(i,s,"utc"))),(!t||"device"===t)&&(t=function mle(){return Intl.DateTimeFormat().resolvedOptions().locale}()),rle(i,M6(e,t).filter(r??(()=>!0)),t,n,a).map(d=>d.value).join(""))}function gle(i,e="en",t=!1,n=()=>!0){return M6(i,e).filter(n).reduce((r,s)=>r+(t&&"literal"===s.partName?function ale(i){return S6.concat(D6).concat(A6).sort((e,t)=>e[0].length>t[0].length?1:-1).reduce((e,t)=>e.replace(t[0],`\\${t[0]}`),i)}(s.token):s.token),"").normalize("NFKC")}function hW(i,e="en",t=!1){const n=(r,s)=>Array(r).fill("").map((a,d)=>`${s(d)}`);if("M"===i)return n(12,r=>r+1);if("MM"===i)return n(12,r=>{const s=r+1;return s<10?`0${s}`:s});if(i.startsWith("M"))return hW("MM").map(r=>vr(`2000-${r}-05`,i,e,t));if(i.startsWith("d"))return n(7,r=>`0${r+2}`).map(r=>vr(`2022-10-${r}`,i,e));if("a"===i)return[ny("am",e).toLowerCase(),ny("pm",e).toLowerCase()];if("A"===i)return[ny("am",e).toUpperCase(),ny("pm",e).toUpperCase()];if(i.startsWith("Y")){const r=(new Date).getFullYear();return n(120,s=>s+1).reduce((s,a)=>("120"!==a&&s.push(vr(`${r+Number(a)}-06-06`,i,e)),s.unshift(vr(r-Number(a)+"-06-06",i,e)),s),[vr(`${r}-06-06`,i,e)])}return i.startsWith("D")?n(31,r=>`${"DD"===i&&r<9?"0":""}${r+1}`):i.startsWith("H")?n(24,r=>`${"HH"===i&&r<10?"0":""}${r}`):i.startsWith("h")?n(12,r=>`${"hh"===i&&r<9?"0":""}${r+1}`):i.startsWith("m")||i.startsWith("s")?n(60,r=>`${i.length>1&&r<10?"0":""}${r}`):[]}function ble(i){return function vle(i){const e=_d(i);return e.setDate(1),e.setMonth(e.getMonth()+1),e.setDate(0),e}(i).getDate()}function $A(i,e="ISO8601",t="device"){let r,n=()=>!0,s="backward";if("object"==typeof i?({date:r,format:e="ISO8601",locale:t="device",dateOverflow:s="backward",partFilter:n=()=>!0}=i):r=i,!r)throw new Error("parse() requires a date string.");const a=()=>{throw new Error(`Date (${r}) does not match format (${gle(e,t)})`)};if("ISO8601"===e)return _d(r);const d=nW.includes(e)||"object"==typeof e,h=function cle(i){let e;for(const t of i){if("literal"===t.partName&&!isNaN(parseFloat(t.partValue)))throw new Error(`Numbers in format (${t.partValue}).`);if(e&&"literal"!==e.partName&&"literal"!==t.partName&&!(e.token in zA)&&!(t.token in zA)&&(!lle(e)||"a"!==t.token.toLowerCase()))throw new Error(`Illegal adjacent tokens (${e.token}, ${t.token})`);e=t}return i}(M6(e,t).filter(n));if(!h.length)throw new Error("parse() requires a pattern.");let p;try{p=function yle(i,e){let t=0;const n=d=>[d[t++],d[t]];let r=0;const s=[];let a;do{const[d,h]=n(e);a=h;let p=1;if("literal"===d.partName)p=d.partValue.length;else if("timeZoneName"===d.partName)p=tW(i.substring(r));else if(d.token in zA)p=zA[d.token];else if(h)if("literal"===h.partName){if(p=i.indexOf(h.partValue,r)-r,p<0)throw new Error}else if("dayPeriod"===h.partName){for(let g=1;g<=4;g++)if(isNaN(Number(i.charAt(r+g)))){p=g;break}}else{const g=i.substring(r).search(/\d/);-1!==g&&(p=r+g)}else p=i.length;s.push({...d,value:i.substring(r,r+p)}),r+=p}while(a);return s}(r,h)}catch{return a()}const g=new Date,v=new Map([["YYYY",g.getFullYear()],["MM",g.getMonth()+1],["DD",g.getDate()],["HH",0],["mm",0],["ss",0]]);let y=null,C="";p.forEach(ie=>{if("literal"===ie.partName)return;if(ie.token===ie.value)return a();const se=Number(ie.value);if(v.has(ie.token))v.set(ie.token,se);else if("YY"===ie.token)v.set("YYYY",function fle(i){const e=(new Date).getFullYear(),t=e%100,n=Math.floor(e/100),r=Number(i);return 100*(n+(r>t+20?-1:0))+r}(ie.value));else{const Se=ie.token;if(Se.startsWith("d"))return;if("D"===Se)v.set("DD",se);else if("H"===Se||Se.startsWith("h"))v.set("HH",se);else if("M"===Se)v.set("MM",se);else if("a"===Se||"A"===Se)y=ie.value.toLowerCase()===ny("am",t).toLowerCase();else if("Z"===Se||"ZZ"===Se)C=oW(ie.value,Se);else{const tt=hW(Se,t,d).indexOf(ie.value);if(-1!==tt)switch(Se){case"MMM":case"MMMM":v.set("MM",tt+1)}}}});let k=v.get("HH")||0;!1===y?(k+=12===k?0:12,v.set("HH",24===k?0:k)):!0===y&&12===k&&v.set("HH",0),v.set("MM",(v.get("MM")||1)-1);let[E,x,S,D,I,L]=Array.from(v.values());const R=ble(new Date(`${T6(E)}-${vm(x+1)}-10`));if(RpW(t,n,r,e,void 0!==e)}const La={boolean:(i,e,t=Li.neutral)=>{let n=0;return n=i===e?0:null===i?-1:null===e?1:t?i{if(!n||!n.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 s=i?.hasOwnProperty(n.dataKey)?i[n.dataKey]:i,a=e?.hasOwnProperty(n.dataKey)?e[n.dataKey]:e,d=n?.valueCouldBeUndefined??r?.cellValueCouldBeUndefined??!1;let h=0;return h="object"!=typeof i?-1/0:"object"!=typeof e?1/0:null===s||d&&void 0===s?-1:null===a||d&&void 0===a?1:s===a?0:t?s{let s=0;const a=n?.valueCouldBeUndefined??r?.cellValueCouldBeUndefined??!1;return i===e?s=0:null===i||a&&void 0===i?s=-1:null===e||a&&void 0===e?s=1:(r?.ignoreAccentOnStringFilterAndSort&&(i=ty(i,!1),e=ty(e,!1)),s=t?ie.name)}constructor(e){this._subscribedEvents=[],this.eventNamingStyle=xl.camelCase,this._elementSource=e||document.createElement("div")}dispose(){this.unsubscribeAll(),this._subscribedEvents=[],window.clearTimeout(this._timer),this._elementSource?.remove(),this._elementSource=null}dispatchCustomEvent(e,t,n=!0,r=!0,s){const a={bubbles:n,cancelable:r};t&&(a.detail=t);const d=new CustomEvent(e,a);return"function"==typeof s&&s(d),this._elementSource?.dispatchEvent(d)}getEventNameByNamingConvention(e,t){let n="";switch(this.eventNamingStyle===xl.lowerCaseWithoutOnPrefix?n=`${t}${e.replace(/^on/,"")}`:this.eventNamingStyle===xl.camelCaseWithExtraOnPrefix&&(n=`${t}${e.replace(/^on/,"onOn")}`),this.eventNamingStyle){case xl.camelCase:n=""!==t?`${t}${Qs(e)}`:e;break;case xl.kebabCase:n=""!==t?`${t}-${iy(e)}`:iy(e);break;case xl.lowerCase:n=`${t}${e}`.toLowerCase()}return n}publish(e,t,n,r){const s=this.getEventNameByNamingConvention(e,"");return n?new Promise(a=>{window.clearTimeout(this._timer),this._timer=window.setTimeout(()=>a(this.dispatchCustomEvent(s,t,!0,!0,r)),n)}):this.dispatchCustomEvent(s,t,!0,!0,r)}subscribe(e,t){e=Array.isArray(e)?e:[e];const n=[];return e.forEach(r=>{const s=this.getEventNameByNamingConvention(r,"");this._elementSource.addEventListener(s,a=>t.call(null,a.detail)),this._subscribedEvents.push({name:s,listener:t}),n.push(()=>this.unsubscribe(s,t))}),{unsubscribe:()=>n.forEach(r=>r())}}subscribeEvent(e,t){const n=this.getEventNameByNamingConvention(e,"");return this._elementSource.addEventListener(n,t),this._subscribedEvents.push({name:n,listener:t}),{unsubscribe:()=>this.unsubscribe(n,t)}}unsubscribe(e,t,n=!0){const r=this.getEventNameByNamingConvention(e,"");this._elementSource.removeEventListener(r,t),n&&this.removeSubscribedEventWhenFound(e,t)}unsubscribeAll(e){if(Array.isArray(e)){let t;do{t=e.pop(),t?.dispose?t.dispose():t?.unsubscribe&&t.unsubscribe()}while(t)}else{let t=this._subscribedEvents.pop();for(;t;)this.unsubscribe(t.name,t.listener,!1),t=this._subscribedEvents.pop()}}removeSubscribedEventWhenFound(e,t){const n=this._subscribedEvents.findIndex(r=>r.name===e&&r.listener===t);n>=0&&this._subscribedEvents.splice(n,1)}}const WA=function _le(i){var e=document,t=i.container||e.createElement("div"),n=i.preventSubmit||0;t.id=t.id||"autocomplete-"+D();var y,k,r=t.style,s=i.debounceWaitMs||0,a=i.disableAutoSelect||!1,d=t.parentElement,h=[],p="",g=2,v=i.showOnFocus,C=0,E=!1,x=!1;if(void 0!==i.minLength&&(g=i.minLength),!i.input)throw new Error("input undefined");var S=i.input;function D(){return Date.now().toString(36)+Math.random().toString(36).substring(2)}function I(){var Le=t.parentNode;Le&&Le.removeChild(t)}function L(){k&&window.clearTimeout(k)}function W(){return!!t.parentNode}function re(){C++,h=[],p="",y=void 0,S.setAttribute("aria-activedescendant",""),S.setAttribute("aria-expanded","false"),I()}function se(){t.textContent="",S.setAttribute("aria-activedescendant","");var Le=function(Do,Va,ra){var Kr=e.createElement("div");return Kr.textContent=Do.label||"",Kr};i.render&&(Le=i.render);var gt=function(Do,Va){var ra=e.createElement("div");return ra.textContent=Do,ra};i.renderGroup&&(gt=i.renderGroup);var nn=e.createDocumentFragment(),Ln=D();if(h.forEach(function(Do,Va){if(Do.group&&Do.group!==Ln){Ln=Do.group;var ra=gt(Do.group,p);ra&&(ra.className+=" group",nn.appendChild(ra))}var Kr=Le(Do,p,Va);Kr&&(Kr.id=t.id+"_"+Va,Kr.setAttribute("role","option"),Kr.addEventListener("click",function(Mm){x=!0;try{i.onSelect(Do,S)}finally{x=!1}re(),Mm.preventDefault(),Mm.stopPropagation()}),Do===y&&(Kr.className+=" selected",Kr.setAttribute("aria-selected","true"),S.setAttribute("aria-activedescendant",Kr.id)),nn.appendChild(Kr))}),t.appendChild(nn),h.length<1){if(!i.emptyMsg)return void re();var So=e.createElement("div");So.id=t.id+"_"+D(),So.className="empty",So.textContent=i.emptyMsg,t.appendChild(So),S.setAttribute("aria-activedescendant",So.id)}(function R(){t.parentNode||(d||e.body).appendChild(t)})(),function ie(){if(W()){S.setAttribute("aria-expanded","true"),r.height="auto",r.width=S.offsetWidth+"px";var gt,Le=0;nn(),nn(),i.customize&>&&i.customize(S,gt,t,Le)}function nn(){var Ln=e.documentElement,So=Ln.clientTop||e.body.clientTop||0,Do=Ln.clientLeft||e.body.clientLeft||0,Va=window.pageYOffset||Ln.scrollTop,ra=window.pageXOffset||Ln.scrollLeft,Kr=(gt=S.getBoundingClientRect()).top+S.offsetHeight+Va-So,Mm=gt.left+ra-Do;r.top=Kr+"px",r.left=Mm+"px",(Le=window.innerHeight-(gt.top+S.offsetHeight))<0&&(Le=0),r.top=Kr+"px",r.bottom="",r.left=Mm+"px",r.maxHeight=Le+"px"}}(),qt()}function Se(){W()&&se()}function Ie(){Se()}function tt(Le){Le.target!==t?Se():Le.preventDefault()}function mt(){x||ur(0)}function qt(){var Le=t.getElementsByClassName("selected");if(Le.length>0){var gt=Le[0],nn=gt.previousElementSibling;if(nn&&-1!==nn.className.indexOf("group")&&!nn.previousElementSibling&&(gt=nn),gt.offsetTopSo&&(t.scrollTop+=Ln-So)}}}function Ae(Le){h.length>0&&(function Ni(Le){var gt=e.getElementById(t.id+"_"+Le);gt&&(gt.classList.remove("selected"),gt.removeAttribute("aria-selected"),S.removeAttribute("aria-activedescendant"))}(Le),function yt(Le){var gt=e.getElementById(t.id+"_"+Le);gt&&(gt.classList.add("selected"),gt.setAttribute("aria-selected","true"),S.setAttribute("aria-activedescendant",gt.id))}(h.indexOf(y)),qt())}function Xo(Le,gt){var nn=W();if("Escape"===gt)re();else{if(!nn||h.length<1)return;"ArrowUp"===gt?function Kt(){var Le=h.indexOf(y);y=-1===Le?void 0:h[(Le+h.length-1)%h.length],Ae(Le)}():function Et(){var Le=h.indexOf(y);y=h.length<1?void 0:-1===Le?h[0]:h[(Le+1)%h.length],Ae(Le)}()}Le.preventDefault(),nn&&Le.stopPropagation()}function Lr(Le){var gt=Le.key;switch(gt){case"ArrowUp":case"ArrowDown":case"Escape":Xo(Le,gt);break;case"Enter":!function Gt(Le){if(y){2===n&&Le.preventDefault(),x=!0;try{i.onSelect(y,S)}finally{x=!1}re()}1===n&&Le.preventDefault()}(Le)}}function pi(){v&&ur(1)}function ur(Le){S.value.length>=g||1===Le?(L(),k=window.setTimeout(function(){return ht(S.value,Le,S.selectionStart||0)},0===Le||2===Le?s:0)):re()}function ht(Le,gt,nn){if(!E){var Ln=++C;i.fetch(Le,function(So){C===Ln&&So&&(p=Le,y=(h=So).length<1||a?void 0:h[0],se())},gt,nn)}}function qr(Le){i.keyup?i.keyup({event:Le,fetch:function(){return ur(0)}}):!W()&&"ArrowDown"===Le.key&&ur(0)}function Ha(Le){i.click&&i.click({event:Le,fetch:function(){return ur(2)}})}function Ml(){setTimeout(function(){e.activeElement!==S&&re()},200)}return t.className=[t.className,"autocomplete",i.className||""].join(" ").trim(),t.setAttribute("role","listbox"),S.setAttribute("role","combobox"),S.setAttribute("aria-expanded","false"),S.setAttribute("aria-autocomplete","list"),S.setAttribute("aria-controls",t.id),S.setAttribute("aria-owns",t.id),S.setAttribute("aria-activedescendant",""),S.setAttribute("aria-haspopup","listbox"),r.position="absolute",t.addEventListener("mousedown",function(Le){Le.stopPropagation(),Le.preventDefault()}),t.addEventListener("focus",function(){return S.focus()}),I(),S.addEventListener("keyup",qr),S.addEventListener("click",Ha),S.addEventListener("keydown",Lr),S.addEventListener("input",mt),S.addEventListener("blur",Ml),S.addEventListener("focus",pi),window.addEventListener("resize",Ie),e.addEventListener("scroll",tt,!0),{destroy:function mh(){S.removeEventListener("focus",pi),S.removeEventListener("keyup",qr),S.removeEventListener("click",Ha),S.removeEventListener("keydown",Lr),S.removeEventListener("input",mt),S.removeEventListener("blur",Ml),window.removeEventListener("resize",Ie),e.removeEventListener("scroll",tt,!0),S.removeAttribute("role"),S.removeAttribute("aria-expanded"),S.removeAttribute("aria-autocomplete"),S.removeAttribute("aria-controls"),S.removeAttribute("aria-activedescendant"),S.removeAttribute("aria-owns"),S.removeAttribute("aria-haspopup"),L(),re(),E=!0},fetch:function Ld(){ht(S.value,3,S.selectionStart||0)}}};class br{constructor(){this._boundedEvents=[]}get boundedEvents(){return this._boundedEvents}dispose(){this.unbindAll(),this._boundedEvents=[]}bind(e,t,n,r,s=""){const a=Array.isArray(t)?t:[t];if(e?.forEach)e.forEach(d=>{for(const h of a)d.addEventListener(h,n,r),this._boundedEvents.push({element:d,eventName:h,listener:n,groupName:s})});else if(e)for(const d of a)e.addEventListener(d,n,r),this._boundedEvents.push({element:e,eventName:d,listener:n,groupName:s})}unbind(e,t,n){const r=Array.isArray(e)?e:[e],s=Array.isArray(t)?t:[t];for(const a of s)for(const d of r)"function"==typeof d?.removeEventListener&&d.removeEventListener(a,n)}unbindByEventName(e,t){const n=this._boundedEvents.find(r=>r.element===e&&r.eventName===t);n&&this.unbind(n.element,n.eventName,n.listener)}unbindAll(e){if(e){const t=Array.isArray(e)?e:[e];for(let n=this._boundedEvents.length-1;n>=0;--n){const r=this._boundedEvents[n];if(t.some(s=>s===r.groupName)){const{element:s,eventName:a,listener:d}=r;this.unbind(s,a,d),this._boundedEvents.splice(n,1)}}}else for(;this._boundedEvents.length>0;){const t=this._boundedEvents.pop(),{element:n,eventName:r,listener:s}=t;this.unbind(n,r,s)}}}var mW=Object.prototype.hasOwnProperty;function Ec(i,e){var t,n;if(i===e)return!0;if(i&&e&&(t=i.constructor)===e.constructor){if(t===Date)return i.getTime()===e.getTime();if(t===RegExp)return i.toString()===e.toString();if(t===Array){if((n=i.length)===e.length)for(;n--&&Ec(i[n],e[n]););return-1===n}if(!t||"object"==typeof i){for(t in n=0,i)if(mW.call(i,t)&&++n&&!mW.call(e,t)||!(t in e)||!Ec(i[t],e[t]))return!1;return Object.keys(e).length===n}}return i!=i&&e!=e}function gW(i,e){const t=e.fetch;t&&(e.fetch=(n,r,s,a)=>{i.classList.add("slick-autocomplete-loading");const d=r;t(n,p=>{d(p),i.classList.remove("slick-autocomplete-loading")},s,a)})}function I6(i){const e=new Date;i.settings.selected={dates:[],month:e.getMonth(),year:e.getFullYear()};const t=i.HTMLInputElement;t&&(t.value=""),i.update({dates:!0,month:!0,year:!0,time:!0})}function V_(i,e,t,n){const{oldVal:r,newVal:s,columnDef:a,selectedSettings:d,updatePickerUI:h}=n;if(r!==s){const p=i.type||a.type,g=a.outputType||i.type||a.type||M.dateUtc,v=Array.isArray(s)?s:[s||""],y=[],C=ea(M.dateIso),k=p?ea(p):void 0;for(const x of v){const S=x instanceof Date?x:Fd(x,k);S&&y.push(S)}const E=d??{dates:[y.map(x=>vr(x,C)).join(":")],month:y[0]?.getMonth(),year:y[0]?.getFullYear(),time:"ISO8601"===k||(k||"").toLowerCase().includes("h")?vr(y[0],"HH:mm"):void 0};Ec(t.settings.selected,E)||(t.settings.selected=E,h&&t?.update&&t.update({dates:!0,month:!0,year:!0,time:!0})),e.value=v.length?y.map(x=>Ed(x,void 0,g)).join(" \u2014 "):""}}function L6(i,e){const t=O("select",{className:"form-control"});for(const n of i){const r=document.createElement("option");r.value=n.operator,e.applyHtmlCode(r,`${N$(n.operatorAlt||n.operator,3)}${n.descAlt||n.desc}`),t.appendChild(r)}return t}function fW(i,e,t,n,r){return O6.apply(this,arguments)}function O6(){return O6=yn(function*(i,e,t,n,r){const s=e?.filter??{},a=s?.collectionOptions??{};let d=null;if(i){const h=n?.isObservable(i)??!1;h&&n&&(d=yield y6(n,i));const p=yield i;if(Array.isArray(p)?d=p:p?.status>=200&&p.status<300&&"function"==typeof p.json?d=yield p.json():p&&p.content&&(d=p.content),!Array.isArray(d)&&a?.collectionInsideObjectProperty){d=Wn(d||p,a.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.');s.collection=d,t(d),h&&function Fle(i,e,t,n){const r=i?.filter??{},s=t?.createSubject();r.collectionAsync=s,n&&s&&n.push(s.subscribe(a=>function Ele(i,e,t){const n=e?.filter??{},r=n?.collectionOptions??{};r&&r.collectionInsideObjectProperty&&(i=Wn(i,r.collectionInsideObjectProperty));if(!Array.isArray(i))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.');n.collection=i,t(i)}(a,i,e)))}(e,t,n,r)}return d}),O6.apply(this,arguments)}function Sl(i,e,t,n,r){if(n?.enableTranslate&&r?.translate){const a=Fl(n);return r.translate(`${a}${i}`)}return(n.locales||oe.locales)?.[e]??t}function R6(i,e){return[{operator:"",desc:""},{operator:"=",desc:Sl("EQUAL_TO","TEXT_EQUAL_TO","Equal to",i,e)},{operator:"<",desc:Sl("LESS_THAN","TEXT_LESS_THAN","Less than",i,e)},{operator:"<=",desc:Sl("LESS_THAN_OR_EQUAL_TO","TEXT_LESS_THAN_OR_EQUAL_TO","Less than or equal to",i,e)},{operator:">",desc:Sl("GREATER_THAN","TEXT_GREATER_THAN","Greater than",i,e)},{operator:">=",desc:Sl("GREATER_THAN_OR_EQUAL_TO","TEXT_GREATER_THAN_OR_EQUAL_TO","Greater than or equal to",i,e)},{operator:"<>",desc:Sl("NOT_EQUAL_TO","TEXT_NOT_EQUAL_TO","Not equal to",i,e)}]}function P6(i,e,t){if(i.compoundOperatorAltTexts)for(const n of e)if(i.compoundOperatorAltTexts.hasOwnProperty(t)){const r=i.compoundOperatorAltTexts[t][n.operator];n.operatorAlt=r?.operatorAlt||"",n.descAlt=r?.descAlt||""}}class Ri{get defaultPrevented(){return this._isDefaultPrevented}constructor(e,t){this.event=e,this.args=t,this._isPropagationStopped=!1,this._isImmediatePropagationStopped=!1,this._isDefaultPrevented=!1,this.returnValue=void 0,this.nativeEvent=e,this._arguments=t,e&&["altKey","ctrlKey","metaKey","shiftKey","key","keyCode","clientX","clientY","offsetX","offsetY","pageX","pageY","bubbles","target","type","which","x","y"].forEach(n=>this[n]=e[n]),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 me{get subscriberCount(){return this._handlers.length}constructor(e,t){this.eventName=e,this.pubSub=t,this._handlers=[],this._pubSubService=t}subscribe(e){this._handlers.push(e)}unsubscribe(e){for(let t=this._handlers.length-1;t>=0;t--)this._handlers[t]===e&&this._handlers.splice(t,1)}notify(e,t,n,r=!1){const s=t instanceof Ri?t:new Ri(t,e);r&&s.resetReturnValue(),n=n||this;for(let a=0;as.nativeEvent??=d);s.addReturnValue(a)}return s}setPubSubService(e){this._pubSubService=e}}class Pi{constructor(){this.handlers=[]}get subscriberCount(){return this.handlers.length}subscribe(e,t){return this.handlers.push({event:e,handler:t}),e.subscribe(t),this}unsubscribe(e,t){let n=this.handlers.length;for(;n--;)if(this.handlers[n].event===e&&this.handlers[n].handler===t)return this.handlers.splice(n,1),void e.unsubscribe(t);return this}unsubscribeAll(){let e=this.handlers.length;for(;e--;)this.handlers[e].event.unsubscribe(this.handlers[e].handler);return this.handlers=[],this}}class Oa{constructor(e,t,n,r){void 0===n&&void 0===r&&(n=e,r=t),this.fromRow=Math.min(e,n),this.fromCell=Math.min(t,r),this.toRow=Math.max(e,n),this.toCell=Math.max(t,r)}isSingleCell(){return this.fromRow===this.toRow&&this.fromCell===this.toCell}isSingleRow(){return this.fromRow===this.toRow}contains(e,t){return e>=this.fromRow&&e<=this.toRow&&t>=this.fromCell&&t<=this.toCell}toString(){return this.isSingleCell()?`(${this.fromRow}:${this.fromCell})`:`(${this.fromRow}:${this.fromCell} - ${this.toRow}:${this.toCell})`}}class vW{constructor(){this.__nonDataRow=!0}}class UA extends vW{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 Sle extends vW{constructor(){super(),this.__groupTotals=!0,this.group=null,this.initialized=!1}}class U{static height(e,t){if(e){if(void 0===t)return e.getBoundingClientRect().height;U.setStyleSize(e,"height",t)}}static width(e,t){if(e&&e.getBoundingClientRect){if(void 0===t)return e.getBoundingClientRect().width;U.setStyleSize(e,"width",t)}}static setStyleSize(e,t,n){"function"==typeof n&&(n=n()),e.style[t]="string"==typeof n?n:`${n}px`}static isHidden(e){return 0===e.offsetWidth&&0===e.offsetHeight}static parents(e,t){const n=[],r=":visible"===t,s=":hidden"===t;for(;(e=e.parentNode)&&e!==document&&e&&e.parentNode;)s?U.isHidden(e)&&n.push(e):r?U.isHidden(e)||n.push(e):(!t||e.matches(t))&&n.push(e);return n}static toFloat(e){const t=parseFloat(e);return isNaN(t)?0:t}static show(e,t=""){Array.isArray(e)?e.forEach(n=>n.style.display=t):e.style.display=t}static hide(e){Array.isArray(e)?e.forEach(t=>t.style.display="none"):e.style.display="none"}static applyDefaults(e,t){"object"==typeof t&&Object.keys(t).forEach(n=>{t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n])})}static addSlickEventPubSubWhenDefined(e,t){if(e)for(const n in t)t[n]instanceof me&&"function"==typeof t[n].setPubSubService&&t[n].setPubSubService(e)}}U.storage={_storage:new WeakMap,put:function(i,e,t){this._storage.has(i)||this._storage.set(i,new Map),this._storage.get(i).set(e,t)},get:function(i,e){const t=this._storage.get(i);return t?t.get(e):null},remove:function(i,e){const t=this._storage.get(i).delete(e);return 0!==this._storage.get(i).size&&this._storage.delete(i),t}};const Fc=new class Dle{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 bW{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 Pi,this._options=en(!0,{},this._defaults,e)}get eventHandler(){return this._eventHandler}get dataView(){return this._grid?.getData()??{}}get gridOptions(){return this._grid?.getOptions()||{}}init(e,t){this._grid=e,this._options={...this._defaults,...t},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,t,n,r,s){if(!this._options.enableExpandCollapse)return s.title;const a=s.level||0,h=a*(this._options?.indentation??15)+"px",p=s.collapsed?this._options.toggleCollapsedCssClass:this._options.toggleExpandedCssClass,g=this.gridOptions?.preventDocumentFragmentUsage?document.createElement("span"):new DocumentFragment;g.appendChild(O("span",{className:`${this._options.toggleCssClass} ${p}`,ariaExpanded:String(!s.collapsed),style:{marginLeft:h}}));const v=O("span",{className:this._options.groupTitleCssClass||""});return v.setAttribute("level",a),s.title instanceof HTMLElement||s.title instanceof DocumentFragment?v.appendChild(s.title):this._grid.applyHtmlCode(v,s.title??""),g.appendChild(v),g}defaultTotalsCellFormatter(e,t,n,r,s,a){return r?.groupTotalsFormatter?.(s,r,a)??""}handleGridClick(e,t){const n=e.target,r=this._grid?.getDataItem(t.row);r instanceof UA&&n.classList.contains(this._options.toggleCssClass||"")&&(this.handleDataViewExpandOrCollapse(r),e.stopImmediatePropagation(),e.preventDefault())}handleGridKeyDown(e){if(this._options.enableExpandCollapse&&" "===e.key){const t=this._grid?.getActiveCell();if(t){const n=this._grid.getDataItem(t.row);n instanceof UA&&(this.handleDataViewExpandOrCollapse(n),e.stopImmediatePropagation(),e.preventDefault())}}}handleDataViewExpandOrCollapse(e){const t=this._grid?.getRenderedRange();this.dataView.setRefreshHints({ignoreDiffsBefore:t.top,ignoreDiffsAfter:t.bottom+1}),e.collapsed?this.dataView.expandGroup(e.groupingKey):this.dataView.collapseGroup(e.groupingKey)}}class Tle{constructor(e,t){this.externalPubSub=t,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:(n,r)=>n.value===r.value?0:n.value>r.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 me("onBeforePagingInfoChanged",t),this.onGroupExpanded=new me("onGroupExpanded",t),this.onGroupCollapsed=new me("onGroupCollapsed",t),this.onPagingInfoChanged=new me("onPagingInfoChanged",t),this.onRowCountChanged=new me("onRowCountChanged",t),this.onRowsChanged=new me("onRowsChanged",t),this.onRowsOrCountChanged=new me("onRowsOrCountChanged",t),this.onSelectedRowIdsChanged=new me("onSelectedRowIdsChanged",t),this.onSetItemsCalled=new me("onSetItemsCalled",t),this._options=en(!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,t,n=0;for(let r=0,s=this.items.length;r=0;--n)this.items.splice(t[n],1);this.updateIdxById(t[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,t){if(!this.idxById)return;if(!this.idxById.has(e)||e!==t[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 n=this.getItemById(e);0!==this.sortComparer(n,t)?(this.deleteItem(e),this.sortedAddItem(t)):this.updateItem(e,t)}sortedIndex(e){let t=0,n=this.items.length;for(;t>>1;-1===this.sortComparer(this.items[r],e)?t=r+1:n=r}return t}getItemCount(){return this.items.length}getLength(){return this.rows.length}getItem(e){const t=this.rows[e];if(t?.__group&&t.totals&&!t.totals?.initialized){const n=this.groupingInfos[t.level];n.displayTotalsRow||(this.calculateTotals(t.totals),t.title=n.formatter?n.formatter(t):t.value)}else t?.__groupTotals&&!t.initialized&&this.calculateTotals(t);return t}getItemMetadata(e){const t=this.rows[e];return void 0===t?null:t.__group?this._options.groupItemMetadataProvider.getGroupRowMetadata(t):t.__groupTotals?this._options.groupItemMetadataProvider.getTotalsRowMetadata(t):null}expandCollapseAllGroups(e,t){if(ri(e))this.toggledGroupsByLevel[e]={},this.groupingInfos[e].collapsed=t,!0===t?this.onGroupCollapsed.notify({level:e,groupingKey:null}):this.onGroupExpanded.notify({level:e,groupingKey:null});else for(let n=0;n=g?a[a.length]=p:(n=t[p],r=e[p],(!n||this.groupingInfos.length&&(s=n.__nonDataRow||r.__nonDataRow)&&n.__group!==r.__group||n.__group&&!n.equals(r)||s&&(n.__groupTotals||r.__groupTotals)||n[this.idProperty]!==r[this.idProperty]||this.updated?.[n[this.idProperty]])&&(a[a.length]=p));return a}recalc(e){this.rowsById=void 0,(this.refreshHints.isFilterNarrowing!==this.prevRefreshHints.isFilterNarrowing||this.refreshHints.isFilterExpanding!==this.prevRefreshHints.isFilterExpanding)&&(this.filterCache=[]);const t=this.getFilteredAndPagedItems(e);this.totalRows=t.totalRows;let n=t.rows;this.groups=[],this.groupingInfos.length&&(this.groups=this.extractGroups(n),this.groups.length&&(n=this.flattenGroupedRows(this.groups)));const r=this.getRowDiffs(this.rows,n);return this.rows=n,r}refresh(){if(this.suspend)return;const e=en(!0,{},this.getPagingInfo()),t=this.rows.length,n=this.totalRows;let r=this.recalc(this.items);this.pagesize&&this.totalRows0},null,this),r.length>0&&this.onRowsChanged.notify({rows:r,itemCount:this.items.length,dataView:this,calledOnRowCountChanged:t!==this.rows.length},null,this),(t!==this.rows.length||r.length>0)&&this.onRowsOrCountChanged.notify({rowsDiff:r,previousRowCount:t,currentRowCount:this.rows.length,itemCount:this.items.length,rowCountChanged:t!==this.rows.length,rowsChanged:r.length>0,dataView:this},null,this)}syncGridSelection(e,t,n){let r;this._grid=e,this.selectedRowIds=this.mapRowsToIds(e.getSelectedRows());const s=e.getOptions(),a=h=>{!1===h?this.selectedRowIds=[]:this.selectedRowIds.sort().join(",")!==h.sort().join(",")&&(this.selectedRowIds=h)};return e.onSelectedRowsChanged.subscribe((h,p)=>{if(!r){const g=this.mapRowsToIds(p.rows),v={grid:this._grid,ids:g,rows:p.rows,added:!0,dataView:this};this.preSelectedRowIdsChangeFn(v),this.onSelectedRowIdsChanged.notify(Object.assign(v,{selectedRowIds:this.selectedRowIds,filteredIds:this.getAllSelectedFilteredIds()}),new Ri,this)}}),this.preSelectedRowIdsChangeFn=h=>{if(!r){if(r=!0,typeof h.added>"u")a(h.ids);else{let g;if(h.added)g=n&&s.multiSelect?(this.selectedRowIds?.filter(y=>void 0===this.getRowById(y))).concat(h.ids):h.ids;else if(n&&s.multiSelect){const v=new Set(h.ids);g=this.selectedRowIds?.filter(y=>!v.has(y))}else g=[];a(g)}r=!1}},this.onRowsOrCountChanged.subscribe((()=>{if((this.selectedRowIds||[]).length>0&&!r){r=!0;const h=this.mapIdsToRows(this.selectedRowIds||[]);if(!t){const p={grid:this._grid,ids:this.mapRowsToIds(h),rows:h,dataView:this};this.preSelectedRowIdsChangeFn(p),this.onSelectedRowIdsChanged.notify(Object.assign(p,{selectedRowIds:this.selectedRowIds,filteredIds:this.getAllSelectedFilteredIds()}),new Ri,this)}e.setSelectedRows(h),r=!1}}).bind(this)),this.onSelectedRowIdsChanged}getAllSelectedIds(){return this.selectedRowIds}getAllSelectedFilteredIds(){return this.getAllSelectedFilteredItems().map(e=>e[this.idProperty])}setSelectedIds(e,t){let n=t?.isRowBeingAdded;const r=t?.shouldTriggerEvent,s=t?.applyRowSelectionToGrid;!1!==n&&(n=!0);const a=this.mapIdsToRows(e),d={grid:this._grid,ids:e,rows:a,added:n,dataView:this};this.preSelectedRowIdsChangeFn?.(d),!1!==r&&this.onSelectedRowIdsChanged.notify(Object.assign(d,{selectedRowIds:this.selectedRowIds,filteredIds:this.getAllSelectedFilteredIds()}),new Ri,this),!1!==s&&this._grid&&this._grid.setSelectedRows(a)}getAllSelectedItems(){const e=[];return this.getAllSelectedIds().forEach(n=>{e.push(this.getItemById(n))}),e}getAllSelectedFilteredItems(){if(!Array.isArray(this.selectedRowIds))return[];const e=new Set(this.selectedRowIds);return this.filteredItems.filter(n=>e.has(n[this.idProperty]))||[]}syncGridCellCssStyles(e,t){let n,r;const s=d=>{n={},"object"==typeof d&&Object.keys(d).forEach(h=>{if(d&&this.rows[h]){const p=this.rows[h][this.idProperty];n[p]=d[h]}})};s(e.getCellCssStyles(t));const a=()=>{if("object"==typeof n){r=!0,this.ensureRowsByIdCache();const d={};Object.keys(n).forEach(h=>{const p=this.rowsById?.[h];ri(p)&&(d[p]=n[h])}),e.setCellCssStyles(t,d),r=!1}};e.onCellCssStylesChanged.subscribe((d,h)=>{r||t!==h.key||(h.hash?s(h.hash):(e.onCellCssStylesChanged.unsubscribe(),this.onRowsOrCountChanged.unsubscribe(a)))}),this.onRowsOrCountChanged.subscribe(a.bind(this))}}function yW(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(i);e&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(i,r).enumerable})),t.push.apply(t,n)}return t}function xd(i){for(var e=1;e=0)&&(t[r]=i[r]);return t}(i,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(i);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(i,n)&&(t[n]=i[n])}return t}function ah(i){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(i)}var lh=ah(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),z_=ah(/Edge/i),CW=ah(/firefox/i),G_=ah(/safari/i)&&!ah(/chrome/i)&&!ah(/android/i),B6=ah(/iP(ad|od|hone)/i),wW=ah(/chrome/i)&&ah(/android/i),kW={capture:!1,passive:!1};function Pt(i,e,t){i.addEventListener(e,t,!lh&&kW)}function Mt(i,e,t){i.removeEventListener(e,t,!lh&&kW)}function qA(i,e){if(e){if(">"===e[0]&&(e=e.substring(1)),i)try{if(i.matches)return i.matches(e);if(i.msMatchesSelector)return i.msMatchesSelector(e);if(i.webkitMatchesSelector)return i.webkitMatchesSelector(e)}catch{return!1}return!1}}function _W(i){return i.host&&i!==document&&i.host.nodeType?i.host:i.parentNode}function ta(i,e,t,n){if(i){t=t||document;do{if(null!=e&&(">"===e[0]?i.parentNode===t&&qA(i,e):qA(i,e))||n&&i===t)return i;if(i===t)break}while(i=_W(i))}return null}var $_,EW=/\s+/g;function qn(i,e,t){if(i&&e)if(i.classList)i.classList[t?"add":"remove"](e);else{var n=(" "+i.className+" ").replace(EW," ").replace(" "+e+" "," ");i.className=(n+(t?" "+e:"")).replace(EW," ")}}function Re(i,e,t){var n=i&&i.style;if(n){if(void 0===t)return document.defaultView&&document.defaultView.getComputedStyle?t=document.defaultView.getComputedStyle(i,""):i.currentStyle&&(t=i.currentStyle),void 0===e?t:t[e];!(e in n)&&-1===e.indexOf("webkit")&&(e="-webkit-"+e),n[e]=t+("string"==typeof t?"":"px")}}function w1(i,e){var t="";if("string"==typeof i)t=i;else do{var n=Re(i,"transform");n&&"none"!==n&&(t=n+" "+t)}while(!e&&(i=i.parentNode));var r=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return r&&new r(t)}function FW(i,e,t){if(i){var n=i.getElementsByTagName(e),r=0,s=n.length;if(t)for(;r=s:r<=s))return n;if(n===Sd())break;n=bm(n,!1)}return!1}function oy(i,e,t,n){for(var r=0,s=0,a=i.children;s2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,s=Lle(n,jle);W_.pluginEvent.bind(dt)(e,t,xd({dragEl:ye,parentEl:cr,ghostEl:wt,rootEl:An,nextEl:k1,lastDownEl:KA,cloneEl:Kn,cloneHidden:ym,dragStarted:q_,putSortable:Fo,activeSortable:dt.active,originalEvent:r,oldIndex:ay,oldDraggableIndex:j_,newIndex:Ra,newDraggableIndex:Cm,hideGhostForTarget:BW,unhideGhostForTarget:HW,cloneNowHidden:function(){ym=!0},cloneNowShown:function(){ym=!1},dispatchSortableEvent:function(d){Es({sortable:t,name:d,originalEvent:r})}},s))};function Es(i){U_(xd({putSortable:Fo,cloneEl:Kn,targetEl:ye,rootEl:An,oldIndex:ay,oldDraggableIndex:j_,newIndex:Ra,newDraggableIndex:Cm},i))}var ye,cr,wt,An,k1,KA,Kn,ym,ay,Ra,j_,Cm,YA,Fo,_1,xc,W6,U6,IW,LW,q_,cy,K_,QA,Yo,ly=!1,ZA=!1,JA=[],Y_=!1,XA=!1,j6=[],q6=!1,eT=[],tT=typeof document<"u",iT=B6,OW=z_||lh?"cssFloat":"float",qle=tT&&!wW&&!B6&&"draggable"in document.createElement("div"),RW=function(){if(tT){if(lh)return!1;var i=document.createElement("x");return i.style.cssText="pointer-events:auto","auto"===i.style.pointerEvents}}(),PW=function(e,t){var n=Re(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),s=oy(e,0,t),a=oy(e,1,t),d=s&&Re(s),h=a&&Re(a),p=d&&parseInt(d.marginLeft)+parseInt(d.marginRight)+En(s).width,g=h&&parseInt(h.marginLeft)+parseInt(h.marginRight)+En(a).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(s&&d.float&&"none"!==d.float){var v="left"===d.float?"left":"right";return!a||"both"!==h.clear&&h.clear!==v?"horizontal":"vertical"}return s&&("block"===d.display||"flex"===d.display||"table"===d.display||"grid"===d.display||p>=r&&"none"===n[OW]||a&&"none"===n[OW]&&p+g>r)?"vertical":"horizontal"},NW=function(e){function t(s,a){return function(d,h,p,g){var v=d.options.group.name&&h.options.group.name&&d.options.group.name===h.options.group.name;if(null==s&&(a||v))return!0;if(null==s||!1===s)return!1;if(a&&"clone"===s)return s;if("function"==typeof s)return t(s(d,h,p,g),a)(d,h,p,g);var y=(a?d:h).options.group.name;return!0===s||"string"==typeof s&&s===y||s.join&&s.indexOf(y)>-1}}var n={},r=e.group;(!r||"object"!=jA(r))&&(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},BW=function(){!RW&&wt&&Re(wt,"display","none")},HW=function(){!RW&&wt&&Re(wt,"display","")};tT&&!wW&&document.addEventListener("click",function(i){if(ZA)return i.preventDefault(),i.stopPropagation&&i.stopPropagation(),i.stopImmediatePropagation&&i.stopImmediatePropagation(),ZA=!1,!1},!0);var E1=function(e){if(ye){var t=function(e,t){var n;return JA.some(function(r){var s=r[Eo].options.emptyInsertThreshold;if(s&&!H6(r)){var a=En(r),d=e>=a.left-s&&e<=a.right+s,h=t>=a.top-s&&t<=a.bottom+s;if(d&&h)return n=r}}),n}((e=e.touches?e.touches[0]:e).clientX,e.clientY);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[Eo]._onDragOver(n)}}},Zle=function(e){ye&&ye.parentNode[Eo]._isOutsideThisEl(e.target)};function dt(i,e){if(!i||!i.nodeType||1!==i.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(i));this.el=i,this.options=e=Dl({},e),i[Eo]=this;var t={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(i.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return PW(i,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(a,d){a.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!==dt.supportPointer&&"PointerEvent"in window&&(!G_||B6),emptyInsertThreshold:5};for(var n in W_.initializePlugins(this,i,t),t)!(n in e)&&(e[n]=t[n]);for(var r in NW(e),this)"_"===r.charAt(0)&&"function"==typeof this[r]&&(this[r]=this[r].bind(this));this.nativeDraggable=!e.forceFallback&&qle,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?Pt(i,"pointerdown",this._onTapStart):(Pt(i,"mousedown",this._onTapStart),Pt(i,"touchstart",this._onTapStart)),this.nativeDraggable&&(Pt(i,"dragover",this),Pt(i,"dragenter",this)),JA.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),Dl(this,$le())}function nT(i,e,t,n,r,s,a,d){var h,v,p=i[Eo],g=p.options.onMove;return!window.CustomEvent||lh||z_?(h=document.createEvent("Event")).initEvent("move",!0,!0):h=new CustomEvent("move",{bubbles:!0,cancelable:!0}),h.to=e,h.from=i,h.dragged=t,h.draggedRect=n,h.related=r||e,h.relatedRect=s||En(e),h.willInsertAfter=d,h.originalEvent=a,i.dispatchEvent(h),g&&(v=g.call(p,h,a)),v}function K6(i){i.draggable=!1}function Xle(){q6=!1}function nce(i){for(var e=i.tagName+i.className+i.src+i.href+i.textContent,t=e.length,n=0;t--;)n+=e.charCodeAt(t);return n.toString(36)}function rT(i){return setTimeout(i,0)}function Y6(i){return clearTimeout(i)}dt.prototype={constructor:dt,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(cy=null)},_getDirection:function(e,t){return"function"==typeof this.options.direction?this.options.direction.call(this,e,t,ye):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,s=r.preventOnFilter,a=e.type,d=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,h=(d||e).target,p=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||h,g=r.filter;if(function rce(i){eT.length=0;for(var e=i.getElementsByTagName("input"),t=e.length;t--;){var n=e[t];n.checked&&eT.push(n)}}(n),!ye&&!(/mousedown|pointerdown/.test(a)&&0!==e.button||r.disabled)&&!p.isContentEditable&&(this.nativeDraggable||!G_||!h||"SELECT"!==h.tagName.toUpperCase())&&!((h=ta(h,r.draggable,n,!1))&&h.animated||KA===h)){if(ay=lr(h),j_=lr(h,r.draggable),"function"==typeof g){if(g.call(this,e,h,this))return Es({sortable:t,rootEl:p,name:"filter",targetEl:h,toEl:n,fromEl:n}),ia("filter",t,{evt:e}),void(s&&e.preventDefault())}else if(g&&(g=g.split(",").some(function(v){if(v=ta(p,v.trim(),n,!1))return Es({sortable:t,rootEl:v,name:"filter",targetEl:h,fromEl:n,toEl:n}),ia("filter",t,{evt:e}),!0})))return void(s&&e.preventDefault());r.handle&&!ta(p,r.handle,n,!1)||this._prepareDragStart(e,d,h)}}},_prepareDragStart:function(e,t,n){var h,r=this,s=r.el,a=r.options,d=s.ownerDocument;if(n&&!ye&&n.parentNode===s){var p=En(n);if(An=s,cr=(ye=n).parentNode,k1=ye.nextSibling,KA=n,YA=a.group,dt.dragged=ye,_1={target:ye,clientX:(t||e).clientX,clientY:(t||e).clientY},IW=_1.clientX-p.left,LW=_1.clientY-p.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,ye.style["will-change"]="all",h=function(){ia("delayEnded",r,{evt:e}),dt.eventCanceled?r._onDrop():(r._disableDelayedDragEvents(),!CW&&r.nativeDraggable&&(ye.draggable=!0),r._triggerDragStart(e,t),Es({sortable:r,name:"choose",originalEvent:e}),qn(ye,a.chosenClass,!0))},a.ignore.split(",").forEach(function(g){FW(ye,g.trim(),K6)}),Pt(d,"dragover",E1),Pt(d,"mousemove",E1),Pt(d,"touchmove",E1),a.supportPointer?(Pt(d,"pointerup",r._onDrop),!this.nativeDraggable&&Pt(d,"pointercancel",r._onDrop)):(Pt(d,"mouseup",r._onDrop),Pt(d,"touchend",r._onDrop),Pt(d,"touchcancel",r._onDrop)),CW&&this.nativeDraggable&&(this.options.touchStartThreshold=4,ye.draggable=!0),ia("delayStart",this,{evt:e}),!a.delay||a.delayOnTouchOnly&&!t||this.nativeDraggable&&(z_||lh))h();else{if(dt.eventCanceled)return void this._onDrop();a.supportPointer?(Pt(d,"pointerup",r._disableDelayedDrag),Pt(d,"pointercancel",r._disableDelayedDrag)):(Pt(d,"mouseup",r._disableDelayedDrag),Pt(d,"touchend",r._disableDelayedDrag),Pt(d,"touchcancel",r._disableDelayedDrag)),Pt(d,"mousemove",r._delayedDragTouchMoveHandler),Pt(d,"touchmove",r._delayedDragTouchMoveHandler),a.supportPointer&&Pt(d,"pointermove",r._delayedDragTouchMoveHandler),r._dragStartTimer=setTimeout(h,a.delay)}}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){ye&&K6(ye),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Mt(e,"mouseup",this._disableDelayedDrag),Mt(e,"touchend",this._disableDelayedDrag),Mt(e,"touchcancel",this._disableDelayedDrag),Mt(e,"pointerup",this._disableDelayedDrag),Mt(e,"pointercancel",this._disableDelayedDrag),Mt(e,"mousemove",this._delayedDragTouchMoveHandler),Mt(e,"touchmove",this._delayedDragTouchMoveHandler),Mt(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||"touch"==e.pointerType&&e,!this.nativeDraggable||t?this.options.supportPointer?Pt(document,"pointermove",this._onTouchMove):Pt(document,t?"touchmove":"mousemove",this._onTouchMove):(Pt(ye,"dragend",this),Pt(An,"dragstart",this._onDragStart));try{document.selection?rT(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,t){if(ly=!1,An&&ye){ia("dragStarted",this,{evt:t}),this.nativeDraggable&&Pt(document,"dragover",Zle);var n=this.options;!e&&qn(ye,n.dragClass,!1),qn(ye,n.ghostClass,!0),dt.active=this,e&&this._appendGhost(),Es({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(xc){this._lastX=xc.clientX,this._lastY=xc.clientY,BW();for(var e=document.elementFromPoint(xc.clientX,xc.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(xc.clientX,xc.clientY))!==t;)t=e;if(ye.parentNode[Eo]._isOutsideThisEl(e),t)do{if(t[Eo]){if(t[Eo]._onDragOver({clientX:xc.clientX,clientY:xc.clientY,target:e,rootEl:t})&&!this.options.dragoverBubble)break}e=t}while(t=_W(t));HW()}},_onTouchMove:function(e){if(_1){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,s=e.touches?e.touches[0]:e,a=wt&&w1(wt,!0),d=wt&&a&&a.a,h=wt&&a&&a.d,p=iT&&Yo&&SW(Yo),g=(s.clientX-_1.clientX+r.x)/(d||1)+(p?p[0]-j6[0]:0)/(d||1),v=(s.clientY-_1.clientY+r.y)/(h||1)+(p?p[1]-j6[1]:0)/(h||1);if(!dt.active&&!ly){if(n&&Math.max(Math.abs(s.clientX-this._lastX),Math.abs(s.clientY-this._lastY))r.right+s||i.clientY>n.bottom&&i.clientX>n.left:i.clientY>r.bottom+s||i.clientX>n.right&&i.clientY>n.top}(e,C,this)&&!L.animated){if(L===ye)return D(!1);if(L&&t===e.target&&(n=L),n&&(s=En(n)),!1!==nT(An,t,ye,r,n,s,e,!!n))return S(),L&&L.nextSibling?t.insertBefore(ye,L.nextSibling):t.appendChild(ye),cr=t,I(),D(!0)}else if(L&&function Qle(i,e,t){var n=En(oy(t.el,0,t.options,!0)),r=MW(t.el,t.options,wt),s=10;return e?i.clientXg+p*s/2:hv-QA)return-K_}else if(h>g+p*(1-r)/2&&hv-p*s/2)?h>g+p/2?1:-1:0}(e,n,s,C,se?1:d.swapThreshold,null==d.invertedSwapThreshold?d.swapThreshold:d.invertedSwapThreshold,XA,cy===n),0!==W){var qt=lr(ye);do{qt-=W,mt=cr.children[qt]}while(mt&&("none"===Re(mt,"display")||mt===wt))}if(0===W||mt===n)return D(!1);cy=n,K_=W;var Kt=n.nextElementSibling,Et=!1,Ae=nT(An,t,ye,r,n,s,e,Et=1===W);if(!1!==Ae)return(1===Ae||-1===Ae)&&(Et=1===Ae),q6=!0,setTimeout(Xle,30),S(),Et&&!Kt?t.appendChild(ye):n.parentNode.insertBefore(ye,Et?Kt:n),Ie&&AW(Ie,0,tt-Ie.scrollTop),cr=ye.parentNode,void 0!==re&&!XA&&(QA=Math.abs(re-En(n)[Se])),I(),D(!0)}if(t.contains(ye))return D(!1)}return!1}function x(yt,Ni){ia(yt,k,xd({evt:e,isOwner:g,axis:C?"vertical":"horizontal",revert:a,dragRect:r,targetRect:s,canSort:v,fromSortable:y,target:n,completed:D,onMove:function(Gt,Lr){return nT(An,t,ye,r,Gt,En(Gt),e,Lr)},changed:I},Ni))}function S(){x("dragOverAnimationCapture"),k.captureAnimationState(),k!==y&&y.captureAnimationState()}function D(yt){return x("dragOverCompleted",{insertion:yt}),yt&&(g?p._hideClone():p._showClone(k),k!==y&&(qn(ye,Fo?Fo.options.ghostClass:p.options.ghostClass,!1),qn(ye,d.ghostClass,!0)),Fo!==k&&k!==dt.active?Fo=k:k===dt.active&&Fo&&(Fo=null),y===k&&(k._ignoreWhileAnimating=n),k.animateAll(function(){x("dragOverAnimationComplete"),k._ignoreWhileAnimating=null}),k!==y&&(y.animateAll(),y._ignoreWhileAnimating=null)),(n===ye&&!ye.animated||n===t&&!n.animated)&&(cy=null),!d.dragoverBubble&&!e.rootEl&&n!==document&&(ye.parentNode[Eo]._isOutsideThisEl(e.target),!yt&&E1(e)),!d.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),E=!0}function I(){Ra=lr(ye),Cm=lr(ye,d.draggable),Es({sortable:k,name:"change",toEl:t,newIndex:Ra,newDraggableIndex:Cm,originalEvent:e})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){Mt(document,"mousemove",this._onTouchMove),Mt(document,"touchmove",this._onTouchMove),Mt(document,"pointermove",this._onTouchMove),Mt(document,"dragover",E1),Mt(document,"mousemove",E1),Mt(document,"touchmove",E1)},_offUpEvents:function(){var e=this.el.ownerDocument;Mt(e,"mouseup",this._onDrop),Mt(e,"touchend",this._onDrop),Mt(e,"pointerup",this._onDrop),Mt(e,"pointercancel",this._onDrop),Mt(e,"touchcancel",this._onDrop),Mt(document,"selectstart",this)},_onDrop:function(e){var t=this.el,n=this.options;Ra=lr(ye),Cm=lr(ye,n.draggable),ia("drop",this,{evt:e}),cr=ye&&ye.parentNode,Ra=lr(ye),Cm=lr(ye,n.draggable),dt.eventCanceled||(ly=!1,XA=!1,Y_=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Y6(this.cloneId),Y6(this._dragStartId),this.nativeDraggable&&(Mt(document,"drop",this),Mt(t,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),G_&&Re(document.body,"user-select",""),Re(ye,"transform",""),e&&(q_&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),wt&&wt.parentNode&&wt.parentNode.removeChild(wt),(An===cr||Fo&&"clone"!==Fo.lastPutMode)&&Kn&&Kn.parentNode&&Kn.parentNode.removeChild(Kn),ye&&(this.nativeDraggable&&Mt(ye,"dragend",this),K6(ye),ye.style["will-change"]="",q_&&!ly&&qn(ye,Fo?Fo.options.ghostClass:this.options.ghostClass,!1),qn(ye,this.options.chosenClass,!1),Es({sortable:this,name:"unchoose",toEl:cr,newIndex:null,newDraggableIndex:null,originalEvent:e}),An!==cr?(Ra>=0&&(Es({rootEl:cr,name:"add",toEl:cr,fromEl:An,originalEvent:e}),Es({sortable:this,name:"remove",toEl:cr,originalEvent:e}),Es({rootEl:cr,name:"sort",toEl:cr,fromEl:An,originalEvent:e}),Es({sortable:this,name:"sort",toEl:cr,originalEvent:e})),Fo&&Fo.save()):Ra!==ay&&Ra>=0&&(Es({sortable:this,name:"update",toEl:cr,originalEvent:e}),Es({sortable:this,name:"sort",toEl:cr,originalEvent:e})),dt.active&&((null==Ra||-1===Ra)&&(Ra=ay,Cm=j_),Es({sortable:this,name:"end",toEl:cr,originalEvent:e}),this.save())))),this._nulling()},_nulling:function(){ia("nulling",this),An=ye=cr=wt=k1=Kn=KA=ym=_1=xc=q_=Ra=Cm=ay=j_=cy=K_=Fo=YA=dt.dragged=dt.ghost=dt.clone=dt.active=null,eT.forEach(function(e){e.checked=!0}),eT.length=W6=U6=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":ye&&(this._onDragOver(e),function Jle(i){i.dataTransfer&&(i.dataTransfer.dropEffect="move"),i.cancelable&&i.preventDefault()}(e));break;case"selectstart":e.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,r=0,s=n.length,a=this.options;r{R[re]&&(W=!0)}),W}function D(R){if(d=R.target,!S(R)){const W=R?.touches?.[0]??R,{target:re}=W;if(!i.allowDragFrom||i.allowDragFrom&&d.matches(i.allowDragFrom)||i.allowDragFromClosest&&d.closest(i.allowDragFromClosest)){C.dragHandle=d;const ie=w6();h=ie.left+W.clientX,p=ie.top+W.clientY,g=W.clientX-W.clientX,v=W.clientY-W.clientY,C=Object.assign(C,{deltaX:g,deltaY:v,startX:h,startY:p,target:re}),!1!==E(t,R,C)&&(document.body.addEventListener("mousemove",I),document.body.addEventListener("touchmove",I),document.body.addEventListener("mouseup",L),document.body.addEventListener("touchend",L),document.body.addEventListener("touchcancel",L))}}}function I(R){const W=R?.touches?.[0]??R;if(!S(R)){g=W.clientX-h,v=W.clientY-p;const{target:re}=W;y||(C=Object.assign(C,{deltaX:g,deltaY:v,startX:h,startY:p,target:re}),E(n,R,C),y=!0),C=Object.assign(C,{deltaX:g,deltaY:v,startX:h,startY:p,target:re}),E(r,R,C)}}function L(R){if(document.body.removeEventListener("mousemove",I),document.body.removeEventListener("touchmove",I),document.body.removeEventListener("mouseup",L),document.body.removeEventListener("touchend",L),document.body.removeEventListener("touchcancel",L),y){const{target:W}=R;C=Object.assign(C,{target:W}),E(s,R,C),y=!1}}return function k(){e&&(e.addEventListener("mousedown",D),e.addEventListener("touchstart",D))}(),{destroy:function x(){e&&(e.removeEventListener("mousedown",D),e.removeEventListener("touchstart",D))}}}function WW(i){const{element:e,onMouseWheel:t}=i;function s(a){const d=a||window.event;let h=0,p=0,g=0;d.wheelDelta&&(h=d.wheelDelta/120),d.detail&&(h=-d.detail/3),g=h,void 0!==d.axis&&d.axis===d.HORIZONTAL_AXIS&&(g=0,p=-1*h),void 0!==d.wheelDeltaY&&(g=d.wheelDeltaY/120),void 0!==d.wheelDeltaX&&(p=-1*d.wheelDeltaX/120),"function"==typeof t&&t(a,h,p,g)}return function r(){e.addEventListener("wheel",s),e.addEventListener("mousewheel",s)}(),{destroy:function n(){e.removeEventListener("wheel",s),e.removeEventListener("mousewheel",s)}}}function UW(i){const{resizeableElement:e,resizeableHandleElement:t,onResizeStart:n,onResize:r,onResizeEnd:s}=i;if(!t||"function"!=typeof t.addEventListener)throw new Error("[SlickResizable] You did not provide a valid html element that will be used for the handle to resize.");function h(y,C){if("function"==typeof y)return y(C,{resizeableElement:e,resizeableHandleElement:t})}function p(y){y.preventDefault();const C=y.touches?y.changedTouches[0]:y;!1!==h(n,C)&&(document.body.addEventListener("mousemove",g),document.body.addEventListener("mouseup",v),document.body.addEventListener("touchmove",g),document.body.addEventListener("touchend",v))}function g(y){y.preventDefault&&"touchmove"!==y.type&&y.preventDefault();const C=y.touches?y.changedTouches[0]:y;"function"==typeof r&&r(C,{resizeableElement:e,resizeableHandleElement:t})}function v(y){const C=y.touches?y.changedTouches[0]:y;h(s,C),document.body.removeEventListener("mousemove",g),document.body.removeEventListener("mouseup",v),document.body.removeEventListener("touchmove",g),document.body.removeEventListener("touchend",v)}return function a(){t.addEventListener("mousedown",p),t.addEventListener("touchstart",p)}(),{destroy:function d(){"function"==typeof t?.removeEventListener&&(t.removeEventListener("mousedown",p),t.removeEventListener("touchstart",p))}}}class lce{constructor(e,t,n,r,s){if(this.container=e,this.data=t,this.columns=n,this.externalPubSub=s,this.cid="",this.canvas=null,this.canvas_context=null,this._defaults={alwaysShowVerticalScroll:!1,alwaysAllowHorizontalScroll:!1,explicitInitialization:!1,rowHeight:25,defaultColumnWidth:80,enableHtmlRendering:!0,enableAddRow:!1,leaveSpaceForNewRows:!1,editable:!1,autoEdit:!0,autoEditNewRow:!0,autoCommitEdit:!1,suppressActiveCellChangeOnEdit:!1,enableCellNavigation:!0,enableColumnReorder:!0,unorderableColumnCssClass:"unorderable",asyncEditorLoading:!1,asyncEditorLoadDelay:100,forceFitColumns:!1,enableAsyncPostRender:!1,asyncPostRenderDelay:50,enableAsyncPostRenderCleanup:!1,asyncPostRenderCleanupDelay:40,columnResizingDelay:300,nonce:"",editorLock:Fc,showColumnHeader:!0,showHeaderRow:!1,headerRowHeight:25,createFooterRow:!1,showFooterRow:!1,footerRowHeight:25,createPreHeaderPanel:!1,createTopHeaderPanel:!1,showPreHeaderPanel:!1,showTopHeaderPanel:!1,preHeaderPanelHeight:25,preHeaderPanelWidth:"auto",topHeaderPanelHeight:25,topHeaderPanelWidth:"auto",showTopPanel:!1,topPanelHeight:25,formatterFactory:null,editorFactory:null,cellFlashingCssClass:"flashing",rowHighlightCssClass:"highlight-animate",rowHighlightDuration:400,selectedCellCssClass:"selected",multiSelect:!0,enableTextSelectionOnCells:!1,dataItemColumnValueExtractor:null,frozenBottom:!1,frozenColumn:-1,frozenRow:-1,frozenRightViewportMinWidth:100,throwWhenFrozenNotAllViewable:!1,fullWidthRows:!1,multiColumnSort:!1,numberedMultiColumnSort:!1,tristateMultiColumnSort:!1,sortColNumberInSeparateSpan:!1,defaultFormatter:this.defaultFormatter,forceSyncScrolling:!1,addNewRowCssClass:"new-row",preserveCopiedSelectionOnPaste:!1,preventDragFromKeys:["ctrlKey","metaKey"],showCellSelection:!0,viewportClass:void 0,minRowBuffer:3,emulatePagingWhenScrolling:!0,editorCellNavOnLRKeys:!1,enableMouseWheelScrollHandler:!0,doPaging:!0,rowTopOffsetRenderType:"top",scrollRenderThrottling:10,suppressCssChangesOnHiddenInit:!1,ffMaxSupportedCssHeight:6e6,maxSupportedCssHeight:1e9,sanitizer:void 0,mixinDefaults:!1,shadowRoot:void 0},this._columnDefaults={name:"",headerCssClass:null,defaultSortAsc:!0,focusable:!0,hidden:!1,minWidth:30,maxWidth:void 0,rerenderOnResize:!1,reorderable:!0,resizable:!0,sortable:!1,selectable:!0},this.page=0,this.offset=0,this.vScrollDir=1,this._bindingEventService=new br,this.initialized=!1,this.uid=`slickgrid_${Math.round(1e6*Math.random())}`,this._groupHeaders=[],this._headerScroller=[],this._headers=[],this._boundAncestors=[],this.viewportH=0,this.viewportW=0,this.canvasWidth=0,this.canvasWidthL=0,this.canvasWidthR=0,this.headersWidth=0,this.headersWidthL=0,this.headersWidthR=0,this.viewportHasHScroll=!1,this.viewportHasVScroll=!1,this.headerColumnWidthDiff=0,this.headerColumnHeightDiff=0,this.cellWidthDiff=0,this.cellHeightDiff=0,this.hasFrozenRows=!1,this.frozenRowsHeight=0,this.actualFrozenRow=-1,this.paneTopH=0,this.paneBottomH=0,this.viewportTopH=0,this.viewportBottomH=0,this.topPanelH=0,this.headerRowH=0,this.footerRowH=0,this.tabbingDirection=1,this.activeCellNode=null,this.currentEditor=null,this.rowsCache={},this.renderedRows=0,this.numVisibleRows=0,this.prevScrollTop=0,this.scrollHeight=0,this.scrollTop=0,this.lastRenderedScrollTop=0,this.lastRenderedScrollLeft=0,this.prevScrollLeft=0,this.scrollLeft=0,this.selectedRows=[],this.plugins=[],this.cellCssClasses={},this.columnsById={},this.sortColumns=[],this.columnPosLeft=[],this.columnPosRight=[],this.pagingActive=!1,this.pagingIsLastPage=!1,this.h_render=null,this.postProcessedRows={},this.postProcessToRow=null,this.postProcessFromRow=null,this.postProcessedCleanupQueue=[],this.postProcessgroupId=0,this.counter_rows_rendered=0,this.counter_rows_removed=0,this.cssShow={position:"absolute",visibility:"hidden",display:"block"},this._hiddenParents=[],this.oldProps=[],this.enforceFrozenRowHeightRecalc=!1,this.columnResizeDragging=!1,this.slickDraggableInstance=null,this.slickMouseWheelInstances=[],this.slickResizableInstances=[],this.logMessageMaxCount=30,this._container="string"==typeof this.container?document.querySelector(this.container):this.container,!this._container)throw new Error(`SlickGrid requires a valid container, ${this.container} does not exist in the DOM.`);this._pubSubService=s,this.onActiveCellChanged=new me("onActiveCellChanged",s),this.onActiveCellPositionChanged=new me("onActiveCellPositionChanged",s),this.onAddNewRow=new me("onAddNewRow",s),this.onAfterSetColumns=new me("onAfterSetColumns",s),this.onAutosizeColumns=new me("onAutosizeColumns",s),this.onBeforeAppendCell=new me("onBeforeAppendCell",s),this.onBeforeCellEditorDestroy=new me("onBeforeCellEditorDestroy",s),this.onBeforeColumnsResize=new me("onBeforeColumnsResize",s),this.onBeforeDestroy=new me("onBeforeDestroy",s),this.onBeforeEditCell=new me("onBeforeEditCell",s),this.onBeforeFooterRowCellDestroy=new me("onBeforeFooterRowCellDestroy",s),this.onBeforeHeaderCellDestroy=new me("onBeforeHeaderCellDestroy",s),this.onBeforeHeaderRowCellDestroy=new me("onBeforeHeaderRowCellDestroy",s),this.onBeforeSetColumns=new me("onBeforeSetColumns",s),this.onBeforeSort=new me("onBeforeSort",s),this.onBeforeUpdateColumns=new me("onBeforeUpdateColumns",s),this.onCellChange=new me("onCellChange",s),this.onCellCssStylesChanged=new me("onCellCssStylesChanged",s),this.onClick=new me("onClick",s),this.onColumnsReordered=new me("onColumnsReordered",s),this.onColumnsDrag=new me("onColumnsDrag",s),this.onColumnsResized=new me("onColumnsResized",s),this.onColumnsResizeDblClick=new me("onColumnsResizeDblClick",s),this.onCompositeEditorChange=new me("onCompositeEditorChange",s),this.onContextMenu=new me("onContextMenu",s),this.onDblClick=new me("onDblClick",s),this.onDrag=new me("onDrag",s),this.onDragInit=new me("onDragInit",s),this.onDragStart=new me("onDragStart",s),this.onDragEnd=new me("onDragEnd",s),this.onFooterClick=new me("onFooterClick",s),this.onFooterContextMenu=new me("onFooterContextMenu",s),this.onFooterRowCellRendered=new me("onFooterRowCellRendered",s),this.onHeaderCellRendered=new me("onHeaderCellRendered",s),this.onHeaderClick=new me("onHeaderClick",s),this.onHeaderContextMenu=new me("onHeaderContextMenu",s),this.onHeaderMouseEnter=new me("onHeaderMouseEnter",s),this.onHeaderMouseLeave=new me("onHeaderMouseLeave",s),this.onHeaderMouseOver=new me("onHeaderMouseOver",s),this.onHeaderMouseOut=new me("onHeaderMouseOut",s),this.onHeaderRowMouseOver=new me("onHeaderRowMouseOver",s),this.onHeaderRowMouseOut=new me("onHeaderRowMouseOut",s),this.onHeaderRowCellRendered=new me("onHeaderRowCellRendered",s),this.onHeaderRowMouseEnter=new me("onHeaderRowMouseEnter",s),this.onHeaderRowMouseLeave=new me("onHeaderRowMouseLeave",s),this.onKeyDown=new me("onKeyDown",s),this.onMouseEnter=new me("onMouseEnter",s),this.onMouseLeave=new me("onMouseLeave",s),this.onPreHeaderClick=new me("onPreHeaderClick",s),this.onPreHeaderContextMenu=new me("onPreHeaderContextMenu",s),this.onRendered=new me("onRendered",s),this.onScroll=new me("onScroll",s),this.onSelectedRowsChanged=new me("onSelectedRowsChanged",s),this.onSetOptions=new me("onSetOptions",s),this.onActivateChangedOptions=new me("onActivateChangedOptions",s),this.onSort=new me("onSort",s),this.onValidationError=new me("onValidationError",s),this.onViewportChanged=new me("onViewportChanged",s),this.initialize(r)}init(){!this._options.silenceWarnings&&document.body.style.zoom&&"100%"!==document.body.style.zoom&&console.warn("[Slickgrid-Universal] Zoom level other than 100% is not supported by the library and will give subpar experience. SlickGrid relies on the `rowHeight` grid option to do row positioning & calculation and when zoom is not 100% then calculation becomes all offset."),this.finishInitialization()}applyHtmlCode(e,t="",n){if(e)if(t instanceof HTMLElement||t instanceof DocumentFragment)!1!==n?.emptyTarget&&ui(e),e.appendChild(t);else{if(!1!==n?.skipEmptyReassignment&&!ri(t)&&!e.innerHTML)return;if("number"==typeof t||"boolean"==typeof t)e.textContent=String(t);else{const s=this.sanitizeHtmlString(t);this._options.enableHtmlRendering&&s?e.innerHTML=s:e.textContent=s}}}initialize(e){if(e?.mixinDefaults?(this._options||(this._options=e),U.applyDefaults(this._options,this._defaults)):this._options=en(!0,{},this._defaults,e),this.scrollThrottle=this.actionThrottle(this.render.bind(this),this._options.scrollRenderThrottling),this.maxSupportedCssHeight=this.maxSupportedCssHeight||this.getMaxSupportedCssHeight(),this.validateAndEnforceOptions(),this._columnDefaults.width=this._options.defaultColumnWidth,this._options.suppressCssChangesOnHiddenInit||this.cacheCssForHiddenInit(),this.updateColumnProps(),this._options.enableColumnReorder&&(!wm||!wm.create))throw new Error("SlickGrid requires Sortable.js module to be loaded");this.editController={commitCurrentEdit:this.commitCurrentEdit.bind(this),cancelCurrentEdit:this.cancelCurrentEdit.bind(this)},ui(this._container),this._container.style.outline=String(0),this._container.classList.add(this.uid),this._container.classList.add("slick-widget"),this._container.setAttribute("role","grid");const t=window.getComputedStyle(this._container);/relative|absolute|fixed/.test(t.position)||(this._container.style.position="relative"),this._focusSink=O("div",{tabIndex:0,style:{position:"fixed",width:"0px",height:"0px",top:"0px",left:"0px",outline:"0px"}},this._container),this._options.createTopHeaderPanel&&(this._topHeaderPanelScroller=O("div",{className:"slick-topheader-panel slick-state-default",style:{overflow:"hidden",position:"relative"}},this._container),this._topHeaderPanelScroller.appendChild(document.createElement("div")),this._topHeaderPanel=O("div",null,this._topHeaderPanelScroller),this._topHeaderPanelSpacer=O("div",{style:{display:"block",height:"1px",position:"absolute",top:"0px",left:"0px"}},this._topHeaderPanelScroller),this._options.showTopHeaderPanel||U.hide(this._topHeaderPanelScroller)),this._paneHeaderL=O("div",{className:"slick-pane slick-pane-header slick-pane-left",tabIndex:0},this._container),this._paneHeaderR=O("div",{className:"slick-pane slick-pane-header slick-pane-right",tabIndex:0},this._container),this._paneTopL=O("div",{className:"slick-pane slick-pane-top slick-pane-left",tabIndex:0},this._container),this._paneTopR=O("div",{className:"slick-pane slick-pane-top slick-pane-right",tabIndex:0},this._container),this._paneBottomL=O("div",{className:"slick-pane slick-pane-bottom slick-pane-left",tabIndex:0},this._container),this._paneBottomR=O("div",{className:"slick-pane slick-pane-bottom slick-pane-right",tabIndex:0},this._container),this._options.createPreHeaderPanel&&(this._preHeaderPanelScroller=O("div",{className:"slick-preheader-panel slick-state-default",style:{overflow:"hidden",position:"relative"}},this._paneHeaderL),this._preHeaderPanelScroller.appendChild(document.createElement("div")),this._preHeaderPanel=O("div",null,this._preHeaderPanelScroller),this._preHeaderPanelSpacer=O("div",{style:{display:"block",height:"1px",position:"absolute",top:"0px",left:"0px"}},this._preHeaderPanelScroller),this._preHeaderPanelScrollerR=O("div",{className:"slick-preheader-panel slick-state-default",style:{overflow:"hidden",position:"relative"}},this._paneHeaderR),this._preHeaderPanelR=O("div",null,this._preHeaderPanelScrollerR),this._preHeaderPanelSpacerR=O("div",{style:{display:"block",height:"1px",position:"absolute",top:"0px",left:"0px"}},this._preHeaderPanelScrollerR),this._options.showPreHeaderPanel||(U.hide(this._preHeaderPanelScroller),U.hide(this._preHeaderPanelScrollerR))),this._headerScrollerL=O("div",{className:"slick-header slick-state-default slick-header-left"},this._paneHeaderL),this._headerScrollerR=O("div",{className:"slick-header slick-state-default slick-header-right"},this._paneHeaderR),this._headerScroller.push(this._headerScrollerL),this._headerScroller.push(this._headerScrollerR),this._headerL=O("div",{className:"slick-header-columns slick-header-columns-left",style:{left:"-1000px"}},this._headerScrollerL),this._headerR=O("div",{className:"slick-header-columns slick-header-columns-right",style:{left:"-1000px"}},this._headerScrollerR),this._headers=[this._headerL,this._headerR],this._headerRowScrollerL=O("div",{className:"slick-headerrow slick-state-default"},this._paneTopL),this._headerRowScrollerR=O("div",{className:"slick-headerrow slick-state-default"},this._paneTopR),this._headerRowScroller=[this._headerRowScrollerL,this._headerRowScrollerR],this._headerRowSpacerL=O("div",{style:{display:"block",height:"1px",position:"absolute",top:"0px",left:"0px"}},this._headerRowScrollerL),this._headerRowSpacerR=O("div",{style:{display:"block",height:"1px",position:"absolute",top:"0px",left:"0px"}},this._headerRowScrollerR),this._headerRowL=O("div",{className:"slick-headerrow-columns slick-headerrow-columns-left"},this._headerRowScrollerL),this._headerRowR=O("div",{className:"slick-headerrow-columns slick-headerrow-columns-right"},this._headerRowScrollerR),this._headerRows=[this._headerRowL,this._headerRowR],this._topPanelScrollerL=O("div",{className:"slick-top-panel-scroller slick-state-default"},this._paneTopL),this._topPanelScrollerR=O("div",{className:"slick-top-panel-scroller slick-state-default"},this._paneTopR),this._topPanelScrollers=[this._topPanelScrollerL,this._topPanelScrollerR],this._topPanelL=O("div",{className:"slick-top-panel",style:{width:"10000px"}},this._topPanelScrollerL),this._topPanelR=O("div",{className:"slick-top-panel",style:{width:"10000px"}},this._topPanelScrollerR),this._topPanels=[this._topPanelL,this._topPanelR],this._options.showColumnHeader||this._headerScroller.forEach(n=>{U.hide(n)}),this._options.showTopPanel||this._topPanelScrollers.forEach(n=>{U.hide(n)}),this._options.showHeaderRow||this._headerRowScroller.forEach(n=>{U.hide(n)}),this._viewportTopL=O("div",{className:"slick-viewport slick-viewport-top slick-viewport-left",tabIndex:0},this._paneTopL),this._viewportTopR=O("div",{className:"slick-viewport slick-viewport-top slick-viewport-right",tabIndex:0},this._paneTopR),this._viewportBottomL=O("div",{className:"slick-viewport slick-viewport-bottom slick-viewport-left",tabIndex:0},this._paneBottomL),this._viewportBottomR=O("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(n=>{n.classList.add(...Oi(this._options.viewportClass))}),this._activeViewportNode=this._viewportTopL,this._canvasTopL=O("div",{className:"grid-canvas grid-canvas-top grid-canvas-left",tabIndex:0},this._viewportTopL),this._canvasTopR=O("div",{className:"grid-canvas grid-canvas-top grid-canvas-right",tabIndex:0},this._viewportTopR),this._canvasBottomL=O("div",{className:"grid-canvas grid-canvas-bottom grid-canvas-left",tabIndex:0},this._viewportBottomL),this._canvasBottomR=O("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._topHeaderPanelSpacer&&U.width(this._topHeaderPanelSpacer,this.getCanvasWidth()+this.scrollbarDimensions.width),this._preHeaderPanelSpacer&&U.width(this._preHeaderPanelSpacer,this.getCanvasWidth()+this.scrollbarDimensions.width),this._headers.forEach(n=>{U.width(n,this.getHeadersWidth())}),U.width(this._headerRowSpacerL,this.getCanvasWidth()+this.scrollbarDimensions.width),U.width(this._headerRowSpacerR,this.getCanvasWidth()+this.scrollbarDimensions.width),this._options.createFooterRow&&(this._footerRowScrollerR=O("div",{className:"slick-footerrow slick-state-default"},this._paneTopR),this._footerRowScrollerL=O("div",{className:"slick-footerrow slick-state-default"},this._paneTopL),this._footerRowScroller=[this._footerRowScrollerL,this._footerRowScrollerR],this._footerRowSpacerL=O("div",{style:{display:"block",height:"1px",position:"absolute",top:"0px",left:"0px"}},this._footerRowScrollerL),U.width(this._footerRowSpacerL,this.getCanvasWidth()+this.scrollbarDimensions.width),this._footerRowSpacerR=O("div",{style:{display:"block",height:"1px",position:"absolute",top:"0px",left:"0px"}},this._footerRowScrollerR),U.width(this._footerRowSpacerR,this.getCanvasWidth()+this.scrollbarDimensions.width),this._footerRowL=O("div",{className:"slick-footerrow-columns slick-footerrow-columns-left"},this._footerRowScrollerL),this._footerRowR=O("div",{className:"slick-footerrow-columns slick-footerrow-columns-right"},this._footerRowScrollerR),this._footerRow=[this._footerRowL,this._footerRowR],this._options.showFooterRow||this._footerRowScroller.forEach(n=>{U.hide(n)})),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",t=>{t.target instanceof HTMLInputElement||(t.target,HTMLTextAreaElement)})}),this.setFrozenOptions(),this.setPaneFrozenClasses(),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(WW({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.createTopHeaderPanel&&this._bindingEventService.bind(this._topHeaderPanelScroller,"scroll",this.handleTopHeaderPanelScroll.bind(this)),this._options.createPreHeaderPanel&&(this._bindingEventService.bind(this._preHeaderPanelScroller,"scroll",this.handlePreHeaderPanelScroll.bind(this)),this._bindingEventService.bind([this._preHeaderPanelScroller,this._preHeaderPanelScrollerR],"contextmenu",this.handlePreHeaderContextMenu.bind(this)),this._bindingEventService.bind([this._preHeaderPanelScroller,this._preHeaderPanelScrollerR],"click",this.handlePreHeaderClick.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))}),$W&&(this.slickDraggableInstance=$W({containerElement:this._container,allowDragFrom:"div.slick-cell",allowDragFromClosest:"div.slick-cell.dnd, div.slick-cell.cell-reorder",preventDragFromKeys:this._options.preventDragFromKeys,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=U.parents(this._container,":hidden"),this.oldProps=[],this._hiddenParents.forEach(e=>{const t={};Object.keys(this.cssShow).forEach(n=>{this.cssShow&&(t[n]=e.style[n],e.style[n]=this.cssShow[n])}),this.oldProps.push(t)})}restoreCssFromHiddenInit(){let e=0;this._hiddenParents&&(this._hiddenParents.forEach(t=>{const n=this.oldProps[e++];Object.keys(this.cssShow).forEach(r=>{this.cssShow&&(t.style[r]=n[r])})}),this._hiddenParents=[])}hasFrozenColumns(){return this._options.frozenColumn>-1}registerPlugin(e){this.plugins.unshift(e),e.init(this)}unregisterPlugin(e){for(let t=this.plugins.length;t>=0;t--)if(this.plugins[t]===e){this.plugins[t]?.destroy(),this.plugins.splice(t,1);break}}getPluginByName(e){for(let t=this.plugins.length-1;t>=0;t--)if(this.plugins[t]?.pluginName===e)return this.plugins[t]}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,t){return this._getContainerElement(this.getCanvases(),e,t)}getActiveCanvasNode(e){return void 0===e||(e instanceof Ri&&(e=e.getNativeEvent()),this._activeCanvasNode=e?.target?.closest(".grid-canvas")),this._activeCanvasNode}getCanvases(){return this._canvas}getViewportNode(e,t){return this._getContainerElement(this.getViewports(),e,t)}getViewports(){return this._viewport}getActiveViewportNode(e){return this.setActiveViewportNode(e),this._activeViewportNode}setActiveViewportNode(e){return e instanceof Ri&&(e=e.getNativeEvent()),this._activeViewportNode=e?.target?.closest(".slick-viewport"),this._activeViewportNode}_getContainerElement(e,t,n){if(!e)return;t||(t=0),n||(n=0);const r="number"==typeof t?t:this.getColumnIndex(t);return e[(this.hasFrozenRows&&n>=this.actualFrozenRow+(this._options.frozenBottom?0:1)?2:0)+(this.hasFrozenColumns()&&r>this._options.frozenColumn?1:0)]}measureScrollbar(){let e="";this._viewport.forEach(s=>e+=s.className);const t=O("div",{className:e,style:{position:"absolute",top:"-10000px",left:"-10000px",overflow:"auto",width:"100px",height:"100px"}},document.body),n=O("div",{style:{width:"200px",height:"200px",overflow:"auto"}},t),r={width:t.offsetWidth-t.clientWidth,height:t.offsetHeight-t.clientHeight};return n.remove(),t.remove(),r}getHeadersWidth(){this.headersWidth=this.headersWidthL=this.headersWidthR=0;const e=!this._options.autoHeight;let t=0;const n=this.columns.length;for(t=0;t-1&&t>this._options.frozenColumn?this.headersWidthR+=r||0:this.headersWidthL+=r||0}return e&&(this._options.frozenColumn>-1&&t>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 t=this.columns.length;for(this.canvasWidthL=this.canvasWidthR=0;t--;)!this.columns[t]||this.columns[t].hidden||(this.hasFrozenColumns()&&t>this._options.frozenColumn?this.canvasWidthR+=this.columns[t].width||0:this.canvasWidthL+=this.columns[t].width||0);let n=this.canvasWidthL+this.canvasWidthR;if(this._options.fullWidthRows){const r=Math.max(n,e)-n;r>0&&(n+=r,this.hasFrozenColumns()?this.canvasWidthR+=r:this.canvasWidthL+=r)}return n}updateCanvasWidth(e){const t=this.canvasWidth,n=this.canvasWidthL,r=this.canvasWidthR;this.canvasWidth=this.getCanvasWidth(),this._options.createTopHeaderPanel&&U.width(this._topHeaderPanel,this._options.topHeaderPanelWidth??this.canvasWidth);const s=this.canvasWidth!==t||this.canvasWidthL!==n||this.canvasWidthR!==r;if(s||this.hasFrozenColumns()||this.hasFrozenRows)if(U.width(this._canvasTopL,this.canvasWidthL),this.getHeadersWidth(),U.width(this._headerL,this.headersWidthL),U.width(this._headerR,this.headersWidthR),this.hasFrozenColumns()){const a=U.width(this._container)||0;if(a>0&&this.canvasWidthL>a&&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");U.width(this._canvasTopR,this.canvasWidthR),U.width(this._paneHeaderL,this.canvasWidthL),U.setStyleSize(this._paneHeaderR,"left",this.canvasWidthL),U.setStyleSize(this._paneHeaderR,"width",this.viewportW-this.canvasWidthL),U.width(this._paneTopL,this.canvasWidthL),U.setStyleSize(this._paneTopR,"left",this.canvasWidthL),U.width(this._paneTopR,this.viewportW-this.canvasWidthL),U.width(this._headerRowScrollerL,this.canvasWidthL),U.width(this._headerRowScrollerR,this.viewportW-this.canvasWidthL),U.width(this._headerRowL,this.canvasWidthL),U.width(this._headerRowR,this.canvasWidthR),this._options.createFooterRow&&(U.width(this._footerRowScrollerL,this.canvasWidthL),U.width(this._footerRowScrollerR,this.viewportW-this.canvasWidthL),U.width(this._footerRowL,this.canvasWidthL),U.width(this._footerRowR,this.canvasWidthR)),this._options.createPreHeaderPanel&&U.width(this._preHeaderPanel,this._options.preHeaderPanelWidth??this.canvasWidth),U.width(this._viewportTopL,this.canvasWidthL),U.width(this._viewportTopR,this.viewportW-this.canvasWidthL),this.hasFrozenRows&&(U.width(this._paneBottomL,this.canvasWidthL),U.setStyleSize(this._paneBottomR,"left",this.canvasWidthL),U.width(this._viewportBottomL,this.canvasWidthL),U.width(this._viewportBottomR,this.viewportW-this.canvasWidthL),U.width(this._canvasBottomL,this.canvasWidthL),U.width(this._canvasBottomR,this.canvasWidthR))}else U.width(this._paneHeaderL,"100%"),U.width(this._paneTopL,"100%"),U.width(this._headerRowScrollerL,"100%"),U.width(this._headerRowL,this.canvasWidth),this._options.createFooterRow&&(U.width(this._footerRowScrollerL,"100%"),U.width(this._footerRowL,this.canvasWidth)),this._options.createPreHeaderPanel&&U.width(this._preHeaderPanel,this._options.preHeaderPanelWidth??this.canvasWidth),U.width(this._viewportTopL,"100%"),this.hasFrozenRows&&(U.width(this._viewportBottomL,"100%"),U.width(this._canvasBottomL,this.canvasWidthL));this.viewportHasHScroll=this.canvasWidth>=this.viewportW-(this.scrollbarDimensions?.width||0),U.width(this._headerRowSpacerL,this.canvasWidth+(this.viewportHasVScroll&&this.scrollbarDimensions?.width||0)),U.width(this._headerRowSpacerR,this.canvasWidth+(this.viewportHasVScroll&&this.scrollbarDimensions?.width||0)),this._options.createFooterRow&&(U.width(this._footerRowSpacerL,this.canvasWidth+(this.viewportHasVScroll&&this.scrollbarDimensions?.width||0)),U.width(this._footerRowSpacerR,this.canvasWidth+(this.viewportHasVScroll&&this.scrollbarDimensions?.width||0))),(s||e)&&this.applyColumnWidths()}disableSelection(e){e.forEach(t=>{t.setAttribute("unselectable","on"),t.style.mozUserSelect="none",this._bindingEventService.bind(t,"selectstart",()=>!1)})}getMaxSupportedCssHeight(){let e=1e6;const t=navigator.userAgent.toLowerCase().match(/firefox/)?this._options.ffMaxSupportedCssHeight:this._options.maxSupportedCssHeight,n=O("div",{style:{display:"hidden"}},document.body);let r=!0;for(;r;){const s=2*e;U.height(n,s);const a=U.height(n);if(s>t||a!==s){r=!1;break}e=s}return n.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,t,n){if(this.initialized){const r=this.getColumnIndex(e);if(!ri(r))return;const s=this.columns[r],a=this.getColumnByIndex(r);return a&&(void 0!==t&&(this.columns[r].name=t),void 0!==n&&(this.columns[r].toolTip=n),this.triggerEvent(this.onBeforeHeaderCellDestroy,{node:a,column:s,grid:this}),a.setAttribute("title",n||""),void 0!==t&&this.applyHtmlCode(a.children[0],t),this.triggerEvent(this.onHeaderCellRendered,{node:a,column:s,grid:this})),a}}getHeader(e){if(!e)return this.hasFrozenColumns()?this._headers:this._headerL;const t=this.getColumnIndex(e.id);return this.hasFrozenColumns()?t<=this._options.frozenColumn?this._headerL:this._headerR:this._headerL}getHeaderColumn(e){const t="number"==typeof e?e:this.getColumnIndex(e),n=this.hasFrozenColumns()?t<=this._options.frozenColumn?this._headerL:this._headerR:this._headerL,r=this.hasFrozenColumns()?t<=this._options.frozenColumn?t:t-this._options.frozenColumn-1:t;return n.children[r]}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}getTopHeaderPanel(){return this._topHeaderPanel}getHeaderRowColumn(e){let n,t="number"==typeof e?e:this.getColumnIndex(e);return this.hasFrozenColumns()?t<=this._options.frozenColumn?n=this._headerRowL:(n=this._headerRowR,t-=this._options.frozenColumn+1):n=this._headerRowL,n.children[t]}getFooterRowColumn(e){let n,t="number"==typeof e?e:this.getColumnIndex(e);return this.hasFrozenColumns()?t<=this._options.frozenColumn?n=this._footerRowL:(n=this._footerRowR,t-=this._options.frozenColumn+1):n=this._footerRowL,n?.children[t]}createColumnFooter(){if(this._options.createFooterRow){this._footerRow.forEach(e=>{e.querySelectorAll(".slick-footerrow-column").forEach(n=>{const r=U.storage.get(n,"column");this.triggerEvent(this.onBeforeFooterRowCellDestroy,{node:n,column:r,grid:this})})}),ui(this._footerRowL),ui(this._footerRowR);for(let e=0;ethis._options.frozenColumn?this._footerRowR:this._footerRowL),r=this.hasFrozenColumns()&&e<=this._options.frozenColumn?"frozen":null;r&&n.classList.add(r),U.storage.put(n,"column",t),this.triggerEvent(this.onFooterRowCellRendered,{node:n,column:t,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(n=>{const r=U.storage.get(n,"column");r&&this.triggerEvent(this.onBeforeHeaderCellDestroy,{node:n,column:r,grid:this})})}),ui(this._headerL),ui(this._headerR),this.getHeadersWidth(),U.width(this._headerL,this.headersWidthL),U.width(this._headerR,this.headersWidthR),this._headerRows.forEach(e=>{e.querySelectorAll(".slick-headerrow-column").forEach(n=>{const r=U.storage.get(n,"column");r&&this.triggerEvent(this.onBeforeHeaderRowCellDestroy,{node:this,column:r,grid:this})})}),ui(this._headerRowL),ui(this._headerRowR),this._options.createFooterRow&&(this._footerRowL.querySelectorAll(".slick-footerrow-column").forEach(t=>{const n=U.storage.get(t,"column");n&&this.triggerEvent(this.onBeforeFooterRowCellDestroy,{node:this,column:n,grid:this})}),ui(this._footerRowL),this.hasFrozenColumns()&&(this._footerRowR.querySelectorAll(".slick-footerrow-column").forEach(n=>{const r=U.storage.get(n,"column");r&&this.triggerEvent(this.onBeforeFooterRowCellDestroy,{node:this,column:r,grid:this})}),ui(this._footerRowR)));for(let e=0;e{t.headerCellAttrs.hasOwnProperty(h)&&s.setAttribute(h,t.headerCellAttrs[h])}),t.sortable&&(s.classList.add("slick-header-sortable"),O("div",{className:"slick-sort-indicator "+(this._options.numberedMultiColumnSort&&!this._options.sortColNumberInSeparateSpan?" slick-sort-indicator-numbered":"")},s),this._options.numberedMultiColumnSort&&this._options.sortColNumberInSeparateSpan&&O("div",{className:"slick-sort-indicator-numbered"},s)),this.triggerEvent(this.onHeaderCellRendered,{node:s,column:t,grid:this}),this._options.showHeaderRow){const h=O("div",{className:`slick-state-default slick-headerrow-column l${e} r${e}`},r),p=this.hasFrozenColumns()&&e<=this._options.frozenColumn?"frozen":null;p&&h.classList.add(p),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)),U.storage.put(h,"column",t),this.triggerEvent(this.onHeaderRowCellRendered,{node:h,column:t,grid:this})}if(this._options.createFooterRow&&this._options.showFooterRow){const p=O("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]);U.storage.put(p,"column",t),this.triggerEvent(this.onFooterRowCellRendered,{node:p,column:t,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",t=>{if(this.columnResizeDragging||t.target.classList.contains("slick-resizable-handle"))return;const n=t.target.closest(".slick-header-column");if(!n)return;const r=U.storage.get(n,"column");if(r?.sortable){if(!this.getEditorLock()?.commitCurrentEdit())return;const s=this.sortColumns.slice();let a=null,d=0;for(;d{const v=this.columns[this.getColumnIndex(g.columnId)];return!v||v.hidden?null:{columnId:v.id,sortCol:v,sortAsc:g.sortAsc}}).filter(g=>g)}:{multiColumnSort:!1,previousSortColumns:s,columnId:this.sortColumns.length>0?r.id:null,sortCol:this.sortColumns.length>0?r:null,sortAsc:!(this.sortColumns.length>0)||this.sortColumns[0].sortAsc},!1!==this.triggerEvent(this.onBeforeSort,p,t).getReturnValue()&&(this.setSortColumns(this.sortColumns),this.triggerEvent(this.onSort,p,t))}})})}setupColumnReorder(){let e;this.sortableSideLeftInstance?.destroy(),this.sortableSideRightInstance?.destroy();const t=()=>this._viewportScrollContainerX.scrollLeft+=10,n=()=>this._viewportScrollContainerX.scrollLeft-=10;let r=!1;const s={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:a=>!a.related.classList.contains(this._options.unorderableColumnCssClass),onStart:a=>{r=!this.hasFrozenColumns()||kn(a.item).left>kn(this._viewportScrollContainerX).left,r&&a.originalEvent.pageX>this._container.clientWidth?e||(e=window.setInterval(t,100)):r&&a.originalEvent.pageX{if(window.clearInterval(e),!this.getEditorLock()?.commitCurrentEdit())return;let d=this.sortableSideLeftInstance?.toArray()??[];d=d.concat(this.sortableSideRightInstance?.toArray()??[]);const h=[];for(let p=0;pE.remove()),y=v.length||!v[y]||y=h)continue;const k=O("div",{className:"slick-resizable-handle",role:"separator",ariaOrientation:"horizontal"},C);this._bindingEventService.bind(k,"dblclick",this.handleResizeableDoubleClick.bind(this)),this.slickResizableInstances.push(UW({resizeableElement:C,resizeableHandleElement:k,onResizeStart:(E,x)=>{const S=E.touches?E.changedTouches[0]:E;if(!this.getEditorLock()?.commitCurrentEdit())return!1;r=S.pageX,p=0,x.resizeableElement.classList.add("slick-header-column-active");let D=null,I=null;for(let W=0;W{const S=E.touches?E.changedTouches[0]:E;let D;this.columnResizeDragging=!0;const I=Math.min(a,Math.max(s,S.pageX))-r;let L,R=0,W=0;const re=this.viewportHasVScroll?this.viewportW-(this.scrollbarDimensions?.width||0):this.viewportW;if(I<0){for(L=I,e=y;e>=0;e--)n=v[e],n&&n.resizable&&!n.hidden&&(D=Math.max(n.minWidth||0,this.absoluteColumnMinWidth),L&&(n.previousWidth||0)+Lthis._options.frozenColumn?W+=n.width||0:R+=n.width||0);if(this._options.forceFitColumns)for(L=-I,e=y+1;ethis._options.frozenColumn?W+=n.width||0:R+=n.width||0);else for(e=y+1;ethis._options.frozenColumn?W+=n.width||0:R+=n.width||0);if(this._options.forceFitColumns)for(L=-I,e=y+1;e=0;e--)if(n=v[e],n&&!n.hidden&&n.resizable)if(L&&n.maxWidth&&n.maxWidth-(n.previousWidth||0)p&&sere?p:ie):n.width=ie,L=0}for(t=0;t<=y;t++)n=v[t],n&&!n.hidden&&(this.hasFrozenColumns()&&t>this._options.frozenColumn?W+=n.width||0:R+=n.width||0);if(this._options.forceFitColumns)for(L=-I,e=y+1;ethis._options.frozenColumn?W+=n.width||0:R+=n.width||0);else for(e=y+1;ethis._options.frozenColumn?W+=n.width||0:R+=n.width||0)}this.hasFrozenColumns()&&R!==this.canvasWidthL&&(U.width(this._headerL,R+1e3),U.setStyleSize(this._paneHeaderR,"left",R)),this.applyColumnHeaderWidths(),this._options.syncColumnCellResize&&this.applyColumnWidths(),this.triggerEvent(this.onColumnsDrag,{triggeredByColumn:x.resizeableElement,resizeHandle:x.resizeableHandleElement})},onResizeEnd:(E,x)=>{x.resizeableElement.classList.remove("slick-header-column-active");const S=x.resizeableElement.id.replace(this.uid,"");let D;for(!0===this.triggerEvent(this.onBeforeColumnsResize,{triggeredByColumn:S}).getReturnValue()&&this.applyColumnHeaderWidths(),e=0;ethis.columnResizeDragging=!1,this._options.columnResizingDelay)}}))}}getVBoxDelta(e){const n=getComputedStyle(e);let r=0;return["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"].forEach(s=>r+=U.toFloat(n[s])),r}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}setPaneFrozenClasses(){const e=this.hasFrozenColumns()?"add":"remove";for(const t of[this._paneHeaderL,this._paneTopL,this._paneBottomL])t.classList[e]("frozen")}setPaneVisibility(){this.hasFrozenColumns()?(U.show(this._paneHeaderR),U.show(this._paneTopR),this.hasFrozenRows?(U.show(this._paneBottomL),U.show(this._paneBottomR)):(U.hide(this._paneBottomR),U.hide(this._paneBottomL))):(U.hide(this._paneHeaderR),U.hide(this._paneTopR),U.hide(this._paneBottomR),this.hasFrozenRows?U.show(this._paneBottomL):(U.hide(this._paneBottomR),U.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=Oi(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"],t=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],n=this._headers[0];this.headerColumnWidthDiff=this.headerColumnHeightDiff=0,this.cellWidthDiff=this.cellHeightDiff=0;let r=O("div",{className:"slick-state-default slick-header-column",style:{visibility:"hidden"},textContent:"-"},n),s=getComputedStyle(r);"border-box"!==s.boxSizing&&(e.forEach(d=>this.headerColumnWidthDiff+=U.toFloat(s[d])),t.forEach(d=>this.headerColumnHeightDiff+=U.toFloat(s[d]))),r.remove();const a=O("div",{className:"slick-row"},this._canvas[0]);r=O("div",{className:"slick-cell",id:"",style:{visibility:"hidden"},textContent:"-"},a),s=getComputedStyle(r),"border-box"!==s.boxSizing&&(e.forEach(d=>this.cellWidthDiff+=U.toFloat(s[d])),t.forEach(d=>this.cellHeightDiff+=U.toFloat(s[d]))),a.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,t=[`.${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-topheader-panel { height: ${this._options.topHeaderPanelHeight}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; }`],n=this._style.sheet;if(n){t.forEach(r=>{n.insertRule(r)});for(let r=0;r',this._style=t.content.firstChild,(this._options.shadowRoot||document.head).appendChild(this._style);for(let n=0;n=0&&(n[this._options.devMode.ownerNodeIndex].ownerNode=this._style),t=0;t{this._bindingEventService.unbindByEventName(s,"keydown"),this._bindingEventService.unbindByEventName(s,"click"),this._bindingEventService.unbindByEventName(s,"dblclick"),this._bindingEventService.unbindByEventName(s,"contextmenu"),this._bindingEventService.unbindByEventName(s,"mouseover"),this._bindingEventService.unbindByEventName(s,"mouseout")}),this._viewport.forEach(s=>{this._bindingEventService.unbindByEventName(s,"scroll")}),this._headerScroller.forEach(s=>{this._bindingEventService.unbindByEventName(s,"contextmenu"),this._bindingEventService.unbindByEventName(s,"click")}),this._headerRowScroller.forEach(s=>{this._bindingEventService.unbindByEventName(s,"scroll")}),this._footerRow&&this._footerRow.forEach(s=>{this._bindingEventService.unbindByEventName(s,"contextmenu"),this._bindingEventService.unbindByEventName(s,"click")}),this._footerRowScroller&&this._footerRowScroller.forEach(s=>{this._bindingEventService.unbindByEventName(s,"scroll")}),this._preHeaderPanelScroller&&this._bindingEventService.unbindByEventName(this._preHeaderPanelScroller,"scroll"),this._topHeaderPanelScroller&&this._bindingEventService.unbindByEventName(this._topHeaderPanelScroller,"scroll"),this._bindingEventService.unbindByEventName(this._focusSink,"keydown"),this._bindingEventService.unbindByEventName(this._focusSink2,"keydown");const n=this._container.querySelectorAll(".slick-resizable-handle");[].forEach.call(n,s=>{this._bindingEventService.unbindByEventName(s,"dblclick")});const r=this._container.querySelectorAll(".slick-header-column");[].forEach.call(r,s=>{this._bindingEventService.unbindByEventName(s,"mouseenter"),this._bindingEventService.unbindByEventName(s,"mouseleave"),this._bindingEventService.unbindByEventName(s,"mouseover"),this._bindingEventService.unbindByEventName(s,"mouseout")}),ui(this._container),this._container.classList.remove(this.uid),this.clearAllTimers(),e&&C6(this)}destroyAllInstances(e){if(e){const t=Array.isArray(e)?e:[e];let n;for(;ri(n=t.pop());)n&&"function"==typeof n.destroy&&n.destroy()}return e=Array.isArray(e)?[]:null}autosizeColumns(){this.legacyAutosizeColumns()}legacyAutosizeColumns(){let e,t,n=0,r=0,s=0;const a=[],d=this.viewportHasVScroll?this.viewportW-(this.scrollbarDimensions?.width||0):this.viewportW;for(e=0;ed&&n;){const p=(r-d)/n;for(e=0;ed;e++){if(t=this.columns[e],!t||t.hidden)continue;const g=a[e];if(!t.resizable||g<=t.minWidth||g<=this.absoluteColumnMinWidth)continue;const v=Math.max(t.minWidth,this.absoluteColumnMinWidth);let y=Math.floor(p*(g-v))||1;y=Math.min(y,g-v),r-=y,n-=y,a[e]-=y}if(s<=r)break;s=r}for(s=r;r=r)break;s=r}let h=!1;for(e=0;e!e.hidden)}triggerEvent(e,t,n){const r=n||new Ri(n,t),s=t||{};return s.grid=this,e.notify(s,r,this)}getEditorLock(){return this._options.editorLock}getEditController(){return this.editController}getColumnIndex(e){return this.columnsById[e]}applyColumnHeaderWidths(){if(this.initialized){let e=0;const t=this.getVisibleColumns();this._headers.forEach(n=>{for(let r=0;rthis._options.frozenColumn?this.canvasWidthR:this.canvasWidthL)-e-t+"px"),this._options.frozenColumn!==r&&(e+=this.columns[r].width)),this._options.frozenColumn===r&&(e=0)}setSortColumn(e,t){this.setSortColumns([{columnId:e,sortAsc:t}])}getColumnByIndex(e){let t;return this._headers.every(n=>{const r=n.children.length;return e1;this._headers.forEach(r=>{let s=r.querySelectorAll(".slick-header-column-sorted");s.forEach(a=>a.classList.remove("slick-header-column-sorted")),s=r.querySelectorAll(".slick-sort-indicator"),s.forEach(a=>a.classList.remove("slick-sort-indicator-asc","slick-sort-indicator-desc")),s=r.querySelectorAll(".slick-sort-indicator-numbered"),s.forEach(a=>a.textContent="")});let n=1;this.sortColumns.forEach(r=>{ri(r.sortAsc)||(r.sortAsc=!0);const s=this.getColumnIndex(r.columnId);if(ri(s)){const a=this.getColumnByIndex(s);if(a){a.classList.add("slick-header-column-sorted");let d=a.querySelector(".slick-sort-indicator");d?.classList.add(r.sortAsc?"slick-sort-indicator-asc":"slick-sort-indicator-desc"),t&&(d=a.querySelector(".slick-sort-indicator-numbered"),d&&(d.textContent=String(n)))}}n++})}getSortColumns(){return this.sortColumns}handleSelectedRangesChanged(e,t){const n=e.getNativeEvent(),r=this.selectedRows.slice(0);this.selectedRows=[];const s={};for(let a=0;a!h.has(v)),g=Array.from(h).filter(v=>!d.has(v));this.triggerEvent(this.onSelectedRowsChanged,{rows:this.getSelectedRows(),previousSelectedRows:r,caller:a,changedSelectedRows:p,changedUnselectedRows:g},e)}}simpleArrayEquals(e,t){return Array.isArray(e)&&Array.isArray(t)&&t.sort().toString()!==e.sort().toString()}getColumns(){return this.columns}updateColumnCaches(){this.columnPosLeft=[],this.columnPosRight=[];let e=0;for(let t=0,n=this.columns.length;tt.maxWidth&&(t.width=t.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.setPaneFrozenClasses(),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,t,n,r){this.prepareForOptionsChange(),this._options.enableAddRow!==e.enableAddRow&&this.invalidateRow(this.getDataLength()),void 0!==e.frozenColumn&&e.frozenColumn>=0&&(this.getViewports().forEach(a=>a.scrollLeft=0),this.handleScroll());const s=en(!0,{},this._options);this._options=en(this._options,e),this.triggerEvent(this.onSetOptions,{optionsBefore:s,optionsAfter:this._options}),this.internal_setOptions(t,n,r)}activateChangedOptions(e,t,n){this.prepareForOptionsChange(),this.invalidateRow(this.getDataLength()),this.triggerEvent(this.onActivateChangedOptions,{options:this._options}),this.internal_setOptions(e,t,n)}prepareForOptionsChange(){this.getEditorLock()?.commitCurrentEdit()&&this.makeActiveCellNormal()}internal_setOptions(e,t,n){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(r=>{r.style.overflowY=this._options.autoHeight?"hidden":"auto"}),e||this.render(),this.setScroller(),n||this.setOverflow(),t||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(r=>{this.slickMouseWheelInstances.push(WW({element:r,onMouseWheel:this.handleMouseWheel.bind(this)}))})}validateAndEnforceOptions(){this._options.autoHeight&&(this._options.leaveSpaceForNewRows=!1)}setData(e,t){this.data=e,this.invalidateAllRows(),this.updateRowCount(),t&&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,t,n){this._options[e]!==n&&(this._options[e]=n,n?U.show(t):U.hide(t),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)}setTopHeaderPanelVisibility(e){this.togglePanelVisibility("showTopHeaderPanel",this._topHeaderPanelScroller,e)}getContainerNode(){return this._container}getRowTop(e){return Math.round(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)-U.height(this._viewportScrollContainerY)+((this.viewportHasHScroll||this.hasFrozenColumns())&&this.scrollbarDimensions?.height||0));const t=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 n=e-this.offset;if(this.offset!==t){const r=this.getVisibleRange(n);this.cleanupRows(r),this.updateRowPositions()}this.prevScrollTop!==n&&(this.vScrollDir=this.prevScrollTop+t/g,">"):""}getFormatter(e,t){const n=this.data?.getItemMetadata?.(e);return(n?.columns&&(n.columns[t.id]||n.columns[this.getColumnIndex(t.id)]))?.formatter||n?.formatter||t.formatter||this._options.formatterFactory?.getFormatter(t)||this._options.defaultFormatter}getEditor(e,t){const n=this.columns[t],s=this.data?.getItemMetadata?.(e)?.columns;return void 0!==s?.[n.id]?.editorClass?s[n.id].editorClass:void 0!==s?.[t]?.editorClass?s[t].editorClass:n.editorClass||this._options?.editorFactory?.getEditor(n)}getDataItemValueForColumn(e,t){return this._options.dataItemColumnValueExtractor?this._options.dataItemColumnValueExtractor(e,t):e[t.field]}appendRowHtml(e,t,n,r,s){const a=this.getDataItem(n),d=nr.leftPx){if(!E.alwaysRenderColumn&&this.columnPosLeft[x]>r.rightPx)break;this.hasFrozenColumns()&&x>this._options.frozenColumn?this.appendCellHtml(C,n,x,k,a):this.appendCellHtml(g,n,x,k,a)}else(E.alwaysRenderColumn||this.hasFrozenColumns()&&x<=this._options.frozenColumn)&&this.appendCellHtml(g,n,x,k,a);k>1&&(x+=k-1)}}appendCellHtml(e,t,n,r,s){const a=this.columns[n];let d="slick-cell l"+n+" r"+Math.min(this.columns.length-1,n+r-1)+(a.cssClass?" "+a.cssClass:"");this.hasFrozenColumns()&&n<=this._options.frozenColumn&&(d+=" frozen"),t===this.activeRow&&n===this.activeCell&&this._options.showCellSelection&&(d+=" active"),Object.keys(this.cellCssClasses).forEach(E=>{this.cellCssClasses[E][t]?.[a.id]&&(d+=` ${this.cellCssClasses[E][t][a.id]}`)});let h=null,p="";s&&(h=this.getDataItemValueForColumn(s,a),p=this.getFormatter(t,a)(t,n,h,a,s,this),null==p&&(p=""));const v=this.triggerEvent(this.onBeforeAppendCell,{row:t,cell:n,value:h,dataContext:s}).getReturnValue();let y="string"==typeof v?v:"";p?.addClasses&&(y+=Oi((y?" ":"")+p.addClasses).join(" "));const C=p?.toolTip?`${p.toolTip}`:"",k=O("div",{className:Oi(`${d} ${y||""}`).join(" "),role:"gridcell",tabIndex:-1});if(k.setAttribute("aria-describedby",this.uid+a.id),C&&k.setAttribute("title",C),a.hasOwnProperty("cellAttrs")&&a.cellAttrs instanceof Object&&Object.keys(a.cellAttrs).forEach(E=>{a.cellAttrs.hasOwnProperty(E)&&k.setAttribute(E,a.cellAttrs[E])}),s){const E=C1(p)?p:p.html||p.text;this.applyHtmlCode(k,E)}e.appendChild(k),p.insertElementAfterTarget&&B$(k,p.insertElementAfterTarget),this.rowsCache[t].cellRenderQueue.push(n),this.rowsCache[t].cellColSpans[n]=r}cleanupRows(e){Object.keys(this.rowsCache).forEach(t=>{if(this.rowsCache){let n=+t,r=!0;this.hasFrozenRows&&(this._options.frozenBottom&&n>=this.actualFrozenRow||!this._options.frozenBottom&&n<=this.actualFrozenRow)&&(r=!1),(n=parseInt(t,10))!==this.activeRow&&(ne.bottom)&&r&&this.removeRowFromCache(n)}}),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 t=e.length;for(let n=0;n=0&&this.invalidateRows([e])}queuePostProcessedRowForCleanup(e,t,n){this.postProcessgroupId++,"object"==typeof t&&Object.keys(t).forEach(r=>{t.hasOwnProperty(r)&&this.postProcessedCleanupQueue.push({actionType:"C",groupId:this.postProcessgroupId,node:e.cellNodesByColumnIdx[+r],columnIdx:+r,rowIdx:n})}),e.rowNode||(e.rowNode=[]),this.postProcessedCleanupQueue.push({actionType:"R",groupId:this.postProcessgroupId,node:e.rowNode}),e.rowNode?.forEach(r=>r.remove())}queuePostProcessedCellForCleanup(e,t,n){this.postProcessedCleanupQueue.push({actionType:"C",groupId:this.postProcessgroupId,node:e,columnIdx:t,rowIdx:n}),e.remove()}removeRowFromCache(e){const t=this.rowsCache[e];t?.rowNode&&(this._options.enableAsyncPostRenderCleanup&&this.postProcessedRows[e]?this.queuePostProcessedRowForCleanup(t,this.postProcessedRows[e],e):t.rowNode?.forEach(n=>n.parentElement?.removeChild(n)),delete this.rowsCache[e],delete this.postProcessedRows[e],this.renderedRows--,this.counter_rows_removed++)}applyFormatResultToCellNode(e,t,n){if(null==e&&(e=""),C1(e))return void this.applyHtmlCode(t,e);const r=e.html||e.text;this.applyHtmlCode(t,r),e.removeClasses&&!n&&t.classList.remove(...Oi(e.removeClasses)),e.addClasses&&t.classList.add(...Oi(e.addClasses)),e.toolTip&&t.setAttribute("title",e.toolTip)}updateCell(e,t){const n=this.getCellNode(e,t);if(n){const r=this.columns[t],s=this.getDataItem(e);if(this.currentEditor&&this.activeRow===e&&this.activeCell===t)this.currentEditor.loadValue(s);else{const a=s?this.getFormatter(e,r)(e,t,this.getDataItemValueForColumn(s,r),r,s,this):"";this.applyFormatResultToCellNode(a,n),this.invalidatePostProcessingResults(e)}}}updateRow(e){const t=this.rowsCache[e];if(!t)return;let n;this.ensureCellNodesInRowsCache(e);const r=this.getDataItem(e);Object.keys(t.cellNodesByColumnIdx).forEach(s=>{if(!t.cellNodesByColumnIdx.hasOwnProperty(s))return;const a=+s,d=this.columns[a],h=t.cellNodesByColumnIdx[a];this.currentEditor&&e===this.activeRow&&a===this.activeCell?this.currentEditor.loadValue(r):r?(n=this.getFormatter(e,d)(e,a,this.getDataItemValueForColumn(r,d),d,r,this),this.applyFormatResultToCellNode(n,h)):ui(h)}),this.invalidatePostProcessingResults(e)}getViewportRowCount(){const e=this.getViewportHeight(),t=this.getScrollbarDimensions()?.height||0;return Math.floor((e-t)/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?U.toFloat(U.height(this._headerScroller[0]))+this.getVBoxDelta(this._headerScroller[0]):0,t=this._options.createPreHeaderPanel&&this._options.showPreHeaderPanel?this._options.preHeaderPanelHeight+this.getVBoxDelta(this._preHeaderPanelScroller):0,n=this._options.createTopHeaderPanel&&this._options.showTopHeaderPanel?this._options.topHeaderPanelHeight+this.getVBoxDelta(this._topHeaderPanelScroller):0,r=getComputedStyle(this._container);this.viewportH=U.toFloat(r.height)-U.toFloat(r.paddingTop)-U.toFloat(r.paddingBottom)-e-this.topPanelH-this.headerRowH-this.footerRowH-t-n}return this.numVisibleRows=Math.ceil(this.viewportH/this._options.rowHeight),this.viewportH}getViewportWidth(){return this.viewportW=parseFloat(NA(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 n=getComputedStyle(this._headerScrollerL);U.height(this._container,this.paneTopH+U.toFloat(n.height))}this._paneTopL.style.position="relative"}let e=U.height(this._paneHeaderL);e?e+=this._options.showTopHeaderPanel?this._options.topHeaderPanelHeight:0:e=(this._options.showHeaderRow?this._options.headerRowHeight:0)+(this._options.showPreHeaderPanel?this._options.preHeaderPanelHeight:0),U.setStyleSize(this._paneTopL,"top",e||e),U.height(this._paneTopL,this.paneTopH);const t=this._paneTopL.offsetTop+this.paneTopH;if(this._options.autoHeight||U.height(this._viewportTopL,this.viewportTopH),this.hasFrozenColumns()){let n=U.height(this._paneHeaderL);n&&(n+=this._options.showTopHeaderPanel?this._options.topHeaderPanelHeight:0),U.setStyleSize(this._paneTopR,"top",n),U.height(this._paneTopR,this.paneTopH),U.height(this._viewportTopR,this.viewportTopH),this.hasFrozenRows&&(U.setStyleSize(this._paneBottomL,"top",t),U.height(this._paneBottomL,this.paneBottomH),U.setStyleSize(this._paneBottomR,"top",t),U.height(this._paneBottomR,this.paneBottomH),U.height(this._viewportBottomR,this.paneBottomH))}else this.hasFrozenRows&&(U.width(this._paneBottomL,"100%"),U.height(this._paneBottomL,this.paneBottomH),U.setStyleSize(this._paneBottomL,"top",t));this.hasFrozenRows?(U.height(this._viewportBottomL,this.paneBottomH),this._options.frozenBottom?(U.height(this._canvasBottomL,this.frozenRowsHeight),this.hasFrozenColumns()&&U.height(this._canvasBottomR,this.frozenRowsHeight)):(U.height(this._canvasTopL,this.frozenRowsHeight),this.hasFrozenColumns()&&U.height(this._canvasTopR,this.frozenRowsHeight))):U.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(),t=this.getDataLengthIncludingAddNew();let n=0,r=this.hasFrozenRows&&!this._options.frozenBottom?U.height(this._canvasBottomL):U.height(this._canvasTopL);n=this.hasFrozenRows?this.getDataLength()-this._options.frozenRow:t+(this._options.leaveSpaceForNewRows?this.numVisibleRows-1:0);const s=U.height(this._viewportScrollContainerY),a=this.viewportHasVScroll;this.viewportHasVScroll=this._options.alwaysShowVerticalScroll||!this._options.autoHeight&&n*this._options.rowHeight>s,this.makeActiveCellNormal();const d=e-1;"object"==typeof this.rowsCache&&Object.keys(this.rowsCache).forEach(p=>{const g=+p;g>d&&this.removeRowFromCache(g)}),this._options.enableAsyncPostRenderCleanup&&this.startPostProcessingCleanup(),this.activeCellNode&&this.activeRow>d&&this.resetActiveCell(),r=this.h,this._options.autoHeight?this.h=this._options.rowHeight*n:(this.th=Math.max(this._options.rowHeight*n,s-(this.scrollbarDimensions?.height||0)),this.th1&&(r=r.concat(Array.from(n[1].children)));let s=r.length-1;for(;t.cellRenderQueue.length;){const a=t.cellRenderQueue.pop();t.cellNodesByColumnIdx[a]=r[s--]}}}cleanUpCells(e,t){if(this.hasFrozenRows&&(this._options.frozenBottom&&t>this.actualFrozenRow||t<=this.actualFrozenRow))return;const r=this.rowsCache[t],s=[];let a,d;for(Object.keys(r.cellNodesByColumnIdx).forEach(h=>{if(!r.cellNodesByColumnIdx.hasOwnProperty(h))return;const p=+h;if(p<=this._options.frozenColumn||Array.isArray(this.columns)&&this.columns[p]?.alwaysRenderColumn)return;const g=r.cellColSpans[p];(this.columnPosLeft[p]>e.rightPx||this.columnPosRight[Math.min(this.columns.length-1,(p||0)+g-1)]e.rightPx)break;if(ri(d=t.cellColSpans[k])){k+=d>1?d-1:0;continue}d=1,y&&(d=(y[this.columns[k].id]||y[k])?.colspan??1,"*"===d&&(d=E-k));const x=d;this.columnPosRight[Math.min(E-1,k+x-1)]>e.leftPx&&(this.appendCellHtml(n,g,k,x,C),s++),k+=x>1?x-1:0}s&&(a+=s,r.push(g))}if(n.children.length)for(;ri(h=r.pop());){let g;for(t=this.rowsCache[h];ri(g=t.cellRenderQueue.pop());)p=n.lastChild,p&&(this.hasFrozenColumns()&&g>this._options.frozenColumn?t.rowNode[1].appendChild(p):t.rowNode[0].appendChild(p),t.cellNodesByColumnIdx[g]=p)}}renderRows(e){const t=[],n=[],r=[];let s=!1;const a=this.getDataLength();for(let p=e.top,g=e.bottom;p<=g;p++)this.rowsCache[p]||this.hasFrozenRows&&this._options.frozenBottom&&p===this.getDataLength()||(this.renderedRows++,r.push(p),this.rowsCache[p]={rowNode:null,cellColSpans:[],cellNodesByColumnIdx:[],cellRenderQueue:[]},this.appendRowHtml(t,n,p,e,a),this.activeCellNode&&this.activeRow===p&&(s=!0),this.counter_rows_rendered++);if(!r.length)return;const d=document.createElement("div"),h=document.createElement("div");t.forEach(p=>d.appendChild(p)),n.forEach(p=>h.appendChild(p));for(let p=0,g=r.length;p=this.actualFrozenRow?this.hasFrozenColumns()?this.rowsCache?.hasOwnProperty(r[p])&&d.firstChild&&h.firstChild&&(this.rowsCache[r[p]].rowNode=[d.firstChild,h.firstChild],this._canvasBottomL.appendChild(d.firstChild),this._canvasBottomR.appendChild(h.firstChild)):this.rowsCache?.hasOwnProperty(r[p])&&d.firstChild&&(this.rowsCache[r[p]].rowNode=[d.firstChild],this._canvasBottomL.appendChild(d.firstChild)):this.hasFrozenColumns()?this.rowsCache?.hasOwnProperty(r[p])&&d.firstChild&&h.firstChild&&(this.rowsCache[r[p]].rowNode=[d.firstChild,h.firstChild],this._canvasTopL.appendChild(d.firstChild),this._canvasTopR.appendChild(h.firstChild)):this.rowsCache?.hasOwnProperty(r[p])&&d.firstChild&&(this.rowsCache[r[p]].rowNode=[d.firstChild],this._canvasTopL.appendChild(d.firstChild));s&&(this.activeCellNode=this.getCellNode(this.activeRow,this.activeCell))}startPostProcessing(){this._options.enableAsyncPostRender&&(window.clearTimeout(this.h_postrender),this.h_postrender=window.setTimeout(this.asyncPostProcessRows.bind(this),this._options.asyncPostRenderDelay))}startPostProcessingCleanup(){this._options.enableAsyncPostRenderCleanup&&(window.clearTimeout(this.h_postrenderCleanup),this.h_postrenderCleanup=window.setTimeout(this.asyncPostProcessCleanupRows.bind(this),this._options.asyncPostRenderCleanupDelay))}invalidatePostProcessingResults(e){"object"==typeof this.postProcessedRows[e]&&Object.keys(this.postProcessedRows[e]).forEach(t=>{this.postProcessedRows[e].hasOwnProperty(t)&&(this.postProcessedRows[e][t]="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 t=e?parseInt(e,10):0,n=this.rowsCache[t].rowNode[0];"transform"===this._options.rowTopOffsetRenderType?n.style.transform=`translateY(${this.getRowTop(t)}px)`:n.style.top=`${this.getRowTop(t)}px`})}render(){if(this.initialized){this.scrollThrottle.dequeue();const e=this.getVisibleRange(),t=this.getRenderedRange();if(this.cleanupRows(t),this.lastRenderedScrollLeft!==this.scrollLeft){if(this.hasFrozenRows){const n=en(!0,{},t);this._options.frozenBottom?(n.top=this.actualFrozenRow,n.bottom=this.getDataLength()):(n.top=0,n.bottom=this._options.frozenRow),this.cleanUpAndRenderCells(n)}this.cleanUpAndRenderCells(t)}this.renderRows(t),this.hasFrozenRows&&(this._options.frozenBottom?this.renderRows({top:this.actualFrozenRow,bottom:this.getDataLength()-1,leftPx:t.leftPx,rightPx:t.rightPx}):this.renderRows({top:0,bottom:this._options.frozenRow-1,leftPx:t.leftPx,rightPx:t.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)}handleTopHeaderPanelScroll(){this.handleElementScroll(this._topHeaderPanelScroller)}handleElementScroll(e){const t=e.scrollLeft;t!==this._viewportScrollContainerX.scrollLeft&&(this._viewportScrollContainerX.scrollLeft=t)}handleScroll(e){return this.scrollHeight=this._viewportScrollContainerY.scrollHeight,this.scrollTop=this._viewportScrollContainerY.scrollTop,this.scrollLeft=this._viewportScrollContainerX.scrollLeft,this._handleScroll(e?"scroll":"system")}_handleScroll(e="system"){let t=this._viewportScrollContainerY.scrollHeight-this._viewportScrollContainerY.clientHeight,n=this._viewportScrollContainerY.scrollWidth-this._viewportScrollContainerY.clientWidth;t=Math.max(0,t),n=Math.max(0,n),this.scrollTop>t&&(this.scrollTop=t,this.scrollHeight=t),this.scrollLeft>n&&(this.scrollLeft=n);const r=Math.abs(this.scrollTop-this.prevScrollTop),s=Math.abs(this.scrollLeft-this.prevScrollLeft);if(s&&(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._options.createTopHeaderPanel&&(this._topHeaderPanelScroller.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)),r&&!this._options.autoHeight)if(this.vScrollDir=this.prevScrollTop20||d>20)&&(this._options.forceSyncScrolling||d{r=!1},d=()=>{n=!0,window.clearTimeout(this._executionBlockTimer),this._executionBlockTimer=window.setTimeout(h,t),e.call(this)},h=()=>{r?(a(),d()):n=!1};return{enqueue:(()=>{n?r=!0:d()}).bind(this),dequeue:a.bind(this)}}asyncPostProcessRows(){const e=this.getDataLength();for(;this.postProcessFromRow<=this.postProcessToRow;){const t=this.vScrollDir>=0?this.postProcessFromRow++:this.postProcessToRow--,n=this.rowsCache[t];if(n&&!(t>=e))return this.postProcessedRows[t]||(this.postProcessedRows[t]={}),this.ensureCellNodesInRowsCache(t),Object.keys(n.cellNodesByColumnIdx).forEach(r=>{if(n.cellNodesByColumnIdx.hasOwnProperty(r)){const s=+r,a=this.columns[s],d=this.postProcessedRows[t][s];if(a.asyncPostRender&&"R"!==d){const h=n.cellNodesByColumnIdx[s];h&&a.asyncPostRender(h,t,this.getDataItem(t),a,"C"===d),this.postProcessedRows[t][s]="R"}}}),void(this.h_postrender=window.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 t=this.postProcessedCleanupQueue.shift();if("R"===t?.actionType&&t.node.forEach(n=>{n.remove()}),"C"===t?.actionType){const n=this.columns[t.columnIdx];n.asyncPostRenderCleanup&&t.node&&n.asyncPostRenderCleanup(t.node,t.rowIdx,n)}}this.h_postrenderCleanup=window.setTimeout(this.asyncPostProcessCleanupRows.bind(this),this._options.asyncPostRenderCleanupDelay)}}updateCellCssStylesOnRenderedRows(e,t){let n,r,s;"object"==typeof this.rowsCache&&Object.keys(this.rowsCache).forEach(a=>{this.rowsCache&&(s=t?.[a],r=e?.[a],s&&Object.keys(s).forEach(d=>{(!r||s[d]!==r[d])&&(n=this.getCellNode(+a,this.getColumnIndex(d)),n&&n.classList.remove(s[d]))}),r&&Object.keys(r).forEach(d=>{(!s||s[d]!==r[d])&&(n=this.getCellNode(+a,this.getColumnIndex(d)),n&&n.classList.add(r[d]))}))})}addCellCssStyles(e,t){if(this.cellCssClasses[e])throw new Error(`SlickGrid addCellCssStyles: cell CSS hash with key "${e}" already exists.`);this.cellCssClasses[e]=t,this.updateCellCssStylesOnRenderedRows(t,null),this.triggerEvent(this.onCellCssStylesChanged,{key:e,hash:t,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,t){const n=this.cellCssClasses[e];this.cellCssClasses[e]=t,this.updateCellCssStylesOnRenderedRows(t,n),this.triggerEvent(this.onCellCssStylesChanged,{key:e,hash:t,grid:this})}getCellCssStyles(e){return this.cellCssClasses[e]}flashCell(e,t,n=250){const r=(s,a)=>{a<1||(window.clearTimeout(this._flashCellTimer),this._flashCellTimer=window.setTimeout(()=>{a%2==0?s.classList.add(this._options.cellFlashingCssClass||""):s.classList.remove(this._options.cellFlashingCssClass||""),r(s,a-1)},n))};if(this.rowsCache[e]){const s=this.getCellNode(e,t);s&&r(s,5)}}highlightRow(e,t){const n=this.rowsCache[e];t||=this._options.rowHighlightDuration,Array.isArray(n?.rowNode)&&this._options.rowHighlightCssClass&&(n.rowNode.forEach(r=>r.classList.add(...Oi(this._options.rowHighlightCssClass))),window.clearTimeout(this._highlightRowTimer),this._highlightRowTimer=window.setTimeout(()=>{n.rowNode?.forEach(r=>r.classList.remove(...Oi(this._options.rowHighlightCssClass)))},t))}handleMouseWheel(e,t,n,r){this.scrollHeight=this._viewportScrollContainerY.scrollHeight,this.scrollTop=Math.max(0,this._viewportScrollContainerY.scrollTop-r*this._options.rowHeight),this.scrollLeft=this._viewportScrollContainerX.scrollLeft+10*n,this._handleScroll("mousewheel")&&e.preventDefault()}handleDragInit(e,t){const n=this.getCellFromEvent(e);if(!n||!this.cellExists(n.row,n.cell))return!1;const r=this.triggerEvent(this.onDragInit,t,e);return!!r.isImmediatePropagationStopped()&&r.getReturnValue()}handleDragStart(e,t){const n=this.getCellFromEvent(e);if(!n||!this.cellExists(n.row,n.cell))return!1;const r=this.triggerEvent(this.onDragStart,t,e);return!!r.isImmediatePropagationStopped()&&r.getReturnValue()}handleDrag(e,t){return this.triggerEvent(this.onDrag,t,e).getReturnValue()}handleDragEnd(e,t){this.triggerEvent(this.onDragEnd,t,e)}handleKeyDown(e){let n=this.triggerEvent(this.onKeyDown,{row:this.activeRow,cell:this.activeCell},e).isImmediatePropagationStopped();if(!n&&!e.shiftKey&&!e.altKey){if(this._options.editable&&this.currentEditor?.keyCaptureList&&this.currentEditor.keyCaptureList.indexOf(e.which)>-1)return;"Home"===e.key?n=e.ctrlKey?this.navigateTop():this.navigateRowStart():"End"===e.key&&(n=e.ctrlKey?this.navigateBottom():this.navigateRowEnd())}if(!n)if(e.shiftKey||e.altKey||e.ctrlKey)"Tab"===e.key&&e.shiftKey&&!e.ctrlKey&&!e.altKey&&(n=this.navigatePrev());else if("Escape"===e.key){if(!this.getEditorLock()?.isActive())return;this.cancelEditAndSetFocus()}else"PageDown"===e.key?(this.navigatePageDown(),n=!0):"PageUp"===e.key?(this.navigatePageUp(),n=!0):"ArrowLeft"===e.key?n=this.navigateLeft():"ArrowRight"===e.key?n=this.navigateRight():"ArrowUp"===e.key?n=this.navigateUp():"ArrowDown"===e.key?n=this.navigateDown():"Tab"===e.key?n=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)),n=!0);n&&(e.stopPropagation(),e.preventDefault())}handleClick(e){const t=e instanceof Ri?e.getNativeEvent():e;if(!this.currentEditor&&(t.target!==document.activeElement||t.target.classList.contains("slick-cell"))){const r=this.getTextSelection();this.setFocus(),this.setTextSelection(r)}const n=this.getCellFromEvent(t);if(n&&(null===this.currentEditor||this.activeRow!==n.row||this.activeCell!==n.cell)&&(!(e=this.triggerEvent(this.onClick,{row:n.row,cell:n.cell},e||t)).isImmediatePropagationStopped()&&!t.defaultPrevented&&this.canCellBeActive(n.row,n.cell)&&(!this.getEditorLock()?.isActive()||this.getEditorLock()?.commitCurrentEdit()))){this.scrollRowIntoView(n.row,!1);const r="slick-edit-preclick"===t.target?.className,s=this.columns[n.cell],a=!!(this._options.editable&&s?.editorClass&&this._options.suppressActiveCellChangeOnEdit);this.setActiveCellInternal(this.getCellNode(n.row,n.cell),null,r,a,t)}}handleContextMenu(e){const t=e.target.closest(".slick-cell");t&&(this.activeCellNode===t&&null!==this.currentEditor||this.triggerEvent(this.onContextMenu,{},e))}handleDblClick(e){const t=this.getCellFromEvent(e);!t||null!==this.currentEditor&&this.activeRow===t.row&&this.activeCell===t.cell||(this.triggerEvent(this.onDblClick,{row:t.row,cell:t.cell},e),!e.defaultPrevented&&this._options.editable&&this.gotoCell(t.row,t.cell,!0,e))}handleHeaderMouseEnter(e){const t=U.storage.get(e.target.closest(".slick-header-column"),"column");t&&this.triggerEvent(this.onHeaderMouseEnter,{column:t,grid:this},e)}handleHeaderMouseOver(e){const t=U.storage.get(e.target.closest(".slick-header-column"),"column");t&&this.triggerEvent(this.onHeaderMouseOver,{column:t,grid:this},e)}handleHeaderMouseLeave(e){const t=U.storage.get(e.target.closest(".slick-header-column"),"column");t&&this.triggerEvent(this.onHeaderMouseLeave,{column:t,grid:this},e)}handleHeaderMouseOut(e){const t=U.storage.get(e.target.closest(".slick-header-column"),"column");t&&this.triggerEvent(this.onHeaderMouseOut,{column:t,grid:this},e)}handleHeaderRowMouseEnter(e){const t=U.storage.get(e.target.closest(".slick-headerrow-column"),"column");t&&this.triggerEvent(this.onHeaderRowMouseEnter,{column:t,grid:this},e)}handleHeaderRowMouseOver(e){const t=U.storage.get(e.target.closest(".slick-headerrow-column"),"column");t&&this.triggerEvent(this.onHeaderRowMouseOver,{column:t,grid:this},e)}handleHeaderRowMouseLeave(e){const t=U.storage.get(e.target.closest(".slick-headerrow-column"),"column");t&&this.triggerEvent(this.onHeaderRowMouseLeave,{column:t,grid:this},e)}handleHeaderRowMouseOut(e){const t=U.storage.get(e.target.closest(".slick-headerrow-column"),"column");t&&this.triggerEvent(this.onHeaderRowMouseOut,{column:t,grid:this},e)}handleHeaderContextMenu(e){const t=e.target.closest(".slick-header-column"),n=t&&U.storage.get(t,"column");this.triggerEvent(this.onHeaderContextMenu,{column:n},e)}handleHeaderClick(e){if(!this.columnResizeDragging){const t=e.target.closest(".slick-header-column"),n=t&&U.storage.get(t,"column");n&&this.triggerEvent(this.onHeaderClick,{column:n},e)}}handlePreHeaderContextMenu(e){this.triggerEvent(this.onPreHeaderContextMenu,{node:e.target},e)}handlePreHeaderClick(e){this.columnResizeDragging||this.triggerEvent(this.onPreHeaderClick,{node:e.target},e)}handleFooterContextMenu(e){const t=e.target.closest(".slick-footerrow-column"),n=t&&U.storage.get(t,"column");this.triggerEvent(this.onFooterContextMenu,{column:n},e)}handleFooterClick(e){const t=e.target.closest(".slick-footerrow-column"),n=t&&U.storage.get(t,"column");this.triggerEvent(this.onFooterClick,{column:n},e)}handleCellMouseOver(e){this.triggerEvent(this.onMouseEnter,{},e)}handleCellMouseOut(e){this.triggerEvent(this.onMouseLeave,{},e)}cellExists(e,t){return!(e<0||e>=this.getDataLength()||t<0||t>=this.columns.length)}getCellFromPoint(e,t){let n=this.getRowFromPosition(t),r=0,s=0;for(let a=0;a=this.actualFrozenRow?this.h=this.actualFrozenRow?this.frozenRowsHeight:0:0,t}getCellFromEvent(e){const t=e instanceof Ri?e.getNativeEvent():e;if(!t)return null;const n=t.touches?t.touches[0]:t,r=t.target.closest(".slick-cell");if(!r)return null;let s=this.getRowFromNode(r.parentNode);if(this.hasFrozenRows){let d=0;const h=kn(U.parents(r,".grid-canvas")[0]);U.parents(r,".grid-canvas-bottom").length&&(d=this._options.frozenBottom?U.height(this._canvasTopL):this.frozenRowsHeight);const g=n.clientX-h.left,v=n.clientY-h.top+d+document.documentElement.scrollTop;s=this.getCellFromPoint(g,v).row}const a=this.getCellFromNode(r);return y1(s)&&y1(a)?{row:s,cell:a}:null}getCellNodeBox(e,t){if(!this.cellExists(e,t))return null;const n=this.getFrozenRowOffset(e),r=this.getRowTop(e)-n,s=r+this._options.rowHeight-1;let a=0;for(let h=0;h1?r-1:0)])}internalScrollColumnIntoView(e,t){const n=this.scrollLeft+U.width(this._viewportScrollContainerX)-(this.viewportHasVScroll&&this.scrollbarDimensions?.width||0);en&&(this._viewportScrollContainerX.scrollLeft=Math.min(e,t-this._viewportScrollContainerX.clientWidth),this.handleScroll(),this.render())}scrollColumnIntoView(e){this.internalScrollColumnIntoView(this.columnPosLeft[e],this.columnPosRight[e])}setActiveCellInternal(e,t,n,r,s){if(ri(this.activeCellNode)&&(this.makeActiveCellNormal(),this.activeCellNode.classList.remove("active"),this.rowsCache[this.activeRow]?.rowNode?.forEach(a=>a.classList.remove("active"))),this.activeCellNode=e,ri(this.activeCellNode)){const a=kn(this.activeCellNode);let d=Math.floor(kn(U.parents(this.activeCellNode,".grid-canvas")[0]).top);const h=U.parents(this.activeCellNode,".grid-canvas-bottom").length;this.hasFrozenRows&&h&&(d-=this._options.frozenBottom?U.height(this._canvasTopL):this.frozenRowsHeight);const p=this.getCellFromPoint(a.left,Math.ceil(a.top)-d);this.activeRow=p.row,this.activeCell=this.activePosX=this.activeCell=this.activePosX=this.getCellFromNode(this.activeCellNode),!ri(t)&&this._options.autoEditNewRow&&(t=this.activeRow===this.getDataLength()||this._options.autoEdit),this._options.showCellSelection&&(this.activeCellNode.classList.add("active"),this.rowsCache[this.activeRow]?.rowNode?.forEach(g=>g.classList.add("active"))),this._options.editable&&t&&this.isCellPotentiallyEditable(this.activeRow,this.activeCell)&&(this._options.asyncEditorLoading?(window.clearTimeout(this.h_editorLoader),this.h_editorLoader=window.setTimeout(()=>{this.makeActiveCellEditable(void 0,n,s)},this._options.asyncEditorLoadDelay)):this.makeActiveCellEditable(void 0,n,s))}else this.activeRow=this.activeCell=null;r||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,t){const n=this.getDataLength();return!(e=n||!this.columns[t]||this.columns[t].hidden||!this.getEditor(e,t))}makeActiveCellNormal(e=!1){if(this.currentEditor){if(this.triggerEvent(this.onBeforeCellEditorDestroy,{editor:this.currentEditor}),this.currentEditor.destroy(),this.currentEditor=null,this.activeCellNode){const t=this.getDataItem(this.activeRow);if(this.activeCellNode.classList.remove("editable"),this.activeCellNode.classList.remove("invalid"),t){const n=this.columns[this.activeCell],s=this.getFormatter(this.activeRow,n)(this.activeRow,this.activeCell,this.getDataItemValueForColumn(t,n),n,t,this);this.applyFormatResultToCellNode(s,this.activeCellNode),this.invalidatePostProcessingResults(this.activeRow)}e&&this.setFocus()}navigator.userAgent.toLowerCase().match(/msie/)&&this.clearTextSelection(),this.getEditorLock()?.deactivate(this.editController)}}editActiveCell(e,t,n){this.makeActiveCellEditable(e,t,n)}makeActiveCellEditable(e,t,n){if(!this.activeCellNode)return;if(!this._options.editable)throw new Error("SlickGrid makeActiveCellEditable : should never get called when grid options.editable is false");if(window.clearTimeout(this.h_editorLoader),!this.isCellPotentiallyEditable(this.activeRow,this.activeCell))return;const r=this.columns[this.activeCell],s=this.getDataItem(this.activeRow);if(!1===this.triggerEvent(this.onBeforeEditCell,{row:this.activeRow,cell:this.activeCell,item:s,column:r,target:"grid"}).getReturnValue())return void this.setFocus();this.getEditorLock()?.activate(this.editController),this.activeCellNode.classList.add("editable");const a=e||this.getEditor(this.activeRow,this.activeCell);if("function"==typeof a){!e&&!a.suppressClearOnEdit&&ui(this.activeCellNode);let d=this.data?.getItemMetadata?.(this.activeRow);d=d?.columns;const h=d&&(d[r.id]||d[this.activeCell]),p={grid:this,gridPosition:this.absBox(this._container),position:this.absBox(this.activeCellNode),container:this.activeCellNode,column:r,columnMetaData:h,item:s||{},event:n,commitChanges:this.commitEditAndSetFocus.bind(this),cancelChanges:this.cancelEditAndSetFocus.bind(this)};this.currentEditor=new a(p),s&&this.currentEditor&&(this.currentEditor.loadValue(s),t&&"function"==typeof this.currentEditor?.preClick&&this.currentEditor.preClick()),this.serializedEditorValue=this.currentEditor?.serializeValue(),this.currentEditor?.position&&this.handleActiveCellPositionChange()}}commitEditAndSetFocus(e=!0){this.getEditorLock()?.commitCurrentEdit()&&(this.setFocus(),this._options.autoEdit&&!this._options.autoCommitEdit&&e&&this.navigateDown())}cancelEditAndSetFocus(){this.getEditorLock()?.cancelCurrentEdit()&&this.setFocus()}absBox(e){const t={top:e.offsetTop,left:e.offsetLeft,bottom:0,right:0,width:e.offsetWidth,height:e.offsetWidth,visible:!0};t.bottom=t.top+t.height,t.right=t.left+t.width;let n=e.offsetParent;for(;(e=e.parentNode)!==document.body&&e&&e.parentNode;){const r=getComputedStyle(e);t.visible&&e.scrollHeight!==e.offsetHeight&&"visible"!==r.overflowY&&(t.visible=t.bottom>e.scrollTop&&t.tope.scrollLeft&&t.left0&&(e=t.getRangeAt(0))}return e}setTextSelection(e){if(window.getSelection&&e){const t=window.getSelection();t&&(t.removeAllRanges(),t.addRange(e))}}scrollRowIntoView(e,t){if(!this.hasFrozenRows||!this._options.frozenBottom&&e>this.actualFrozenRow-1||this._options.frozenBottom&&ethis.scrollTop+n+this.offset?(this.scrollTo(t?s:a),this.render()):r*this._options.rowHeight=s&&(r=s-1),r<0&&(r=0);let a=0,d=null;const h=this.activePosX;for(;a<=this.activePosX;)this.canCellBeActive(r,a)&&(d=a),a+=this.getColspan(r,a);null!==d?(this.setActiveCellInternal(this.getCellNode(r,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 t=this.getDataLength();if(!t)return!0;if(e<0?e=0:e>=t&&(e=t-1),this.scrollCellIntoView(e,0,!0),this._options.enableCellNavigation&&ri(this.activeRow)){let n=0,r=null;const s=this.activePosX;for(;n<=this.activePosX;)this.canCellBeActive(e,n)&&(r=n),n+=this.getColspan(e,n);null!==r?(this.setActiveCellInternal(this.getCellNode(e,r)),this.activePosX=s):this.resetActiveCell()}return!0}getColspan(e,t){const n=this.data?.getItemMetadata?.(e);if(!n||!n.columns)return 1;let s=(n.columns[this.columns[t].id]||n.columns[t])?.colspan;return s="*"===s?this.columns.length-t:s||1,s}findFirstFocusableCell(e){let t=0;for(;t=this.columns.length)return null;do{t+=this.getColspan(e,t)}while(t=t)return null;let a,s={row:e,cell:r,posX:r},d=!0;for(;d;){if(a=this.gotoRight(s.row,s.cell,s.posX),!a)return d=!1,null;if(a.cell>=t)return d=!1,s;s=a}}gotoDown(e,t,n){let r;const s=this.getDataLengthIncludingAddNew();let a=!0;for(;a;){if(++e>=s)return a=!1,null;for(r=t=0;t<=n;)r=t,t+=this.getColspan(e,t);if(this.canCellBeActive(e,r))return a=!1,{row:e,cell:r,posX:n}}}gotoUp(e,t,n){let r,s=!0;for(;s;){if(--e<0)return s=!1,null;for(r=t=0;t<=n;)r=t,t+=this.getColspan(e,t);if(this.canCellBeActive(e,r))return s=!1,{row:e,cell:r,posX:n}}}gotoNext(e,t,n){if(!y1(e)&&!y1(t)&&(e=t=n=0,this.canCellBeActive(e,t)))return{row:e,cell:t,posX:t};const r=this.gotoRight(e,t,n);if(r)return r;let s=null;const a=this.getDataLengthIncludingAddNew();for(e===a-1&&e--;++e=this.actualFrozenRow||this._options.frozenBottom&&s.rowt?this.rowsCache[e].cellNodesByColumnIdx[t]:null}catch{return this.rowsCache[e].cellNodesByColumnIdx[t]}}return null}setActiveCell(e,t,n,r,s){!this.initialized||!this._options.enableCellNavigation||e>this.getDataLength()||e<0||t>=this.columns.length||t<0||(this.scrollCellIntoView(e,t,!1),this.setActiveCellInternal(this.getCellNode(e,t),n,r,s))}setActiveRow(e,t,n){t??=0,!(!this.initialized||e>this.getDataLength()||e<0||t>=this.columns.length||t<0)&&(this.activeRow=e,n||this.scrollCellIntoView(e,t,!1))}canCellBeActive(e,t){if(!this._options.enableCellNavigation||e>=this.getDataLengthIncludingAddNew()||e<0||t>=this.columns.length||t<0||!this.columns[t]||this.columns[t].hidden)return!1;const n=this.data?.getItemMetadata?.(e);if(void 0!==n?.focusable)return!!n.focusable;const r=n?.columns;return void 0!==r?.[this.columns[t].id]?.focusable?!!r[this.columns[t].id].focusable:void 0!==r?.[t]?.focusable?!!r[t].focusable:!!this.columns[t].focusable}canCellBeSelected(e,t){if(e>=this.getDataLength()||e<0||t>=this.columns.length||t<0||!this.columns[t]||this.columns[t].hidden)return!1;const n=this.data?.getItemMetadata?.(e);if(void 0!==n?.selectable)return!!n.selectable;const r=n?.columns&&(n.columns[this.columns[t].id]||n.columns[t]);return void 0!==r?.selectable?!!r.selectable:!!this.columns[t].selectable}gotoCell(e,t,n,r){if(!this.initialized||!this.canCellBeActive(e,t)||!this.getEditorLock()?.commitCurrentEdit())return;this.scrollCellIntoView(e,t,!1);const s=this.getCellNode(e,t),a=this.columns[t],d=!!(this._options.editable&&a?.editorClass&&this._options.suppressActiveCellChangeOnEdit);this.setActiveCellInternal(s,n||e===this.getDataLength()||this._options.autoEdit,null,d,r),this.currentEditor||this.setFocus()}commitCurrentEdit(){const e=this,t=e.getDataItem(e.activeRow),n=e.columns[e.activeCell];if(e.currentEditor){if(e.currentEditor.isValueChanged()){const r=e.currentEditor.validate();if(r.valid){const s=e.activeRow,a=e.activeCell,d=e.currentEditor,h=e.currentEditor.serializeValue(),p=e.serializedEditorValue;if(e.activeRow{d.applyValue(t,h),e.updateRow(s),e.triggerEvent(e.onCellChange,{command:"execute",row:s,cell:a,item:t,column:n})},undo:()=>{d.applyValue(t,p),e.updateRow(s),e.triggerEvent(e.onCellChange,{command:"undo",row:s,cell:a,item:t,column:n})}};e._options.editCommandHandler?(e.makeActiveCellNormal(!0),e._options.editCommandHandler(t,n,g)):(g.execute(),e.makeActiveCellNormal(!0))}else{const g={};e.currentEditor.applyValue(g,e.currentEditor.serializeValue()),e.makeActiveCellNormal(!0),e.triggerEvent(e.onAddNewRow,{item:g,column:n})}return!e.getEditorLock()?.isActive()}return e.activeCellNode&&(e.activeCellNode.classList.remove("invalid"),U.width(e.activeCellNode),e.activeCellNode.classList.add("invalid")),e.triggerEvent(e.onValidationError,{editor:e.currentEditor,cellNode:e.activeCellNode,validationResults:r,row:e.activeRow,cell:e.activeCell,column:n}),e.currentEditor.focus(),!1}e.makeActiveCellNormal(!0)}return!0}cancelCurrentEdit(){return this.makeActiveCellNormal(),!0}rowsToRanges(e){const t=[],n=this.columns.length-1;for(let r=0;re in i?dce(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,qW=(i,e)=>{for(var t in e||(e={}))uce.call(e,t)&&n9(i,t,e[t]);if(jW)for(var t of jW(e))hce.call(e,t)&&n9(i,t,e[t]);return i},It=(i,e,t)=>(n9(i,"symbol"!=typeof e?e+"":e,t),t);const pce={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"},mce=i=>`
<#ArrowPrev /><#ArrowNext />
<#Multiple>
<#Month /><#Year />
<#WeekNumbers />
<#Week /><#Days />
<#/Multiple>
<#ControlTime />`,gce=i=>`
<#Month /><#Year />
<#Months />
`,fce=i=>`
<#ArrowPrev />
<#Month /><#Year />
<#ArrowNext />
<#Years />
`;class vce{constructor(){var e;It(this,"isInit",!1),It(this,"isInputInit",!1),It(this,"input",!1),It(this,"type","default"),It(this,"months",2),It(this,"jumpMonths",1),It(this,"jumpToSelectedDate",!1),It(this,"toggleSelected",!0),It(this,"date",{min:"1970-01-01",max:"2470-12-31",today:new Date}),It(this,"settings",{lang:"en",iso8601:!0,range:{min:void 0,max:void 0,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"}}),It(this,"locale",{months:[],weekday:[]}),It(this,"sanitizer",t=>t),It(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}),It(this,"popups",{}),It(this,"CSSClasses",qW({},pce)),It(this,"DOMTemplates",{default:(e=this.CSSClasses,`
<#ArrowPrev />
<#Month /><#Year />
<#ArrowNext />
<#WeekNumbers />
<#Week /><#Days />
<#ControlTime />`),multiple:mce(this.CSSClasses),month:gce(this.CSSClasses),year:fce(this.CSSClasses)}),It(this,"HTMLElement"),It(this,"HTMLOriginalElement"),It(this,"HTMLInputElement"),It(this,"rangeMin"),It(this,"rangeMax"),It(this,"rangeDisabled"),It(this,"rangeEnabled"),It(this,"selectedDates"),It(this,"selectedHolidays"),It(this,"selectedMonth"),It(this,"selectedYear"),It(this,"selectedHours"),It(this,"selectedMinutes"),It(this,"selectedKeeping"),It(this,"selectedTime"),It(this,"currentType"),It(this,"correctMonths"),It(this,"viewYear"),It(this,"dateMin"),It(this,"dateMax")}}const Dd=i=>`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`,dn=i=>new Date(`${i}T00:00:00`),uy=i=>i.reduce((e,t)=>{if(t instanceof Date||"number"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\d{4}-\d{2}-\d{2})$/g)?e.push(t):t.replace(/(\d{4}-\d{2}-\d{2}).*?(\d{4}-\d{2}-\d{2})/g,(n,r,s)=>{const a=dn(r),d=dn(s),h=new Date(a.getTime());for(;h<=d;h.setDate(h.getDate()+1))e.push(Dd(h));return n});return e},[]),cT=()=>{const i=new Date;return new Date(i.getTime()-6e4*i.getTimezoneOffset()).toISOString().substring(0,10)},tE=i=>i?{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(i)]||String(i):"",hy_notFoundSelector=i=>`${i} is not found, check the first argument passed to new VanillaCalendar.`,hy_notInit='The calendar has not been initialized, please initialize it using the "init()" method first.',hy_notLocale='You specified "define" for "settings.lang" but did not provide the required values for "locale.weekday" or "locale.months".',hy_incorrectTheme='Incorrect name of theme in "settings.visibility.theme".',hy_incorrectTime="The value of the time property can be: false, true, 12 or 24.",r9=i=>{i.currentType=i.type,(i=>{var e;if(i.jumpToSelectedDate&&null!=(e=i.settings.selected.dates)&&e.length&&void 0===i.settings.selected.month&&void 0===i.settings.selected.year){const r=dn(uy(i.settings.selected.dates)[0]);i.settings.selected.month=r.getMonth(),i.settings.selected.year=r.getFullYear()}const t=void 0!==i.settings.selected.month&&Number(i.settings.selected.month)>=0&&Number(i.settings.selected.month)<12,n=void 0!==i.settings.selected.year&&Number(i.settings.selected.year)>=0&&Number(i.settings.selected.year)<=9999;i.selectedMonth=t?Number(i.settings.selected.month):i.date.today.getMonth(),i.selectedYear=n?Number(i.settings.selected.year):i.date.today.getFullYear(),i.viewYear=i.selectedYear})(i),(i=>{var e,t,n;"today"===i.date.min&&(i.date.min=cT()),"today"===i.date.max&&(i.date.max=cT()),"today"===i.settings.range.min&&(i.settings.range.min=cT()),"today"===i.settings.range.max&&(i.settings.range.max=cT()),i.settings.range.min=i.settings.range.min?dn(i.date.min)>=dn(i.settings.range.min)?i.date.min:i.settings.range.min:i.date.min,i.settings.range.max=i.settings.range.max?dn(i.date.max)<=dn(i.settings.range.max)?i.date.max:i.settings.range.max:i.date.max;const r=i.settings.range.disablePast&&!i.settings.range.disableAllDays&&dn(i.settings.range.min)1&&i.rangeDisabled.sort((s,a)=>+new Date(s)-+new Date(a)),i.rangeEnabled=i.settings.range.enabled?uy(i.settings.range.enabled):[],null!=(e=i.rangeEnabled)&&e[0]&&null!=(t=i.rangeDisabled)&&t[0]&&(i.rangeDisabled=i.rangeDisabled.filter(s=>!i.rangeEnabled.includes(s))),i.rangeEnabled.length>1&&i.rangeEnabled.sort((s,a)=>+new Date(s)-+new Date(a)),null!=(n=i.rangeEnabled)&&n[0]&&i.settings.range.disableAllDays&&(i.rangeMin=i.rangeEnabled[0],i.rangeMax=i.rangeEnabled[i.rangeEnabled.length-1])})(i),(i=>{var e,t;i.selectedDates=null!=(e=i.settings.selected.dates)&&e[0]?uy(i.settings.selected.dates):[],i.selectedHolidays=null!=(t=i.settings.selected.holidays)&&t[0]?uy(i.settings.selected.holidays):[]})(i),(i=>{i.dateMin=i.settings.visibility.disabled?dn(i.date.min):dn(i.rangeMin),i.dateMax=i.settings.visibility.disabled?dn(i.date.max):dn(i.rangeMax)})(i),(i=>{const e=!0===i.settings.selection.time||12===i.settings.selection.time;if(e||24===i.settings.selection.time){let t=!1;if("string"==typeof i.settings.selected.time){const n=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;i.settings.selected.time.replace(n,(r,s,a,d)=>(s&&a&&(t=!0,i.selectedHours=s,i.selectedMinutes=a),d&&e?i.selectedKeeping=d:e&&(i.selectedKeeping="AM"),""))}!t&&e?(i.selectedHours=tE(String(i.date.today.getHours())),i.selectedMinutes=String(i.date.today.getMinutes()),i.selectedKeeping=Number(i.date.today.getHours())>=12?"PM":"AM"):t||(i.selectedHours=String(i.date.today.getHours()),i.selectedMinutes=String(i.date.today.getMinutes())),i.selectedHours=Number(i.selectedHours)<10?`0${Number(i.selectedHours)}`:`${i.selectedHours}`,i.selectedMinutes=Number(i.selectedMinutes)<10?`0${Number(i.selectedMinutes)}`:`${i.selectedMinutes}`,i.selectedTime=`${i.selectedHours}:${i.selectedMinutes}${i.selectedKeeping?` ${i.selectedKeeping}`:""}`}else if(i.settings.selection.time)throw new Error(hy_incorrectTime)})(i),(i=>{i.correctMonths="multiple"===i.type?1===i.months?2:i.months>12?12:i.months:1})(i)},KW=({arrowPrev:i,arrowNext:e,isPrevHidden:t,isNextHidden:n})=>{i.style.visibility=t?"hidden":"",e.style.visibility=n?"hidden":""},o9=i=>{var e,t;if("month"===i.currentType)return;const n=null==(e=i.HTMLElement)?void 0:e.querySelector(`.${i.CSSClasses.arrowPrev}`),r=null==(t=i.HTMLElement)?void 0:t.querySelector(`.${i.CSSClasses.arrowNext}`);!n||!r||{default:()=>{const s=dn(Dd(new Date(i.selectedYear,i.selectedMonth,1))),a=new Date(s.getTime()),d=new Date(s.getTime());a.setMonth(a.getMonth()-i.jumpMonths),d.setMonth(d.getMonth()+i.jumpMonths),i.settings.selection.year||(i.dateMin.setFullYear(s.getFullYear()),i.dateMax.setFullYear(s.getFullYear()));const h=!i.settings.selection.month||a.getFullYear()i.dateMax.getFullYear()||d.getFullYear()===i.dateMax.getFullYear()&&d.getMonth()>i.dateMax.getMonth();KW({arrowPrev:n,arrowNext:r,isPrevHidden:h,isNextHidden:p})},year:()=>{KW({arrowPrev:n,arrowNext:r,isPrevHidden:i.dateMin.getFullYear()&&i.viewYear-7<=i.dateMin.getFullYear(),isNextHidden:i.dateMax.getFullYear()&&i.viewYear+7>=i.dateMax.getFullYear()})}}["multiple"===i.currentType?"default":i.currentType]()},YW=(i,e)=>{if(!i)return null;const t=dn(i),n=e?t.getDay()||7:t.getDay();t.setDate(t.getDate()+4-n);const r=new Date(t.getFullYear(),0,1),s=Math.ceil(((+t-+r)/864e5+1)/7);return{year:t.getFullYear(),week:s}};function s9(i){if(!i||!i.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const e=i.getBoundingClientRect(),t=document.documentElement;return{bottom:e.bottom,right:e.right,top:e.top+window.scrollY-t.clientTop,left:e.left+window.scrollX-t.clientLeft}}function a9(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function Fce(i){const{top:e,left:t}=function Ece(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}(),{top:n,left:r}=s9(i),{vh:s,vw:a}=a9(),d=n-e,h=r-t;return{top:d,bottom:s-(d+i.clientHeight),left:h,right:a-(h+i.clientWidth)}}function ZW(i,e,t=5){const n={top:!0,bottom:!0,left:!0,right:!0},r=[];if(!e||!i)return{canShow:n,parentPositions:r};const{bottom:s,top:a}=Fce(i),{top:d,left:h}=s9(i),{height:p,width:g}=e.getBoundingClientRect(),{vh:v,vw:y}=a9(),C=y/2,k=v/2;return[{condition:dk,position:"bottom"},{condition:hC,position:"right"}].forEach(({condition:E,position:x})=>{E&&r.push(x)}),Object.assign(n,{top:p<=a-t,bottom:p<=s-t,left:g<=h,right:g<=y-h}),{canShow:n,parentPositions:r}}const l9=(i,e,t,n)=>{if(i){const r="auto"===t?function xce(i,e){const t="left";if(!e||!i)return t;const{canShow:n,parentPositions:r}=ZW(i,e),s=n.left&&n.right;return(s&&n.bottom?"center":s&&n.top?["top","center"]:Array.isArray(r)?["bottom"===r[0]?"top":"bottom",...r.slice(1)]:r)||t}(i,e):t,s={top:-e.offsetHeight,bottom:i.offsetHeight,left:0,center:i.offsetWidth/2-e.offsetWidth/2,right:i.offsetWidth-e.offsetWidth},a=Array.isArray(r)?r[0]:"bottom",d=Array.isArray(r)?r[1]:r;"bottom"===a?(e.classList.remove(n.calendarToInputTop),e.classList.add(n.calendarToInputBottom)):(e.classList.remove(n.calendarToInputBottom),e.classList.add(n.calendarToInputTop));const{top:h,left:p}=s9(i),g=h+s[a];let v=p+s[d];const{vw:y}=a9();if(v+e.clientWidth>y){const C=window.innerWidth-document.body.clientWidth;v=y-e.clientWidth-C}else v<0&&(v=0);Object.assign(e.style,{left:`${v}px`,top:`${g}px`})}},Dce=(i,e)=>{var t;i.popups&&(null==(t=Object.entries(i.popups))||t.forEach(([n,r])=>((i,e,t,n)=>{const r=i.CSSClasses.dayPopup,s=n.querySelector(`[data-calendar-day="${e}"]`);if(s&&(t?.modifier&&s.classList.add(...t.modifier.trim().split(" ")),t?.html)){const a=s.parentElement,d=document.createElement("div");d.className=r,d.innerHTML=i.sanitizer(t.html),a.appendChild(d),setTimeout(()=>{if(d){const{canShow:h}=ZW(a,d),p=5;let g=a.offsetHeight,v=0;h.bottom||(g=-d.offsetHeight-p),h.left&&!h.right&&(v=a.offsetWidth-d.offsetWidth/2),!h.left&&h.right&&(v=d.offsetWidth/2),Object.assign(d.style,{left:`${v}px`,top:`${g}px`})}})}})(i,n,r,e)))},Ace=(i,e,t,n,r)=>{const s=e[t].querySelector(`.${i.CSSClasses.dayBtn}`),a=YW(s?.dataset.calendarDay,i.settings.iso8601);if(!a)return;const d=n.cloneNode(!0);d.innerText=String(a.week),d.dataset.calendarYearWeek=String(a.year),r.appendChild(d)},c9=(i,e,t,n,r,s,a,d)=>{const h=document.createElement("div");h.className=i.CSSClasses.day;const p=document.createElement("button");p.className=`${i.CSSClasses.dayBtn}${d?` ${d}`:""}`,p.type="button",p.innerText=String(n),p.dataset.calendarDay=s,i.settings.visibility.weekNumbers&&(()=>{const g=YW(s,i.settings.iso8601);g&&(p.dataset.calendarWeekNumber=String(g.week))})(),a?i.settings.visibility.daysOutside&&h.appendChild(p):h.appendChild(p),((i,e,t)=>{var n,r,s,a,d;const h=null==(n=i.settings.range.disableWeekday)?void 0:n.includes(t),p=i.settings.range.disableAllDays&&!(null==(r=i.rangeEnabled)||!r[0]);!h&&!p||null!=(s=i.rangeEnabled)&&s.includes(e)||null!=(a=i.rangeDisabled)&&a.includes(e)||(i.rangeDisabled.push(e),null==(d=i.rangeDisabled)||d.sort((g,v)=>+new Date(g)-+new Date(v)))})(i,s,r),((i,e,t,n,r,s,a)=>{var d,h,p;if((dn(i.rangeMin)>dn(s)||dn(i.rangeMax)1&&"multiple-ranged"===i.settings.selection.day&&(i.selectedDates[0]===s&&t.classList.add(i.CSSClasses.daySelectedFirst),i.selectedDates[i.selectedDates.length-1]===s&&t.classList.add(i.CSSClasses.daySelectedLast),i.selectedDates[0]!==s&&i.selectedDates[i.selectedDates.length-1]!==s&&t.classList.add(i.CSSClasses.daySelectedIntermediate))),i.settings.range.edgesOnly&&i.selectedDates.length>1&&"multiple-ranged"===i.settings.selection.day){const g=+new Date(i.selectedDates[0]),v=+new Date(i.selectedDates[i.selectedDates.length-1]),y=+new Date(s);y>g&&y{const e=i.HTMLElement.querySelectorAll(`.${i.CSSClasses.days}`),t=i.HTMLElement.querySelectorAll(`.${i.CSSClasses.weekNumbers}`),n=new Date(i.selectedYear,i.selectedMonth,1);e.forEach((r,s)=>{const a=new Date(n);a.setMonth(a.getMonth()+s);const d=a.getMonth(),h=a.getFullYear(),p=new Date(h,d,1),g=new Date(h,d+1,0).getDate(),v=i.settings.iso8601?(0!==p.getDay()?p.getDay():7)-1:p.getDay();i.settings.selection.day&&r.classList.add(i.CSSClasses.daysSelecting),r.textContent="",((i,e,t,n,r)=>{let s=new Date(t,n,0).getDate()-(r-1);const a=0===n?t-1:t,d=0===n?12:n<10?`0${n}`:n;for(let h=r;h>0;h--,s++){const p=`${a}-${d}-${s}`,g=dn(p).getDay();c9(i,t,e,s,g,p,!0,i.CSSClasses.dayBtnPrev)}})(i,r,h,d,v),((i,e,t,n,r)=>{for(let s=1;s<=t;s++){const a=new Date(n,r,s),d=Dd(a),h=a.getDay();c9(i,n,e,s,h,d,!1,null)}})(i,r,g,h,d),((i,e,t,n,r,s)=>{const a=s+t,d=7*Math.ceil(a/7)-a,h=r+1===12?n+1:n,p=r+1===12?"01":r+2<10?`0${r+2}`:r+2;for(let g=1;g<=d;g++){const v=`${h}-${p}-${g<10?`0${g}`:String(g)}`,y=dn(v).getDay();c9(i,n,e,g,y,v,!0,i.CSSClasses.dayBtnNext)}})(i,r,g,h,d,v),((i,e,t,n,r)=>{if(!i.settings.visibility.weekNumbers)return;n.textContent="";const s=document.createElement("b");s.className=i.CSSClasses.weekNumbersTitle,s.innerText="#",n.appendChild(s);const a=document.createElement("div");a.className=i.CSSClasses.weekNumbersContent,n.appendChild(a);const d=document.createElement("button");d.type="button",d.className=i.CSSClasses.weekNumber;const h=r.querySelectorAll(`.${i.CSSClasses.day}`),p=Math.ceil((e+t)/7);for(let g=0;g{var e,t;const n=null==(e=i.HTMLElement)?void 0:e.querySelectorAll("[data-calendar-selected-month]"),r=null==(t=i.HTMLElement)?void 0:t.querySelectorAll("[data-calendar-selected-year]");if(!n?.[0]&&r?.[0])return;const s=new Date(i.selectedYear,i.selectedMonth,1);n?.forEach((a,d)=>((i,e,t,n)=>{const r=new Date(n.setMonth(i.selectedMonth+t)).getMonth(),s=!1===i.settings.selection.month||"only-arrows"===i.settings.selection.month;e.tabIndex=s?-1:0,e.classList.toggle(i.CSSClasses.monthDisabled,s),e.setAttribute("data-calendar-selected-month",String(r)),e.innerText=i.locale.months[r]})(i,a,d,s)),r?.forEach((a,d)=>((i,e,t,n)=>{const r=new Date(n.setFullYear(i.selectedYear,i.selectedMonth+t)).getFullYear(),s=!1===i.settings.selection.year||"only-arrows"===i.settings.selection.year;e.tabIndex=s?-1:0,e.classList.toggle(i.CSSClasses.yearDisabled,s),e.setAttribute("data-calendar-selected-year",String(r)),e.innerText=String(r)})(i,a,d,s))},d9=(i,e)=>{const t=dn(Dd(new Date(i.selectedYear,i.selectedMonth,1)));({prev:()=>t.setMonth(t.getMonth()-i.jumpMonths),next:()=>t.setMonth(t.getMonth()+i.jumpMonths)})[e](),[i.selectedMonth,i.selectedYear]=[t.getMonth(),t.getFullYear()],uT(i),o9(i),dT(i)},JW=Object.freeze(Object.defineProperty({__proto__:null,ArrowNext:i=>``,ArrowPrev:i=>``,ControlTime:i=>i.settings.selection.time?`
`:"",Days:i=>`
`,Month:i=>``,Months:i=>`
`,Week:i=>`
`,WeekNumbers:i=>i.settings.visibility.weekNumbers?`
`:"",Year:i=>``,Years:i=>`
`},Symbol.toStringTag,{value:"Module"})),iE=(i,e)=>e.replace(/[\n\t]/g,"").replace(/<#(?!\/?Multiple)(.*?)>/g,(t,n)=>{const r=(s=n.replace(/[/\s\n\t]/g,""),JW[s]);var s;const a=r?r(i):"";return i.sanitizer(a)}).replace(/[\n\t]/g,""),u9=(i,e)=>{const{HTMLElement:t,CSSClasses:n,DOMTemplates:r,type:s,currentType:a,correctMonths:d}=i,h=(g,v)=>{if(!e)return;const y=t.querySelector(`.${n.controls}`);y&&t.removeChild(y),t.querySelector(`.${n.grid}`).classList.add(n.gridDisabled);const C=e.closest(`.${n.column}`);C.classList.add(g),C.innerHTML=iE(i,v)},p={default:()=>{t.classList.add(n.calendarDefault),t.classList.remove(n.calendarMonth,n.calendarYear),t.innerHTML=iE(i,r.default)},multiple:()=>{d&&(t.classList.add(n.calendarMultiple),t.classList.remove(n.calendarMonth,n.calendarYear),t.innerHTML=((i,e)=>e.replace(/<#Multiple>(.*?)<#\/Multiple>/g,(t,n)=>{let r="";for(let s=0;s{"multiple"!==s?(t.classList.add(n.calendarMonth),t.classList.remove(n.calendarDefault,n.calendarYear),t.innerHTML=iE(i,r.month)):h(n.columnMonth,r.month)},year:()=>{"multiple"!==s?(t.classList.add(n.calendarYear),t.classList.remove(n.calendarDefault,n.calendarMonth),t.innerHTML=iE(i,r.year)):h(n.columnYear,r.year)}};t.classList.add(n.calendar),p[a]()},Yce=(i,e,t,n,r)=>{const s=e.cloneNode(!1);return s.className=`${i.CSSClasses.yearsYear}${t===r?` ${i.CSSClasses.yearsYearSelected}`:n?` ${i.CSSClasses.yearsYearDisabled}`:""}`,s.dataset.calendarYear=String(r),s.title=String(r),s.innerText=String(r),n&&(s.tabIndex=-1),s},h9=(i,e)=>{const t=e?.dataset.calendarSelectedYear?Number(e?.dataset.calendarSelectedYear):i.selectedYear;i.currentType="year",u9(i,e),uT(i),o9(i);const n=i.HTMLElement.querySelector(`.${i.CSSClasses.years}`);if(!i.settings.selection.year||!n)return;n.classList.add(i.CSSClasses.yearsSelecting);const r="multiple"!==i.type||i.selectedYear===t?0:1,s=document.createElement("button");s.type="button";for(let a=i.viewYear-7;ai.dateMax.getFullYear(),h=Yce(i,s,t,d,a);n.appendChild(h),i.actions.getYears&&i.actions.getYears(a,h,i)}},XW=i=>`${i.charAt(0).toUpperCase()}${i.substring(1,i.length)}`.replace(/\./,""),Xce=(i,e)=>{const t=new Date(`1978-01-0${e+1}T00:00:00.000Z`).toLocaleString(i.settings.lang,{weekday:"short",timeZone:"UTC"});i.locale.weekday.push(XW(t))},Qce=(i,e)=>{const t=new Date(`1978-${e+1<=9?`0${e+1}`:e+1}-01T00:00:00.000Z`).toLocaleString(i.settings.lang,{month:"long",timeZone:"UTC"});i.locale.months.push(XW(t))},QW=i=>{if("multiple"!==i.type)return 0;const e=i.HTMLElement.querySelectorAll(`.${i.CSSClasses.column}`),t=Array.from(e).findIndex(n=>n.classList.contains(`${i.CSSClasses.columnMonth}`));return t>0?t:0},tde=(i,e,t,n,r,s)=>{const a=e.cloneNode(!1);return a.className=`${i.CSSClasses.monthsMonth}${t===s?` ${i.CSSClasses.monthsMonthSelected}`:r?` ${i.CSSClasses.monthsMonthDisabled}`:""}`,a.title=n,a.innerText=`${i.settings.visibility.monthShort?n.substring(0,3):n}`,a.dataset.calendarMonth=String(s),r&&(a.tabIndex=-1),a},eU=(i,e)=>{var t,n;const r=e?.dataset.calendarSelectedMonth?Number(e.dataset.calendarSelectedMonth):i.selectedMonth,s=null==(t=e?.closest(`.${i.CSSClasses.column}`))?void 0:t.querySelector(`.${i.CSSClasses.year}`),a=s?Number(s.dataset.calendarSelectedYear):i.selectedYear;i.currentType="month",u9(i,e),uT(i);const d=null==(n=i.HTMLElement)?void 0:n.querySelector(`.${i.CSSClasses.months}`);if(!i.settings.selection.month||!d)return;d.classList.add(i.CSSClasses.monthsSelecting);const h=i.jumpMonths>1?i.locale.months.map((g,v)=>r-i.jumpMonths*v).concat(i.locale.months.map((g,v)=>r+i.jumpMonths*v)).filter(g=>g>=0&&g<=12):Array.from(Array(12).keys()),p=document.createElement("button");p.type="button";for(let g=0;g<12;g++){const v=i.locale.months[g],y=gi.dateMax.getMonth()+QW(i)&&a>=i.dateMax.getFullYear()||g!==r&&!h.includes(g),C=tde(i,p,r,v,y,g);d.appendChild(C),i.actions.getMonths&&i.actions.getMonths(g,C,i)}},p9=(i,e)=>i&&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(i)][e]:"",hT=(i,e,t)=>i.querySelector(`.${e}${t?` input[name="${t}"]`:""}`),tU=(i,e,t)=>{i.addEventListener("mouseover",()=>e.classList.add(t)),i.addEventListener("mouseout",()=>e.classList.remove(t))},F1=(i,e,t,n)=>{({hours:()=>{i.selectedHours=t},minutes:()=>{i.selectedMinutes=t}})[n](),i.selectedTime=`${i.selectedHours}:${i.selectedMinutes}${i.selectedKeeping?` ${i.selectedKeeping}`:""}`,i.actions.changeTime&&i.actions.changeTime(e,i),i.input&&i.HTMLInputElement&&i.actions.changeToInput&&i.actions.changeToInput(e,i)},iU=(i,e,t,n,r,s)=>{e.addEventListener("input",a=>{const d=a.target,h=Number(d.value),p=h<10?`0${h}`:`${h}`;if("hours"!==r||12!==s)return t.value=p,void F1(i,a,p,r);h0?(t.value=p,i.selectedKeeping="AM",n.innerText=i.selectedKeeping,F1(i,a,p,r)):(0===h?(i.selectedKeeping="AM",n.innerText="AM"):(i.selectedKeeping="PM",n.innerText="PM"),t.value=tE(d.value),F1(i,a,tE(d.value),r))})},nU=(i,e,t,n,r,s)=>{t.addEventListener("change",a=>{const d=a.target,h=Number(d.value),p=h<10?`0${h}`:`${h}`;"hours"===r&&12===s?d.value&&h<=s&&h>0?(d.value=p,e.value=p9(p,i.selectedKeeping),F1(i,a,p,r)):d.value&&h<24&&(h>s||0===h)?(0===h?(i.selectedKeeping="AM",n.innerText="AM"):(i.selectedKeeping="PM",n.innerText="PM"),d.value=tE(d.value),e.value=p,F1(i,a,tE(d.value),r)):d.value=i.selectedHours:d.value&&h<=s&&h>=0?(d.value=p,e.value=p,F1(i,a,p,r)):"hours"===r?d.value=i.selectedHours:"minutes"===r&&(d.value=i.selectedMinutes)})},nde=(i,e,t)=>{const n=24===t?23:t||12,r=hT(e,i.CSSClasses.timeRange,"hours"),s=hT(e,i.CSSClasses.timeRange,"minutes"),a=hT(e,i.CSSClasses.timeHours,"hours"),d=hT(e,i.CSSClasses.timeMinutes,"minutes"),h=e.querySelector(`.${i.CSSClasses.timeKeeping}`);tU(r,a,i.CSSClasses.isFocus),tU(s,d,i.CSSClasses.isFocus),iU(i,r,a,h,"hours",n),iU(i,s,d,h,"minutes",0),nU(i,r,a,h,"hours",n),nU(i,s,d,h,"minutes",59),h&&((i,e,t)=>{e.addEventListener("click",n=>{i.selectedKeeping=e.innerText.includes("AM")?"PM":"AM",e.innerText=i.selectedKeeping,t.value=p9(i.selectedHours,i.selectedKeeping),F1(i,n,i.selectedHours,"hours")})})(i,h,r)},rU=(i,e,t,n)=>``,oU=(i,e,t,n,r,s)=>``,sU=i=>{const e=[...i.locale.weekday];e[0]&&(i.settings.iso8601&&e.push(e.shift()),i.HTMLElement.querySelectorAll(`.${i.CSSClasses.week}`).forEach(t=>((i,e,t)=>{const n=document.createElement("b");e.textContent="";for(let r=0;r{pT.value=!0},check:()=>pT.value},lU=(i,e)=>aU.find(t=>{var n;return"system"!==t&&(null==(n=i.getAttribute(e))?void 0:n.includes(t))}),x1=(i,e)=>{i.dataset.calendarTheme=e},cU=(i,e)=>{var t;if(t=e,x1(i.HTMLElement,t.matches?"dark":"light"),"system"!==i.settings.visibility.theme||pT.check())return;const n=r=>{const s=document.querySelectorAll(`.${i.CSSClasses.calendar}`);s?.forEach(a=>x1(a,r.matches?"dark":"light"))};e.addEventListener?e.addEventListener("change",n):e.addListener(n),pT.set()},ade=(i,e)=>{const t=i.settings.visibility.themeDetect?document.querySelector(i.settings.visibility.themeDetect):null;if(!t)return void cU(i,e);const n=i.settings.visibility.themeDetect.replace(/^.*\[(.+)\]/g,(s,a)=>a),r=lU(t,n);r?(x1(i.HTMLElement,r),((i,e,t)=>{new MutationObserver(n=>{for(let r=0;r{const e={default:()=>{sU(i),dT(i)},multiple:()=>{sU(i),dT(i)},month:()=>eU(i),year:()=>h9(i)};(i=>{if(!aU.includes(i.settings.visibility.theme))throw new Error(hy_incorrectTheme);"not all"!==window.matchMedia("(prefers-color-scheme)").media?{light:()=>x1(i.HTMLElement,"light"),dark:()=>x1(i.HTMLElement,"dark"),system:()=>ade(i,window.matchMedia("(prefers-color-scheme: dark)"))}[i.settings.visibility.theme]():x1(i.HTMLElement,"light")})(i),(i=>{if("define"!==i.settings.lang||!i.locale.weekday[6]||!i.locale.months[11]){if("define"===i.settings.lang)throw new Error(hy_notLocale);i.locale.weekday=[],i.locale.months=[];for(let e=0;e<7;e++)Xce(i,e);for(let e=0;e<12;e++)Qce(i,e)}})(i),u9(i),uT(i),o9(i),(i=>{const e=i.HTMLElement.querySelector(`.${i.CSSClasses.time}`);if(!e)return;const t=!0===i.settings.selection.time?12:i.settings.selection.time,n="range"===i.settings.selection.controlTime,[r,s]=[0,23],[a,d]=[0,59];e.innerHTML=i.sanitizer(`
${rU("hours",i.CSSClasses.timeHours,i.selectedHours,n)}${rU("minutes",i.CSSClasses.timeMinutes,i.selectedMinutes,n)}${12===t?``:""}
${oU("hours",i.CSSClasses.timeRange,r,s,i.settings.selection.stepHours,i.selectedKeeping?p9(i.selectedHours,i.selectedKeeping):i.selectedHours)}${oU("minutes",i.CSSClasses.timeRange,a,d,i.settings.selection.stepMinutes,i.selectedMinutes)}
`),nde(i,e,t)})(i),e[i.currentType]()},xt={self:null,rangeMin:void 0,rangeMax:void 0},dU=()=>{var i;if(null==(i=xt.self)||!i.HTMLElement)return;const{CSSClasses:e}=xt.self;xt.self.HTMLElement.querySelectorAll(`.${xt.self.CSSClasses.dayBtnHover}`).forEach(t=>{var n;t.classList.remove(xt.self.CSSClasses.dayBtnHover),null==(n=t.parentElement)||n.classList.remove(e.dayHoverIntermediate,e.dayHoverFirst,e.dayHoverLast)})},cde=(i,e,t)=>{var n,r,s;if(null==(n=xt.self)||!n.selectedDates)return;const a=Dd(i),{CSSClasses:d}=xt.self;if(null!=(r=xt.self.rangeDisabled)&&r.includes(a))return;const h=null==(s=xt.self.HTMLElement)?void 0:s.querySelectorAll(`[data-calendar-day="${a}"]`);h?.forEach(p=>{var g;p.classList.add(d.dayBtnHover),null==(g=p.parentElement)||g.classList.add(d.dayHoverIntermediate)}),e?.forEach(p=>{var g;return null==(g=p.parentElement)?void 0:g.classList.add(d.dayHoverFirst)}),t?.forEach(p=>{var g;return null==(g=p.parentElement)?void 0:g.classList.add(d.dayHoverLast)})},m9=i=>{var e;if(!i.target||null==(e=xt.self)||!e.selectedDates)return;if(!i.target.closest(`.${xt.self.CSSClasses.days}`))return void dU();const t=i.target.closest("[data-calendar-day]");if(!t)return;const n=t.dataset.calendarDay,r=dn(xt.self.selectedDates[0]),s=dn(n),a=xt.self.HTMLElement.querySelectorAll(`[data-calendar-day="${xt.self.selectedDates[0]}"]`),d=xt.self.HTMLElement.querySelectorAll(`[data-calendar-day="${n}"]`),[h,p]=r{xt.self&&"Escape"===i.key&&(xt.self.selectedDates=[],xt.self.HTMLElement.removeEventListener("mousemove",m9),document.removeEventListener("keydown",g9),py(xt.self))},uU=(i,e)=>{var t;if(e){const n=1===i.selectedDates.length&&i.selectedDates[0].includes(e);i.selectedDates=n&&!i.settings.selection.cancelableDay?[e,e]:n&&i.settings.selection.cancelableDay?[]:i.selectedDates.length>1?[e]:[...i.selectedDates,e],null==(t=i.selectedDates)||t.sort((r,s)=>+new Date(r)-+new Date(s))}i.settings.range.disableGaps&&(xt.rangeMin=xt.rangeMin?xt.rangeMin:i.rangeMin,xt.rangeMax=xt.rangeMax?xt.rangeMax:i.rangeMax),xt.self=i,{set:()=>{i.HTMLElement.addEventListener("mousemove",m9),document.addEventListener("keydown",g9),i.settings.range.disableGaps&&(()=>{var i,e,t;if(null==(e=null==(i=xt.self)?void 0:i.selectedDates)||!e[0]||null==(t=xt.self.rangeDisabled)||!t[0])return;const n=dn(xt.self.selectedDates[0]),[r,s]=xt.self.rangeDisabled.map(a=>dn(a)).reduce(([a,d],h)=>[n>=h?h:a,n{const[n,r]=[i.selectedDates[0],i.selectedDates[i.selectedDates.length-1]];i.selectedDates=i.selectedDates[0]!==i.selectedDates[i.selectedDates.length-1]?i.settings.range.edgesOnly?[n,r]:uy([`${n}:${r}`]):[i.selectedDates[0],i.selectedDates[0]],i.HTMLElement.removeEventListener("mousemove",m9),document.removeEventListener("keydown",g9),i.settings.range.disableGaps&&xt.self&&(xt.self.rangeMin=xt.rangeMin,xt.self.rangeMax=xt.rangeMax)}}[1===i.selectedDates.length?"set":"reset"]()},hU=(i,e,t)=>{if(!e.dataset.calendarDay)return;const n=e.dataset.calendarDay,r=e.classList.contains(i.CSSClasses.dayBtnSelected);if(r&&!i.settings.selection.cancelableDay)return;let s=!0;void 0!==i.toggleSelected&&(s="function"==typeof i.toggleSelected?i.toggleSelected(i):i.toggleSelected),r&&!s||(i.selectedDates=r?i.selectedDates.filter(a=>a!==n):t?[...i.selectedDates,n]:[n])},pU=(i,e,t,n,r)=>{const s=i.HTMLElement.querySelectorAll(`.${i.CSSClasses.column}`),a=Array.from(s).findIndex(h=>h.classList.contains(e)),d=Number(s[a].querySelector(`.${t}`).getAttribute(r));return"month"===i.currentType&&a>=0?n-a:"year"===i.currentType&&i.selectedYear!==d?n-1:n},mU=(i,e,t,n)=>{if(!i.settings.selection[t])return;const r=e.target,s=g=>r.closest(`.${g}`),a=s(n.header),d=s(n.item),h=s(i.CSSClasses.grid),p=s(i.CSSClasses.column);i.currentType!==t&&a?{year:()=>h9(i,r),month:()=>eU(i,r)}[t]():d?((i,e,t,n,r)=>{const s={year:()=>{var a,d;return null==(d=(a=i.actions).clickYear)?void 0:d.call(a,e,i)},month:()=>{var a,d;return null==(d=(a=i.actions).clickMonth)?void 0:d.call(a,e,i)}};({year:()=>{if("multiple"===i.type){const a=pU(i,i.CSSClasses.columnYear,i.CSSClasses.year,Number(r.dataset.calendarYear),"data-calendar-selected-year"),d=i.selectedMonthi.dateMax.getMonth()&&a>=i.dateMax.getFullYear(),p=ai.dateMax.getFullYear();d||p?(i.selectedYear=i.dateMin.getFullYear(),i.selectedMonth=i.dateMin.getMonth()):h||g?(i.selectedYear=i.dateMax.getFullYear(),i.selectedMonth=i.dateMax.getMonth()):i.selectedYear=a}else i.selectedYear=Number(r.dataset.calendarYear)},month:()=>{if("multiple"===i.type){const a=pU(i,i.CSSClasses.columnMonth,i.CSSClasses.month,Number(r.dataset.calendarMonth),"data-calendar-selected-month"),d=r.closest(`.${n.column}`).querySelector(`.${i.CSSClasses.year}`);i.selectedYear=Number(d.dataset.calendarSelectedYear);const h=ai.dateMax.getMonth()&&i.selectedYear>=i.dateMax.getFullYear();i.selectedMonth=h?i.dateMin.getMonth():p?i.dateMax.getMonth():a}else i.selectedMonth=Number(r.dataset.calendarMonth)}})[t](),s[t](),i.currentType=i.type,py(i)})(i,e,t,n,d):(i.currentType===t&&a||"multiple"===i.type&&i.currentType===t&&h&&!p)&&(i.currentType=i.type,py(i))},f9=i=>{const e=t=>{((i,e)=>{const t=e.target.closest(`.${i.CSSClasses.arrow}`);t&&(["default","multiple"].includes(i.currentType)?d9(i,t.dataset.calendarArrow):"year"===i.currentType&&void 0!==i.viewYear&&(i.viewYear+={prev:-15,next:15}[t.dataset.calendarArrow],h9(i,e.target)),i.actions.clickArrow&&i.actions.clickArrow(e,i))})(i,t),((i,e)=>{var t;if(!i.settings.visibility.weekNumbers||!i.actions.clickWeekNumber)return;const n=e.target.closest(`.${i.CSSClasses.weekNumber}`),r=null==(t=i.HTMLElement)?void 0:t.querySelectorAll("[data-calendar-week-number]");if(!n||!r)return;const s=Number(n.innerText),a=Number(n.dataset.calendarYearWeek),d=Array.from(r).filter(h=>Number(h.dataset.calendarWeekNumber)===s);i.actions.clickWeekNumber(e,s,d,a,i)})(i,t),((i,e)=>{var t;const n=e.target,r=h=>n.closest(`.${h}`),s=r(i.CSSClasses.dayBtn);if(!i.settings.selection.day||!["single","multiple","multiple-ranged"].includes(i.settings.selection.day)||!s)return;({single:()=>hU(i,s,!1),multiple:()=>hU(i,s,!0),"multiple-ranged":()=>uU(i,s.dataset.calendarDay)})[i.settings.selection.day](),null==(t=i.selectedDates)||t.sort((h,p)=>+new Date(h)-+new Date(p)),i.actions.clickDay&&i.actions.clickDay(e,i),i.input&&i.HTMLInputElement&&i.HTMLElement&&i.actions.changeToInput&&i.actions.changeToInput(e,i);const a=r(i.CSSClasses.dayBtnPrev),d=r(i.CSSClasses.dayBtnNext);({prev:()=>d9(i,"prev"),next:()=>d9(i,"next"),default:()=>dT(i)})[a?"prev":d?"next":"default"]()})(i,t),mU(i,t,"month",{header:i.CSSClasses.month,item:i.CSSClasses.monthsMonth,column:i.CSSClasses.columnMonth}),mU(i,t,"year",{header:i.CSSClasses.year,item:i.CSSClasses.yearsYear,column:i.CSSClasses.columnYear})};return i.HTMLElement.addEventListener("click",e),()=>i.HTMLElement.removeEventListener("click",e)},gU=(i,{year:e,month:t,dates:n,holidays:r,time:s}={})=>{var a;const d=qW({},i.settings.selected);i.settings.selected.year=e?d.year:i.selectedYear,i.settings.selected.month=t?d.month:i.selectedMonth,i.settings.selected.holidays=r?d.holidays:i.selectedHolidays,i.settings.selected.time=s?d.time:i.selectedTime,i.settings.selected.dates="only-first"===n&&null!=(a=i.selectedDates)&&a[0]?[i.selectedDates[0]]:!0===n?d.dates:i.selectedDates,r9(i),py(i),i.settings.selected=d,"multiple-ranged"===i.settings.selection.day&&n&&uU(i)},fU=(i,e=!0)=>{i.isInputInit=!0;const t=document.createElement("div");return t.className=`${i.CSSClasses.calendar} ${i.CSSClasses.calendarToInput} ${i.CSSClasses.calendarHidden}`,i.HTMLElement=t,document.body.appendChild(i.HTMLElement),i.HTMLElement.style.visibility="hidden",e&&queueMicrotask(()=>{l9(i.HTMLInputElement,t,i.settings.visibility.positionToInput,i.CSSClasses),i.HTMLElement.style.visibility="visible",i.show()}),gU(i,{year:!0,month:!0,dates:!0,holidays:!0,time:!0}),i.actions.initCalendar&&i.actions.initCalendar(i),f9(i)},vU=i=>{const e=[];i.HTMLInputElement=i.HTMLElement;const t=()=>l9(i.HTMLInputElement,i.HTMLElement,i.settings.visibility.positionToInput,i.CSSClasses),n=a=>{"Escape"===a.key&&(i?.HTMLInputElement&&i?.HTMLElement&&i.hide(),document.removeEventListener("keydown",n))},r=a=>{var d;i&&a.target!==i.HTMLInputElement&&(null==(d=i.HTMLElement)||!d.contains(a.target))&&(i.HTMLInputElement&&i.HTMLElement&&i.hide(),window.removeEventListener("resize",t),document.removeEventListener("click",r,{capture:!0}))},s=()=>{i.isInputInit?(l9(i.HTMLInputElement,i.HTMLElement,i.settings.visibility.positionToInput,i.CSSClasses),i.HTMLElement.style.visibility="visible",i.show()):e.push(fU(i)),window.addEventListener("resize",t),document.addEventListener("click",r,{capture:!0}),document.addEventListener("keydown",n)};return i.HTMLInputElement.addEventListener("click",s),i.HTMLInputElement.addEventListener("focus",s),()=>{e.forEach(a=>a())}};class bU extends vce{constructor(e,t){if(super(),It(this,"init",()=>{return(r=this).HTMLOriginalElement=r.HTMLElement.cloneNode(!0),r.isInit=!0,r.input?vU(r):(r9(r),py(r),r.actions.initCalendar&&r.actions.initCalendar(r),f9(r));var r}),It(this,"update",r=>((i,{year:e,month:t,dates:n,holidays:r,time:s}={})=>{if(!i.isInit)throw new Error(hy_notInit);i.input&&!i.isInputInit&&fU(i,!1),gU(i,{year:e,month:t,dates:n,holidays:r,time:s}),i.actions.updateCalendar&&i.actions.updateCalendar(i)})(this,r)),It(this,"destroy",()=>(i=>{var e,t,n,r,s,a;if(!i.isInit)throw new Error(hy_notInit);i.input?(null==(t=null==(e=i.HTMLElement)?void 0:e.parentElement)||t.removeChild(i.HTMLElement),null==(r=null==(n=i.HTMLInputElement)?void 0:n.replaceWith)||r.call(n,i.HTMLOriginalElement),i.HTMLInputElement=void 0):null==(a=null==(s=i.HTMLElement)?void 0:s.replaceWith)||a.call(s,i.HTMLOriginalElement),i.HTMLElement=i.HTMLOriginalElement,i.actions.destroyCalendar&&i.actions.destroyCalendar(i)})(this)),It(this,"show",()=>{var r;(r=this).currentType?(r.HTMLElement.classList.remove(r.CSSClasses.calendarHidden),r.actions.showCalendar&&r.actions.showCalendar(r)):r.HTMLElement.click()}),It(this,"hide",()=>{var r;(r=this).currentType&&(r.HTMLElement.classList.add(r.CSSClasses.calendarHidden),r.actions.hideCalendar&&r.actions.hideCalendar(r))}),this.HTMLElement="string"==typeof e?document.querySelector(e):e,!this.HTMLElement)throw new Error(hy_notFoundSelector(e));if(!t)return;const n=(r,s)=>{Object.keys(s).forEach(a=>{"object"!=typeof r[a]||"object"!=typeof s[a]||s[a]instanceof Date?r[a]=s[a]:n(r[a],s[a])})};n(this,t)}}class yU{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 br}get gridOptions(){return this.grid?.getOptions()??{}}get columnFilter(){return this.columnDef?.filter||{}}get currentDateOrDates(){return this._currentDateOrDates}get defaultOperator(){return"compound"===this.inputFilterType?te.empty:this.gridOptions.defaultFilterRangeOperator||te.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 t="compound"===this.inputFilterType?Array.isArray(this.searchTerms)&&this.searchTerms.length>=0?this.searchTerms[0]:"":this.searchTerms;this._filterElm=this.createDomFilterElement(t),this.updateFilterStyle(this.searchTerms.length>0),this._selectOperatorElm&&this._bindEventService.bind(this._selectOperatorElm,"change",this.onTriggerEvent.bind(this)),this._bindEventService.bind(document.body,"keydown",n=>{("Escape"===n.key||"Tab"===n.key)&&this.hide()}),this._bindEventService.bind(this._dateInputElm,"keydown",n=>{"Backspace"===n.key&&this.clear(!0,!1)})}clear(e=!0,t=!0){this.calendarInstance&&(this._clearFilterTriggered=t,this._shouldTriggerQuery=e,this._currentValue="",this.searchTerms=[],this._currentDateStrings=[],this._selectOperatorElm&&(this._selectOperatorElm.selectedIndex=0),this.calendarInstance&&I6(this.calendarInstance)),this.onTriggerEvent(new Event("keyup")),this.updateFilterStyle(!1)}destroy(){this._bindEventService.unbindAll(),this.calendarInstance?.destroy(),ui(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,t,n=!1){let r;"compound"===this.inputFilterType?r=Array.isArray(e)?e[0]:e:"string"==typeof e||Array.isArray(e)&&"string"==typeof e[0]&&e[0].indexOf("..")>0?r="string"==typeof e?[e]:e[0].split(".."):Array.isArray(e)&&(r=e),this.calendarInstance&&void 0!==r&&(V_(this.columnFilter,this._dateInputElm,this.calendarInstance,{columnDef:this.columnDef,newVal:r,updatePickerUI:!0}),this._currentDateOrDates=e&&r?r:void 0);const s=this.getValues()||[],a=Array.isArray(s)?s:[s];if(this.updateFilterStyle(a.length>0),this.operator=t||this.defaultOperator,t&&this._selectOperatorElm){const d=Qb(this.operator);this._selectOperatorElm.value=d}n&&this.callback(void 0,{columnDef:this.columnDef,searchTerms:a,operator:this.operator,shouldTriggerQuery:!0})}buildDatePickerInput(e){const t=this.columnDef?.id??"",n=this.columnFilter.type||this.columnDef.type||M.dateIso,r=this.columnDef.outputType||this.columnFilter.type||this.columnDef.type||M.dateUtc,s=ea(r),a=this.columnFilter.type||this.columnDef.type||M.dateIso;s&&"range"!==this.inputFilterType&&("ISO8601"===s||s.toLowerCase().includes("h"))&&(this.hasTimePicker=!0);const d=ea(this.hasTimePicker?M.dateTimeIsoAM_PM:M.dateIso),h=(this.filterOptions?.locale??this.translaterService?.getCurrentLanguage?.())||this.gridOptions.locale||"en";let p;"compound"===this.inputFilterType?e&&(p=e,this._currentDateOrDates=e):("string"==typeof e||Array.isArray(e)&&"string"==typeof e[0]&&e[0].indexOf("..")>0?p="string"==typeof e?[e]:e[0].split(".."):Array.isArray(e)&&(p=e),Array.isArray(p)&&(this._currentDateOrDates=p,this._currentDateStrings=p.map(y=>Ed(y,void 0,a))));const g={input:!0,jumpToSelectedDate:!0,type:"range"===this.inputFilterType?"multiple":"default",sanitizer:y=>this.grid.sanitizeHtmlString(y),toggleSelected:!1,actions:{clickDay:y=>{this._lastClickIsDate=!0},changeToInput:(y,C)=>{if(C.HTMLInputElement){let k=[],E="",x="";if(C.selectedDates[1]){C.selectedDates.sort((I,L)=>+new Date(I)-+new Date(L)),E=C.selectedDates[0],x=C.selectedDates[C.selectedDates.length-1];const S=vr(C.selectedDates[0],s,"en-US"),D=vr(x,s,"en-US");C.HTMLInputElement.value=`${S} \u2014 ${D}`,k=[E,x]}else C.selectedDates[0]?(E=C.selectedDates[0],C.HTMLInputElement.value=Ed(E,M.dateIso,r),k=C.selectedDates):C.HTMLInputElement.value="";if(this.hasTimePicker&&E){const S=$A(E,d);S.setHours(+(C.selectedHours||0)),S.setMinutes(+(C.selectedMinutes||0)),C.HTMLInputElement.value=Ed(S,void 0,r),k=[S]}if("compound"===this.inputFilterType?this._currentValue=Ed(k[0],void 0,n):Array.isArray(k)&&(this._currentDateStrings=k.map(S=>Ed(S,void 0,n)),this._currentValue=this._currentDateStrings.join("..")),this._currentDateOrDates=k.map(S=>S instanceof Date?S:$A(S,d)),this._currentValue){const S=this.hasTimePicker?new Event("keyup"):void 0;this.onTriggerEvent(S)}"range"===this.inputFilterType&&C.selectedDates.length<2&&(this._lastClickIsDate=!1),this._lastClickIsDate&&(C.hide(),this._lastClickIsDate=!1)}}},settings:{lang:h,iso8601:!1,visibility:{theme:this.gridOptions?.darkMode?"dark":"light",positionToInput:"auto",weekend:!1}}};"range"===this.inputFilterType&&(g.type="multiple",g.months=2,g.jumpMonths=2,g.settings={...g.settings,range:{edgesOnly:!0},selection:{day:"multiple-ranged"},visibility:{...g.settings?.visibility,daysOutside:!1}}),this.hasTimePicker&&(g.settings.selection??={},g.settings.selection.time=24),this._pickerOptions=en(!0,{},g,{settings:this.filterOptions});let v=this.gridOptions?.defaultFilterPlaceholder??"";this.columnFilter?.placeholder&&(v=this.columnFilter.placeholder),this._dateInputElm=O("input",{type:"text",className:"form-control date-picker",placeholder:v,readOnly:!0,dataset:{input:"",columnid:`${t}`}}),this.calendarInstance=new bU(this._dateInputElm,this._pickerOptions),this.calendarInstance.init(),this._pickerOptions.settings?.selected?.dates&&(p=this._pickerOptions.settings.selected.dates),p&&V_(this.columnFilter,this._dateInputElm,this.calendarInstance,{columnDef:this.columnDef,oldVal:void 0,newVal:p,updatePickerUI:!1})}getOperatorOptionValues(){let e;return e=this.columnFilter?.compoundOperatorList?this.columnFilter.compoundOperatorList:R6(this.gridOptions,this.translaterService),P6(this.gridOptions,e,"numeric"),e}createDomFilterElement(e){const t=this.columnDef?.id??"";if(ui(this.filterContainerElm),this.buildDatePickerInput(e),"range"===this.inputFilterType){const n=O("div",{className:`date-picker form-group search-filter slick-filter filter-${t}`});return Array.isArray(e)&&e.length>0&&""!==e[0]&&(this._currentDateOrDates=e,this._currentValue=e[0]),n.appendChild(this._dateInputElm),n&&this.filterContainerElm.appendChild(n),n}{this._selectOperatorElm=L6(this.getOperatorOptionValues(),this.grid);const n=O("div",{className:`date-picker form-group search-filter filter-${t}`}),r=O("div",{className:"input-group date-picker"},n);if(O("div",{className:"input-group-addon input-group-prepend operator"},r).appendChild(this._selectOperatorElm),r.appendChild(this._dateInputElm),this.operator){const a=Qb(this.operator);this._selectOperatorElm.value=a}return this._currentDateOrDates=e,this._currentValue=e,n&&this.filterContainerElm.appendChild(n),n}}onTriggerEvent(e){if(this._clearFilterTriggered)this.callback(e,{columnDef:this.columnDef,clearFilterTriggered:this._clearFilterTriggered,shouldTriggerQuery:this._shouldTriggerQuery}),this.updateFilterStyle(!1);else if("range"===this.inputFilterType){const t=this._currentDateStrings?this._currentDateStrings:[this._currentValue];this.updateFilterStyle(t.length>0),this.callback(e,{columnDef:this.columnDef,searchTerms:t,operator:this.operator||"",shouldTriggerQuery:this._shouldTriggerQuery})}else if("compound"===this.inputFilterType&&this._selectOperatorElm){const t=this._selectOperatorElm.value;this.updateFilterStyle(!!this._currentValue);const n=this.columnFilter.skipCompoundOperatorFilterWithNullInput??this.gridOptions.skipCompoundOperatorFilterWithNullInput??void 0===this.gridOptions.skipCompoundOperatorFilterWithNullInput,r=n&&ri(this._currentDateOrDates)||""===this._currentDateOrDates&&ri(this._lastSearchValue);(!n||!n||r)&&this.callback(e,{columnDef:this.columnDef,searchTerms:this._currentValue?[this._currentValue]:null,operator:t||"",shouldTriggerQuery:this._shouldTriggerQuery})}this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0,this._lastSearchValue=this._currentValue}updateFilterStyle(e){e?this._filterElm.classList.add("filled"):this._filterElm.classList.remove("filled")}}class CU{constructor(e){this.translaterService=e}filterCollection(e,t,n=D_.chain){let r=[];return Array.isArray(t)?(r=n===D_.merge?[]:[...e],t.forEach(s=>{if(n===D_.merge){const a=this.singleFilterCollection(e,s);r=Z$([...r,...a])}else r=this.singleFilterCollection(r,s)})):r=this.singleFilterCollection(e,t),r}preParseByMutationDateItems(e,t,n){const r=[];t.getColumns().forEach(s=>{const a=this.getParseDateInfo(s,n);a&&r.push(a)}),e.forEach(s=>{r.forEach(({columnId:a,dateFormat:d,queryFieldName:h})=>{this.reassignDateWhenValid(s,a,d,h)})})}parseSingleDateItem(e,t,n){n&&t.getColumns().forEach(r=>{const s=this.getParseDateInfo(r,n);s&&this.reassignDateWhenValid(e,r.id,s.dateFormat,s.queryFieldName)})}singleFilterCollection(e,t){let n=[];if(t){const r=t.property,s=t.operator||te.equal,a=typeof t.value>"u"?"":t.value;switch(s){case te.equal:n=r?e.filter(d=>d[r]===a):e.filter(d=>d===a);break;case te.contains:n=r?e.filter(d=>-1!==d[r]?.toString().indexOf(a.toString())):e.filter(d=>null!=d&&-1!==d.toString().indexOf(a.toString()));break;case te.notContains:n=r?e.filter(d=>-1===d[r]?.toString().indexOf(a.toString())):e.filter(d=>null!=d&&-1===d.toString().indexOf(a.toString()));break;case te.notEqual:default:n=r?e.filter(d=>d[r]!==a):e.filter(d=>d!==a)}}return n}sortCollection(e,t,n,r){if(r&&(!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 s=[];if(n)if(Array.isArray(n))s=t.sort((a,d)=>{for(let h=0,p=n.length;h{const v=r?this.translaterService?.translate&&this.translaterService.translate(p[a]||" "):p[a],y=r?this.translaterService?.translate&&this.translaterService.translate(g[a]||" "):g[a],C=ry(h,v,y,d,e);return C!==Li.neutral?C:Li.neutral})}else if(n&&!n.property){const a=n.sortDesc?Li.desc:Li.asc,d=n?.fieldType??e?.type??M.string;s=t.sort((h,p)=>{const g=r?this.translaterService?.translate&&this.translaterService.translate(h||" "):h,v=r?this.translaterService?.translate&&this.translaterService.translate(p||" "):p,y=ry(d,g,v,a,e);return y!==Li.neutral?y:Li.neutral})}return s}getParseDateInfo(e,t){const n=e.type||M.string,r=ea(n);if(ih(n)&&t){const s="string"==typeof t?`${t}${e.id}`:`${e.id}`;return{columnId:e.id,dateFormat:r,queryFieldName:s}}}reassignDateWhenValid(e,t,n,r){const s=Fd(e[t],n,!1);s&&(e[r]=s)}}function wU(i,e,t,n,r=!1,s,a){const d=t?.id??"",h=n.getOptions(),p=("editor"===i?t?.editor:t?.filter)??{},v=(p?.collectionOptions??{})?.separatorBetweenTextLabels??"",y=p?.enableTranslateLabel??!1,C=h?.enableTranslate??!1,k=p?.enableRenderHtml??!1,E=p?.customStructure?.label??"label",x=p?.customStructure?.labelPrefix??"labelPrefix",S=p?.customStructure?.labelSuffix??"labelSuffix",D=p?.customStructure?.optionLabel??"value",I=p?.customStructure?.value??"value",L=O("select",{className:"ms-filter search-filter"}),R="filter"===i?["search-filter",`filter-${d}`]:["select-editor",`editor-${d}`];L.classList.add(...R),L.multiple=r;const W=[];let re=!1;return Array.isArray(e)&&(e.every(ie=>"number"==typeof ie||"string"==typeof ie)?e.forEach(ie=>{const se={text:String(ie),value:ie};"filter"===i&&Array.isArray(a)&&(se.selected=a.findIndex(Se=>Se===ie)>=0),W.push(se),(se.selected&&r||se.selected&&!r&&""!==ie)&&(re=!0)}):e.forEach(ie=>{if(void 0===ie||"object"==typeof ie&&void 0===ie[E]&&void 0===ie.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 se=ie.labelKey||ie[E],Se=(ie.labelKey||y&&s)&&se&&C?s?.translate(se||" "):se;let Ie=ie[x]||"",tt=ie[S]||"",mt=ie.hasOwnProperty(D)?ie[D]:"";mt?.toString&&(mt=mt.toString().replace(/"/g,"'")),Ie=y&&s&&Ie&&"string"==typeof Ie?s.translate(Ie||" "):Ie,tt=y&&s&&tt&&"string"==typeof tt?s.translate(tt||" "):tt,mt=y&&s&&mt&&"string"==typeof mt?s.translate(mt||" "):mt;let Kt=[Ie,"string"==typeof Se||"number"==typeof Se?Se.toString():Se,tt].filter(yt=>yt).join(v);const Et={text:"",value:""};k&&(Kt=n.sanitizeHtmlString(Kt)),Et.text=Kt;let Ae=ie[I];null==Ae&&(Ae=""),"filter"===i&&Array.isArray(a)&&(Et.selected=a.findIndex(yt=>`${yt}`==`${ie[I]}`)>=0),Et.value=`${Ae??""}`,W.push(Et),(Et.selected&&r||Et.selected&&!r&&""!==ie[I])&&(re=!0)})),{selectElement:L,dataCollection:W,hasFoundSearchTerm:re}}class fde{constructor(e,t,n){this.sharedService=e,this.backendUtilities=t,this.translaterService=n}getPickerTitleOutputString(e,t){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 n="";const r=this.sharedService.gridOptions?.[t]??{},s=this.sharedService.gridOptions?.enableTranslate??!1,a=this.sharedService.gridOptions?.locales??oe.locales,d=r?.[e],h=r?.[`${e}Key`],g=Fl(this.sharedService.gridOptions);if(h&&this.translaterService?.translate)n=this.translaterService.translate(h||" ");else switch(e){case"commandTitle":n=d||s&&this.translaterService?.getCurrentLanguage&&this.translaterService?.translate(`${g}COMMANDS`)||a?.TEXT_COMMANDS;break;case"columnTitle":n=d||s&&this.translaterService?.getCurrentLanguage&&this.translaterService?.translate(`${g}COLUMNS`)||a?.TEXT_COLUMNS;break;case"forceFitTitle":n=d||s&&this.translaterService?.getCurrentLanguage&&this.translaterService?.translate(`${g}FORCE_FIT_COLUMNS`)||a?.TEXT_FORCE_FIT_COLUMNS;break;case"syncResizeTitle":n=d||s&&this.translaterService?.getCurrentLanguage&&this.translaterService?.translate(`${g}SYNCHRONOUS_RESIZE`)||a?.TEXT_SYNCHRONOUS_RESIZE;break;default:n=d}return n}readjustFrozenColumnIndexWhenNeeded(e,t,n){if(e>=0){const r=n.findIndex(s=>s.id===this.sharedService.frozenVisibleColumnId);r>=0&&r!==e&&(this.sharedService.gridOptions.frozenColumn=r,this.sharedService.slickGrid.setOptions({frozenColumn:r})),Array.isArray(n)&&Array.isArray(t)&&n.length!==t.length&&this.sharedService.slickGrid.setColumns(n)}}refreshBackendDataset(e){let t=this.sharedService.gridOptions;e&&(t={...this.sharedService.gridOptions,...e},this.sharedService.gridOptions=t),this.backendUtilities?.refreshBackendDataset(t)}runOverrideFunctionWhenExists(e,t){return"function"!=typeof e||!!e.call(this,t)}sortItems(e,t){Array.isArray(e)&&e.sort((n,r)=>n&&r&&n.hasOwnProperty(t)&&r.hasOwnProperty(t)?n[t]-r[t]:0)}translateItems(e,t,n){if(Array.isArray(e))for(const r of e)r.hasOwnProperty(t)&&(r[n]=this.translaterService?.translate?.(r[t]))}translateMenuItemsFromTitleKey(e,t="commandItems"){for(const n of e)"object"==typeof n&&(n.titleKey&&(n.title=this.translateWhenEnabledAndServiceExist(`${n.titleKey}`,`TEXT_${n.titleKey}`)),n.subMenuTitleKey&&(n.subMenuTitle=this.translateWhenEnabledAndServiceExist(`${n.subMenuTitleKey}`,`TEXT_${n.subMenuTitleKey}`))),Array.isArray(n?.[t])&&this.translateMenuItemsFromTitleKey(n?.[t])}translateWhenEnabledAndServiceExist(e,t,n){let r="";const s=this.sharedService?.gridOptions,a=s?.locales??oe.locales;return r=n||(s.enableTranslate&&this.translaterService?.translate?this.translaterService.translate(e||" "):t in a?a[t]:t),r}}class vde{constructor(e){this.pluginName="AutoTooltips",this._defaults={enableForCells:!0,enableForHeaderCells:!1,maxToolTipLength:void 0,replaceExisting:!0},this._eventHandler=new Pi,this._addonOptions=e}get addonOptions(){return this._addonOptions}get eventHandler(){return this._eventHandler}init(e){this._addonOptions={...this._defaults,...this.addonOptions},this._grid=e,this._addonOptions.enableForCells&&this._eventHandler.subscribe(this._grid.onMouseEnter,this.handleMouseEnter.bind(this)),this._addonOptions.enableForHeaderCells&&this._eventHandler.subscribe(this._grid.onHeaderMouseEnter,this.handleHeaderMouseEnter.bind(this))}destroy(){this.dispose()}dispose(){this._eventHandler?.unsubscribeAll()}handleMouseEnter(e){const t=this._grid.getCellFromEvent(e);if(t){let r,n=this._grid.getCellNode(t.row,t.cell);this._addonOptions&&n&&(!n.title||this._addonOptions?.replaceExisting)&&(n.clientWidththis._addonOptions?.maxToolTipLength&&(r=r.substring(0,this._addonOptions.maxToolTipLength-3)+"...")):r="",n.title=r),n=null}}handleHeaderMouseEnter(e,t){const n=t.column;let r;const s=e.target;if(s&&(r=s.closest(".slick-header-column"),r&&!n?.toolTip)){const a=s.clientWidth{this._addonOptions&&"function"==typeof this._addonOptions.onCopyCells&&this._addonOptions.onCopyCells(n,r)}),this._eventHandler.subscribe(this._cellExternalCopyManagerPlugin.onCopyCancelled,(n,r)=>{this._addonOptions&&"function"==typeof this._addonOptions.onCopyCancelled&&this._addonOptions.onCopyCancelled(n,r)}),this._eventHandler.subscribe(this._cellExternalCopyManagerPlugin.onPasteCells,(n,r)=>{this._addonOptions&&"function"==typeof this._addonOptions.onPasteCells&&this._addonOptions.onPasteCells(n,r)})}dispose(){this._eventHandler.unsubscribeAll(),this._bindingEventService.unbindAll(),this._cellSelectionModel?.dispose(),this._cellExternalCopyManagerPlugin?.dispose()}createUndoRedoBuffer(){let e=0;this._commandQueue=[],this._undoRedoBuffer={queueAndExecuteCommand:t=>{this._commandQueue[e]=t,e++,t.execute()},undo:()=>{if(0===e)return;e--;const t=this._commandQueue[e];t&&Fc.cancelCurrentEdit()&&t.undo()},redo:()=>{if(e>=this._commandQueue.length)return;const t=this._commandQueue[e];e++,t&&Fc.cancelCurrentEdit()&&t.execute()}}}getDefaultOptions(){let e=0;return{clipboardCommandHandler:t=>{this._undoRedoBuffer.queueAndExecuteCommand.call(this._undoRedoBuffer,t)},dataItemColumnValueExtractor:(t,n,r=0,s=0)=>{const a=this._grid.getActiveCell(),d=this._grid.getCellEditor()&&a?.row===r&&a?.cell===s,h=this.addonOptions?.copyActiveEditorCell||!1;if(!this.gridOptions.editable||!n.editor||!d||h){const p=void 0!==n.exportWithFormatter?n.exportWithFormatter:this.gridOptions.textExportOptions?.exportWithFormatter;if(n.formatter&&p){const g=n.formatter(r,s,t[n.field],n,t,this._grid),v=C1(g)?g:g.html||g.text;if(n.sanitizeDataExport||this.gridOptions.textExportOptions?.sanitizeDataExport){return _n((v instanceof HTMLElement?v.innerHTML:v)??"")}return g}}return null},readOnlyMode:!1,includeHeaderWhenCopying:!1,newRowCreator:t=>{for(let n=0;n{};class wde{constructor(){this.pluginName="CellExternalCopyManager",this._bodyElement=document.body,this._copiedCellStyle="copied",this._copiedCellStyleLayerKey="copy-manager",this._copiedRanges=null,this._dataWrapper=new yde,this.onCopyCells=new me("onCopyCells"),this.onCopyCancelled=new me("onCopyCancelled"),this.onPasteCells=new me("onPasteCells"),this.onBeforePasteCell=new me("onBeforePasteCell"),this._eventHandler=new Pi}get addonOptions(){return this._addonOptions}get eventHandler(){return this._eventHandler}init(e,t){this._grid=e,this._dataWrapper.init(e),this._addonOptions={...this._addonOptions,...t},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 n=e.getPubSubService();n&&U.addSlickEventPubSubWhenDefined(n,this),this._eventHandler.subscribe(this._grid.onKeyDown,this.handleKeyDown.bind(this));const r=e.getSelectionModel();if(!r)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())");this._eventHandler.subscribe(r.onSelectedRangesChanged,()=>{!this._grid.getEditorLock().isActive()&&!document.activeElement?.classList.contains("slick-filter")&&this._grid.focus()}),e&&"function"==typeof this._addonOptions?.onBeforePasteCell&&this._eventHandler.subscribe(this.onBeforePasteCell,(s,a)=>{const d=e.getColumns()[a.cell],h={row:a.row,cell:a.cell,dataView:e.getData(),grid:e,columnDef:d,dataContext:e.getDataItem(a.row)};return this._addonOptions.onBeforePasteCell?.(s,h)})}dispose(){this._eventHandler.unsubscribeAll()}clearCopySelection(){this._grid.removeCellCssStyles(this._copiedCellStyleLayerKey)}getHeaderValueForColumn(e){if("function"==typeof this._addonOptions.headerColumnValueExtractor){const t=Un(this._addonOptions.headerColumnValueExtractor(e),"innerHTML");if(t)return _n(t)}return Un(e.name||"","innerHTML")}getDataItemValueForColumn(e,t,n,r,s){if("function"==typeof this._addonOptions.dataItemColumnValueExtractor){const d=this._addonOptions.dataItemColumnValueExtractor(e,t,n,r);if(d)return d instanceof HTMLElement?_n(d.innerHTML):d}let a="";if(t)if(t.editorClass){const d=document.createElement("p"),h=new t.editorClass({container:d,column:t,event:s,position:{top:0,left:0},gridPosition:{top:0,left:0},grid:this._grid,cancelChanges:mT,commitChanges:mT});h.loadValue(e),a=h.serializeValue(),h.destroy(),d.remove()}else a=e[t.field||""];return a}setDataItemValueForColumn(e,t,n){if(!t?.denyPaste){if(this._addonOptions.dataItemColumnValueSetter){const r=this._addonOptions.dataItemColumnValueSetter(e,t,n);if(!0!==r)return r}if(t.editorClass){const r=document.createElement("div"),s=new t.editorClass({container:r,column:t,event:null,position:{top:0,left:0},gridPosition:{top:0,left:0},grid:this._grid,cancelChanges:mT,commitChanges:mT});s.loadValue(e);const a=s.validate(void 0,n);if(!a.valid){const d=this._grid.getActiveCell();this._grid.onValidationError.notify({editor:s,cellNode:this._grid.getActiveCellNode(),validationResults:a,row:d?.row,cell:d?.cell,column:t,grid:this._grid})}s.applyValue(e,n),s.destroy(),r.remove()}else e[t.field]=n}}setIncludeHeaderWhenCopying(e){this._addonOptions.includeHeaderWhenCopying=e}createTextBox(e){const n=O("textarea",{value:e,style:{position:"absolute",opacity:"0",top:`${document.documentElement.scrollTop||document.body.scrollTop}px`}},this._bodyElement);return n.select(),n}decodeTabularData(e,t){const n=e.getColumns(),s=t.value.split(/[\n\f\r](?=(?:[^"]*"[^"]*")*[^"]*$)/);""===s[s.length-1]&&s.pop();let a=0;const d=[];this._bodyElement.removeChild(t);for(const I of s)I.startsWith('"')&&I.endsWith('"')?d[a++]=[I.replaceAll("\n",this._addonOptions.replaceNewlinesWith||"\n").replaceAll("\r","").replaceAll('"',this._addonOptions.removeDoubleQuotesOnPaste?"":'"')]:d[a++]=I.split("\t");const h=this._grid.getActiveCell(),p=this._grid.getSelectionModel()?.getSelectedRanges(),g=p?.length?p[0]:null;let v,y;if(g)v=g.fromRow,y=g.fromCell;else{if(!h)return;v=h.row,y=h.cell}let C=!1,k=d.length,E=d.length?d[0].length:0;1===d.length&&1===d[0].length&&g&&(C=!0,k=g.toRow-g.fromRow+1,E=g.toCell-g.fromCell+1);const x=this._dataWrapper.getDataLength()-v;if(xthis._dataWrapper.getDataLength()&&"function"==typeof this._addonOptions.newRowCreator){const I=v+k-this._dataWrapper.getDataLength();this._addonOptions.newRowCreator(I)}const D={isClipboardCommand:!0,clippedRange:d,oldValues:[],cellExternalCopyManager:this,_options:this._addonOptions,setDataItemValueForColumn:this.setDataItemValueForColumn,markCopySelection:this.markCopySelection,oneCellToMultiple:C,activeRow:v,activeCell:y,destH:k,destW:E,maxDestY:this._dataWrapper.getDataLength(),maxDestX:this._grid.getColumns().length,h:0,w:0,execute:()=>{D.h=0;for(let L=0;L{for(let L=0;L0&&!n[y].hidden&&v.push(this.getHeaderValueForColumn(n[y]));d.push(v.join("\t"))}for(let v=a.fromCell;v0&&!n[v].hidden&&p.push(this.getDataItemValueForColumn(g,n[v],h,v,e));d.push(p.join("\t"))}r+=d.join("\r\n")+"\r\n"}if(window.clipboardData)return window.clipboardData.setData("Text",r),!0;{const s=document.activeElement,a=this.createTextBox(r);if(a.focus(),window.setTimeout(()=>{this._bodyElement.removeChild(a),s?s.focus():console.log("No element to restore focus to after copy?")},this.addonOptions?.clipboardPasteDelay??100),"function"==typeof this._onCopySuccess){const d=1===t.length?t[0].toRow+1-t[0].fromRow:t.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 n=this.createTextBox("");return window.setTimeout(()=>this.decodeTabularData(this._grid,n),this.addonOptions?.clipboardPasteDelay??100),!1}}}markCopySelection(e){this.clearCopySelection();const t=this._grid.getColumns(),n={};for(const r of e)for(let s=r.fromRow;s<=r.toRow;s++){n[s]={};for(let a=r.fromCell;a<=r.toCell&&athis.clearCopySelection(),this.addonOptions?.clearCopySelectionDelay||2e3)}}class gT{constructor(e,t,n){this.extensionUtility=e,this.pubSubService=t,this.sharedService=n,this._addonOptions={},this._camelPluginName="",this._gridUid="",this._menuCssPrefix="",this._menuPluginCssPrefix="",this._bindEventService=new br,this._eventHandler=new Pi}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(),ui(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,t){if("divider"!==e&&e?.subMenuTitle){const n=document.createElement("div");n.className="slick-menu-title",n.textContent=e.subMenuTitle;const r=e.subMenuTitleCssClass;r&&n.classList.add(...Oi(r)),t.appendChild(n)}}populateCommandOrOptionItems(e,t,n,r,s,a,d){if(s&&r&&t)for(const h of r)this.populateSingleCommandOrOptionItem(e,t,n,h,s,a,d)}populateCommandOrOptionTitle(e,t,n,r){if(t){const s=r>0,a=this._menuElm?.querySelector(`.slick-${e}-header`)??O("div",{className:`slick-${e}-header`}),d=`${e}Title`;s||(t?.[d]?(ui(a),this[`_${e}TitleElm`]=O("span",{className:"slick-menu-title",textContent:t[d]}),a.appendChild(this[`_${e}TitleElm`]),a.classList.add("with-title")):a.classList.add("no-title"),n.appendChild(a))}}populateSingleCommandOrOptionItem(e,t,n,r,s,a,d){let h=null;if(s&&r&&t){const p=s?.level||0,g="headerButtons"===this._camelPluginName?"":"-item",v=`${this._menuCssPrefix}${g}`;let y=!0,C=!0;if("object"==typeof r&&(y=this.extensionUtility.runOverrideFunctionWhenExists(r.itemVisibilityOverride,s),C=this.extensionUtility.runOverrideFunctionWhenExists(r.itemUsabilityOverride,s)),!y)return null;if("object"==typeof r&&r.itemUsabilityOverride&&(r.disabled=!C),h=O("li",{className:v,role:"menuitem"}),"object"==typeof r&&ri(r[e])&&(h.dataset[e]=r?.[e]),n&&n.appendChild(h),"object"==typeof r&&r.divider||"divider"===r)return h.classList.add(`${v}-divider`),h;if(r.disabled&&h.classList.add(`${v}-disabled`),(r.hidden||r.showOnHover)&&h.classList.add(`${v}-hidden`),r.cssClass&&h.classList.add(...Oi(r.cssClass)),r.tooltip&&(h.title=r.tooltip),"headerButtons"!==this._camelPluginName){const E=O("div",{className:`${this._menuCssPrefix}-icon`});h.appendChild(E),r.iconCssClass?E.classList.add(...Oi(r.iconCssClass)):!r.commandItems&&!r.optionItems&&(E.textContent="\u25e6");const x=O("span",{className:`${this._menuCssPrefix}-content`,textContent:"object"==typeof r&&r.title||""},h);r.textCssClass&&x.classList.add(...Oi(r.textCssClass))}const k=p>0?"sub-menu":"parent-menu";if(this._bindEventService.bind(h,"click",E=>a.call(this,E,e,r,p,s?.column),void 0,k),"mouseover"===this._addonOptions?.subMenuOpenByEvent&&"function"==typeof d&&this._bindEventService.bind(h,"mouseover",E=>d.call(this,E,e,r,p,s?.column),void 0,k),r.commandItems||r.optionItems){const E=document.createElement("span");E.className="sub-item-chevron",this._addonOptions.subItemChevronClass?E.classList.add(...Oi(this._addonOptions.subItemChevronClass)):E.textContent="\u2b9e",h.classList.add("slick-submenu-item"),h.appendChild(E)}}return h}}class _U extends gT{constructor(e,t,n){super(e,t,n),this.extensionUtility=e,this.pubSubService=t,this.sharedService=n,this._currentCell=-1,this._currentRow=-1,this._lastMenuTypeClicked="",this._subMenuParentId=""}createParentMenu(e){this.menuElement?.remove(),this._menuElm=void 0;const t=this.grid.getCellFromEvent(e);if(t){this._currentCell=t.cell??0,this._currentRow=t.row??0;const n=this._addonOptions?.commandItems||[],r=this._addonOptions?.optionItems||[],s={cell:this._currentCell,row:this._currentRow,grid:this.grid};if(this.closeMenu(e,s),"function"==typeof e.stopPropagation&&(this.pubSubService.publish(`on${Qs(this._camelPluginName)}BeforeMenuShow`,s),"function"==typeof this.addonOptions?.onBeforeMenuShow&&!1===this.addonOptions.onBeforeMenuShow(e,s))||(this._menuElm=this.createMenu(n,r),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${Qs(this._camelPluginName)}AfterMenuShow`,s),"function"==typeof this.addonOptions?.onAfterMenuShow&&!1===this.addonOptions.onAfterMenuShow(e,s)))return}return this._menuElm}createMenu(e,t,n=0,r){const s=this.grid.getColumns()[this._currentCell],a=this.grid.getDataItem(this._currentRow),d=r?.command||r?.option;let h=1===n&&d?String(d).replace(/\s/g,""):"";h&&(this._subMenuParentId=h),n>1&&(h=this._subMenuParentId);let p=!0,g=!0;if("contextMenu"===this._camelPluginName){if(p=this.checkIsColumnAllowed(this._addonOptions?.optionShownOverColumnIds??[],s.id),g=this.checkIsColumnAllowed(this._addonOptions?.commandShownOverColumnIds??[],s.id),!(s&&(g&&e.length||p&&t.length)))return void this.hideMenu()}else if(!s||!s.cellMenu||!e.length&&!t.length)return;const v=`${this.menuCssClass} slick-menu-level-${n} ${this.gridUid}`,y=document.body.querySelector(`.${this.menuCssClass}.slick-menu-level-${n}${this.gridUidSelector}`);if(y){if(y.dataset.subMenuParent===h)return y;this.disposeSubMenus()}const C=document.createElement("div");C.className=v,n>0&&(C.classList.add("slick-submenu"),this.gridOptions?.darkMode&&C.classList.add("slick-dark-mode"),h&&(C.dataset.subMenuParent=h));const k=isNaN(this.addonOptions.maxHeight)?this.addonOptions.maxHeight:`${this.addonOptions.maxHeight??0}px`,E=isNaN(this.addonOptions.maxWidth)?this.addonOptions.maxWidth:`${this.addonOptions.maxWidth??0}px`;k&&(C.style.maxHeight=k),E&&(C.style.maxWidth=E),this.addonOptions?.width&&(C.style.width=oh(this.addonOptions?.width));const x=O("button",{ariaLabel:"Close",className:"close",type:"button",textContent:"\xd7",dataset:{dismiss:this._menuCssPrefix}});if(!this.addonOptions.hideOptionSection&&p&&t.length>0){const S=O("div",{className:`${this._menuCssPrefix}-option-list`,role:"menu"},C);this.populateCommandOrOptionTitle("option",this.addonOptions,S,n),!this.addonOptions.hideCloseButton&&n<1&&this.populateCommandOrOptionCloseBtn("option",x,S),r&&n>0&&this.addSubMenuTitleWhenExists(r,S),this.populateCommandOrOptionItems("option",this.addonOptions,S,t,{cell:this._currentCell,row:this._currentRow,column:s,dataContext:a,grid:this.grid,level:n},this.handleMenuItemCommandClick,this.handleMenuItemMouseOver)}if(!this.addonOptions.hideCommandSection&&g&&e.length>0){const S=O("div",{className:`${this._menuCssPrefix}-command-list`,role:"menu"},C);this.populateCommandOrOptionTitle("command",this.addonOptions,S,n),!this.addonOptions.hideCloseButton&&n<1&&(!p||0===t.length||this.addonOptions.hideOptionSection)&&this.populateCommandOrOptionCloseBtn("command",x,S),r&&n>0&&this.addSubMenuTitleWhenExists(r,S),this.populateCommandOrOptionItems("command",this.addonOptions,S,e,{cell:this._currentCell,row:this._currentRow,column:s,dataContext:a,grid:this.grid,level:n},this.handleMenuItemCommandClick,this.handleMenuItemMouseOver)}return n++,C}closeMenu(e,t){if(this.menuElement){if("function"==typeof this.addonOptions?.onBeforeMenuClose&&!1===this.addonOptions.onBeforeMenuClose(e,t))return;this.hideMenu()}}hideMenu(){this.menuElement?.remove(),this._menuElm=null,this.disposeSubMenus()}checkIsColumnAllowed(e,t){return!(e?.length>0)||e.findIndex(n=>n===t)>=0}handleBodyMouseDown(e){if(this.menuElement){let t=!1;const n=e.target.closest(`.${this.menuCssClass}`);(this.menuElement.contains(e.target)||n)&&(t=!0),(this.menuElement!==e.target&&!t&&!e.defaultPrevented||"close"===e.target.className&&n)&&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,t,n,r=0){void 0!==n?.[t]&&"divider"!==n&&!n.disabled&&!n.divider&&(n.commandItems||n.optionItems?(this.repositionSubMenu(n,t,r,e),this._lastMenuTypeClicked=t):0===r&&this.disposeSubMenus())}handleMenuItemCommandClick(e,t,n,r=0){if(void 0!==n?.[t]&&"divider"!==n&&!n.disabled&&!n.divider&&void 0!==this._currentCell&&void 0!==this._currentRow){if("option"===t&&!this.grid.getEditorLock().commitCurrentEdit())return;const s=this._currentCell,a=this._currentRow,d=this.grid.getColumns()[this._currentCell],h=this.grid.getDataItem(this._currentRow),p=void 0!==n[t]?n[t]:"";if(void 0===p||n[`${t}Items`])(n.commandItems||n.optionItems)&&this.repositionSubMenu(n,t,r,e);else{const g={cell:this._currentCell,row:this._currentRow,grid:this.grid,[t]:p,item:n,column:d,dataContext:h},v="command"===t?"onCommand":"onOptionSelected",y=`${this._camelPluginName}:${v}`;this.pubSubService.publish(y,g),"function"==typeof this._addonOptions?.[v]&&this._addonOptions[v](e,g),"function"==typeof n.action&&n.action.call(this,e,g),e.defaultPrevented||this.closeMenu(e,{cell:s,row:a,grid:this.grid})}this._lastMenuTypeClicked=t}}populateCommandOrOptionCloseBtn(e,t,n){this._bindEventService.bind(t,"click",s=>this.handleCloseButtonClicked(s),void 0,"parent-menu");const r=n.querySelector(`.slick-${e}-header`)??O("div",{className:`slick-${e}-header`});r?.appendChild(t),n.appendChild(r),r.classList.add("with-close")}repositionSubMenu(e,t,n,r){(r.target.classList.contains("slick-cell")||this._lastMenuTypeClicked!==t)&&this.disposeSubMenus();const s=this.createMenu(e?.commandItems||[],e?.optionItems||[],n+1,e);s&&(s.style.display="block",document.body.appendChild(s),this.repositionMenu(r,s))}repositionMenu(e,t){const n=t?.classList.contains("slick-submenu"),r=n?e.target.closest(`.${this._menuCssPrefix}-item`):e.target.closest(".slick-cell");if(t&&r){t.style.top="0px",t.style.left="0px";const s=e?.touches?.[0]??e,a=kn(r);let d=r&&"cellMenu"===this._camelPluginName?a.left:s.pageX,h=r&&"cellMenu"===this._camelPluginName?a.top:s.pageY;n&&"contextMenu"===this._camelPluginName&&(d=a.left,h=a.top);const p=r.offsetWidth||0,g=t?.offsetHeight||0,v=t?.offsetWidth||this._addonOptions.width||0,y=this.gridOptions.rowHeight||0,C=Number(this._addonOptions.autoAdjustDropOffset||0),k=Number(this._addonOptions.autoAlignSideOffset||0);if(this._addonOptions.autoAdjustDrop||this._addonOptions.dropDirection){const{bottom:E,top:x}=R_(r),S=E+C-y;"top"==(SS?"top":"bottom")||"top"===this._addonOptions.dropDirection?(t.classList.remove("dropdown"),t.classList.add("dropup"),h-=n?g-C-r.clientHeight:g-C):(t.classList.remove("dropup"),t.classList.add("dropdown"),h+=C,"cellMenu"===this._camelPluginName&&(h+=n?C:y+C))}if(this._addonOptions.autoAlignSide||"left"===this._addonOptions.dropSide){const E=this.grid.getGridPosition();let x=d+Number(v);n&&(x+=r.clientWidth);const S=document.documentElement.clientWidth;"left"==(x>=E.width||x>=S?"left":"right")||!n&&"left"===this._addonOptions.dropSide?(t.classList.remove("dropright"),t.classList.add("dropleft"),"cellMenu"!==this._camelPluginName||n?d-=Number(v)-k:d-=Number(v)-p-k):(t.classList.remove("dropleft"),t.classList.add("dropright"),d+=n?k+r.offsetWidth:k)}t.style.top=`${h}px`,t.style.left=`${d}px`}}}class kde extends _U{constructor(e,t,n){super(e,t,n),this.extensionUtility=e,this.pubSubService=t,this.sharedService=n,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(n.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,t=this.sharedService.allColumns;e?.enableTranslate&&Array.isArray(t)&&t.forEach(n=>{if(n?.cellMenu&&(Array.isArray(n.cellMenu.commandItems)||Array.isArray(n.cellMenu.optionItems))){const r=n.cellMenu.commandItems||[],s=n.cellMenu.optionItems||[];n.cellMenu.commandTitleKey&&(n.cellMenu.commandTitle=this.extensionUtility.translateWhenEnabledAndServiceExist(n.cellMenu.commandTitleKey,"TEXT_COMMANDS")||n.cellMenu.commandTitle),n.cellMenu.optionTitleKey&&(n.cellMenu.optionTitle=this.extensionUtility.translateWhenEnabledAndServiceExist(n.cellMenu.optionTitleKey,"TEXT_COMMANDS")||n.cellMenu.optionTitle),this.extensionUtility.translateMenuItemsFromTitleKey(r,"commandItems"),this.extensionUtility.translateMenuItemsFromTitleKey(s,"optionItems")}})}handleCellClick(e,t){this.disposeAllMenus();const n=this.grid.getCellFromEvent(e);if(n){const r=this.grid.getDataItem(n.row),s=this.grid.getColumns()[n.cell];s?.cellMenu&&!this.gridOptions.cellMenu?.activateCellOnMenuClick&&e.preventDefault(),this._addonOptions={...this._addonOptions,...s.cellMenu};const a=t||{};if(a.column=s,a.dataContext=r,a.grid=this.grid,!this.extensionUtility.runOverrideFunctionWhenExists(this._addonOptions.menuUsabilityOverride,a))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(t=>{t?.cellMenu?.commandItems&&this.extensionUtility.sortItems(t.cellMenu.commandItems||[],"positionOrder"),t?.cellMenu?.optionItems&&this.extensionUtility.sortItems(t.cellMenu.optionItems||[],"positionOrder")})}}class _de{constructor(e,t){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=b1(this._defaults,t)}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=O("div",{className:this._options.selectionCssClass}),Object.keys(this._options.selectionCss).forEach(r=>{this._elem.style[r]=this._options.selectionCss[r]}),this._elem.style.position="absolute",this.grid.getActiveCanvasNode()?.appendChild(this._elem));const t=this.grid.getCellNodeBox(e.fromRow,e.fromCell),n=this.grid.getCellNodeBox(e.toRow,e.toCell);return t&&n&&this._options?.offset&&(this._elem.style.top=`${t.top+this._options.offset.top}px`,this._elem.style.left=`${t.left+this._options.offset.left}px`,this._elem.style.height=`${n.bottom-t.top+this._options.offset.height}px`,this._elem.style.width=`${n.right-t.left+this._options.offset.width}px`),this._elem}}class v9{constructor(e){this.pluginName="CellRangeSelector",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.onBeforeCellRangeSelected=new me("onBeforeCellRangeSelected"),this.onCellRangeSelecting=new me("onCellRangeSelecting"),this.onCellRangeSelected=new me("onCellRangeSelected"),this._eventHandler=new Pi,this._options=b1(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 _de(e,this._options),this._canvas=e.getCanvasNode(),this._gridOptions=e.getOptions(),this._gridUid=e.getUID();const t=e.getPubSubService();t&&U.addSlickEventPubSubWhenDefined(t,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(),ui(this._activeCanvas),ui(this._canvas),this._decorator?.destroy(),this.stopIntervalTimer()}getCellDecorator(){return this._decorator}getCurrentRange(){return this._currentlySelectedRange}getMouseOffsetViewport(e,t){const n=e?.touches?.[0]??e,r=this._activeViewport.scrollLeft,s=this._activeViewport.scrollTop,a=r+this._viewportWidth,d=s+this._viewportHeight,h=kn(this._activeViewport),p=h.left,g=h.top,v=p+this._viewportWidth,y=g+this._viewportHeight,C={e,dd:t,viewport:{left:r,top:s,right:a,bottom:d,offset:{left:p,top:g,right:v,bottom:y}},offset:{x:0,y:0},isOutsideViewport:!1};return n.pageXv&&(C.offset.x=n.pageX-v),n.pageYy&&(C.offset.y=y-n.pageY),C.isOutsideViewport=!!C.offset.x||!!C.offset.y,C}stopIntervalTimer(){this._autoScrollTimerId&&(window.clearInterval(this._autoScrollTimerId),this._autoScrollTimerId=void 0)}handleDrag(e,t){if(!this._dragging&&!this._gridOptions.enableRowMoveManager)return;this._gridOptions.enableRowMoveManager||e.stopImmediatePropagation();const n=e.getNativeEvent();if(this.addonOptions.autoScroll&&(this._draggingMouseOffset=this.getMouseOffsetViewport(n,t),this._draggingMouseOffset.isOutsideViewport))return this.handleDragOutsideViewport();this.stopIntervalTimer(),this.handleDragTo(n,t)}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,t=0;this._autoScrollTimerId=window.setInterval(()=>{let n=!1,r=!1;this._draggingMouseOffset.offset.x?(e+=this.addonOptions.minIntervalToShowNextCell,n=e>=this._xDelayForNextCell):e=0,this._draggingMouseOffset.offset.y?(t+=this.addonOptions.minIntervalToShowNextCell,r=t>=this._yDelayForNextCell):t=0,(n||r)&&(n&&(e=0),r&&(t=0),this.handleDragToNewPosition(n,r))},this.addonOptions.minIntervalToShowNextCell)}}handleDragToNewPosition(e,t){let n=this._draggingMouseOffset.e.pageX,r=this._draggingMouseOffset.e.pageY;const s=this._draggingMouseOffset.offset.x,a=this._draggingMouseOffset.offset.y,d=this._draggingMouseOffset.viewport.offset;e&&s&&(n=s>0?d.right+this._moveDistanceForOneCell.x:d.left-this._moveDistanceForOneCell.x),t&&a&&(r=a>0?d.top-this._moveDistanceForOneCell.y:d.bottom+this._moveDistanceForOneCell.y),this.handleDragTo({pageX:n,pageY:r},this._draggingMouseOffset.dd)}handleDragTo(e,t){const n=e?.touches?.[0]??e,r=this._grid.getCellFromPoint(n.pageX-kn(this._activeCanvas).left+this._columnOffset,n.pageY-kn(this._activeCanvas).top+this._rowOffset);if(void 0!==r){if(this._gridOptions.frozenColumn>=0&&(!this._isRightCanvas&&r.cell>this._gridOptions.frozenColumn||this._isRightCanvas&&r.cell<=this._gridOptions.frozenColumn)||this._gridOptions.frozenRow>=0&&(!this._isBottomCanvas&&r.row>=this._gridOptions.frozenRow||this._isBottomCanvas&&r.rowa.right||s.topa.bottom)&&this._grid.scrollCellIntoView(r.row,r.cell)}}if(!this._grid.canCellBeSelected(r.row,r.cell))return;if(t?.range){t.range.end=r;const s=new Oa(t.range.start.row??0,t.range.start.cell??0,r.row,r.cell);this._decorator.show(s),this.onCellRangeSelecting.notify({range:s})}}}handleDragEnd(e,t){this._decorator.hide(),this._dragging&&(this._dragging=!1,e.stopImmediatePropagation(),this.stopIntervalTimer(),this.onCellRangeSelected.notify({range:new Oa(t.range.start.row??0,t.range.start.cell??0,t.range.end.row,t.range.end.cell)}))}handleDragInit(e){this._activeCanvas=this._grid.getActiveCanvasNode(e),this._activeViewport=this._grid.getActiveViewportNode(e);const t=this._grid.getDisplayedScrollbarDimensions();if(this._viewportWidth=this._activeViewport.offsetWidth-t.width,this._viewportHeight=this._activeViewport.offsetHeight-t.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 s=`${this.gridUidSelector} .grid-canvas-${this._gridOptions.frozenBottom?"bottom":"top"}`;this._rowOffset=document.querySelector(s)?.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 n=this._grid.getCellFromEvent(e),r=this._grid.getActiveCell();(!this._grid.getEditorLock().isActive()||!r||!n||r.row!==n.row||r.cell!==n.cell)&&(e.stopImmediatePropagation(),e.preventDefault())}handleDragStart(e,t){const n=this._grid.getCellFromEvent(e);if(n&&!1!==this.onBeforeCellRangeSelected.notify(n).getReturnValue()&&this._grid.canCellBeSelected(n.row,n.cell)&&(this._dragging=!0,e.stopImmediatePropagation()),!this._dragging)return;this._grid.focus();const r=kn(this._canvas);let s=t.startX-r.left;this._gridOptions.frozenColumn>=0&&this._isRightCanvas&&(s+=this._scrollLeft);let a=t.startY-r.top;this._gridOptions.frozenRow>=0&&this._isBottomCanvas&&(a+=this._scrollTop);const d=this._grid.getCellFromPoint(s,a);return t.range={start:d,end:{}},this._currentlySelectedRange=t.range,this._decorator.show(new Oa(d.row,d.cell))}handleScroll(e,t){this._scrollTop=t.scrollTop,this._scrollLeft=t.scrollLeft}}class Ede{constructor(e){this.pluginName="CellSelectionModel",this._cachedPageRowCount=0,this._prevKeyDown="",this._ranges=[],this._defaults={selectActiveCell:!0},this.onSelectedRangesChanged=new me("onSelectedRangesChanged"),this._eventHandler=new Pi,this._selector=void 0===e||void 0===e.cellRangeSelector?new v9({selectionCss:{border:"2px solid black"}}):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,(void 0===this._addonOptions||void 0===this._addonOptions.cellRangeSelector)&&(this._selector=new v9({selectionCss:{border:"2px solid "+(this._grid.getOptions().darkMode?"white":"black")}})),e.hasDataView()&&(this._dataView=e.getData()),this._addonOptions={...this._defaults,...this._addonOptions};const t=e.getPubSubService();t&&this.onSelectedRangesChanged.setPubSubService(t),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,t){let n=e.length!==t.length;if(!n)for(let r=0;rt===e)}handleKeyDown(e){let t,n;const r=this._grid.getColumns().length,s=this._grid.getActiveCell();let a=0;if(a=this._dataView&&"getPagingInfo"in this._dataView?this._dataView?.getPagingInfo().pageSize||this._dataView.getLength():this._grid.getDataLength(),s&&(e.shiftKey||e.ctrlKey)&&!e.altKey&&this.isKeyAllowed(e.key)&&(t=this.getSelectedRanges().slice(),t.length||t.push(new Oa(s.row,s.cell)),n=t.pop(),"function"==typeof n?.contains)){n.contains(s.row,s.cell)||(n=new Oa(s.row,s.cell));let d=n.toRow-n.fromRow,h=n.toCell-n.fromCell;const p=s.row===n.fromRow?1:-1,g=s.cell===n.fromCell?1:-1,v=e.key.startsWith("Arrow");let y,C=0;v&&!e.ctrlKey?("ArrowLeft"===e.key?h-=g:"ArrowRight"===e.key?h+=g:"ArrowUp"===e.key?d-=p:"ArrowDown"===e.key&&(d+=p),C=s.row+p*d):(this._cachedPageRowCount<1&&(this._cachedPageRowCount=this._grid.getViewportRowCount()),void 0===this._prevSelectedRow&&(this._prevSelectedRow=s.row),e.shiftKey&&!e.ctrlKey&&"Home"===e.key?(y=0,C=s.row):e.shiftKey&&!e.ctrlKey&&"End"===e.key?(y=r-1,C=s.row):e.ctrlKey&&e.shiftKey&&"Home"===e.key?(y=0,C=0):e.ctrlKey&&e.shiftKey&&"End"===e.key?(y=r-1,C=a-1):"PageUp"===e.key?(this._prevSelectedRow>=0&&(C=this._prevSelectedRow-this._cachedPageRowCount),C<0&&(C=0)):"PageDown"===e.key&&(this._prevSelectedRow<=a-1&&(C=this._prevSelectedRow+this._cachedPageRowCount),C>a-1&&(C=a-1)),this._prevSelectedRow=C),y??=s.cell+g*h;const k=new Oa(s.row,s.cell,C,y);if(this.removeInvalidRanges([k]).length){t.push(k);const E=p>0?k.toRow:k.fromRow,x=g>0?k.toCell:k.fromCell;v?(this._grid.scrollRowIntoView(E),this._grid.scrollCellIntoView(E,x,!1)):(this._grid.scrollRowIntoView(C),this._grid.scrollCellIntoView(C,x,!1))}else t.push(n);this.setSelectedRanges(t),e.preventDefault(),e.stopPropagation(),this._prevKeyDown=e.key}}}class fT{constructor(e){this.pluginName="RowSelectionModel",this._inHandler=!1,this._ranges=[],this._defaults={autoScrollWhenDrag:!0,cellRangeSelector:void 0,dragToSelect:!1,selectActiveRow:!0},this.onSelectedRangesChanged=new me("onSelectedRangesChanged"),this._eventHandler=new Pi,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 t=e.getPubSubService();t&&this.onSelectedRangesChanged.setPubSubService(t),!this._selector&&this._options.dragToSelect&&(this._selector=new v9({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,t="SlickRowSelectionModel.setSelectedRanges"){if(!(this._ranges&&0!==this._ranges.length||e&&0!==e.length))return;this._ranges=e;const n=new Ri(new CustomEvent("click",{detail:{caller:t}}),this._ranges);this.onSelectedRangesChanged.notify(this._ranges,n)}getRowsRange(e,t){let n;const r=[];for(n=e;n<=t;n++)r.push(n);for(n=t;na!==t.row),this._grid.setActiveCell(t.row,t.cell);else if(n.length&&e.shiftKey){const a=n.pop(),d=Math.min(t.row,a),h=Math.max(t.row,a);n=[];for(let p=d;p<=h;p++)p!==a&&n.push(p);n.push(a),this._grid.setActiveCell(t.row,t.cell)}const s=this.rowsToRanges(n);return this.setSelectedRanges(s),e.stopImmediatePropagation(),!0}handleKeyDown(e){const t=this._grid.getActiveCell();if(this.gridOptions.multiSelect&&t&&e.shiftKey&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&("ArrowUp"===e.key||"ArrowDown"===e.key)){let n=this.getSelectedRows();n.sort((d,h)=>d-h),n.length||(n=[t.row]);let r,s=n[0],a=n[n.length-1];if(r="ArrowDown"===e.key?t.row=0&&rt.push(new Oa(r,0,r,n))),t}}const EU="mdi-icon-check",FU="mdi-icon-uncheck";class xU{constructor(e,t){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 br,this._eventHandler=new Pi,this._addonOptions={...this._defaults,...t}}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 fT(this.gridOptions.rowSelectionOptions),this._grid.setSelectionModel(this._rowSelectionModel)),this.gridOptions.preselectedRows&&this._rowSelectionModel&&this._grid.getSelectionModel()&&window.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,t){if(this._addonOptions={...this._defaults,...t.checkboxSelector},Array.isArray(e)&&t){const n=this.getColumnDefinition();if(!e.some(r=>r.id===n.id)){const r=t?.checkboxSelector?.columnIndexPosition??0;r>0?e.splice(r,0,n):e.unshift(n),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 t=this.headerRowNode?.querySelector("#filter-checkbox-selectall-container");if(t){t.style.display="flex",t.ariaChecked=String(this._isSelectAllChecked);const n=t.querySelector('input[type="checkbox"]');n&&(n.ariaChecked=String(this._isSelectAllChecked),n.checked=this._isSelectAllChecked)}}}deSelectRows(e){const t=[];for(const n of e)this._selectedRowsLookup[n]&&(t[t.length]=n);this._grid.setSelectedRows(this._grid.getSelectedRows().filter(n=>t.indexOf(n)<0),"SlickCheckboxSelectColumn.deSelectRows")}selectRows(e){const t=[];for(const r of e)this._selectedRowsLookup[r]&&(t[t.length]=r);const n=this._grid.getSelectedRows()?.concat(t);this._grid.setSelectedRows(n)}createCheckboxElement(e,t=!1){const n=this.gridOptions?.preventDocumentFragmentUsage?document.createElement("span"):new DocumentFragment,r=O("label",{className:"checkbox-selector-label",htmlFor:e}),s=O("div",{className:"icon-checkbox-container"});return s.appendChild(O("input",{id:e,type:"checkbox",checked:t,ariaChecked:String(t)})),s.appendChild(O("div",{className:`mdi ${t?EU:FU}`})),r.appendChild(s),n.appendChild(r),n}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,t){const n=this._grid.getDataItem(t);if(!this.checkSelectableOverride(t,n,this._grid))return;const r=this._grid.getSelectedRows();"function"==typeof this._addonOptions.onRowToggleStart&&this._addonOptions.onRowToggleStart(e,{row:t,previousSelectedRows:r});const s=this._selectedRowsLookup[t]?this._grid.getSelectedRows().filter(a=>a!==t):this._grid.getSelectedRows().concat(t);this._grid.setSelectedRows(s,"click.toggle"),this._grid.setActiveCell(t,this.getCheckboxColumnCellIndex()),this._addonOptions.onRowToggleEnd&&this._addonOptions.onRowToggleEnd(e,{row:t,previousSelectedRows:r})}selectableOverride(e){this._selectableOverride=e}addCheckboxToFilterHeaderRow(e){this._eventHandler.subscribe(e.onHeaderRowCellRendered,(t,n)=>{if(n.column.field===(this._addonOptions.field||"_checkbox_selector")){ui(n.node);const r=`header-filter-selector${this._selectAll_UID}`,s=O("label",{id:"filter-checkbox-selectall-container",htmlFor:r}),a=O("div",{className:"icon-checkbox-container"});a.appendChild(O("input",{id:r,type:"checkbox",ariaChecked:"false"})),a.appendChild(O("div",{className:"mdi mdi-icon-uncheck"})),s.appendChild(a),n.node.appendChild(s),this._headerRowNode=n.node,this._headerRowNode.classList.add("checkbox-header"),this._bindEventService.bind(s,"click",d=>this.handleHeaderClick(d,n))}})}checkboxSelectionFormatter(e,t,n,r,s,a){if(s&&this.checkSelectableOverride(e,s,a)){const d=this.createUID()+e;return this.createCheckboxElement(`selector${d}`,!!this._selectedRowsLookup[e])}return null}checkSelectableOverride(e,t,n){return"function"!=typeof this._selectableOverride||this._selectableOverride(e,t,n)}createUID(){return Math.round(1e7*Math.random())}getCheckboxColumnCellIndex(){if(null===this._checkboxColumnCellIndex){this._checkboxColumnCellIndex=0;const e=this._grid.getColumns();for(let t=0;t0)for(let r=0;rp[a]===d)>=0&&!this.checkSelectableOverride(r,s,this._grid)&&n++}if(this._isSelectAllChecked=e.length+n>=t.length,!this._addonOptions.hideInColumnTitleRow&&!this._addonOptions.hideSelectAllCheckbox&&this.renderSelectAllCheckbox(this._isSelectAllChecked),!this._addonOptions.hideInFilterHeaderRow){const r=this.headerRowNode?.querySelector(`#header-filter-selector${this._selectAll_UID}`),s=this.headerRowNode?.querySelector(".icon-checkbox-container .mdi");r&&(r.ariaChecked=String(this._isSelectAllChecked),r.checked=this._isSelectAllChecked),s&&(s.className=`mdi ${this._isSelectAllChecked?EU:FU}`)}}handleClick(e,t){if(this._grid.getColumns()[t.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,t.row),e.stopPropagation(),e.stopImmediatePropagation()}}handleHeaderClick(e,t){if(t.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 n=e.target.checked;const r=n?"click.selectAll":"click.unselectAll",s=this._grid.getSelectedRows();this._addonOptions.onSelectAllToggleStart&&this._addonOptions.onSelectAllToggleStart(e,{previousSelectedRows:s,caller:r});let a=[];if(n){const d=[];for(let h=0;h{void 0!==h&&this._grid.invalidateRow(+h)}),this._selectedRowsLookup=t,this._grid.render(),this._isSelectAllChecked=(e?.length??0)+a>=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 p=e.indexOf(h);e.splice(p,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 SU extends gT{constructor(e,t,n,r,s){super(e,n,r),this.extensionUtility=e,this.filterService=t,this.pubSubService=n,this.sharedService=r,this.sortService=s,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:150,contentMinWidth:0,resizeOnShowHeaderRow:!1,syncResizeTitle:"Synchronous resize",subMenuOpenByEvent:"mouseover",headerColumnValueExtractor:a=>Un(a.columnPickerLabel||a.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.onAfterMenuShow=new me("onAfterMenuShow"),this.onBeforeMenuShow=new me("onBeforeMenuShow"),this.onMenuClose=new me("onMenuClose"),this.onCommand=new me("onCommand"),this.onColumnsChanged=new me("onColumnsChanged"),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,vT.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,t)=>{if(t&&t.optionsBefore&&t.optionsAfter){const n=t.optionsBefore.frozenColumn>=0&&-1===t.optionsAfter.frozenColumn,r=-1===t.optionsBefore.frozenColumn&&t.optionsAfter.frozenColumn>=0;(n||r)&&this.recreateGridMenu()}})}init(){this._gridUid=this.grid.getUID()??"",U.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,t=this._userOriginalGridMenu&&Array.isArray(e)?e:[];this._addonOptions.commandItems=[...t,...this.addGridMenuCustomCommands(t)],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&&(MU.call(this,this._menuElm),this._listElm=O("div",{className:"slick-column-picker-list",role:"menu"}),this._bindEventService.bind(this._menuElm,"click",IU.bind(this),void 0,"parent-menu"))}createGridMenu(){const e=this._gridUid?`.${this._gridUid}`:"",t=this._addonOptions?.menuWidth||this._defaults.menuWidth,n=this.gridOptions.hasOwnProperty("frozenColumn")&&this.gridOptions.frozenColumn>=0?"right":"left",r=this.grid.getContainerNode();if(this._headerElm=r.querySelector(`.slick-header-${n}`),this._headerElm&&this._addonOptions){if(this._headerElm.style.width=`calc(100% - ${t}px)`,(this._addonOptions.resizeOnShowHeaderRow??this._defaults.resizeOnShowHeaderRow)&&this.gridOptions.showHeaderRow){const d=r.querySelector(`${e} .slick-headerrow`);d&&(d.style.width=`calc(100% - ${t}px)`)}if(this._addonOptions.showButton??this._defaults.showButton){this._gridMenuButtonElm=O("button",{className:"slick-grid-menu-button",ariaLabel:"Grid Menu"}),this._addonOptions?.iconCssClass&&this._gridMenuButtonElm.classList.add(...Oi(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,t=0,n){const r=n?.command;let s=1===t&&r?r.replace(/\s/g,""):"";s&&(this._subMenuParentId=s),t>1&&(s=this._subMenuParentId);const a=`${this.menuCssClass} slick-menu-level-${t} ${this._gridUid}`,d=document.body.querySelector(`.${this.menuCssClass}.slick-menu-level-${t}${this.gridUidSelector}`);if(d){if(d.dataset.subMenuParent===s)return d;this.disposeSubMenus()}const h=O("div",{role:"menu",className:a,ariaLabel:t>1?"SubMenu":"Grid Menu"});t>0&&(h.classList.add("slick-submenu"),s&&(h.dataset.subMenuParent=s));const p={grid:this.grid,menu:this._menuElm,columns:this.columns,allColumns:this.getAllColumns(),visibleColumns:this.getVisibleColumns(),level:t};return this._commandMenuElm=this.recreateCommandList(e,h,p,n),t++,h}getAllColumns(){return this._columns}getVisibleColumns(){return this.grid.getColumns()}hideMenu(e){const t={grid:this.grid,menu:this._menuElm,allColumns:this.columns,visibleColumns:this.getVisibleColumns()};if(this.pubSubService.publish("onGridMenuMenuClose",t),("function"!=typeof this._addonOptions?.onMenuClose||!1!==this._addonOptions.onMenuClose(e,t))&&!1!==this.onMenuClose.notify(t,null,this).getReturnValue()){if(this._isMenuOpen=!1,"function"==typeof this.grid?.autosizeColumns){const n=this.grid.getUID()||"";this._areVisibleColumnDifferent&&n&&null!==document.querySelector(`.${n}`)&&(this.gridOptions.enableAutoSizeColumns&&this.grid.autosizeColumns(),this._areVisibleColumnDifferent=!1)}this.disposeSubMenus(),this._menuElm?.remove(),this._menuElm=null}}recreateGridMenu(){this.deleteMenu(),this.init()}repositionMenu(e,t,n,r){const s=e?.touches?.[0]??e,a=t.classList.contains("slick-submenu"),d=a?e.target.closest(".slick-menu-item"):s.target;if(d){const h=n||this._gridMenuButtonElm,p=kn(n),g=kn(d),v=r??this._addonOptions,y=getComputedStyle(h),C=parseInt(y?.width??this._defaults?.menuWidth,10),k=t?.offsetWidth??0,E=v?.contentMinWidth??this._defaults.contentMinWidth??0,x=(E>k?E:k)||0,S=p.top,D=p.right;let I,L;if(a?(L=g.top,I=g.left):(L=S+h.offsetHeight,I="right"===v?.dropSide?D-C:D-x),a){const se=t?.clientHeight||0,{bottom:Se,top:Ie}=R_(d);"top"==(SeSe?"top":"bottom")?(t.classList.remove("dropdown"),t.classList.add("dropup"),L-=se-d.clientHeight):(t.classList.remove("dropup"),t.classList.add("dropdown"))}const R=this.grid.getGridPosition();let W=I+Number(k);a&&(W+=d.clientWidth);const re=document.documentElement.clientWidth;"left"==(W>=R.width||W>=re?"left":"right")||!a&&"left"===v?.dropSide?(t.classList.remove("dropright"),t.classList.add("dropleft"),a&&(I-=Number(k))):(t.classList.remove("dropleft"),t.classList.add("dropright"),a&&(I+=d.offsetWidth)),t.style.top=`${L}px`,t.style.left=`${I}px`,E>0&&(t.style.minWidth=`${E}px`),t.style.opacity="1",t.style.display="block"}}openGridMenu(){const e=new MouseEvent("click",{bubbles:!0,cancelable:!0,composed:!1});Object.defineProperty(e,"target",{writable:!0,configurable:!0,value:O("button",{className:"slick-grid-menu-button"})}),this.showGridMenu(e)}showGridMenu(e,t){const n=e?.touches?.[0]??e;if(e.preventDefault(),ui(this._menuElm),this._menuElm?.remove(),this._addonOptions){const r={grid:this.grid,menu:this._menuElm,columns:this.columns,allColumns:this.getAllColumns(),visibleColumns:this.getVisibleColumns()},s={...this._addonOptions,...t};if(s&&!this.extensionUtility.runOverrideFunctionWhenExists(s.menuUsabilityOverride,r)||"function"==typeof e.stopPropagation&&(this.pubSubService.publish("onGridMenuBeforeMenuShow",r),"function"==typeof s?.onBeforeMenuShow&&!1===s.onBeforeMenuShow(e,r)||!1===this.onBeforeMenuShow.notify(r,null,this).getReturnValue()))return;this._menuElm=this.createCommandMenu(this._addonOptions?.commandItems??[]),this.createColumnPickerContainer(),vT.call(this),this._columnCheckboxes=[],OU.call(this,s),document.body.appendChild(this._menuElm),this.gridOptions.darkMode&&this._menuElm.classList.add("slick-dark-mode"),this._menuElm.style.opacity="0";const a=(void 0!==s?.marginBottom?s.marginBottom:this._defaults.marginBottom)||0;this._menuElm.style.minHeight=oh(s?.minHeight,""),void 0!==s?.height?this._menuElm.style.height=oh(s.height,""):this._menuElm.style.maxHeight=oh(s?.maxHeight,window.innerHeight-n.clientY-a+"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,s),this._isMenuOpen=!0,this.pubSubService.publish("onGridMenuAfterMenuShow",r),"function"==typeof s?.onAfterMenuShow&&s.onAfterMenuShow(e,r),this.onAfterMenuShow.notify(r,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 t=this.gridOptions.backendServiceApi||null,n=[],s=Fl(this.gridOptions),a=this._addonOptions?.commandLabels;if(this._addonOptions&&this.gridOptions){if(!this._addonOptions.hideClearFrozenColumnsCommand){const h="clear-pinning";e.some(p=>"divider"!==p&&p.hasOwnProperty("command")&&p.command===h)||n.push({iconCssClass:this._addonOptions.iconClearFrozenColumnsCommand||"mdi mdi-pin-off-outline",titleKey:`${s}${a?.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(p=>"divider"!==p&&p.hasOwnProperty("command")&&p.command===h)||n.push({iconCssClass:this._addonOptions.iconClearAllFiltersCommand||"mdi mdi-filter-remove-outline",titleKey:`${s}${a?.clearAllFiltersCommandKey??"CLEAR_ALL_FILTERS"}`,disabled:!1,command:h,positionOrder:50})}if(!this._addonOptions.hideToggleFilterCommand){const h="toggle-filter";e.some(p=>"divider"!==p&&p.hasOwnProperty("command")&&p.command===h)||n.push({iconCssClass:this._addonOptions.iconToggleFilterCommand||"mdi mdi-flip-vertical",titleKey:`${s}${a?.toggleFilterCommandKey??"TOGGLE_FILTER_ROW"}`,disabled:!1,command:h,positionOrder:53})}if(t&&!this._addonOptions.hideRefreshDatasetCommand){const h="refresh-dataset";e.some(p=>"divider"!==p&&p.hasOwnProperty("command")&&p.command===h)||n.push({iconCssClass:this._addonOptions.iconRefreshDatasetCommand||"mdi mdi-sync",titleKey:`${s}${a?.refreshDatasetCommandKey??"REFRESH_DATASET"}`,disabled:!1,command:h,positionOrder:58})}}if(!this._addonOptions.hideToggleDarkModeCommand){const h="toggle-dark-mode";e.some(p=>"divider"!==p&&p.hasOwnProperty("command")&&p.command===h)||n.push({iconCssClass:this._addonOptions.iconToggleDarkModeCommand||"mdi mdi-brightness-4",titleKey:`${s}${a?.toggleDarkModeCommandKey??"TOGGLE_DARK_MODE"}`,disabled:!1,command:h,positionOrder:54})}if(this.gridOptions.showPreHeaderPanel&&!this._addonOptions.hideTogglePreHeaderCommand){const h="toggle-preheader";e.some(p=>"divider"!==p&&p.hasOwnProperty("command")&&p.command===h)||n.push({iconCssClass:this._addonOptions.iconTogglePreHeaderCommand||"mdi mdi-flip-vertical",titleKey:`${s}${a?.togglePreHeaderCommandKey??"TOGGLE_PRE_HEADER_ROW"}`,disabled:!1,command:h,positionOrder:53})}if(this.gridOptions.enableSorting&&!this._addonOptions.hideClearAllSortingCommand){const h="clear-sorting";e.some(p=>"divider"!==p&&p.hasOwnProperty("command")&&p.command===h)||n.push({iconCssClass:this._addonOptions.iconClearAllSortingCommand||"mdi mdi-sort-variant-off",titleKey:`${s}${a?.clearAllSortingCommandKey??"CLEAR_ALL_SORTING"}`,disabled:!1,command:h,positionOrder:51})}if(this.gridOptions.enableTextExport&&!this._addonOptions.hideExportCsvCommand){const h="export-csv";e.some(p=>"divider"!==p&&p.hasOwnProperty("command")&&p.command===h)||n.push({iconCssClass:this._addonOptions.iconExportCsvCommand||"mdi mdi-download",titleKey:`${s}${a?.exportCsvCommandKey??"EXPORT_TO_CSV"}`,disabled:!1,command:h,positionOrder:55})}if(this.gridOptions.enableExcelExport&&!this._addonOptions.hideExportExcelCommand){const h="export-excel";e.some(p=>"divider"!==p&&p.hasOwnProperty("command")&&p.command===h)||n.push({iconCssClass:this._addonOptions.iconExportExcelCommand||"mdi mdi-file-excel-outline text-success",titleKey:`${s}${a?.exportExcelCommandKey??"EXPORT_TO_EXCEL"}`,disabled:!1,command:h,positionOrder:56})}if(this.gridOptions.enableTextExport&&!this._addonOptions.hideExportTextDelimitedCommand){const h="export-text-delimited";e.some(p=>"divider"!==p&&p.hasOwnProperty("command")&&p.command===h)||n.push({iconCssClass:this._addonOptions.iconExportTextDelimitedCommand||"mdi mdi-download",titleKey:`${s}${a?.exportTextDelimitedCommandKey??"EXPORT_TO_TAB_DELIMITED"}`,disabled:!1,command:h,positionOrder:57})}const d=this._addonOptions?.commandItems||[];(Array.isArray(n)&&n.length>0||Array.isArray(d)&&d.length>0)&&(this._addonOptions.commandTitle=this._addonOptions.commandTitle||this.extensionUtility.getPickerTitleOutputString("commandTitle","gridMenu"))}return n}executeGridMenuInternalCustomCommands(e,t){const n=this.sharedService?.externalRegisteredResources||[];if(t?.command)switch(t.command){case"clear-pinning":const r=[...this.sharedService.visibleColumns],s={frozenColumn:-1,frozenRow:-1,frozenBottom:!1,enableMouseWheelScrollHandler:!1};this.grid.setOptions(s),this.sharedService.gridOptions.frozenColumn=s.frozenColumn,this.sharedService.gridOptions.frozenRow=s.frozenRow,this.sharedService.gridOptions.frozenBottom=s.frozenBottom,this.sharedService.gridOptions.enableMouseWheelScrollHandler=s.enableMouseWheelScrollHandler,Array.isArray(r)&&this.grid.setColumns(r),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=n.find(C=>"TextExportService"===C.className);d?.exportToFile?d.exportToFile({delimiter:kc.comma,format:Ii.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=n.find(C=>"ExcelExportService"===C.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 p=n.find(C=>"TextExportService"===C.className);p?.exportToFile?p.exportToFile({delimiter:kc.tab,format:Ii.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 g=this.sharedService.gridOptions.darkMode;this.grid.setOptions({darkMode:!g}),this.sharedService.gridOptions.darkMode=!g;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 y=this.gridOptions?.showPreHeaderPanel??!1;this.grid.setPreHeaderPanelVisibility(!y);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 t=!1;const n=e.target.closest(`.${this.menuCssClass}`);(this.menuElement.contains(e.target)||n)&&(t=!0),(this._isMenuOpen&&this.menuElement!==e.target&&!t&&!e.defaultPrevented||"close"===e.target.className&&n)&&this.hideMenu(e)}}handleMenuItemCommandClick(e,t,n,r=0){if("divider"!==n&&!n.disabled&&!n.divider)if(n.command&&!n.commandItems){const a={grid:this.grid,command:n.command,item:n,allColumns:this.columns,visibleColumns:this.getVisibleColumns()};this.executeGridMenuInternalCustomCommands(e,a),this.pubSubService.publish("onGridMenuCommand",a),"function"==typeof this._addonOptions?.onCommand&&this._addonOptions.onCommand(e,a),this.onCommand.notify(a,null,this),"function"==typeof n.action&&n.action.call(this,e,a),!this._addonOptions?.leaveOpen&&!e.defaultPrevented&&this.hideMenu(e),e.preventDefault(),e.stopPropagation()}else n.commandItems&&this.repositionSubMenu(e,n,r)}handleMenuItemMouseOver(e,t,n,r=0){"divider"!==n&&!n.disabled&&!n.divider&&(n.commandItems?this.repositionSubMenu(e,n,r):0===r&&this.disposeSubMenus())}recreateCommandList(e,t,n,r){const s=n.level||0;if(e.length>0){const a=O("div",{className:`${this._menuCssPrefix}-command-list`,role:"menu"},t);if(0===s){this.populateCommandOrOptionTitle("command",this.addonOptions,a,s);const d=t.querySelector(".slick-command-header")??O("div",{className:"slick-command-header"});d.classList.add("with-close"),TU.call(this,d),a.appendChild(d)}return r&&s>0&&this.addSubMenuTitleWhenExists(r,a),this.populateCommandOrOptionItems("command",this._addonOptions,a,e,n,this.handleMenuItemCommandClick,this.handleMenuItemMouseOver),a}return null}repositionSubMenu(e,t,n){const r=t?.commandItems||[],s=this.createCommandMenu(r,n+1,t);s.style.display="block",document.body.appendChild(s),this.repositionMenu(e,s)}}const DU="mdi-icon-picker-check",AU="mdi-icon-picker-uncheck";function TU(i){const t=O("button",{type:"button",className:"close",ariaLabel:"Close",textContent:"\xd7",dataset:{dismiss:this instanceof y9?"slick-column-picker":"slick-grid-menu"}});i.appendChild(t)}function MU(i){const e=this;e.addonOptions?.columnTitle&&(e._columnTitleElm=O("div",{className:"slick-menu-title",textContent:e.addonOptions?.columnTitle??e._defaults.columnTitle},i))}function IU(i){const e=this,t=e instanceof y9?"columnPicker":"gridMenu",r=i.target?.closest(".icon-checkbox-container")?.querySelector(".mdi"),s=!!i.target.checked;if(i.target.ariaChecked=String(s),LU(r,s),"autoresize"===i.target.dataset.option){const a=e.getVisibleColumns();return e.grid.setOptions({forceFitColumns:s}),void e.grid.setColumns(a)}if("syncresize"!==i.target.dataset.option){if("checkbox"===i.target.type){e._areVisibleColumnDifferent=!0;const a=i.target.dataset.columnid||"",d=[];if(e._columnCheckboxes.forEach((g,v)=>{g.checked&&d.push(e.columns[v])}),!d.length)return i.target.checked=!0,void LU(r,!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&&s){const g=e.grid.getSelectedRows();e.grid.setSelectedRows(g)}const h=e.gridOptions.frozenColumn??-1;h>=0&&e.extensionUtility.readjustFrozenColumnIndexWhenNeeded(h,e.columns,d);const p={columnId:a,showing:s,allColumns:e.columns,visibleColumns:d,columns:d,grid:e.grid};e.pubSubService.publish(`on${Qs(t)}ColumnsChanged`,p),"function"==typeof e.addonOptions?.onColumnsChanged&&e.addonOptions.onColumnsChanged(i,p),e.onColumnsChanged.notify(p,null,e)}}else e.grid.setOptions({syncColumnCellResize:s})}function LU(i,e=!1){i&&(i.className=`mdi ${e?DU:AU}`)}function b9(i,e,t,n=!1){const r=O("label",{className:"checkbox-picker-label",htmlFor:e}),s=O("div",{className:"icon-checkbox-container"}),a=O("input",{id:e,type:"checkbox",dataset:t}),d=O("div",{className:`mdi ${n?DU:AU}`}),h=O("span",{className:"checkbox-label"});return s.appendChild(a),s.appendChild(d),r.appendChild(s),r.appendChild(h),i.appendChild(r),n&&(a.ariaChecked="true",a.checked=!0),{inputElm:a,labelElm:r,labelSpanElm:h}}function OU(i){const e=this,t=e instanceof SU,n=t?"gridmenu-":"";for(const r of e.columns){const s=r.id,a=document.createElement("li");(r.excludeFromColumnPicker&&!t||r.excludeFromGridMenu&&t)&&(a.className="hidden");const d=`${e._gridUid}-${n}colpicker-${s}`,h=e.grid.getColumnIndex(s)>=0,{inputElm:p,labelElm:g,labelSpanElm:v}=b9(a,d,{columnid:`${s}`},h);e._columnCheckboxes.push(p);const C=("function"==typeof i?.headerColumnValueExtractor?i.headerColumnValueExtractor:e._defaults.headerColumnValueExtractor)(r,e.gridOptions);this.grid.applyHtmlCode(v,C),a.appendChild(g),e._listElm.appendChild(a)}if((!i.hideForceFitButton||!i.hideSyncResizeButton)&&e._listElm.appendChild(document.createElement("hr")),!i?.hideForceFitButton){const r=document.createElement("li"),s=`${e._gridUid}-${n}colpicker-forcefit`,{labelSpanElm:a}=b9(r,s,{option:"autoresize"},e.gridOptions.forceFitColumns);a.textContent=i?.forceFitTitle??"",e._listElm.appendChild(r)}if(!i?.hideSyncResizeButton){const r=document.createElement("li"),s=`${e._gridUid}-${n}colpicker-syncresize`,{labelSpanElm:a}=b9(r,s,{option:"syncresize"},e.gridOptions.forceFitColumns);a.textContent=i?.syncResizeTitle??"",e._listElm.appendChild(r)}}function vT(){const i=this,e=i.grid.getColumns().slice(0),t=new Array(i.columns.length);for(let n=0;nUn(r.columnPickerLabel||r.name||"","innerHTML")},this._bindEventService=new br,this.onColumnsChanged=new me("onColumnsChanged"),this._eventHandler=new Pi,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.onPreHeaderContextMenu,e=>{["slick-column-name","slick-header-column"].some(t=>e.target?.classList.contains(t))&&this.handleHeaderContextMenu(e)}),this._eventHandler.subscribe(this.grid.onHeaderContextMenu,this.handleHeaderContextMenu.bind(this)),this._eventHandler.subscribe(this.grid.onColumnsReordered,vT.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=O("div",{ariaExpanded:"true",className:`slick-column-picker ${this._gridUid}`,role:"menu"});return vT.call(this),MU.call(this,e),TU.call(this,e),this._listElm=O("div",{className:"slick-column-picker-list",role:"menu"}),this._bindEventService.bind(e,"click",IU.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(),ui(this._menuElm),this._columnCheckboxes=[],this._menuElm=this.createPickerMenu(),this.gridOptions.darkMode&&this._menuElm.classList.add("slick-dark-mode"),OU.call(this,this.addonOptions),document.body.appendChild(this._menuElm),this.repositionMenu(e)}repositionMenu(e){const t=e?.touches?.[0]??e;if(this._menuElm){const n=this.grid.getGridPosition(),r=this._menuElm.clientWidth||0;let s=t.pageX||0;n?.width&&s+r>=n.width&&(s-=r),this._menuElm.style.top=t.pageY-10+"px",this._menuElm.style.left=`${s}px`,this._menuElm.style.minHeight=oh(this.addonOptions.minHeight,""),this._menuElm.style.maxHeight=oh(this.addonOptions.maxHeight,window.innerHeight-t.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 bT=(i,e,t,n,r,s)=>{const a=n.params||{};if(!a.formatters||!Array.isArray(a.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=a.formatters;let h=t;return d.forEach((p,g)=>{if("function"!=typeof p)throw new Error(`[Slickgrid-Universal] the "params.formatters" at index(${g}) to be used by "Formatters.multiple" is invalid, please verify all formatter functions.`);h=p.call(void 0,i,e,h,n,r,s)}),h};function Tn(i,e,t,n){let r,s,a="",d="";switch(t){case"currency":r=oe.DEFAULT_FORMATTER_CURRENCY_MIN_DECIMAL,s=oe.DEFAULT_FORMATTER_CURRENCY_MAX_DECIMAL;break;case"decimal":r=oe.DEFAULT_FORMATTER_NUMBER_MIN_DECIMAL,s=oe.DEFAULT_FORMATTER_NUMBER_MAX_DECIMAL;break;case"percent":r=oe.DEFAULT_FORMATTER_PERCENT_MIN_DECIMAL,s=oe.DEFAULT_FORMATTER_PERCENT_MAX_DECIMAL}const h=e&&"function"==typeof e.getOptions?e.getOptions():{},p=Ad("minDecimal",i,h,r),g=Ad("maxDecimal",i,h,s),v=Ad("decimalSeparator",i,h,oe.DEFAULT_NUMBER_DECIMAL_SEPARATOR),y=Ad("thousandSeparator",i,h,oe.DEFAULT_NUMBER_THOUSAND_SEPARATOR),C=Ad("displayNegativeNumberWithParentheses",i,h,oe.DEFAULT_NEGATIVE_NUMBER_WRAPPED_IN_BRAQUET),k=Ad("currencyPrefix",i,h,""),E=Ad("currencySuffix",i,h,"");return"cell"===n&&(a=Ad("numberPrefix",i,h,""),d=Ad("numberSuffix",i,h,"")),{minDecimal:p,maxDecimal:g,decimalSeparator:v,thousandSeparator:y,wrapNegativeNumber:C,currencyPrefix:k,currencySuffix:E,numberPrefix:a,numberSuffix:d}}function Ad(i,e,t,n){const r=e&&e.params;return r&&r.hasOwnProperty(i)?r[i]:t?.formatterOptions?.hasOwnProperty(i)?t.formatterOptions[i]:n}function Mn(i,e){const t=ea(i,{withZeroPadding:!0});return(n,r,s,a,d,h)=>{const g=(h&&"function"==typeof h.getOptions?h.getOptions():{})?.formatterOptions?.dateSeparator??e,y=ea(a?.type??M.date,{withDefaultIso8601:!0}),C=a?.params?.parseDateAsUtc??!1,k=Fd(s,y);let E=s;if(k){let x=k;C&&(x=function Cle(i){return uW(i,GA(i,"utc"))}(k)),E=vr(x,t,"en-US")}if(E&&g!==e){const x=new RegExp(e,"ig");E=E.replace(x,g)}return E}}function C9(i,e,t,n,r,s){let d,a=!1;t?.hasOwnProperty("exportWithFormatter")?a=!!t.exportWithFormatter:s?.hasOwnProperty("exportWithFormatter")&&(a=!!s.exportWithFormatter),n&&t.exportCustomFormatter?d=t.exportCustomFormatter:a&&t.formatter&&(d=t.formatter);const h=yT(d,i,e,t,n,r);return s?.sanitizeDataExport&&"string"==typeof h?_n(h):h}function yT(i,e,t,n,r,s){let a="",h=n.field||n.id||"";if("string"==typeof n.field&&n.field.indexOf(".")>0){const g=n.field.split(".");h=g.length>0?g[0]:n.field}const p=r?.hasOwnProperty(h)?r[h]:null;if("function"==typeof i){const g=i(e,t,p,n,r,s);a=Un(C1(g)?g:g.html||g.text)}else a=r?.hasOwnProperty(h)?p:"";return null==a&&(a=""),"object"==typeof a&&!(a instanceof Date)&&0===Object.entries(a).length&&(a=""),a}class xde extends _U{constructor(e,t,n,r){super(e,t,n),this.extensionUtility=e,this.pubSubService=t,this.sharedService=n,this.treeDataService=r,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(n.gridOptions.contextMenu)}init(e){this._addonOptions={...this._defaults,...e};const t=this._addonOptions&&Array.isArray(this._addonOptions.commandItems)?this._addonOptions.commandItems:[];this._addonOptions.commandItems=[...t,...this.addMenuCustomCommands(t)],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??{},t=this.sharedService.gridOptions.contextMenu;if(t&&e?.enableTranslate){const n=t.commandItems||[],r=t.optionItems||[];t.commandTitleKey&&(t.commandTitle=this.extensionUtility.translateWhenEnabledAndServiceExist(t.commandTitleKey,"TEXT_COMMANDS")||t.commandTitle),t.optionTitleKey&&(t.optionTitle=this.extensionUtility.translateWhenEnabledAndServiceExist(t.optionTitleKey,"TEXT_COMMANDS")||t.optionTitle),this.extensionUtility.translateMenuItemsFromTitleKey(n,"commandItems"),this.extensionUtility.translateMenuItemsFromTitleKey(r,"optionItems")}}handleOnContextMenu(e,t){this.disposeAllMenus();const n=this.grid.getCellFromEvent(e);if(n){const r=this.grid.getDataItem(n.row),s=this.grid.getColumns()[n.cell],a=t||{};if(a.cell=n.cell,a.row=n.row,a.column=s,a.dataContext=r,a.grid=this.grid,!this.extensionUtility.runOverrideFunctionWhenExists(this._addonOptions.menuUsabilityOverride,a))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 t=[],n=this.sharedService&&this.sharedService.gridOptions||{},r=n?.contextMenu,s=this.sharedService?.dataView,a=Fl(n);if(r&&!r.hideCopyCellValueCommand){const d="copy";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||t.push({iconCssClass:r.iconCopyCellValueCommand||"mdi mdi-content-copy",titleKey:`${a}COPY`,disabled:!1,command:d,positionOrder:50,action:(h,p)=>{this.copyToClipboard(p)},itemUsabilityOverride:h=>{const p=h?.column,g=h?.dataContext;if("function"==typeof p.queryFieldNameGetterFn){const v=M_(p,g,"");if(""!==v&&void 0!==v)return!0}else if(p&&g.hasOwnProperty(p.field))return""!==g[p.field]&&null!==g[p.field]&&void 0!==g[p.field];return!1}})}if(n?.enableTextExport&&r&&!r.hideExportCsvCommand){const d="export-csv";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||t.push({iconCssClass:r.iconExportCsvCommand||"mdi mdi-download",titleKey:`${a}EXPORT_TO_CSV`,disabled:!1,command:d,positionOrder:51,action:()=>{const p=(this.sharedService?.externalRegisteredResources||[]).find(g=>"TextExportService"===g.className);if(!p?.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()] };");p.exportToFile({delimiter:kc.comma,format:Ii.csv})}})}if(n&&n.enableExcelExport&&r&&!r.hideExportExcelCommand){const d="export-excel";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||t.push({iconCssClass:r.iconExportExcelCommand||"mdi mdi-file-excel-outline text-success",titleKey:`${a}EXPORT_TO_EXCEL`,disabled:!1,command:d,positionOrder:52,action:()=>{const p=(this.sharedService?.externalRegisteredResources||[]).find(g=>"ExcelExportService"===g.className);if(!p?.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()] };");p.exportToExcel()}})}if(n?.enableTextExport&&r&&!r.hideExportTextDelimitedCommand){const d="export-text-delimited";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||t.push({iconCssClass:r.iconExportTextDelimitedCommand||"mdi mdi-download",titleKey:`${a}EXPORT_TO_TAB_DELIMITED`,disabled:!1,command:d,positionOrder:53,action:()=>{const p=(this.sharedService?.externalRegisteredResources||[]).find(g=>"TextExportService"===g.className);if(!p?.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()] };");p.exportToFile({delimiter:kc.tab,format:Ii.txt})}})}if(n&&(n.enableGrouping||n.enableDraggableGrouping||n.enableTreeData)){if(r&&!r.hideCopyCellValueCommand&&t.push({divider:!0,command:"",positionOrder:54}),n&&!n.enableTreeData&&r&&!r.hideClearAllGrouping){const d="clear-grouping";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||t.push({iconCssClass:r.iconClearGroupingCommand||"mdi mdi-close",titleKey:`${a}CLEAR_ALL_GROUPING`,disabled:!1,command:d,positionOrder:55,action:()=>{s.setGrouping([]),this.pubSubService.publish("onContextMenuClearGrouping")},itemUsabilityOverride:()=>{const h=s&&s.getGrouping&&s.getGrouping();return Array.isArray(h)&&h.length>0}})}if(n&&r&&!r.hideCollapseAllGroups){const d="collapse-all-groups";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||t.push({iconCssClass:r.iconCollapseAllGroupsCommand||"mdi mdi-arrow-collapse",titleKey:`${a}COLLAPSE_ALL_GROUPS`,disabled:!1,command:d,positionOrder:56,action:()=>{n.enableTreeData?this.treeDataService.toggleTreeDataCollapse(!0):s.collapseAllGroups(),this.pubSubService.publish("onContextMenuCollapseAllGroups")},itemUsabilityOverride:()=>{if(n.enableTreeData)return!0;const h=s&&s.getGrouping&&s.getGrouping();return Array.isArray(h)&&h.length>0}})}if(n&&r&&!r.hideExpandAllGroups){const d="expand-all-groups";e.some(h=>"divider"!==h&&h.hasOwnProperty("command")&&h.command===d)||t.push({iconCssClass:r.iconExpandAllGroupsCommand||"mdi mdi-arrow-expand",titleKey:`${a}EXPAND_ALL_GROUPS`,disabled:!1,command:d,positionOrder:57,action:()=>{n.enableTreeData?this.treeDataService.toggleTreeDataCollapse(!1):s.expandAllGroups(),this.pubSubService.publish("onContextMenuExpandAllGroups")},itemUsabilityOverride:()=>{if(n.enableTreeData)return!0;const h=s&&s.getGrouping&&s.getGrouping();return Array.isArray(h)&&h.length>0}})}}return this.extensionUtility.translateMenuItemsFromTitleKey(t),t}copyToClipboard(e){try{if(e&&e.grid&&e.command){const t=this.sharedService?.gridOptions??{},n=e?.cell??0,r=e?.row??0,s=e?.column,a=e?.dataContext,d=this.sharedService?.slickGrid;let p=C9(r,n,s,a,d,t&&(t.excelExportOptions||t.textExportOptions));"function"==typeof s.queryFieldNameGetterFn&&(p=M_(s,a,""));let g=p;"string"==typeof p&&(g=p.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=g,document.body.appendChild(v),v.select(),document.execCommand("copy",!1,g)&&v.remove())}}catch{}}sortMenuItems(){const e=this.sharedService?.gridOptions?.contextMenu;e&&(this.extensionUtility.sortItems(e.commandItems||[],"positionOrder"),this.extensionUtility.sortItems(e.optionItems||[],"positionOrder"))}}class Sde{constructor(e,t,n){this.extensionUtility=e,this.pubSubService=t,this.sharedService=n,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 br,this.onGroupChanged=new me("onGroupChanged"),this._eventHandler=new Pi}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,t){if(this._addonOptions={...this._defaults,...t},this._grid=e,e){if(this._gridUid=e.getUID(),this._gridColumns=e.getColumns(),this._dropzoneElm=e.getTopHeaderPanel()||e.getPreHeaderPanel(),this._dropzoneElm.classList.add("slick-dropzone"),this.onGroupChanged.setPubSubService(this.pubSubService),!this._addonOptions.hideToggleAllButton){this._groupToggler=O("div",{className:"slick-group-toggle-all",title:this._addonOptions.toggleAllPlaceholderText??"",style:{display:"none"}});const n=O("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(O("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(n,!0,!1)),this.pubSubService.subscribe("onContextMenuExpandAllGroups",()=>this.toggleGroupToggler(n,!1,!1)))}this._dropzonePlaceholderElm=O("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,(n,r)=>{const s=r.node;if(!E6(r.column?.grouping)&&s&&(s.style.cursor="pointer",this._addonOptions.groupIconCssClass)){const a=O("span",{className:"slick-column-groupable"},s);this._addonOptions.groupIconCssClass&&a.classList.add(...Oi(this._addonOptions.groupIconCssClass))}}),this._subscriptions.push(this.pubSubService.subscribe("onContextMenuClearGrouping",()=>this.clearDroppedGroups()));for(const n of this._gridColumns){const r=n.field;e.updateColumnHeader(r)}}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(),ui(this.gridContainer.querySelector(`.${this.gridUid} .slick-preheader-panel,.${this.gridUid} .slick-topheader-panel`))}clearDroppedGroups(){this.columnsGroupBy=[],this.updateGroupBy("clear-all");const e=this._dropzoneElm.querySelectorAll(".slick-dropped-grouping");for(const t of Array.from(e))this._dropzoneElm.querySelector(".slick-groupby-remove")?.remove(),t?.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 t=Array.isArray(e)?e:[e];for(const n of t){const r=this.grid.getHeaderColumn(n);this.handleGroupByDrop(this._dropzoneElm,r)}}setupColumnReorder(e,t,n,r,s,a,d,h,p){this.destroySortableInstances();const g=e.getTopHeaderPanel()||e.getPreHeaderPanel(),v=g.querySelector(".slick-draggable-dropzone-placeholder"),y=g.querySelector(".slick-group-toggle-all"),C={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"),g.querySelectorAll(".slick-dropped-grouping").forEach(E=>E.style.display="none"),y&&(y.style.display="none")},onEnd:k=>{g?.classList.remove("slick-dropzone-hover"),v?.parentElement?.classList.remove("slick-dropzone-placeholder-hover");const E=g.querySelectorAll(".slick-dropped-grouping");if(E.forEach(I=>I.style.display="flex"),E.length&&(v&&(v.style.display="none"),y&&(y.style.display="inline-flex")),!e.getEditorLock().commitCurrentEdit())return;const x=this.sortableLeftInstance?.toArray()??[];if(t.length>1){const I=this._sortableRightInstance?.toArray()??[];for(const L of I)x.push(L)}const S=[],D=e.getColumns();for(const I of x)S.push(D[d.call(e,I)]);r.call(e,S),p.call(e,e.onColumnsReordered,{grid:e,impactedColumns:S}),k.stopPropagation(),s.call(e)}};return this._sortableLeftInstance=wm.create(this.gridContainer.querySelector(`.${e.getUID()} .slick-header-columns.slick-header-columns-left`),C),this._sortableRightInstance=wm.create(this.gridContainer.querySelector(`.${e.getUID()} .slick-header-columns.slick-header-columns-right`),C),{sortableLeftInstance:this._sortableLeftInstance,sortableRightInstance:this._sortableRightInstance}}addColumnGroupBy(e){this.columnsGroupBy.push(e),this.updateGroupBy("add-group")}addGroupByRemoveClickHandler(e,t,n,r){this._bindingEventService.bind(t,"click",()=>{const s=this._bindingEventService.boundedEvents.filter(a=>a.element===t);for(const a of s)this._bindingEventService.unbind(a.element,"click",a.listener);this.removeGroupBy(e,n,r)})}addGroupSortClickHandler(e,t){const{grouping:n,type:r}=e;this._bindingEventService.bind(t,"click",()=>{if(this.toggleGroupAll(e,!1),n){const s=n.sortAsc?Li.desc:Li.asc;n.comparer=(a,d)=>ry(r||"text",a.value,d.value,s,e,this.gridOptions),this.getGroupBySortIcon(t,!n.sortAsc),this.updateGroupBy("sort-group"),n.sortAsc=!n.sortAsc,this.grid.invalidate()}})}getGroupBySortIcon(e,t=!0){t?this._addonOptions.sortAscIconCssClass?(e.classList.remove(...Oi(this._addonOptions.sortDescIconCssClass)),e.classList.add(...Oi(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(...Oi(this._addonOptions.sortAscIconCssClass)),e.classList.add(...Oi(this._addonOptions.sortDescIconCssClass))):this._addonOptions.sortDescIconCssClass||(e.classList.add("slick-groupby-sort-desc-icon"),e.classList.remove("slick-groupby-sort-asc-icon"))}handleGroupByDrop(e,t){const n=t.getAttribute("data-id")?.replace(this._gridUid,"");let r=!0;for(const s of this.columnsGroupBy)s.id===n&&(r=!1);if(r){for(const s of this._gridColumns)if(s.id===n&&s.grouping&&!E6(s.grouping)){const a=t.querySelector(".slick-column-name"),d=O("div",{id:`${this._gridUid}_${s.id}_entry`,className:"slick-dropped-grouping",dataset:{id:`${s.id}`}});O("div",{className:"slick-dropped-grouping-title",style:{display:"inline-flex"},textContent:a?a.textContent:t.textContent},d);const h=O("div",{className:"slick-groupby-remove"});let p;this._addonOptions.deleteIconCssClass&&h.classList.add(...Oi(this._addonOptions.deleteIconCssClass)),this._addonOptions.deleteIconCssClass||h.classList.add("slick-groupby-remove-icon"),!0!==this._addonOptions?.hideGroupSortIcons&&s.sortable&&(void 0===s.grouping?.sortAsc&&(s.grouping.sortAsc=!0),p=O("div",{className:"slick-groupby-sort"},d),this.getGroupBySortIcon(p,s.grouping.sortAsc)),d.appendChild(h),d.appendChild(document.createElement("div")),e.appendChild(d),this._groupToggler&&0===this.columnsGroupBy.length&&this.toggleGroupAll(s),this.addColumnGroupBy(s),this.addGroupByRemoveClickHandler(s.id,h,t,d),p&&this.addGroupSortClickHandler(s,p)}this._groupToggler&&this.columnsGroupBy.length>0&&(this._groupToggler.style.display="inline-flex")}}toggleGroupAll({grouping:e},t){const n=this._groupToggler?.querySelector(".slick-group-toggle-all-icon");!0===t||e?.collapsed?(n?.classList.add("collapsed"),n?.classList.remove("expanded")):(n?.classList.add("expanded"),n?.classList.remove("collapsed"))}removeFromArray(e,t){if(Array.isArray(e)){const n=e.findIndex(r=>r.id===t.id);n>=0&&e.splice(n,1)}return e}removeGroupBy(e,t,n){n.remove();const r=[];this._gridColumns.forEach(s=>r[s.id]=s),this.removeFromArray(this.columnsGroupBy,r[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",t=>t.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=wm.create(e,{group:"shared",ghostClass:"slick-droppable-sortitem-hover",draggable:".slick-dropped-grouping",dragoverBubble:!0,onAdd:t=>{const n=t.item;n.getAttribute("id")?.replace(this._gridUid,"")&&this.handleGroupByDrop(e,wm.utils.clone(t.item)),n.parentNode?.removeChild(n)},onUpdate:()=>{const t=this._droppableInstance?.toArray()??[],n=[];for(const r of t)for(const s of this.columnsGroupBy)if(s.id===r){n.push(s);break}this.columnsGroupBy=n,this.updateGroupBy("sort-group")}}),this.addDragOverDropzoneListeners(),this._groupToggler&&this._bindingEventService.bind(this._groupToggler,"click",t=>{const n=t.target.classList.contains("slick-group-toggle-all-icon")?t.target:t.currentTarget.querySelector(".slick-group-toggle-all-icon");this.toggleGroupToggler(n,n?.classList.contains("expanded"))})}toggleGroupToggler(e,t=!0,n=!0){e&&(!0===t?(e.classList.add("collapsed"),e.classList.remove("expanded"),n&&this.dataView.collapseAllGroups()):(e.classList.remove("collapsed"),e.classList.add("expanded"),n&&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 t=[];this.columnsGroupBy.forEach(n=>t.push(n.grouping)),this.dataView.setGrouping(t),this._dropzonePlaceholderElm.style.display="none",this.triggerOnGroupChangedEvent({caller:e,groupColumns:t})}triggerOnGroupChangedEvent(e){this._addonOptions&&"function"==typeof this._addonOptions.onGroupChanged&&this._addonOptions.onGroupChanged(new Ri,e),this.onGroupChanged.notify(e)}}class Dde extends gT{constructor(e,t,n){super(e,t,n),this.extensionUtility=e,this.pubSubService=t,this.sharedService=n,this._buttonElms=[],this._defaults={buttonCssClass:"slick-header-button"},this.pluginName="HeaderButtons",this._menuCssPrefix="slick-header-button",this._camelPluginName="headerButtons",this._bindEventService=new br,this._eventHandler=new Pi,this.init(n.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,t){const n=t.column;if(n.header?.buttons&&Array.isArray(n.header.buttons)){let r=n.header.buttons.length;for(;r--;){const s=n.header.buttons[r],a=this.populateSingleCommandOrOptionItem("command",this.addonOptions,null,s,t,this.handleButtonClick.bind(this));a&&s.handler&&!s.disabled&&this._bindEventService.bind(a,"click",d=>s.handler.call(this,d)),a&&(this._buttonElms.push(a),t.node.appendChild(a))}}}handleBeforeHeaderCellDestroy(e,t){if(t.column.header?.buttons&&this._addonOptions?.buttonCssClass){const r=(this._addonOptions?.buttonCssClass||"").replace(/(\s+)/g,".");r&&t.node.querySelectorAll(`.${r}`).forEach(s=>s.remove())}}handleButtonClick(e,t,n,r,s){if(n.command&&!n.disabled){const a=n.command||"",d={grid:this.grid,column:s,button:n};a&&(d.command=a),"function"==typeof n.action&&!n.disabled&&n.action.call(this,e,d),null!==a&&!n.disabled&&this._addonOptions?.onCommand&&(this.pubSubService.publish("onHeaderButtonCommand",d),this._addonOptions.onCommand(e,d),s?.id&&this.grid.updateColumnHeader(s.id))}e.preventDefault(),e.stopPropagation()}}class Ade extends gT{constructor(e,t,n,r,s){super(e,n,r),this.extensionUtility=e,this.filterService=t,this.pubSubService=n,this.sharedService=r,this.sortService=s,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(r.gridOptions.headerMenu)}init(e){this._addonOptions={...this._defaults,...e},this._eventHandler.subscribe(this.grid.onBeforeSetColumns,(t,n)=>{this.sharedService.gridOptions.headerMenu=this.addHeaderMenuCustomCommands(n.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 t=this.sharedService.slickGrid.getColumnIndex(e.id),n=this.sharedService.slickGrid.getColumns(),r=this.sharedService.gridOptions.frozenColumn??-1;r>=0&&r>=t&&(this.sharedService.gridOptions.frozenColumn=r-1,this.sharedService.slickGrid.setOptions({frozenColumn:this.sharedService.gridOptions.frozenColumn}));const s=k6(n,t);this.sharedService.visibleColumns=s,this.sharedService.slickGrid.setColumns(s),this.pubSubService.publish("onHeaderMenuHideColumns",{columns:s,hiddenColumn:e})}}hideMenu(){this.disposeSubMenus(),this._menuElm?.remove(),this._menuElm=void 0}repositionSubMenu(e,t,n,r){const s=this.createCommandMenu(t.commandItems||[],r,n+1,t);document.body.appendChild(s),this.repositionMenu(e,s)}repositionMenu(e,t){const n=e.target,r=t.classList.contains("slick-submenu"),s=r?e.target.closest(".slick-menu-item"):n,a=L$(this.sharedService.gridContainerElement,n),d=this.grid.getGridPosition(),h=t.offsetWidth,p=kn(s);let g=r?p.left:a?.left??0,v=r?p.top:(a?.top??0)+(this.addonOptions?.menuOffsetTop??0)+n.clientHeight;if(r){const y=t?.clientHeight||0,{bottom:C,top:k}=R_(s);"top"==(CC?"top":"bottom")?(t.classList.remove("dropdown"),t.classList.add("dropup"),v-=y-s.clientHeight):(t.classList.remove("dropup"),t.classList.add("dropdown"))}if(r&&s){const y=g+Number(h)+s.clientWidth,C=document.documentElement.clientWidth;"left"==(y>=d.width||y>=C?"left":"right")?(t.classList.remove("dropright"),t.classList.add("dropleft"),g-=h):(t.classList.remove("dropleft"),t.classList.add("dropright"),g+=s.offsetWidth)}else g=a?.left??0,this.addonOptions.autoAlign&&d?.width&&g+(t.clientWidth??0)>=d.width&&(g=g+n.clientWidth-t.clientWidth+(this.addonOptions?.autoAlignOffset||0));t.style.top=`${v}px`,t.style.left=`${g}px`}translateHeaderMenu(){this.sharedService.gridOptions?.headerMenu&&this.resetHeaderMenuTranslations(this.sharedService.visibleColumns)}handleHeaderCellRendered(e,t){const r=t.column.header?.menu;if(r&&t.node){if(!this.extensionUtility.runOverrideFunctionWhenExists(this.addonOptions.menuUsabilityOverride,t))return;const s=O("div",{className:"slick-header-menu-button",ariaLabel:"Header Menu"},t.node);this.addonOptions.buttonCssClass&&s.classList.add(...Oi(this.addonOptions.buttonCssClass)),this.addonOptions.tooltip&&(s.title=this.addonOptions.tooltip),this._bindEventService.bind(s,"click",a=>{this.disposeAllMenus(),this.createParentMenu(a,t.column,r)})}}handleBeforeHeaderCellDestroy(e,t){t.column.header?.menu&&t.node.querySelectorAll(".slick-header-menu-button").forEach(r=>r.remove())}handleBodyMouseDown(e){if(this.menuElement){let t=!1;const n=e.target.closest(`.${this.menuCssClass}`);(this.menuElement.contains(e.target)||n)&&(t=!0),(this._menuElm!==e.target&&!t&&!e.defaultPrevented||"close"===e.target.className&&n)&&this.hideMenu()}}handleMenuItemCommandClick(e,t,n,r=0,s){if("divider"!==n&&!n.disabled&&!n.divider)if(n.command&&!n.commandItems){const d={grid:this.grid,command:n.command,column:s,item:n};this.executeHeaderMenuInternalCommands(e,d),this.pubSubService.publish("onHeaderMenuCommand",d),"function"==typeof this.addonOptions?.onCommand&&this.addonOptions.onCommand(e,d),"function"==typeof n.action&&n.action.call(this,e,d),e.defaultPrevented||this.hideMenu(),e.preventDefault(),e.stopPropagation()}else n.commandItems&&this.repositionSubMenu(e,n,r,s)}handleMenuItemMouseOver(e,t,n,r=0,s){"divider"!==n&&!n.disabled&&!n.divider&&(n.commandItems?this.repositionSubMenu(e,n,r,s):0===r&&this.disposeSubMenus())}addHeaderMenuCustomCommands(e){const t=this.sharedService.gridOptions,n=t.headerMenu||{},r=Fl(t);return Array.isArray(e)&&t.enableHeaderMenu&&e.forEach(s=>{if(s&&!s.excludeFromHeaderMenu){s.header?s.header.menu||(s.header.menu={commandItems:[]}):s.header={menu:{commandItems:[]}};const a=s?.header?.menu?.commandItems??[];let d=!1;if(n&&!n.hideFreezeColumnsCommand&&(d=!0,a.some(h=>"divider"!==h&&"freeze-columns"===h?.command)||a.push({iconCssClass:n.iconFreezeColumns||"mdi mdi-pin-outline",titleKey:`${r}FREEZE_COLUMNS`,command:"freeze-columns",positionOrder:45})),n&&!n.hideColumnResizeByContentCommand&&this.sharedService.gridOptions.enableColumnResizeOnDoubleClick&&(d=!0,a.some(h=>"divider"!==h&&"column-resize-by-content"===h?.command)||a.push({iconCssClass:n.iconColumnResizeByContentCommand||"mdi mdi-arrow-expand-horizontal",titleKey:`${r}COLUMN_RESIZE_BY_CONTENT`,command:"column-resize-by-content",positionOrder:47})),d&&!a.some(h=>"divider"!==h&&48===h.positionOrder)&&a.push({divider:!0,command:"",positionOrder:48}),t.enableSorting&&s.sortable&&n&&!n.hideSortCommands&&(a.some(h=>"divider"!==h&&"sort-asc"===h?.command)||a.push({iconCssClass:n.iconSortAscCommand||"mdi mdi-sort-ascending",titleKey:`${r}SORT_ASCENDING`,command:"sort-asc",positionOrder:50}),a.some(h=>"divider"!==h&&"sort-desc"===h?.command)||a.push({iconCssClass:n.iconSortDescCommand||"mdi mdi-sort-descending",titleKey:`${r}SORT_DESCENDING`,command:"sort-desc",positionOrder:51}),a.some(h=>"divider"!==h&&52===h.positionOrder)||a.push({divider:!0,command:"",positionOrder:52}),!n.hideClearSortCommand&&!a.some(h=>"divider"!==h&&"clear-sort"===h?.command)&&a.push({iconCssClass:n.iconClearSortCommand||"mdi mdi-sort-variant-off",titleKey:`${r}REMOVE_SORT`,command:"clear-sort",positionOrder:58})),s.filter?.filterShortcuts&&!a.some(h=>"divider"!==h&&"filter-shortcuts-root-menu"===h?.command)){const h=[];s.filter.filterShortcuts.forEach(g=>{const v=g.title?iy(g.title):(g.titleKey||"").toLowerCase().replaceAll("_","-");h.push({...g,command:v,action:(y,C)=>{this.filterService.getFiltersMetadata().find(E=>E.columnDef.id===C.column.id)?.setValues(g.searchTerms,g.operator,!0)}})});const p=n.filterShortcutsPositionOrder??55;a.push({iconCssClass:n.iconFilterShortcutSubMenu||"mdi mdi-filter-outline",titleKey:`${r}FILTER_SHORTCUTS`,command:"filter-shortcuts-root-menu",positionOrder:p,commandItems:h}),d&&!a.some(g=>"divider"!==g&&g.positionOrder===p+1)&&a.push({divider:!0,command:"",positionOrder:p+1})}t.enableFiltering&&s.filterable&&n&&!n.hideFilterCommand&&!n.hideClearFilterCommand&&!a.some(h=>"divider"!==h&&"clear-filter"===h?.command)&&a.push({iconCssClass:n.iconClearFilterCommand||"mdi mdi-filter-remove-outline",titleKey:`${r}REMOVE_FILTER`,command:"clear-filter",positionOrder:57}),n&&!n.hideColumnHideCommand&&!a.some(h=>"divider"!==h&&"hide-column"===h?.command)&&a.push({iconCssClass:n.iconColumnHideCommand||"mdi mdi-close",titleKey:`${r}HIDE_COLUMN`,command:"hide-column",positionOrder:59}),this.extensionUtility.translateMenuItemsFromTitleKey(a),this.extensionUtility.sortItems(a,"positionOrder")}}),n}clearColumnFilter(e,t){t?.column&&this.filterService.clearFilterByColumnId(e,t.column.id)}clearColumnSort(e,t){t?.column&&this.sharedService&&this.sortService.clearSortByColumnId(e,t.column.id)}executeHeaderMenuInternalCommands(e,t){if(t?.command)switch(t.command){case"hide-column":this.hideColumn(t.column),this.sharedService.gridOptions?.enableAutoSizeColumns&&this.sharedService.slickGrid.autosizeColumns();break;case"clear-filter":this.clearColumnFilter(e,t);break;case"clear-sort":this.clearColumnSort(e,t);break;case"column-resize-by-content":this.pubSubService.publish("onHeaderMenuColumnResizeByContent",{columnId:t.column.id});break;case"freeze-columns":const n=[...this.sharedService.visibleColumns],s={frozenColumn:n.findIndex(p=>p.id===t.column.id),enableMouseWheelScrollHandler:!0},a=this.sharedService.slickGrid.getColumns();this.sharedService.slickGrid.setOptions(s,!1,!0),this.sharedService.gridOptions.frozenColumn=s.frozenColumn,this.sharedService.gridOptions.enableMouseWheelScrollHandler=s.enableMouseWheelScrollHandler,this.sharedService.frozenVisibleColumnId=t.column.id,this.sharedService.hasColumnsReordered||Array.isArray(n)&&Array.isArray(this.sharedService.allColumns)&&n.length!==this.sharedService.allColumns.length?this.sharedService.slickGrid.setColumns(n):this.sharedService.slickGrid.setColumns(a),this.sharedService.slickGrid.getOptions().enableAutoSizeColumns&&this.sharedService.slickGrid.autosizeColumns();break;case"sort-asc":case"sort-desc":const h="sort-asc"===t.command;this.sortColumn(e,t,h)}}createParentMenu(e,t,n){const r={grid:this.grid,column:t,menu:n};"function"==typeof e.stopPropagation&&(this.pubSubService.publish("onHeaderMenuBeforeMenuShow",r),"function"==typeof this.addonOptions?.onBeforeMenuShow&&!1===this.addonOptions?.onBeforeMenuShow(e,r))||(this._menuElm=this.createCommandMenu(n.commandItems,t),this.grid.getContainerNode()?.appendChild(this._menuElm),this.repositionMenu(e,this._menuElm),this.pubSubService.publish("onHeaderMenuAfterMenuShow",r),("function"!=typeof this.addonOptions?.onAfterMenuShow||!1!==this.addonOptions?.onAfterMenuShow(e,r))&&(e.preventDefault(),e.stopPropagation()))}createCommandMenu(e,t,n=0,r){const s=r?.command;let a=1===n&&s?s.replace(/\s/g,""):"";a&&(this._subMenuParentId=a),n>1&&(a=this._subMenuParentId);const d=`${this.menuCssClass} slick-menu-level-${n} ${this.gridUid}`,h=document.body.querySelector(`.${this.menuCssClass}.slick-menu-level-${n}${this.gridUidSelector}`);if(h){if(h.dataset.subMenuParent===a)return h;this.disposeSubMenus()}const p=O("div",{ariaExpanded:"true",ariaLabel:n>1?"SubMenu":"Header Menu",role:"menu",className:d,style:{minWidth:`${this.addonOptions.minWidth}px`}});n>0&&(p.classList.add("slick-submenu"),a&&(p.dataset.subMenuParent=a),this.gridOptions?.darkMode&&p.classList.add("slick-dark-mode"));const g=O("div",{className:`${this._menuCssPrefix}-command-list`,role:"menu"},p),v={grid:this.grid,column:t,level:n,menu:{commandItems:e}};return r&&n>0&&this.addSubMenuTitleWhenExists(r,g),this.populateCommandOrOptionItems("command",this.addonOptions,g,e,v,this.handleMenuItemCommandClick,this.handleMenuItemMouseOver),n++,p}resetHeaderMenuTranslations(e){e.forEach(t=>{if(t?.header?.menu?.commandItems&&!t.excludeFromHeaderMenu){const n=t.header.menu.commandItems||[];this.extensionUtility.translateMenuItemsFromTitleKey(n)}})}sortColumn(e,t,n=!0){if(t?.column){const r=t.column,s=this.sharedService.gridOptions.multiColumnSort?this.sortService.getCurrentColumnSorts(r.id+""):[];let a=Cn.local;s.push({columnId:r.id,sortCol:r,sortAsc:n}),this.sharedService.gridOptions.backendServiceApi?(this.sortService.onBackendSortChanged(e,{multiColumnSort:!0,sortCols:s,grid:this.sharedService.slickGrid}),a=Cn.remote):this.sharedService.dataView?(this.sortService.onLocalSortChanged(this.sharedService.slickGrid,s),a=Cn.local):t.grid.onSort.notify(s);const d=s.map(h=>({columnId:h?.sortCol?.id??"",sortAsc:h?.sortAsc??!0}));if(this.sharedService.slickGrid.setSortColumns(d),a){const h=[];d.forEach(p=>{h.push({columnId:`${p.columnId}`,direction:p.sortAsc?"ASC":"DESC"})}),this.sortService.emitSortChanged(a,h)}}}}const CT="slick-rbe-editmode",RU="slick-rbe-unsaved-highlight",w9="action-btns--delete",k9="action-btns--edit",_9="action-btns--update",E9="action-btns--cancel";class PU{constructor(e,t,n){this.extensionUtility=e,this.pubSubService=t,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=(r,s)=>this._editedRows.has(s.item?.[this.gridOptions.datasetIdPropertyName??"id"]),this._eventHandler=new Pi,this._addonOptions=n}get addonOptions(){return this._addonOptions}get gridOptions(){return this._grid.getOptions()||{}}get eventHandler(){return this._eventHandler}init(e,t){this._grid=e,this._gridService=t,this._addonOptions={...this._defaults,...this.addonOptions};const n=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 s=this.gridOptions.excelCopyBufferOptions?.onBeforePasteCell;this._grid.setOptions({excelCopyBufferOptions:{...this.gridOptions.excelCopyBufferOptions,onBeforePasteCell:(a,d)=>{let h=!0;if(s&&(h=s(a,d),!1===h))return!1;const p=n.getItem(d.row),g=this.gridOptions.datasetIdPropertyName??"id";return!(!this._editedRows.has(p[g])||!0!==h)}}})}const r=n.getItemMetadata;n.getItemMetadata=this.updateItemMetadata(r?.bind?.(n)),this._eventHandler.subscribe(this._grid.onSetOptions,this.optionsUpdatedHandler.bind(this)),this._eventHandler.subscribe(n.onRowsOrCountChanged,this.handleAllRowRerender.bind(this)),this.translate()}destroy(){this.dispose()}dispose(){this._eventHandler?.unsubscribeAll(),this.pubSubService?.unsubscribeAll()}create(e,t){if(this._addonOptions={...this._defaults,...t.rowBasedEditOptions},Array.isArray(e)&&t){const n=this.getColumnDefinition();if(!e.some(r=>r.id===n.id)){const r=t?.rowBasedEditOptions?.columnIndexPosition??-1;-1===r?e.push(n):r>0&&rvoid 0!==v.editor),d=[],h=this.gridOptions.datasetIdPropertyName??"id";r.forEach((v,y)=>{const C=r[y],k=s[y];if(C!==k||""===k){const E=Array.isArray(n.prevSerializedValue)?a?.[y]:t;if(!E)return;this._grid.invalidate(),n.execute(),this.renderUnsavedCellStyling(e[h],E),d.push(E)}});const p=this._editedRows.get(e[h]),g=[...p?.editCommands||[]];d.length>0&&g.push(n),this._editedRows.set(e[h],{columns:[...p?.columns||[],...d],editCommands:g,cssStyleKeys:p?.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 t=this.gridOptions.datasetIdPropertyName??"id",n=this._editedRows.get(e[t]),r=this._grid.getData().getRowByItem(e);if(void 0!==r&&n?.editCommands&&n.editCommands.length||Fc.cancelCurrentEdit()){for(;n.editCommands.length>0;){const s=n.editCommands.pop();s&&s.undo()}n.columns.forEach(s=>{this.removeUnsavedStylingFromCell(s,r)}),n.columns=[],this._grid.invalidate()}}renderUnsavedCellStyling(e,t){if(t){const n=this._grid.getData()?.getRowById(e);if(void 0!==n&&n>=0){const r={[n]:{[t.id]:"slick-rbe-unsaved-cell"}},s=`${RU}_${[t.id]}${n}`;this._grid.setCellCssStyles(s,r),this._editedRows.get(e)?.cssStyleKeys.push(s)}}}handleAllRowRerender(e,t){this._editedRows.forEach((n,r)=>{n.cssStyleKeys.forEach(s=>{this._grid.removeCellCssStyles(s)}),n.cssStyleKeys=[],n.columns.forEach(s=>{this.renderUnsavedCellStyling(r,s)})})}removeUnsavedStylingFromCell(e,t){const n=`${RU}_${[e.id]}${t}`;this._grid.removeCellCssStyles(n)}removeUnsavedStylingFromRow(e){this._grid.getColumns().forEach(t=>{this.removeUnsavedStylingFromCell(t,e)})}optionsUpdatedHandler(e,t){this._addonOptions={...this._defaults,...t.optionsAfter.rowBasedEditOptions}}onCellClickHandler(e,t){var n=this;return yn(function*(){const r=t.dataContext,s=e.target,a=n.gridOptions.datasetIdPropertyName??"id",d=n._editedRows.get(r[a]);if((s.classList.contains(w9)||s.parentElement?.classList.contains(w9))&&n._gridService){if(n._addonOptions?.actionButtons?.deleteButtonPrompt&&!window.confirm(n._addonOptions.actionButtons.deleteButtonPrompt))return;n.toggleEditmode(r,!1),n._gridService.deleteItem(r)}else if(s.classList.contains(k9)||s.parentElement?.classList.contains(k9)){if(!n._addonOptions?.allowMultipleRows&&n._editedRows.size>0)return;"function"==typeof n._addonOptions?.onBeforeEditMode&&n._addonOptions.onBeforeEditMode(t),n.toggleEditmode(r,!0)}else if(s.classList.contains(_9)||s.parentElement?.classList.contains(_9)){if(n._addonOptions?.actionButtons?.updateButtonPrompt&&(d?.editCommands.length||0)>0&&!window.confirm(n._addonOptions.actionButtons.updateButtonPrompt)||(n._grid.getCellEditor()&&n._grid.getActiveCell()?.row===t.row&&n._grid.getEditController()?.commitCurrentEdit(),n._addonOptions?.onBeforeRowUpdated&&!0!==(yield n._addonOptions.onBeforeRowUpdated(t))))return;n.removeUnsavedStylingFromRow(t.row),n.toggleEditmode(r,!1)}else if(s.classList.contains(E9)||s.parentElement?.classList.contains(E9)){if(n._addonOptions?.actionButtons?.cancelButtonPrompt&&(d?.editCommands.length||0)>0&&!window.confirm(n._addonOptions.actionButtons.cancelButtonPrompt))return;n.undoRowEdit(r),n.toggleEditmode(r,!1)}})()}actionColumnFormatter(e,t,n,r,s){const a=this.gridOptions,d=this._editedRows.has(s?.[a.datasetIdPropertyName??"id"]),h=this._translations[this._currentLang]??this.translate(),p=document.createDocumentFragment();return p.appendChild(O("span",{className:`${a.rowBasedEditOptions?.actionButtons?.editButtonClassName||"button-style padding-1px mr-2"} action-btns `+k9,title:h.btnEditTitle,style:{display:d?"none":""}})).appendChild(O("span",{className:a.rowBasedEditOptions?.actionButtons?.iconEditButtonClassName||"mdi mdi-table-edit text-color-primary"})),p.appendChild(O("span",{className:`${a.rowBasedEditOptions?.actionButtons?.deleteButtonClassName||"button-style padding-1px"} action-btns `+w9,title:h.btnDeleteTitle,style:{display:d?"none":""}})).appendChild(O("span",{className:a.rowBasedEditOptions?.actionButtons?.iconDeleteButtonClassName||"mdi mdi-close text-color-danger"})),p.appendChild(O("span",{className:`${a.rowBasedEditOptions?.actionButtons?.updateButtonClassName||"button-style padding-1px mr-2"} action-btns `+_9,title:h.btnUpdateTitle,style:{display:d?"":"none"}})).appendChild(O("span",{className:a.rowBasedEditOptions?.actionButtons?.iconUpdateButtonClassName||"mdi mdi-check-bold text-color-success"})),p.appendChild(O("span",{className:`${a.rowBasedEditOptions?.actionButtons?.cancelButtonClassName||"button-style padding-1px"} action-btns `+E9,title:h.btnCancelTitle,style:{display:d?"":"none"}})).appendChild(O("span",{className:a.rowBasedEditOptions?.actionButtons?.iconCancelButtonClassName||"mdi mdi-cancel text-color-danger"})),p}toggleEditmode(e,t){const n=this.gridOptions.datasetIdPropertyName??"id";t?this._editedRows.set(e[n],{columns:[],editCommands:[],cssStyleKeys:[]}):this._editedRows.delete(e[n]),this._grid.invalidate()}updateItemMetadata(e){return t=>{const n=this._grid.getData().getItem(t);let r={cssClasses:""};if("function"==typeof e){const s=e(t);s&&(r=s)}if(r&&n){const s=this.gridOptions.datasetIdPropertyName??"id";this._editedRows.has(n[s])&&!r.cssClasses.includes(CT)?r.cssClasses=(r.cssClasses||"")+" "+CT:!this._editedRows.has(n[s])&&r.cssClasses.includes(CT)&&(r.cssClasses=r.cssClasses.replace(CT,""))}return r}}getTitleOrDefault(e,t){const n=this.gridOptions.rowBasedEditOptions?.actionButtons;return n?.[e+"Key"]&&this.extensionUtility.translaterService?.translate?.(n?.[e+"Key"]||"")||n?.[e]||t}}class NU{constructor(e){this.pubSubService=e,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.onBeforeMoveRows=new me("onBeforeMoveRows"),this.onMoveRows=new me("onMoveRows"),this._eventHandler=new Pi}get addonOptions(){return this._addonOptions}get eventHandler(){return this._eventHandler}get gridOptions(){return this._grid?.getOptions()??{}}init(e,t){this._addonOptions={...this._defaults,...t},this._grid=e,this._canvas=this._grid.getCanvasNode(),U.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,t){if(this._addonOptions={...this._defaults,...t.rowMoveManager},Array.isArray(e)&&t){const n=this.getColumnDefinition();if(!e.some(r=>r.id===n.id)){const s=Array.isArray(e)&&e.find(d=>"selectAndMove"===d?.behavior)||n,a=t?.rowMoveManager?.columnIndexPosition??0;a>0?e.splice(a,0,s):e.unshift(s),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,t){if(this._dragging&&(this._dragging=!1,e.stopImmediatePropagation(),t.guide?.remove(),t.selectionProxy?.remove(),t.clonedSlickRow?.remove(),t.canMove)){const n={grid:this._grid,rows:t.selectedRows,insertBefore:t.insertBefore};"function"==typeof this._addonOptions.onMoveRows&&this._addonOptions.onMoveRows(e instanceof Ri?e.getNativeEvent():e,n),this.onMoveRows.notify(n)}}handleDrag(e,t){if(this._dragging){e.stopImmediatePropagation();const n=e.getNativeEvent(),s=(n?.touches?.[0]??n).pageY-kn(this._canvas).top;t.selectionProxy.style.top=s-5+"px",t.selectionProxy.style.display="block",t.clonedSlickRow&&(t.clonedSlickRow.style.top=s-6+"px",t.clonedSlickRow.style.display="block");const a=Math.max(0,Math.min(Math.round(s/(this.gridOptions.rowHeight||0)),this._grid.getDataLength()));if(a!==t.insertBefore){const d={grid:this._grid,rows:t.selectedRows,insertBefore:a};if(!1===this._addonOptions?.onBeforeMoveRows?.(n,d)||!1===this.onBeforeMoveRows.notify(d).getReturnValue()?t.canMove=!1:t.canMove=!0,this._usabilityOverride&&t.canMove){const h=this._grid.getDataItem(a);t.canMove=this.checkUsabilityOverride(a,h,this._grid)}t.canMove?t.guide.style.top=a*(this.gridOptions.rowHeight||0)+"px":t.guide.style.top="-1000px",t.insertBefore=a}}}handleDragStart(e,t){const n=this._grid.getCellFromEvent(e)||{cell:-1,row:-1},r=n.row,s=this._grid.getDataItem(r);if(this.checkUsabilityOverride(r,s,this._grid)){if(this._addonOptions.cancelEditOnDrag&&this._grid.getEditorLock().isActive()&&this._grid.getEditorLock().cancelCurrentEdit(),this._grid.getEditorLock().isActive()||!/move|selectAndMove/.test(this._grid.getColumns()[n.cell].behavior||""))return!1;if(this._dragging=!0,e.stopImmediatePropagation(),!this.addonOptions.hideRowMoveShadow){const h=this._grid.getCellNode(n.row,n.cell)?.closest(".slick-row");h&&(t.clonedSlickRow=h.cloneNode(!0),t.clonedSlickRow.classList.add("slick-reorder-shadow-row"),t.clonedSlickRow.style.display="none",t.clonedSlickRow.style.marginLeft=oh(this._addonOptions?.rowMoveShadowMarginLeft,"0px"),t.clonedSlickRow.style.marginTop=oh(this._addonOptions?.rowMoveShadowMarginTop,"0px"),t.clonedSlickRow.style.opacity=`${this._addonOptions?.rowMoveShadowOpacity??.95}`,t.clonedSlickRow.style.transform=`scale(${this.addonOptions?.rowMoveShadowScale??.75})`,this._canvas.appendChild(t.clonedSlickRow))}let a=this._addonOptions.singleRowMove?[n.row]:this._grid.getSelectedRows();(0===a.length||!a.some(h=>h===n.row))&&(a=[n.row],this._addonOptions.disableRowSelection||this._grid.setSelectedRows(a));const d=this.gridOptions.rowHeight;t.selectedRows=a,t.selectionProxy=O("div",{className:"slick-reorder-proxy",style:{display:"none",position:"absolute",zIndex:"99999",width:`${this._canvas.clientWidth}px`,height:d*a.length+"px"}},this._canvas),t.guide=O("div",{className:"slick-reorder-guide",style:{position:"absolute",zIndex:"99999",width:`${this._canvas.clientWidth}px`,top:"-1000px"}},this._canvas),t.insertBefore=-1}}checkUsabilityOverride(e,t,n){return"function"!=typeof this._usabilityOverride||this._usabilityOverride(e,t,n)}moveIconFormatter(e,t,n,r,s,a){return this.checkUsabilityOverride(e,s,a)?{addClasses:"cell-reorder dnd",html:O("div",{className:this._addonOptions.cssClass||""})}:""}}class Mde{get extensionList(){return this._extensionList}get gridOptions(){return this.sharedService.gridOptions||{}}constructor(e,t,n,r,s,a,d,h){this.extensionUtility=e,this.filterService=t,this.pubSubService=n,this.sharedService=r,this.sortService=s,this.treeDataService=a,this.translaterService=d,this.lazyGridService=h,this._extensionCreatedList={},this._extensionList={},this._requireInitExternalExtensions=[]}dispose(){if(this.sharedService.visibleColumns=[],"object"==typeof this._extensionList){const e=Object.keys(this._extensionList);e.forEach(t=>{if(this._extensionList.hasOwnProperty(t)){const n=this._extensionList[t];"function"==typeof n?.instance?.dispose&&n.instance.dispose()}}),e.forEach(t=>{delete this._extensionList[t]})}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,t){this._extensionList[e]=t}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 PU(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[st.rowBasedEdit]={name:st.rowBasedEdit,instance:this._rowBasedEdit}}if(this.gridOptions.enableAutoTooltip){const e=new vde(this.gridOptions?.autoTooltipOptions);this.sharedService.slickGrid.registerPlugin(e),this._extensionList[st.autoTooltip]={name:st.autoTooltip,instance:e}}if(this.gridOptions.enableExcelCopyBuffer&&(this._cellExcelCopyManagerPlugin=new bde,this._cellExcelCopyManagerPlugin.init(this.sharedService.slickGrid,this.sharedService.gridOptions.excelCopyBufferOptions),this.gridOptions.excelCopyBufferOptions?.onExtensionRegistered&&this.gridOptions.excelCopyBufferOptions.onExtensionRegistered(this._cellExcelCopyManagerPlugin),this._extensionList[st.cellExternalCopyManager]={name:st.cellExternalCopyManager,instance:this._cellExcelCopyManagerPlugin}),this.gridOptions.enableCellMenu&&(this._cellMenuPlugin=new kde(this.extensionUtility,this.pubSubService,this.sharedService),this.gridOptions.cellMenu?.onExtensionRegistered&&this.gridOptions.cellMenu.onExtensionRegistered(this._cellMenuPlugin),this._extensionList[st.cellMenu]={name:st.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 fT(e),this.sharedService.slickGrid.setSelectionModel(this._rowSelectionModel)}this._extensionList[st.rowSelection]={name:st.rowSelection,instance:this._rowSelectionModel}}if(this.gridOptions.enableCheckboxSelector){this._checkboxSelectColumn=this._checkboxSelectColumn||new xU(this.pubSubService,this.gridOptions.checkboxSelector),this._checkboxSelectColumn.init(this.sharedService.slickGrid);const t=this.getCreatedExtensionByName(st.checkboxSelector)?.instance;t&&(this.gridOptions.checkboxSelector?.onExtensionRegistered&&this.gridOptions.checkboxSelector.onExtensionRegistered(t),this._extensionList[st.checkboxSelector]={name:st.checkboxSelector,instance:this._checkboxSelectColumn})}if(this.gridOptions.enableColumnPicker&&(this._columnPickerControl=new y9(this.extensionUtility,this.pubSubService,this.sharedService),this.gridOptions.columnPicker?.onExtensionRegistered&&this.gridOptions.columnPicker.onExtensionRegistered(this._columnPickerControl),this._extensionList[st.columnPicker]={name:st.columnPicker,instance:this._columnPickerControl}),this.gridOptions.enableContextMenu&&(this._contextMenuPlugin=new xde(this.extensionUtility,this.pubSubService,this.sharedService,this.treeDataService),this.gridOptions.contextMenu?.onExtensionRegistered&&this.gridOptions.contextMenu.onExtensionRegistered(this._contextMenuPlugin),this._extensionList[st.contextMenu]={name:st.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[st.contextMenu]={name:st.contextMenu,instance:this._draggleGroupingPlugin}),this._extensionList[st.draggableGrouping]={name:st.draggableGrouping,instance:this._draggleGroupingPlugin}),this.gridOptions.enableGridMenu&&(this._gridMenuControl=new SU(this.extensionUtility,this.filterService,this.pubSubService,this.sharedService,this.sortService),this.gridOptions.gridMenu?.onExtensionRegistered&&this.gridOptions.gridMenu.onExtensionRegistered(this._gridMenuControl),this._extensionList[st.gridMenu]={name:st.gridMenu,instance:this._gridMenuControl}),this.gridOptions.enableHeaderButton){const e=new Dde(this.extensionUtility,this.pubSubService,this.sharedService);this.gridOptions.headerButton?.onExtensionRegistered&&this.gridOptions.headerButton.onExtensionRegistered(e),this._extensionList[st.headerButton]={name:st.headerButton,instance:e}}this.gridOptions.enableHeaderMenu&&(this._headerMenuPlugin=new Ade(this.extensionUtility,this.filterService,this.pubSubService,this.sharedService,this.sortService),this.gridOptions.headerMenu?.onExtensionRegistered&&this.gridOptions.headerMenu.onExtensionRegistered(this._headerMenuPlugin),this._extensionList[st.headerMenu]={name:st.headerMenu,instance:this._headerMenuPlugin}),this.gridOptions.enableRowMoveManager&&(this._rowMoveManagerPlugin=this._rowMoveManagerPlugin||new NU(this.pubSubService),this._rowMoveManagerPlugin.init(this.sharedService.slickGrid,this.gridOptions.rowMoveManager),this.getCreatedExtensionByName(st.rowMoveManager)?.instance&&(this._extensionList[st.rowMoveManager]={name:st.rowMoveManager,instance:this._rowMoveManagerPlugin})),this._requireInitExternalExtensions.length&&this._requireInitExternalExtensions.forEach(e=>{e.instance.init(this.sharedService.slickGrid,void 0)})}}createExtensionsBeforeGridCreation(e,t){const n=[];t.enableCheckboxSelector&&(this.getCreatedExtensionByName(st.checkboxSelector)||(this._checkboxSelectColumn=new xU(this.pubSubService,this.sharedService.gridOptions.checkboxSelector),n.push({name:st.checkboxSelector,instance:this._checkboxSelectColumn,columnIndexPosition:t?.checkboxSelector?.columnIndexPosition??n.length}))),t.enableRowMoveManager&&(this.getCreatedExtensionByName(st.rowMoveManager)||(this._rowMoveManagerPlugin=new NU(this.pubSubService),n.push({name:st.rowMoveManager,instance:this._rowMoveManagerPlugin,columnIndexPosition:t?.rowMoveManager?.columnIndexPosition??n.length}))),t.enableRowBasedEdit&&(this.getCreatedExtensionByName(st.rowBasedEdit)||(this._rowBasedEdit=new PU(this.extensionUtility,this.pubSubService),n.push({name:st.rowBasedEdit,instance:this._rowBasedEdit,columnIndexPosition:t?.rowMoveManager?.columnIndexPosition??n.length}))),t.preRegisterExternalExtensions&&t.preRegisterExternalExtensions(this.pubSubService).forEach(s=>{n.push(s),this._requireInitExternalExtensions.push(s),this._extensionList[s.name]||this.addExtensionToList(s.name,s)}),this.createExtensionByTheirColumnIndex(n,e,t),t.enableDraggableGrouping&&(this.getCreatedExtensionByName(st.draggableGrouping)||(this._draggleGroupingPlugin=new Sde(this.extensionUtility,this.pubSubService,this.sharedService),this._draggleGroupingPlugin&&(t.enableColumnReorder=this._draggleGroupingPlugin.setupColumnReorder.bind(this._draggleGroupingPlugin),this._extensionCreatedList[st.draggableGrouping]={name:st.draggableGrouping,instance:this._draggleGroupingPlugin})))}hideColumn(e){if("function"==typeof this.sharedService?.slickGrid?.getColumns){const t=this.sharedService.slickGrid.getColumnIndex(e.id);this.sharedService.visibleColumns=this.removeColumnByIndex(this.sharedService.slickGrid.getColumns(),t),this.sharedService.slickGrid.setColumns(this.sharedService.visibleColumns)}}refreshBackendDataset(e){this.extensionUtility.refreshBackendDataset(e)}removeColumnByIndex(e,t){return Array.isArray(e)?e.filter((n,r)=>t!==r):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,t){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 n=t;n||(n=this.sharedService.columnDefinitions),this.translateItems(n,"nameKey","name"),this.translateItems(this.sharedService.allColumns,"nameKey","name"),this.translateItems(this.sharedService.allColumns,"columnGroupKey","columnGroup"),this.renderColumnHeaders(n,Array.isArray(t))}renderColumnHeaders(e,t=!1){let n=e;n||(n=this.sharedService.columnDefinitions),Array.isArray(n)&&this.sharedService.slickGrid?.setColumns&&((n.length>this.sharedService.allColumns.length||t)&&(this.sharedService.allColumns=n),this.sharedService.slickGrid.setColumns(n)),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,t,n){e.sort((r,s)=>(r?.columnIndexPosition??0)-(s?.columnIndexPosition??0)),e.forEach(r=>{const s=r.instance.create(t,n);s&&(this._extensionCreatedList[r.name]={name:r.name,instance:s})})}translateItems(e,t,n){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,t,n)}}function BU(i,e,t){if(t&&(i?.hasOwnProperty(t)||e?.hasOwnProperty(t)))return i[t]===e||i===e[t]||i[t]===e[t];if("object"==typeof i&&"object"==typeof e&&Object.keys(i).length!==Object.keys(e).length)return!1;for(const n in i)if(i.hasOwnProperty(n)&&i[n]!==e[n])return!1;return!0}const km=(i,e,t)=>{switch(i.toUpperCase()){case"<":case"LT":return e":case"GT":return e>t;case">=":case"GE":return e>=t;case"!=":case"<>":case"NE":return e!==t;case"=":case"==":case"EQ":return e===t;case"IN":return!(!t||!Array.isArray(t))&&t.includes(e);case"NIN":case"NOT_IN":return!(!t||!Array.isArray(t))&&!t.includes(e);case"IN_CONTAINS":return!(!t||!Array.isArray(t)||"string"!=typeof e)&&t.some(n=>e.split(/[,]+/).map(r=>r.trim()).includes(n));case"NIN_CONTAINS":case"NOT_IN_CONTAINS":return!(!t||!Array.isArray(t)||"string"!=typeof e)&&!t.some(n=>e.split(/[,]+/).map(r=>r.trim()).includes(n));case"IN_COLLECTION":return!!(e&&t&&Array.isArray(e)&&Array.isArray(t))&&t.some(n=>e.includes(n));case"NOT_IN_COLLECTION":return!!(e&&t&&Array.isArray(e)&&Array.isArray(t))&&!t.some(n=>e.includes(n))}return!0},HU=(i,e)=>{let[t,n]=e;if(void 0===t&&!i.operator)return!0;i.cellValue=void 0===i.cellValue||null===i.cellValue?"":i.cellValue.toString();const r=i?.ignoreAccentOnStringFilterAndSort?ty(i.cellValue,!0):i.cellValue.toLowerCase();if("string"==typeof t&&(t=i?.ignoreAccentOnStringFilterAndSort?ty(t,!0):t.toLowerCase()),"string"==typeof n&&(n=i?.ignoreAccentOnStringFilterAndSort?ty(n,!0):n.toLowerCase()),i.operator===te.startsWithEndsWith&&void 0!==t&&void 0!==n)return function Ode(i,[e,t]){return i.startsWith(e)&&i.endsWith(t)}(r,[t,n]);if(void 0!==t&&void 0!==n){let a=i?.operator??i.defaultFilterRangeOperator;a!==te.rangeInclusive&&a!==te.rangeExclusive&&(a=i.defaultFilterRangeOperator);const d=a===te.rangeInclusive,h=F9(d?">=":">",r,t,i.searchInputLastChar),p=F9(d?"<=":"<",r,n,i.searchInputLastChar);return h&&p}return F9(i.operator,r,t,i.searchInputLastChar)};function F9(i,e,t,n){return"*"===i||i===te.endsWith||"*z"===i?e.endsWith(t):""===i&&"*"===n||i===te.startsWith||"a*"===i?e.startsWith(t):""===i||i===te.contains?e.indexOf(t)>-1:"<>"===i||i===te.notContains?-1===e.indexOf(t):km(i||"==",e,t)}const VU=(i,e)=>{const t=parseFloat(i.cellValue),[n,r]=e;if(void 0===n&&!i.operator)return!0;if(void 0!==n&&void 0!==r){let s=i?.operator??i.defaultFilterRangeOperator;s!==te.rangeInclusive&&s!==te.rangeExclusive&&(s=i.defaultFilterRangeOperator);const a=s===te.rangeInclusive,d=km(a?">=":">",t,+n),h=km(a?"<=":"<",t,+r);return d&&h}return km(i.operator||"==",t,+n)};const zU=(i,e)=>HA(i.cellValue)===HA(e);const GU=i=>{const e=i.operator;let t;return t=!Array.isArray(i.cellValue)||"IN_COLLECTION"!==e&&"NOT_IN_COLLECTION"!==e?void 0===i.cellValue||null===i.cellValue?"":`${i.cellValue}`:i.cellValue.length?i.cellValue.map(n=>`${n}`):[],km(e||"IN",t,i.searchTerms||[])};function wT(i,e){let n;switch($U(e)){case"boolean":n=function Pde(i){return HA(Array.isArray(i)&&i[0]||!1)}(i);break;case"date":n=function Bde(i,e){const t=Array.isArray(i)&&i||[],r=ea(e||M.dateIso),s=[];if(2===t.length||"string"==typeof t[0]&&t[0].indexOf("..")>0){const a=2===t.length?t:t[0].split(".."),d=Array.isArray(a)&&a[0]||"",h=Array.isArray(a)&&a[1]||"",p=Fd(d,r,!0),g=Fd(h,r,!0);if(!p||!g)return[];s.push(p,g)}else{const a=Fd(t[0],r,!0);if(!a)return[];s.push(a)}return s}(i,e);break;case"number":n=function Rde(i){const t=Array.isArray(i)&&i||[0],n=[];let r,s;if(2===t.length||"string"==typeof t[0]&&t[0].indexOf("..")>0){const a=2===t.length?t:t[0].split("..");r=parseFloat(Array.isArray(a)?a[0]:""),s=parseFloat(Array.isArray(a)?a[1]:"")}else r=parseFloat(t[0]);return pt(r,!0)&&pt(s,!0)?n.push(r,s):pt(r,!0)&&n.push(r),n}(i);break;case"object":n=function Vde(i){return(Array.isArray(i)&&i.length>0?i[0]:"")||""}(i);break;case"string":n=function Lde(i){let t=Array.isArray(i)&&i||[""];const n=[];let r,s;if(1===t.length&&"string"==typeof t[0]){const a=t[0];a.indexOf("..")>0?t=a.split(".."):a.indexOf("*")>0&&a.indexOf("*")0?i[0]:"";r=null==a?"":`${a}`}return void 0!==r&&void 0!==s?n.push(r,s):void 0!==r&&n.push(r),n}(i)}return n}function $U(i){if(ih(i))return"date";switch(i){case M.boolean:return"boolean";case M.integer:case M.float:case M.number:return"number";case M.object:return"object";case M.string:case M.text:case M.password:case M.readonly:default:return"string"}}const WU_executeFilterConditionTest=(i,e)=>{if(function Ide(i){switch(i&&i.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}}(i.operator))return GU(i);switch($U(i.filterSearchType||i.fieldType)){case"boolean":return zU(i,e);case"date":return function Nde(i,e){const n=ea(i&&(i.filterSearchType||i.fieldType)||M.dateIso),[r,s]=e,a=Fd(i.cellValue,n,!0);if(!r&&!s||!a)return!1;const d="ISO8601"===n||n.toLowerCase().includes("h")?a.valueOf():cW(new Date(a)).valueOf();if(r&&s){let p=i?.operator??i.defaultFilterRangeOperator;p!==te.rangeInclusive&&p!==te.rangeExclusive&&(p=i.defaultFilterRangeOperator);const g=p===te.rangeInclusive,v=km(g?">=":">",d,r.valueOf()),y=km(g?"<=":"<",d,s.valueOf());return v&&y}const h="ISO8601"===n||n.toLowerCase().includes("h")?r.valueOf():cW(new Date(r)).valueOf();return km(i.operator||"==",d,h)}(i,e||[]);case"number":return VU(i,e||[]);case"object":return((i,e)=>{if(void 0===e&&!i.operator)return!0;switch((i.operator||"").toUpperCase()){case"!=":case"<>":case"NE":return!BU(i.cellValue,e,i.dataKey);default:return BU(i.cellValue,e,i.dataKey)}})(i,e);default:return HU(i,e||[])}};class Gde{constructor(e,t,n,r,s){this.filterFactory=e,this.pubSubService=t,this.sharedService=n,this.backendUtilities=r,this.rxjs=s,this._isFilterFirstRender=!0,this._firstColumnIdRendered="",this._filtersMetadata=[],this._columnFilters={},this._isTreePresetExecuted=!1,this._previousFilters=[],this._onSearchChange=new me,this._eventHandler=new Pi,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,(t,n)=>{n.column.id===this._firstColumnIdRendered&&(this._isFilterFirstRender=!1),this.addFilterTemplateToHeaderRow(n,this._isFilterFirstRender),""===this._firstColumnIdRendered&&(this._firstColumnIdRendered=n.column.id)}),this.subscribeToOnHeaderRowCellRendered(e),this._onSearchChange&&this._eventHandler.subscribe(this._onSearchChange,this.onBackendFilterChange.bind(this))}bindLocalOnFilter(e){var t=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 n=yn(function*(r,s){const a=s?.clearFilterTriggered??!1;a||(yield t.emitFilterChanged(Cn.local,!0)),!0===t._gridOptions.enableTreeData&&(t._tmpPreFilteredData=t.preFilterTreeData(t._dataView.getItems(),t._columnFilters)),a||(yield t.emitFilterChanged(Cn.local)),null!==s.columnId&&t._dataView.refresh(),t._previousFilters=t.extractBasicFilterDetails(t._columnFilters)});return function(r,s){return n.apply(this,arguments)}}()),this._eventHandler.subscribe(e.onHeaderRowCellRendered,(n,r)=>{this.addFilterTemplateToHeaderRow(r)}),this.subscribeToOnHeaderRowCellRendered(e)}clearFilterByColumnId(e,t){var n=this;return yn(function*(){yield n.pubSubService.publish("onBeforeFilterClear",{columnId:t},0);const r=n._gridOptions.backendServiceApi??!1,s=r?Cn.remote:Cn.local,a=Object.keys(n._columnFilters);let d;Array.isArray(a)&&(d=a.find(p=>p===`${t}`));const h=n._filtersMetadata.find(p=>p.columnDef.id===t);return h?.clear&&h.clear(!0),r&&void 0!==d&&n.onBackendFilterChange(e,{grid:n._grid,columnFilters:n._columnFilters}),yield n.emitFilterChanged(s),!0})()}clearFilters(e=!0){var t=this;return yn(function*(){e&&(yield t.pubSubService.publish("onBeforeFilterClear",!0,0)),t._filtersMetadata.forEach(r=>{r?.clear&&r.clear(!1)}),t.removeAllColumnFiltersProperties(),Array.isArray(t._columnDefinitions)&&t._columnDefinitions.forEach(r=>{r.filter?.searchTerms&&delete r.filter.searchTerms}),t._dataView&&t._grid&&(t._dataView.refresh(),t._grid.invalidate());const n=t._gridOptions.backendServiceApi;if(n&&e){const r={clearFilterTriggered:!0,shouldTriggerQuery:e,grid:t._grid,columnFilters:t._columnFilters},a=n.service.processOnFilterChanged(void 0,r),d=t._gridOptions.pagination?.totalItems??0;t.backendUtilities?.executeBackendCallback(n,a,r,new Date,d,{errorCallback:t.resetToPreviousSearchFilters.bind(t),successCallback:h=>t._previousFilters=t.extractBasicFilterDetails(h.columnFilters),emitActionChangedCallback:t.emitFilterChanged.bind(t)})}else t._previousFilters=t.extractBasicFilterDetails(t._columnFilters);e&&t.pubSubService.publish("onFilterCleared",!0)})()}customLocalFilter(e,t){const n=t?.grid,r=t?.columnFilters??{},s=this._gridOptions.enableTreeData??!1,a=this._gridOptions.treeDataOptions;if(s&&a){const d=a.collapsedPropName??oe.treeDataProperties.COLLAPSED_PROP,h=a.parentPropName??oe.treeDataProperties.PARENT_PROP,p=a?.childrenPropName??oe.treeDataProperties.CHILDREN_PROP,g=this._gridOptions.datasetIdPropertyName??"id",v=a.autoRecalcTotalsOnFilterChange??!1;let y=!1;if(null!==e[h]){let C=this._dataView.getItemById(e[h]);for(;C;){if(C[d]){if(!v)return!1;y=!0}C=this._dataView.getItemById(C[h])}}if(this._tmpPreFilteredData instanceof Set){const C=this._tmpPreFilteredData.has(e[g]);if(v){const k=gm(this.sharedService.hierarchicalDataset,E=>E[g]===e[g],p);if(k&&(k.__filteredOut=!C),y)return!1}return C}}else if("object"==typeof r)for(const d of Object.keys(r)){const h=r[d],p=h.columnDef?.filter;if("function"==typeof p?.filterPredicate){if(!p.filterPredicate(e,h))return!1}else{const g=this.preProcessFilterConditionOnDataContext(e,h,n);if("boolean"==typeof g)return g;let v=h?.parsedSearchTerms;if(void 0===v&&(v=wT(h.searchTerms,h.columnDef.type||M.string),void 0!==v&&(h.parsedSearchTerms=v)),!WU_executeFilterConditionTest(g,v))return!1}}return!0}parseFormInputFilterConditions(e,t){const n=en(!0,[],e)||[];let r=Array.isArray(n)&&1===n.length?n[0]:"";const s=t.columnDef,a=s.filter?.type??s.type??M.string;let d=null;a!==M.object&&(r=null==r?"":`${r}`,d=!1!==(s.autoParseInputFilterOperator??this._gridOptions.autoParseInputFilterOperator)?r.match(/^((.*[^\\*\r\n])[*]{1}(.*[^*\r\n]))|^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/)||[]:[r,"","","","",r,""]);const h=d?.[2]||"",p=d?.[3]||"";let g=d?.[4]||t.operator,v=d?.[1]||d?.[5]||"";const y=d?.[6]||("*z"===g?"*":"");return"string"==typeof r&&(r=r.replace("'","''"),h&&p?(v=r,g=te.startsWithEndsWith):"*"===g||"*z"===g?g=te.endsWith:("a*"===g||"*"===y)&&(g=te.startsWith)),Array.isArray(d)&&d.length>=1&&Array.isArray(n)&&1===n.length&&(n[0]=v.length>0&&" "===v.substring(0,1)?v.substring(1):v),{dataKey:s.dataKey,fieldType:a,searchTerms:n||[],operator:g,searchInputLastChar:y,filterSearchType:s.filterSearchType,defaultFilterRangeOperator:this._gridOptions.defaultFilterRangeOperator}}preProcessFilterConditionOnDataContext(e,t,n){const r=t.columnDef,s=t.columnId;let a=n.getColumnIndex(s);if(!r&&this.sharedService&&Array.isArray(this.sharedService.allColumns)&&(a=this.sharedService.allColumns.findIndex(y=>y.field===s)),!r)return!0;if(this._gridOptions.enableRowDetailView){const y=this._gridOptions.rowDetailView&&this._gridOptions.rowDetailView.keyPrefix||"__";e[`${y}isPadding`]&&e[`${y}parent`]&&(e=e[`${y}parent`])}let d=r.filter?.queryField||r.queryFieldFilter||r.queryField||r.field||"";"function"==typeof r.queryFieldNameGetterFn&&(d=r.queryFieldNameGetterFn(e));const h=r.filter?.type??r.type??M.string;let p=e[d];d?.indexOf(".")>=0&&(p=Wn(e,d));const g=t.operator,v=t.searchTerms||[];if(!v||Array.isArray(v)&&(0===v.length||1===v.length&&g===v[0]))return!0;if(v&&Array.isArray(v)&&h!==M.object)for(let y=0,C=v.length;y{C[x[d]]=x,delete C[x[d]].__used}),"object"==typeof t&&Object.keys(t).forEach(x=>{const S=t[x],D=S?.searchTerms?en(!0,[],S.searchTerms):[],I=this.parseFormInputFilterConditions(D,S),L=S.columnDef,R=L?.filter?.type??L?.type??M.string,W=wT(I.searchTerms,R);void 0!==W&&(S.parsedSearchTerms=W)}),e.forEach(x=>{const S=x[a];let D=!0;for(const I of Object.keys(t)){const L=t[I],R=this.preProcessFilterConditionOnDataContext(x,L,this._grid);if(R){const W=L?.parsedSearchTerms,re="boolean"==typeof R?R:WU_executeFilterConditionTest(R,W);if(re&&y&&S&&L.columnId===g){E.set(x[d],!0);break}if(re||!v&&!0===E.get(x[s])){if(S&&L.columnId===g&&E.set(x[d],!0),re||!v&&L.columnId===g)continue}else S&&!0!==E.get(x[s])&&L.columnId!==g&&E.set(x[d],!1)}D=!1}if(D){k.add(x[d]);let I=C[x[s]]??!1;const L=!p;for(!this._isTreePresetExecuted&&Array.isArray(h)&&h.some(R=>R.itemId===I.id&&R.isCollapsed===L)&&(I[r]=L);I;)I.__used??k.add(I[d]),C[I[d]].__used=!0,I=C[I[s]]??!1}})),this._isTreePresetExecuted=!0,k}getColumnFilters(){return this._columnFilters}getPreviousFilters(){return this._previousFilters}getFiltersMetadata(){return this._filtersMetadata}getCurrentLocalFilters(){const e=[];if(this._columnFilters)for(const t of Object.keys(this._columnFilters)){const n=this._columnFilters[t],r={columnId:t||""},a=this.sharedService.allColumns.find(d=>d.id===r.columnId)?.filter?.emptySearchTermReturnAllValues??!0;n?.searchTerms&&(r.searchTerms=n.searchTerms),n.operator&&(r.operator=n.operator),n.targetSelector&&(r.targetSelector=n.targetSelector),Array.isArray(r.searchTerms)&&r.searchTerms.length>0&&(!a||""!==r.searchTerms[0])&&e.push(r)}return e}emitFilterChanged(e,t=!1){const n=t?"onBeforeFilterChange":"onFilterChanged";if(e===Cn.remote&&this._gridOptions.backendServiceApi){let r=[];const s=this._gridOptions.backendServiceApi.service;return s?.getCurrentFilters&&(r=s.getCurrentFilters()),this.pubSubService.publish(n,r)}if(e===Cn.local)return this.pubSubService.publish(n,this.getCurrentLocalFilters())}onBackendFilterChange(e,t){var n=this;return yn(function*(){const r=t?.shouldTriggerQuery;if(r&&(yield n.emitFilterChanged(Cn.remote,!0)),!t||!t.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 s=n._gridOptions.backendServiceApi;if(!s||!s.process||!s.service)throw new Error('BackendServiceApi requires at least a "process" function and a "service" defined');const a=new Date;if(s.preProcess&&s.preProcess(),r){const d=yield s.service.processOnFilterChanged(e,t),h=n._gridOptions.pagination?.totalItems??0;n.backendUtilities?.executeBackendCallback(s,d,t,a,h,{errorCallback:n.resetToPreviousSearchFilters.bind(n),successCallback:p=>n._previousFilters=n.extractBasicFilterDetails(p.columnFilters),emitActionChangedCallback:n.emitFilterChanged.bind(n),httpCancelRequestSubject:n.httpCancelRequests$})}})()}populateColumnFilterSearchTermPresets(e){return Array.isArray(e)&&(this._columnDefinitions.forEach(t=>{t.filter?.searchTerms&&delete t.filter.searchTerms;const n=e.find(r=>r.columnId===t.id);n&&Array.isArray(n?.searchTerms)&&(t.filter=t.filter||{},t.filter.operator=n.operator||t.filter.operator||"",t.filter.searchTerms=n.searchTerms)}),this._gridOptions.enableTreeData&&this.refreshTreeDataFilters(),this._previousFilters=this.extractBasicFilterDetails(this._columnFilters)),this._columnDefinitions}refreshTreeDataFilters(e){const t=e??this._dataView?.getItems()??[];this._dataView&&this._gridOptions.enableTreeData&&t.length>0?(this._tmpPreFilteredData=this.preFilterTreeData(t,this._columnFilters),this._dataView.refresh()):0===t.length&&Array.isArray(this.sharedService.hierarchicalDataset)&&this.sharedService.hierarchicalDataset.length>0&&queueMicrotask(()=>this.refreshTreeDataFilters())}disableFilterFunctionality(e=!0,t=!0){const r=!this._gridOptions.enableFiltering;r!==e&&(t&&e&&this.clearFilters(),this.disableAllFilteringCommands(e),this._grid.setOptions({enableFiltering:r},!1,!0),this._grid.setHeaderRowVisibility(r),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 t=this._gridOptions.enableFiltering;this.disableFilterFunctionality(t,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,t=!0,n=!0,r=!1){var s=this;return yn(function*(){if(!s._filtersMetadata||0===s._filtersMetadata.length||!s._gridOptions||!s._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)){s.clearFilters(!1),e.forEach(h=>{const p=s._filtersMetadata.find(g=>h.columnId===g.columnDef.id);if(h&&p){const g=h.operator||p.defaultOperator;s.updateColumnFilters(h.searchTerms,p.columnDef,g),p.setValues(h.searchTerms||[],g),(r||s._gridOptions.enableTreeData)&&s.callbackSearchEvent(void 0,{columnDef:p.columnDef,operator:g,searchTerms:h.searchTerms,shouldTriggerQuery:!0,forceOnSearchChangeEvent:!0})}});const a=s._gridOptions.backendServiceApi,d=a?Cn.remote:Cn.local;if(t&&(yield s.emitFilterChanged(d,!0)),s._dataView.refresh(),a){const h=a?.service;h?.updateFilters&&(h.updateFilters(e,!0),n&&s.backendUtilities?.refreshBackendDataset(s._gridOptions))}t&&(yield s.emitFilterChanged(d))}return!0})()}updateSingleFilter(e,t=!0,n=!0){var r=this;return yn(function*(){const s=r.sharedService.allColumns.find(a=>a.id===e.columnId);if(s&&e.columnId){r._columnFilters={};const a=s.filter?.emptySearchTermReturnAllValues??!0;Array.isArray(e.searchTerms)&&(e.searchTerms.length>1||1===e.searchTerms.length&&(!a||""!==e.searchTerms[0]))&&(r._columnFilters[e.columnId]={columnId:e.columnId,operator:e.operator,searchTerms:e.searchTerms,columnDef:s,type:s.type??M.string});const d=r._gridOptions.backendServiceApi,h=d?Cn.remote:Cn.local;if(t&&(yield r.emitFilterChanged(h,!0)),d){const p=d?.service;p?.updateFilters&&(p.updateFilters(r._columnFilters,!0),n&&r.backendUtilities?.refreshBackendDataset(r._gridOptions))}else r._dataView.setFilterArgs({columnFilters:r._columnFilters,grid:r._grid}),r._gridOptions.enableTreeData&&r.refreshTreeDataFilters(),r._dataView.refresh();t&&(yield r.emitFilterChanged(h))}return!0})()}drawFilterTemplate(e,t){let n;if("string"==typeof t){if(n=document.querySelector(t),null===n)return null}else n=t;const r="string"==typeof e?this.sharedService.allColumns.find(a=>a.id===e):e;if("selector"!==(r?.id??"")&&r?.filterable){let a,d;const h=this.filterFactory.createFilter(r.filter);d=r&&r.filter&&r.filter.operator||h&&h.operator,this._columnFilters[r.id]?(a=this._columnFilters[r.id].searchTerms||void 0,d=this._columnFilters[r.id].operator||void 0):r.filter&&(a=r.filter.searchTerms||void 0,this.updateColumnFilters(a,r,d));const p={grid:this._grid,operator:d,searchTerms:a,columnDef:r,filterContainerElm:n,callback:this.callbackSearchEvent.bind(this)};return h&&(h.init(p),a&&h.setValues&&h.setValues(a,d)),h}return null}addFilterTemplateToHeaderRow(e,t=!0){const n=e.column;if("selector"!==(n?.id??"")&&n?.filterable&&!n?.hidden){let s,a;const d=this.filterFactory.createFilter(n.filter);a=n&&n.filter&&n.filter.operator||d&&d.operator,this._columnFilters[n.id]?(s=this._columnFilters[n.id].searchTerms||void 0,a=this._columnFilters[n.id].operator||void 0):n.filter&&(s=n.filter.searchTerms||void 0,this.updateColumnFilters(s,n,a));const h={grid:this._grid,operator:a,searchTerms:s,columnDef:n,filterContainerElm:e.node,callback:this.callbackSearchEvent.bind(this)};if(d&&h.filterContainerElm){d.init(h,t);const p=this._filtersMetadata.findIndex(g=>d.columnDef.id===g.columnDef.id);-1===p?this._filtersMetadata.push(d):this._filtersMetadata[p]=d,s&&d.setValues&&d.setValues(s,a)}}}callbackSearchEvent(e,t){if(t){const n=e?.target?e.target.value:void 0,r=t.searchTerms&&Array.isArray(t.searchTerms)?t.searchTerms:n?[n]:void 0,s=t.columnDef||null,a=s?.id??"",d=s?.filter?.type??s?.type??M.string,h=t.operator||void 0,p=r&&Array.isArray(r),g=p&&r&&r.length,v={...this._columnFilters},y=s.filter?.emptySearchTermReturnAllValues??!0;let C;if(s&&a)if(!p||0===g||1===g&&Array.isArray(r)&&y&&""===r[0])delete this._columnFilters[a];else{const x=`${a}`,S={columnId:x,columnDef:s,parsedSearchTerms:[],type:d,targetSelector:this.getSelectorStringFromElement(e?.target)},D=this.parseFormInputFilterConditions(r,S);S.operator=h||D.operator||L_(d),C=wT(D.searchTerms,d),void 0!==C&&(S.parsedSearchTerms=C),S.searchTerms=D.searchTerms||[],this._columnFilters[x]=S}const k=e&&"function"!=typeof e.isPropagationStopped?en({},new Ri,e):e,E=e?.key;if(this._onSearchChange&&(t.forceOnSearchChangeEvent||"Enter"===E||!Ec(v,this._columnFilters))){const x={clearFilterTriggered:t.clearFilterTriggered,shouldTriggerQuery:t.shouldTriggerQuery,columnId:a,columnDef:s,columnFilters:this._columnFilters,operator:h||L_(d),searchTerms:r,parsedSearchTerms:C,grid:this._grid,target:e?.target};!1===this.pubSubService.publish("onBeforeSearchChange",x)?this._gridOptions.resetFilterSearchValueAfterOnBeforeCancellation&&this.resetToPreviousSearchFilters():this._onSearchChange.notify(x,k)}}}disableAllFilteringCommands(e=!0){const t=this._grid.getColumns();t.forEach(r=>{r?.header?.menu&&r.header.menu.commandItems?.forEach(s=>{s&&"string"!=typeof s&&"clear-filter"===s.command&&(s.hidden=e)})});const n=this._gridOptions.gridMenu?.commandItems;return n&&n.forEach(r=>{if(r&&"string"!=typeof r){const s=r.command;("clear-filter"===s||"toggle-filter"===s)&&(r.hidden=e)}}),t}extractBasicFilterDetails(e){const t=[];if(e&&"object"==typeof e)for(const n of Object.keys(e)){const{operator:r,searchTerms:s}=e[`${n}`];t.push({columnId:n,operator:r,searchTerms:s})}return t}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,(t,n)=>{this._filtersMetadata.find(s=>s.columnDef.id===n.column.id)?.destroy?.()})}updateColumnFilters(e,t,n){const r=t.filter?.type??t.type??M.string,s=wT(e,r);e&&t&&(this._columnFilters[t.id]={columnId:t.id,columnDef:t,searchTerms:e,operator:n,parsedSearchTerms:s,type:r})}}const kT={skipError:!1,triggerEvent:!0},nE={highlightRow:!0,resortGrid:!1,selectRow:!1,scrollRowIntoView:!0,skipError:!1,triggerEvent:!0},x9={highlightRow:!1,selectRow:!1,scrollRowIntoView:!1,skipError:!1,triggerEvent:!0},UU={applySetColumns:!0,autoResizeColumns:!0,triggerEvent:!0,hideFromColumnPicker:!1,hideFromGridMenu:!1},$de={autoResizeColumns:!0,triggerEvent:!0};class Wde{constructor(e,t,n,r,s,a,d){this.gridStateService=e,this.filterService=t,this.pubSubService=n,this.paginationService=r,this.sharedService=s,this.sortService=a,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 t=[...this.sharedService.visibleColumns];this.sharedService.slickGrid.setOptions({frozenColumn:-1,frozenRow:-1,frozenBottom:!1,enableMouseWheelScrollHandler:!1}),e&&Array.isArray(t)&&this.sharedService.slickGrid.setColumns(t)}setPinning(e,t=!0,n=!1,r=!0){Y$(e)?this.clearPinning():(this.sharedService.slickGrid.setOptions(e,n,r),this.sharedService.gridOptions={...this.sharedService.gridOptions,...e}),t&&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 t=[];return Array.isArray(e)&&e.forEach(n=>{t.push(this._grid.getDataItem(n))}),t}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,t){if(this._grid){t={...UU,...t};const n=this._grid.getColumns(),r=n.findIndex(s=>s.id===e);if(r>=0){const s=k6(n,r);t?.applySetColumns&&(this.sharedService.visibleColumns=s,this._grid.setColumns(s));const a=this.sharedService.allColumns.findIndex(d=>d.id===e);return a&&(t?.hideFromColumnPicker&&(this.sharedService.allColumns[a].excludeFromColumnPicker=!0),t?.hideFromGridMenu&&(this.sharedService.allColumns[a].excludeFromGridMenu=!0)),this.executeVisibilityCommands(t,["onHeaderMenuHideColumns"],s),r}}return-1}hideColumnByIds(e,t){if(Array.isArray(e)){const n=this._grid.getColumns().filter(r=>!e.includes(r.id));t={...UU,...t};for(const r of e)this.hideColumnById(r,{...t,triggerEvent:!1,applySetColumns:!1,autoResizeColumns:!1});this.sharedService.visibleColumns=n,this._grid.setColumns(n),this.executeVisibilityCommands(t,["onHeaderMenuHideColumns","onHideColumns"],n)}}showColumnByIds(e,t){if(this._grid){t={...$de,...t};const n=this.sharedService.allColumns.filter(r=>e.includes(r.id));this._grid.setColumns(n),this.sharedService.visibleColumns=n,this.executeVisibilityCommands(t,["onShowColumns"],this.sharedService.visibleColumns)}}executeVisibilityCommands(e,t,n){e?.autoResizeColumns&&this._grid.autosizeColumns(),e?.triggerEvent&&t.forEach(r=>this.pubSubService.publish(r,{columns:n}))}highlightRow(e,t){this._grid.getSelectionModel()||(this._rowSelectionPlugin=new fT(this._gridOptions.rowSelectionOptions),this._grid.setSelectionModel(this._rowSelectionPlugin)),t||=this._gridOptions.rowHighlightDuration,Array.isArray(e)?e.forEach(n=>this._grid.highlightRow(n)):this._grid.highlightRow(e,t)}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 t=this.sharedService.allColumns||[];Array.isArray(t)&&t.length>0&&(this._grid.setColumns(t),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,t){const n={...nE,...t};if(!(n?.skipError||this._grid&&this._gridOptions&&this._dataView))throw new Error("[Slickgrid-Universal] We could not find SlickGrid Grid, DataView objects");const r=this._gridOptions.datasetIdPropertyName||"id";if(!(n?.skipError||e&&e.hasOwnProperty(r)))throw new Error(`[Slickgrid-Universal] Adding an item requires the item to include an "${r}" property`);if(this._gridOptions?.enableTreeData&&"top"===t?.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 s=n?.position;"bottom"===s||this._gridOptions?.enableTreeData?this._dataView.addItem(e):this._dataView.insertItem(0,e);let a=0;const d=e?.[r]??"";return this._gridOptions?.enableTreeData?(this.invalidateHierarchicalDataset(),a=this._dataView.getRowById(d),n.scrollRowIntoView&&this._grid.scrollRowIntoView(a??0,!1)):n.resortGrid?(this._dataView.reSort(),a=this._dataView.getRowById(d)):(a="bottom"===s?this._dataView.getRowById(d):0,n.scrollRowIntoView&&this._grid.scrollRowIntoView(a??0)),n.highlightRow&&void 0!==a&&this.highlightRow(a),void 0!==a&&n.selectRow&&this._gridOptions&&(this._gridOptions.enableCheckboxSelector||this._gridOptions.enableRowSelection)&&this.setSelectedRow(a),n.triggerEvent&&this.pubSubService.publish("onItemAdded",e),!this._gridOptions?.backendServiceApi&&this._gridOptions.enablePagination&&("bottom"===s?this.paginationService.goToLastPage():this.paginationService.goToFirstPage()),a}addItems(e,t){const n={...nE,...t},r=this._gridOptions.datasetIdPropertyName||"id",s=n?.position,a=[];if(!Array.isArray(e))return[this.addItem(e,n)||0];if(this._dataView.beginUpdate(!0),"bottom"===s||this._gridOptions?.enableTreeData?this._dataView.addItems(e):this._dataView.insertItems(0,e),this._dataView.endUpdate(),this._gridOptions?.enableTreeData){this.invalidateHierarchicalDataset();const d=e[0]?.[r]??"",h=this._dataView.getRowById(d);n.scrollRowIntoView&&this._grid.scrollRowIntoView(h??0,!1)}else n.resortGrid&&this._dataView.reSort();return s&&n.scrollRowIntoView&&!this._gridOptions?.enableTreeData&&("bottom"===s?this._grid.navigateBottom():this._grid.navigateTop()),e.forEach(d=>a.push(this._dataView.getRowById(d[r]))),n.highlightRow&&this.highlightRow(a),n.selectRow&&this._gridOptions&&(this._gridOptions.enableCheckboxSelector||this._gridOptions.enableRowSelection)&&this.setSelectedRows(a),n.triggerEvent&&this.pubSubService.publish("onItemAdded",e),a}deleteItem(e,t){t={...kT,...t};const n=this._gridOptions.datasetIdPropertyName||"id";if(!(t?.skipError||e&&e.hasOwnProperty(n)))throw new Error(`[Slickgrid-Universal] Deleting an item requires the item to include an "${n}" property`);return this.deleteItemById(e[n],t)}deleteItems(e,t){t={...kT,...t};const n=this._gridOptions.datasetIdPropertyName||"id";if(!Array.isArray(e))return this.deleteItem(e,t),[e[n]];this._dataView.beginUpdate(!0);const r=[];return e.forEach(s=>{void 0!==s?.[n]&&r.push(s[n])}),this._dataView.deleteItems(r),this._dataView.endUpdate(),t.triggerEvent&&this.pubSubService.publish("onItemDeleted",e),r}deleteItemById(e,t){if(t={...kT,...t},!t?.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),t.triggerEvent&&this.pubSubService.publish("onItemDeleted",e),e}deleteItemByIds(e,t){if(t={...kT,...t},Array.isArray(e)){this._dataView.beginUpdate(!0);for(let n=0;n{const d=a&&a.hasOwnProperty(n)?a[n]:void 0;if(s.push(d),void 0!==this._dataView.getIdxById(d)){const h=this._dataView.getRowById(d);void 0!==h&&(r.push(h),this._grid.updateRow(h))}}),this._dataView.updateItems(s,e),this._dataView.endUpdate(),this._gridOptions?.enableTreeData&&this.invalidateHierarchicalDataset(),t.highlightRow&&this.highlightRow(r),t.selectRow&&this._gridOptions&&(this._gridOptions.enableCheckboxSelector||this._gridOptions.enableRowSelection)&&this.setSelectedRows(r),t.triggerEvent&&this.pubSubService.publish("onItemUpdated",e),r}updateItemById(e,t,n){if(n={...x9,...n},!n?.skipError&&void 0===e)throw new Error('[Slickgrid-Universal] Cannot update a row without a valid "id"');const r=this._dataView.getRowById(e);if(!n?.skipError&&!t&&!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,t),void 0!==r&&this._grid.updateRow(r),this._gridOptions?.enableTreeData&&this.invalidateHierarchicalDataset(),n.scrollRowIntoView&&void 0!==r&&this._grid.scrollRowIntoView(r),n.highlightRow&&void 0!==r&&this.highlightRow(r),void 0!==r&&n.selectRow&&this._gridOptions&&(this._gridOptions.enableCheckboxSelector||this._gridOptions.enableRowSelection)&&this.setSelectedRow(r),n.triggerEvent&&this.pubSubService.publish("onItemUpdated",t)),r}upsertItem(e,t){t={...nE,...t};const n=this._gridOptions.datasetIdPropertyName||"id",r=e&&e.hasOwnProperty(n)?e[n]:void 0;if(!t?.skipError&&void 0===r)throw new Error(`[Slickgrid-Universal] Calling Upsert of an item requires the item to include an "${n}" property`);return this.upsertItemById(r,e,t)}upsertItems(e,t){if(t={...nE,...t},!Array.isArray(e))return[this.upsertItem(e,t)];this._dataView.beginUpdate(!0);const n=[];e.forEach(s=>{n.push(this.upsertItem(s,{...t,highlightRow:!1,resortGrid:!1,selectRow:!1,triggerEvent:!1}))}),this._dataView.endUpdate();const r=n.map(s=>void 0!==s.added?s.added:s.updated);if(t.highlightRow&&this.highlightRow(r),t.selectRow&&this._gridOptions&&(this._gridOptions.enableCheckboxSelector||this._gridOptions.enableRowSelection)&&this.setSelectedRows(r),t.triggerEvent){this.pubSubService.publish("onItemUpserted",e);const s=n.filter(d=>void 0!==d.added);Array.isArray(s)&&s.length>0&&this.pubSubService.publish("onItemAdded",s);const a=n.filter(d=>void 0!==d.updated);Array.isArray(a)&&a.length>0&&this.pubSubService.publish("onItemUpdated",a)}return n}upsertItemById(e,t,n){let s,a,r=!1;if(n={...nE,...n},!n?.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)?(s=this.addItem(t,n),r=!0):(a=this.updateItem(t,{highlightRow:n.highlightRow,selectRow:n.selectRow,triggerEvent:n.triggerEvent}),r=!1),n.triggerEvent&&(this.pubSubService.publish("onItemUpserted",t),r?this.pubSubService.publish("onItemAdded",t):this.pubSubService.publish("onItemUpdated",t)),{added:s,updated:a}}invalidateHierarchicalDataset(e){if(this._gridOptions?.enableTreeData&&this.treeDataService){const t=e??this._dataView.getItems(),n=this.sortService.getCurrentColumnSorts(),r=this.treeDataService.convertFlatParentChildToTreeDatasetAndSort(t||[],this.sharedService.allColumns,this._gridOptions,n);this.sharedService.hierarchicalDataset=r.hierarchical,this.filterService.refreshTreeDataFilters(e),this._dataView.setItems(r.flat),this._grid.invalidate()}}hasRowSelectionEnabled(){const e=this._grid.getSelectionModel();return!(!this._gridOptions.enableRowSelection&&!this._gridOptions.enableCheckboxSelector||!e)}}class Ude{get eventHandler(){return this._eventHandler}constructor(){this._eventHandler=new Pi}dispose(){this._eventHandler.unsubscribeAll()}bindOnBeforeEditCell(e){const t=e?.getData();this._eventHandler.subscribe(e.onBeforeEditCell,(n,r)=>{if(!(n&&r&&e&&void 0!==r.cell&&e.getColumns&&e.getDataItem))return;const s=e.getColumns()[r.cell];if("function"==typeof s.onBeforeEditCell){const a={row:r.row,cell:r.cell,dataView:t,grid:e,columnDef:s,dataContext:e.getDataItem(r.row)};s.onBeforeEditCell(n instanceof Ri?n.getNativeEvent():n,a)}})}bindOnCellChange(e){const t=e?.getData();this._eventHandler.subscribe(e.onCellChange,(n,r)=>{if(!(n&&r&&e&&void 0!==r.cell&&e.getColumns&&e.getDataItem))return;const s=e.getColumns()[r.cell];if("function"==typeof s.onCellChange){const a={row:r.row,cell:r.cell,dataView:t,grid:e,columnDef:s,dataContext:e.getDataItem(r.row)};s.onCellChange(n instanceof Ri?n.getNativeEvent():n,a)}})}bindOnClick(e){const t=e?.getData();this._eventHandler.subscribe(e.onClick,(n,r)=>{if(!(n&&r&&e&&void 0!==r.cell&&e.getColumns&&e.getDataItem))return;const s=e.getColumns()[r.cell];if("function"==typeof s.onCellClick){const a={row:r.row,cell:r.cell,dataView:t,grid:e,columnDef:s,dataContext:e.getDataItem(r.row)};s.onCellClick(n instanceof Ri?n.getNativeEvent():n,a)}})}}class jde{constructor(e,t,n,r,s,a){this.extensionService=e,this.filterService=t,this.pubSubService=n,this.sharedService=r,this.sortService=s,this.treeDataService=a,this._columns=[],this._subscriptions=[],this._selectedRowIndexes=[],this._selectedRowDataContextIds=[],this._wasRecheckedAfterPageChange=!0,this._eventHandler=new Pi}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,t=!0,n=!1){if(Array.isArray(e)&&e.length>0){const r=this.getAssociatedGridColumns(this._grid,e);if(r&&Array.isArray(r)&&r.length>0){if(Array.isArray(this.sharedService.allColumns)){const s=[];if(this._gridOptions.enableCheckboxSelector){const a=this._gridOptions?.checkboxSelector?.columnIndexPosition??0;s.push({columnId:"_checkbox_selector",columnIndexPosition:a})}if(this._gridOptions.enableRowDetailView){const a=this._gridOptions?.rowDetailView?.columnIndexPosition??0;s.push({columnId:"_detail_selector",columnIndexPosition:a})}if(this._gridOptions.enableRowMoveManager){const a=this._gridOptions?.rowMoveManager?.columnIndexPosition??0;s.push({columnId:"_move",columnIndexPosition:a})}this.addColumnDynamicWhenFeatureEnabled(s,this.sharedService.allColumns,r)}r.forEach(s=>s.originalWidth=s.width||s.originalWidth),this._grid.setColumns(r),this.sharedService.visibleColumns=r,t?this._grid.autosizeColumns():(n||this._gridOptions.enableAutoResizeColumnsByCellContent&&!this._gridOptions.autosizeColumnsByCellContentOnFirstLoad)&&this.pubSubService.publish("onFullResizeByContentRequested",{caller:"GridStateService"})}}}getCurrentGridState(){const{frozenColumn:e,frozenRow:t,frozenBottom:n}=this.sharedService.gridOptions,r={columns:this.getCurrentColumns(),filters:this.getCurrentFilters(),sorters:this.getCurrentSorters(),pinning:{frozenColumn:e,frozenRow:t,frozenBottom:n}},s=this.getCurrentPagination();if(s&&(r.pagination=s),this.hasRowSelectionEnabled()){const a=this.getCurrentRowSelections();a&&(r.rowSelection=a)}if(this._gridOptions?.enableTreeData){const a=this.getCurrentTreeDataToggleState();a&&(r.treeData=a)}return r}getColumns(){return this._columns}getAssociatedCurrentColumns(e){const t=[];return e&&Array.isArray(e)&&e.forEach(n=>{n?.id&&t.push({columnId:n.id,cssClass:n.cssClass||"",headerCssClass:n.headerCssClass||"",width:n.width||0})}),t}getAssociatedGridColumns(e,t){const n=[],r=this.sharedService.allColumns||e.getColumns();return t&&Array.isArray(t)&&t.forEach(s=>{const a=r.find(d=>d.id===s.columnId);a?.id&&n.push({...a,cssClass:s.cssClass||a.cssClass,headerCssClass:s.headerCssClass||a.headerCssClass,width:s.width})}),this._columns=n,n}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 t=this._gridOptions.dataView.syncGridSelection;"boolean"==typeof t?e=this._gridOptions.dataView.syncGridSelection:"object"==typeof t&&(e=t.preserveHidden||t.preserveHiddenOnSelectionChange),e&&this._gridOptions.backendServiceApi&&this._gridOptions.dataView.hasOwnProperty("syncGridSelectionWithBackendService")&&(e=this._gridOptions.dataView.syncGridSelectionWithBackendService)}return e}resetColumns(e){const t=e||this._columns,n=this.getAssociatedCurrentColumns(t);this.pubSubService.publish("onGridStateChanged",{change:{newValues:n,type:qo.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?.(st.rowSelection)?.instance&&this._grid.setSelectedRows([])}subscribeToAllGridChanges(e){this._subscriptions.push(this.pubSubService.subscribe("onFilterChanged",t=>{this.resetRowSelectionWhenRequired(),this.pubSubService.publish("onGridStateChanged",{change:{newValues:t,type:qo.filter},gridState:this.getCurrentGridState()})})),this._subscriptions.push(this.pubSubService.subscribe("onFilterCleared",()=>{this.resetRowSelectionWhenRequired(),this.pubSubService.publish("onGridStateChanged",{change:{newValues:[],type:qo.filter},gridState:this.getCurrentGridState()})})),this._subscriptions.push(this.pubSubService.subscribe("onSortChanged",t=>{this.resetRowSelectionWhenRequired(),this.pubSubService.publish("onGridStateChanged",{change:{newValues:t,type:qo.sorter},gridState:this.getCurrentGridState()})})),this._subscriptions.push(this.pubSubService.subscribe("onSortCleared",()=>{this.resetRowSelectionWhenRequired(),this.pubSubService.publish("onGridStateChanged",{change:{newValues:[],type:qo.sorter},gridState:this.getCurrentGridState()})})),this.bindExtensionAddonEventToGridStateChange(st.columnPicker,"onColumnsChanged"),this.bindExtensionAddonEventToGridStateChange(st.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,(t,n)=>{const r=(this._selectedRowIndexes||[]).slice(),s=(this.selectedRowDataContextIds||[]).slice();if(this.selectedRowDataContextIds=n.filteredIds,this._selectedRowIndexes=n.rows,!Ec(this.selectedRowDataContextIds,s)||!Ec(this._selectedRowIndexes,r)){const a={gridRowIndexes:this._selectedRowIndexes||[],dataContextIds:n.selectedRowIds,filteredDataContextIds:n.filteredIds};this.pubSubService.publish("onGridStateChanged",{change:{newValues:a,type:qo.rowSelection},gridState:this.getCurrentGridState()})}}),this._subscriptions.push(this.pubSubService.subscribe(["onHeaderMenuHideColumns","onHideColumns","onShowColumns"],t=>{const n=this.getAssociatedCurrentColumns(t.columns);this.pubSubService.publish("onGridStateChanged",{change:{newValues:n,type:qo.columns},gridState:this.getCurrentGridState()})})),this._subscriptions.push(this.pubSubService.subscribe("onTreeItemToggled",t=>{this.pubSubService.publish("onGridStateChanged",{change:{newValues:t,type:qo.treeData},gridState:this.getCurrentGridState()})})),this._subscriptions.push(this.pubSubService.subscribe("onTreeFullToggleEnd",t=>{this.pubSubService.publish("onGridStateChanged",{change:{newValues:t,type:qo.treeData},gridState:this.getCurrentGridState()})}))}addColumnDynamicWhenFeatureEnabled(e,t,n){e.sort((r,s)=>r.columnIndexPosition-s.columnIndexPosition),e.forEach(r=>{const s=t.findIndex(d=>d.id===r.columnId),a=n.findIndex(d=>d.id===r.columnId);if(s>=0&&-1===a){const d=t[s];0===s?n.unshift(d):n.splice(s,0,d)}})}bindExtensionAddonEventToGridStateChange(e,t){const r=this.extensionService?.getExtensionByName?.(e)?.instance?.[t];r&&"function"==typeof r.subscribe&&this._eventHandler.subscribe(r,(s,a)=>{const d=a?.columns,h=this.getAssociatedCurrentColumns(d);this.pubSubService.publish("onGridStateChanged",{change:{newValues:h,type:qo.columns},gridState:this.getCurrentGridState()})})}bindSlickGridColumnChangeEventToGridStateChange(e,t){const n=t?.[e];n&&"function"==typeof n.subscribe&&this._eventHandler.subscribe(n,()=>{const r=t.getColumns(),s=this.getAssociatedCurrentColumns(r);this.pubSubService.publish("onGridStateChanged",{change:{newValues:s,type:qo.columns},gridState:this.getCurrentGridState()})})}bindSlickGridOnSetOptionsEventToGridStateChange(e){const t=e.onSetOptions;this._eventHandler.subscribe(t,(n,r)=>{const{frozenBottom:s,frozenColumn:a,frozenRow:d}=r.optionsBefore,{frozenBottom:h,frozenColumn:p,frozenRow:g}=r.optionsAfter;if(s!==h||a!==p||d!==g){const v={frozenBottom:h,frozenColumn:p,frozenRow:g},y=this.getCurrentGridState();this.pubSubService.publish("onGridStateChanged",{change:{newValues:v,type:qo.pinning},gridState:y})}})}hasRowSelectionEnabled(){const e=this._grid.getSelectionModel();return!(!this._gridOptions.enableRowSelection&&!this._gridOptions.enableCheckboxSelector||!e)}}class qde{constructor(e){this.extensionUtility=e,this._subscriptions=[],this._eventHandler=new Pi}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){this._grid=e,e&&this._gridOptions&&this._gridOptions.createPreHeaderPanel&&(this._gridOptions.enableTranslate&&this.translateHeaderGrouping(),this._eventHandler.subscribe(e.onRendered,()=>this.renderPreHeaderRowGroupingTitles()),this._eventHandler.subscribe(e.onAutosizeColumns,()=>this.renderPreHeaderRowGroupingTitles()),this._eventHandler.subscribe(this._dataView.onRowCountChanged,()=>this.delayRenderPreHeaderRowGroupingTitles(0)),this._eventHandler.subscribe(e.onSetOptions,(t,n)=>{n?.optionsBefore?.frozenColumn!==n?.optionsAfter?.frozenColumn&&this.delayRenderPreHeaderRowGroupingTitles(0)}),this.delayRenderPreHeaderRowGroupingTitles(75))}dispose(){this._eventHandler.unsubscribeAll()}delayRenderPreHeaderRowGroupingTitles(e=0){window.setTimeout(()=>this.renderPreHeaderRowGroupingTitles(),e)}renderPreHeaderRowGroupingTitles(){const e=this._columnDefinitions.length;if(void 0!==this._gridOptions?.frozenColumn&&this._gridOptions.frozenColumn>=0){const t=this._gridOptions.frozenColumn;this.renderHeaderGroups(this._grid.getPreHeaderPanelLeft(),0,t+1),this.renderHeaderGroups(this._grid.getPreHeaderPanelRight(),t+1,e)}else this.renderHeaderGroups(this._grid.getPreHeaderPanel(),0,e)}renderHeaderGroups(e,t,n){ui(e),e.className="slick-header-columns",e.style.left="-1000px",e.style.width=`${this._grid.getHeadersWidth()}px`,e.parentElement?.classList.add("slick-header");const r=this._grid.getHeaderColumnWidthDiff();let s,a=null,d="",h=0;const p=this._gridOptions?.frozenHeaderWidthCalcDifferential??0,g=void 0!==this._gridOptions?.frozenColumn&&this._gridOptions.frozenColumn>=0;for(let v=t;v0?(h+=s.width||0,a?.style&&(a.style.width=h-r-p+"px")):(h=s.width||0,a=O("div",{className:"slick-state-default slick-header-column "+(g?"frozen":""),dataset:{group:s.columnGroup},style:{width:h-r+"px"}}),O("span",{className:"slick-column-name",textContent:s.columnGroup||""},a),e.appendChild(a)),d=s.columnGroup||"")}translateHeaderGrouping(){const e=this._grid.getColumns();this.extensionUtility.translateItems(e,"columnGroupKey","columnGroup"),this._grid.setColumns(e),this.renderPreHeaderRowGroupingTitles()}}class Kde{constructor(e,t,n,r){this.pubSubService=e,this.sharedService=t,this.backendUtilities=n,this.rxjs=r,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,this._eventHandler=new Pi}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,t,n){if(this._availablePageSizes=t.pageSizes||[],this.grid=e,this._backendServiceApi=n,this._paginationOptions=t,this._isLocalGrid=!n,this._pageNumber=t.pageNumber||1,this._isCursorBased=n?.options?.useCursor??!1,n&&(!n.service||!n.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,(s,a)=>{this._totalItems!==a.totalRows&&(this.updateTotalItems(a.totalRows),this._previousPagination={pageNumber:a.pageNum,pageSize:a.pageSize,pageSizes:this.availablePageSizes,totalItems:a.totalRows})}),queueMicrotask(()=>{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","onFilterCleared"],()=>this.resetPagination())),n?.options?.infiniteScroll&&this._subscriptions.push(this.pubSubService.subscribe("onSortChanged",()=>this.resetPagination())),this.dataView&&(this._subscriptions.push(this.pubSubService.subscribe("onItemAdded",s=>this.processOnItemAddedOrRemoved(s,!0))),this._subscriptions.push(this.pubSubService.subscribe("onItemDeleted",s=>this.processOnItemAddedOrRemoved(s,!1)))),this.refreshPagination(!1,!1,!0);const r=this.getFullPagination();this._previousPagination={pageNumber:r.pageNumber,pageSize:r.pageSize,pageSizes:r.pageSizes,totalItems:this.totalItems},this._initialized=!0,RA(t,"totalItems",s=>this._totalItems=s)}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,t,n=!0){return this._pageNumber=1,this._pageCount=Math.ceil(this._totalItems/e),this._itemsPerPage=e,n?this.processOnPageChanged(this._pageNumber,t):Promise.resolve(this.getFullPagination())}goToFirstPage(e,t=!0){return this._pageNumber=1,t?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,t=!0){return this._pageNumber=this._pageCount||1,t?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,t=!0){return this._pageNumberthis._pageCount?this._pageNumber=this._pageCount:this._pageNumber=e,this._pageNumber!==r?n?this.processOnPageChanged(this._pageNumber,t):Promise.resolve(this.getFullPagination()):Promise.resolve(!1)}goToPreviousPage(e,t=!0){return this._pageNumber>1?(this._pageNumber--,t?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,t=!0,n=!1){const r={...this.getFullPagination()};if(this._paginationOptions){const a=this._paginationOptions;this._itemsPerPage||(this._isLocalGrid?this._itemsPerPage=a.pageSize:this._itemsPerPage=+(this._backendServiceApi?.options?.paginationOptions?.first?this._backendServiceApi.options.paginationOptions.first:a.pageSize)),(e||this._totalItems!==a.totalItems)&&(e?(this._pageNumber=1,this.paginationOptions.pageNumber=1):!this._initialized&&a.pageNumber&&a.pageNumber>1&&(this._pageNumber=a.pageNumber||1),1===this._pageNumber&&this._backendServiceApi&&this._backendServiceApi.service.resetPaginationOptions()),this._availablePageSizes=a.pageSizes||[],!this._totalItems&&a.totalItems&&(this._totalItems=a.totalItems),this.recalculateFromToIndexes()}this._pageCount=Math.ceil(this._totalItems/this._itemsPerPage),this.sharedService.currentPagination=this.getCurrentPagination(),this.pubSubService.publish("onPaginationRefreshed",this.getFullPagination()),t&&!Ec(r,this.getFullPagination())&&this.pubSubService.publish("onPaginationChanged",this.getFullPagination()),n&&!Ec(r,this.getFullPagination())&&this.pubSubService.publish("onPaginationPresetsInitialized",this.getFullPagination());const s=this.getFullPagination();this._previousPagination={pageNumber:s.pageNumber,pageSize:s.pageSize,pageSizes:s.pageSizes,totalItems:this.totalItems}}resetPagination(e=!0,t=!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),t&&this.grid.scrollTo(0)}togglePaginationVisibility(e){if(this.grid&&this.sharedService?.gridOptions){const t=void 0!==e?e:!this.sharedService.gridOptions.enablePagination;if(t&&this.goToFirstPage(),this._isLocalGrid&&this.dataView){const n=e?this._itemsPerPage:0;this.dataView.setPagingOptions({pageSize:n,pageNum:0})}this.sharedService.gridOptions.enablePagination=t,this.pubSubService.publish("onPaginationVisibilityChanged",{visible:t})}}processOnPageChanged(e,t,n){return console.assert(!this.isCursorBased||n,"Configured for cursor based pagination - cursorArgs expected"),!1===this.pubSubService.publish("onBeforePaginationChange",this.getFullPagination())?(this.resetToPreviousPagination(),Promise.resolve(this.getFullPagination())):new Promise((r,s)=>{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()),r(this.getFullPagination());else{const a=+this._itemsPerPage,d=new Date;if(this._backendServiceApi?.preProcess&&this._backendServiceApi.preProcess(),this._backendServiceApi?.process){const h=this.isCursorBased&&n?this._backendServiceApi.service.processOnPaginationChanged(t,n):this._backendServiceApi.service.processOnPaginationChanged(t,{newPage:e,pageSize:a}),p=this._backendServiceApi.process(h);p instanceof Promise?p.then(g=>{this.backendUtilities?.executeBackendProcessesCallback(d,g,this._backendServiceApi,this._totalItems);const v=this.getFullPagination();this._previousPagination={pageNumber:v.pageNumber,pageSize:v.pageSize,pageSizes:v.pageSizes,totalItems:this.totalItems},r(this.getFullPagination())}).catch(g=>{this.resetToPreviousPagination(),this.backendUtilities?.onBackendError(g,this._backendServiceApi),(!this._backendServiceApi?.onError||!this.backendUtilities?.onBackendError)&&s(p)}):this.rxjs?.isObservable(p)&&this._subscriptions.push(p.subscribe(g=>{const v=this.getFullPagination();this._previousPagination={pageNumber:v.pageNumber,pageSize:v.pageSize,pageSizes:v.pageSizes,totalItems:this.totalItems},r(this.backendUtilities?.executeBackendProcessesCallback(d,g,this._backendServiceApi,this._totalItems))},g=>{this.resetToPreviousPagination(),this.backendUtilities?.onBackendError(g,this._backendServiceApi),(!this._backendServiceApi?.onError||!this.backendUtilities?.onBackendError)&&s(p)})),this.pubSubService.publish("onPaginationRefreshed",this.getFullPagination()),this.pubSubService.publish("onPaginationChanged",this.getFullPagination())}}})}recalculateFromToIndexes(){((this._pageNumber-1)*this._itemsPerPage>this._totalItems||this._totalItems>0&&0===this._pageNumber)&&(this._pageNumber=1),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._dataTo>this._totalItems||this._totalItemsthis.resizeColumnsByCellContent(!0))),this.gridOptions.enableColumnResizeOnDoubleClick&&(this._subscriptions.push(this.pubSubService.subscribe("onHeaderMenuColumnResizeByContent",r=>{this.handleSingleColumnResizeByContent(r.columnId)})),this._eventHandler.subscribe(this._grid.onColumnsResizeDblClick,(r,s)=>{this.handleSingleColumnResizeByContent(s.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)return null;this.resizeGrid().then(()=>this.resizeGridWhenStylingIsBrokenUntilCorrected()).catch(t=>console.log("Error:",t)),this.resizeGrid(10,e),this._bindingEventService.bind(window,"resize",()=>{this.handleResizeGrid(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 t=e?.autoResize??{},n=kn(this._gridDomElm);if(!window||!this._gridDomElm)return null;let r=void 0!==t?.bottomPadding?t.bottomPadding:20;if(r&&e.enablePagination&&(r+=35),r&&e.showCustomFooter){const E=this.gridOptions?.customFooterOptions?.footerHeight??25;r+=parseInt(`${E}`,10)}let s=0,a=0;"container"===t.calculateAvailableSizeBy?s=NA(this._pageContainerElm,"height")||0:(s=window.innerHeight||0,a=n.top);const d=s-a-r,h=NA(this._pageContainerElm,"width")||window.innerWidth||0,p=t?.maxHeight,g=t?.minHeight??180,v=t?.maxWidth,y=t?.minWidth??300;let C=d,k=t?.rightPadding?h-t.rightPadding:h;return Cp&&(C=p),kv&&(k=v),{height:this._fixedHeight||C,width:this._fixedWidth||k}}getLastResizeDimensions(){return this._lastDimensions}pauseResizer(e){this._resizePaused=e}resizeGrid(e,t){return new Promise(n=>{(e=e||0)>0?(window.clearTimeout(this._timer),this._timer=window.setTimeout(()=>n(this.resizeGridCallback(t)),e)):n(this.resizeGridCallback(t))})}resizeGridCallback(e){const t=this.resizeGridWithDimensions(e);return this.pubSubService.publish("onGridAfterResize",t),this.gridOptions.enableAutoResizeColumnsByCellContent&&(!this._lastDimensions?.width||t?.width!==this._lastDimensions?.width)&&this.resizeColumnsByCellContent(!1),this._lastDimensions=t,t}resizeGridWithDimensions(e){const t=this.calculateGridNewDimensions(this.gridOptions);if((e||t)&&this._gridDomElm){const n=e?.height?e.height:t?.height,r=e?.width?e.width:t?.width;this.gridOptions.autoHeight||(this._gridDomElm.style.height=`${n}px`),this._gridDomElm.style.width=`${r}px`,this._gridContainerElm&&(this._gridContainerElm.style.width=`${r}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!==n||this._lastDimensions.width!==r)&&this._grid.autosizeColumns():this.gridOptions.enableAutoResizeColumnsByCellContent&&(!this._lastDimensions?.width||r!==this._lastDimensions?.width)&&this.resizeColumnsByCellContent(!1),this._lastDimensions={height:n||0,width:r||0}}return this._lastDimensions}requestStopOfAutoFixResizeGrid(e=!0){this._isStopResizeIntervalRequested=e}resizeColumnsByCellContent(e=!1){const t=this._grid.getColumns(),n=this.dataView.getItems(),r={};let s=!1,a=0;const d=this._gridContainerElm?.offsetWidth??0;if(!Array.isArray(n)||0===n.length||!e&&this._totalColumnsWidthByContent>0&&this._totalColumnsWidthByContentd?this._grid.reRenderColumns(s):this._grid.autosizeColumns(),this.pubSubService.publish("onAfterResizeByContent",{readItemCount:a,calculateColumnWidths:h})}calculateCellWidthByReadingDataset(e,t,n=1e3,r){const s=Array.isArray(e)?e:[e],a=this.dataView.getItems();let d=0;for(const[h,p]of a.entries()){if(h>n)break;Array.isArray(s)&&"object"==typeof t&&s.forEach((g,v)=>{const y=this.calculateCellWidthByContent(p,g,h,r??v,t[g.id]);void 0!==y&&(t[g.id]=y)}),d=h+1}return d}calculateCellWidthByContent(e,t,n,r,s){const a=this.resizeByContentOptions.cellCharWidthInPx??7;if(!t.originalWidth){const d=t?.resizeCharWidthInPx??a,h=yT(t?.formatter,n,r,t,e,this._grid),p=C1(h)?_n(h):"",g=Math.ceil(p.length*d),v=t.resizeMaxWidthThreshold;t&&(void 0===s||g>s)&&(s=void 0!==v&&g>v?v:void 0!==t.maxWidth&&g>t.maxWidth?t.maxWidth:g)}return s}applyNewCalculatedColumnWidthByReference(e,t){const n=this.resizeByContentOptions.cellPaddingWidthInPx??6,r=this.resizeByContentOptions.formatterPaddingWidthInPx??6,s=e?.filter?.type??e?.type??M.string;let a=t;const d=e?.resizeCalcWidthRatio??this.resizeByContentOptions.defaultRatioForStringType??.9;a*="string"===s?d:1,a+=n,e.resizeExtraWidthPadding&&(a+=e.resizeExtraWidthPadding),e.editor&&this.gridOptions.editable&&(a+=r),void 0!==e.maxWidth&&a>e.maxWidth&&(a=e.maxWidth),void 0!==e.resizeMaxWidthThreshold&&a>e.resizeMaxWidthThreshold&&(a=e.resizeMaxWidthThreshold),a=Math.ceil(a),(void 0===e.originalWidth||!0===e.resizeAlwaysRecalculateWidth||!0===this.resizeByContentOptions.alwaysRecalculateColumnWidth)&&(e.width=this.readjustNewColumnWidthWhenOverLimit(e,a))}handleSingleColumnResizeByContent(e){const t=this._grid.getColumns(),n=t.findIndex(r=>r.id===e);if(n>=0){const r=t[n],s={[e]:r.originalWidth??r.minWidth??0};r.originalWidth=void 0,this.calculateCellWidthByReadingDataset(r,s,this.resizeByContentOptions.maxItemToInspectSingleColumnWidthByContent,n),this.applyNewCalculatedColumnWidthByReference(r,s[e]),this._grid.reRenderColumns(r?.rerenderOnResize??!1)}}readjustNewColumnWidthWhenOverLimit(e,t){const n=this.gridOptions.frozenColumn??-1,r=this._grid.getColumns().findIndex(a=>a.id===e.id)??0;let s=t;if(n>=0&&r<=n){const a=Array.from(this._grid.getViewports());if(a){const d=a.find(y=>y.classList.contains("slick-viewport-left"))?.clientWidth??0,h=a.find(y=>y.classList.contains("slick-viewport-right"))?.clientWidth??0,p=d+h,g=d-(e.width??0);if(g+t>p){s=d-g+h-(this.resizeByContentOptions.widthToRemoveFromExceededWidthReadjustment??50)}}}return Math.ceil(s)}checkIsGridShown(){return!!document.querySelector(`${this.gridUidSelector}`)?.offsetParent}resizeGridWhenStylingIsBrokenUntilCorrected(){var e=this;const t=this.gridOptions?.autoFixResizeTimeout??18e3,n=this.gridOptions?.autoFixResizeRequiredGoodCount??5,r=this._gridContainerElm.querySelector(`${this.gridUidSelector} .slick-header`),s=this._gridContainerElm.querySelector(`${this.gridUidSelector} .slick-viewport`);let a=0,d=0;if(r&&s&&this.gridOptions.autoFixResizeWhenBrokenStyleDetected){const h=this.dataView.getItemCount(),p=this._grid.getColumns()||[];this._intervalId=window.setInterval(yn(function*(){const v=kn(r);let y=v.top;e.gridOptions?.enableFiltering&&e.gridOptions.headerRowHeight&&(y+=e.gridOptions.headerRowHeight),e.gridOptions?.createPreHeaderPanel&&e.gridOptions.showPreHeaderPanel&&e.gridOptions.preHeaderPanelHeight&&(y+=e.gridOptions.preHeaderPanelHeight),y+=44;const k=kn(s).top,E=kn(e._gridContainerElm);let x=0===v?.top||y-k>2||0===E.left&&0===E.top;const S=e._grid.getRenderedRange()?.rightPx??0;!x&&h>0&&0===S&&p.length>1&&(x=!0),e._isStopResizeIntervalRequested&&(x=!1,a=t),e.checkIsGridShown()&&(x||0===E.left||0===E.top)&&(yield e.resizeGrid(),d<5&&e._grid.updateColumns(),e.checkIsGridShown()&&(x=!1)),e.checkIsGridShown()&&d++,e.checkIsGridShown()&&!x&&(d>=n||a++>=t)&&window.clearInterval(e._intervalId)}),this.intervalRetryDelay)}}}class iue{constructor(){this.currentPagination=null,this.isItemsDateParsed=!1,this.frozenVisibleColumnId="",this.hasColumnsReordered=!1,this.hideHeaderRowAfterPageLoad=!1}get allColumns(){return this._allColumns}set allColumns(e){this._allColumns=e}get columnDefinitions(){return this.slickGrid?.getColumns()??[]}get gridOptions(){return this._gridOptions||this.slickGrid?.getOptions()||{}}set gridOptions(e){this._gridOptions=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 nue{constructor(e,t,n,r,s){this.collectionService=e,this.sharedService=t,this.pubSubService=n,this.backendUtilities=r,this.rxjs=s,this._currentLocalSorters=[],this._isBackendGrid=!1,this._eventHandler=new Pi,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)),this._gridOptions.preParseDateColumns&&(this._eventHandler.subscribe(e.onCellChange,(t,n)=>this.preParseSingleDateItem(n.item)),this.pubSubService.subscribe(["onItemAdded","onItemUpdated"],t=>this.preParseSingleDateItem(t)))}preParseSingleDateItem(e){this._gridOptions.preParseDateColumns&&(Array.isArray(e)?e:[e]).forEach(n=>this.collectionService.parseSingleDateItem(n,this._grid,this._gridOptions.preParseDateColumns))}preParseAllDateItems(){if(this._gridOptions.preParseDateColumns){const e=this._dataView?.getItems()||[];this.collectionService.preParseByMutationDateItems(e,this._grid,this._gridOptions.preParseDateColumns),this.sharedService.isItemsDateParsed=!0}}handleLocalOnSort(e,t){const n=t.multiColumnSort?t.sortCols:new Array({columnId:t.sortCol?.id??"",sortAsc:t.sortAsc,sortCol:t.sortCol});this._currentLocalSorters=[],Array.isArray(n)&&n.forEach(r=>{r.sortCol&&this._currentLocalSorters.push({columnId:r.sortCol.id,direction:r.sortAsc?ar.ASC:ar.DESC})}),this.onLocalSortChanged(this._grid,n),this.emitSortChanged(Cn.local)}clearSortByColumnId(e,t){const n=this.getCurrentColumnSorts(),r=this.getCurrentColumnSorts(`${t}`);if(Array.isArray(n)&&Array.isArray(r)&&n.length!==r.length){if(this._gridOptions.backendServiceApi)this.onBackendSortChanged(e,{multiColumnSort:!0,sortCols:r,grid:this._grid});else if(this._dataView)this.onLocalSortChanged(this._grid,r,!0,!0);else{const d=this._gridOptions.multiColumnSort?r:r[0];this._grid.onSort.notify(d)}const s=r.map(a=>({columnId:a?.sortCol?.id??"",sortAsc:a?.sortAsc,sortCol:a?.sortCol}));this._grid.setSortColumns(s)}Array.isArray(r)&&0===r.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 t=this._gridOptions.backendServiceApi?.service;t?.clearSorters&&t.clearSorters()}this._currentLocalSorters=[],this.pubSubService.publish("onSortCleared",!0)}disableSortFunctionality(e=!0,t=!0){const r=!this._gridOptions.enableSorting;let s;this._gridOptions.enableSorting=r,e?(t&&this.clearSorting(),this._eventHandler.unsubscribeAll(),s=this.disableAllSortingCommands(!0)):(s=this.disableAllSortingCommands(!1),this._eventHandler.subscribe(this._grid.onSort,(a,d)=>this.handleLocalOnSort(a,d))),this._grid.setOptions({enableSorting:this._gridOptions.enableSorting},!1,!0),this.sharedService.gridOptions=this._gridOptions,this._grid.setColumns(s)}toggleSortFunctionality(e=!0){const t=this._gridOptions.enableSorting;this.disableSortFunctionality(t,e)}emitSortChanged(e,t){if(e===Cn.remote&&this._gridOptions.backendServiceApi){let n=[];const r=this._gridOptions.backendServiceApi.service;r?.getCurrentSorters&&(n=r.getCurrentSorters()),this.pubSubService.publish("onSortChanged",n)}else e===Cn.local&&(t&&(this._currentLocalSorters=t),this.pubSubService.publish("onSortChanged",this.getCurrentLocalSorters()))}getCurrentLocalSorters(){return this._currentLocalSorters}getCurrentColumnSorts(e){if(this._grid){const t=this._grid.getSortColumns();if(Array.isArray(t))return t.reduce((r,s)=>(s&&(!e||s.columnId!==e)&&r.push({columnId:s.columnId||"",sortCol:this._columnDefinitions[this._grid.getColumnIndex(s.columnId||"")],sortAsc:s.sortAsc}),r),[])}return[]}loadGridSorters(e){this._currentLocalSorters=[];const t=[];return Array.isArray(e)&&((this._gridOptions.multiColumnSort?e:e.slice(0,1)).forEach(r=>{const s=this._columnDefinitions.find(a=>a.id===r.columnId);if(s){if(!s.sortable){let a="[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&&(a+=" Also note that TreeData feature requires the column holding the tree (expand/collapse icons) to be sortable."),new Error(a)}t.push({columnId:s.id,sortAsc:r.direction.toUpperCase()===ar.ASC,sortCol:s}),this._currentLocalSorters.push({columnId:String(s.id),direction:r.direction.toUpperCase()})}}),this.onLocalSortChanged(this._grid,t),this._grid.setSortColumns(t.map(r=>({columnId:r.columnId,sortAsc:r.sortAsc})))),t}processTreeDataInitialSort(){if(this._gridOptions.enableTreeData&&this._gridOptions.treeDataOptions){const e=this._gridOptions.treeDataOptions,t=this._columnDefinitions.find(n=>n.id===e.columnId);if(t){let n=ar.ASC,r={columnId:e.columnId,sortCol:t,sortAsc:!0};if(e?.initialSort?.columnId){const s=e.initialSort.columnId,a=this._columnDefinitions.find(d=>d.id===s);n=(e.initialSort.direction||ar.ASC).toUpperCase(),r={columnId:s,sortCol:a,sortAsc:n===ar.ASC}}r?.columnId&&this.sharedService?.hierarchicalDataset&&this.updateSorting([{columnId:r.columnId||"",direction:n}])}}}onBackendSortChanged(e,t){if(!t||!t.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 n=t.grid?.getOptions()??{},r=n.backendServiceApi;if(!r||!r.process||!r.service)throw new Error('BackendServiceApi requires at least a "process" function and a "service" defined');const s=new Date;r.preProcess&&r.preProcess();const a=r.service.processOnSortChanged(e,t),d=n?.pagination?.totalItems||0;this.backendUtilities?.executeBackendCallback(r,a,t,s,d,{emitActionChangedCallback:this.emitSortChanged.bind(this),errorCallback:()=>{this._grid.setSortColumns(t.previousSortColumns||[]);const h=t.previousSortColumns?.map(p=>({columnId:p.columnId,sortAsc:p.sortAsc,sortCol:this._columnDefinitions.find(g=>g.id===p.columnId)}));r?.service?.updateSorters?.(h||[])},httpCancelRequestSubject:this.httpCancelRequests$})}onLocalSortChanged(e,t,n=!1,r=!1){var s=this;return yn(function*(){const a=s._gridOptions.datasetIdPropertyName||"id",d=s._gridOptions.enableTreeData||!1,h=e.getData();if(yield s.pubSubService.publish("onBeforeSortChange",{sortColumns:t},0),e&&h){if(s._gridOptions.preParseDateColumns&&!s.sharedService.isItemsDateParsed&&t.some(p=>ih(p.sortCol?.type))&&s.preParseAllDateItems(),n&&!d&&h.reSort(),d&&s._dataView&&s.sharedService&&Array.isArray(s.sharedService.hierarchicalDataset)){const p=s.sortHierarchicalDataset(s.sharedService.hierarchicalDataset,t);s._dataView.setItems(p.flat,a),s._dataView.onRowCountChanged.notify({previous:s._dataView.getFilteredItemCount(),current:s._dataView.getLength(),itemCount:s._dataView.getItemCount(),dataView:s._dataView,callingOnRowsChanged:!0})}else h.sort(s.sortComparers.bind(s,t));e.invalidate(),r&&s.emitSortChanged(Cn.local,t.map(p=>({columnId:p.sortCol?.id??"id",direction:p.sortAsc?ar.ASC:ar.DESC})))}})()}sortHierarchicalDataset(e,t,n=!1){this.sortTreeData(e,t);const r=this._gridOptions.datasetIdPropertyName||"id",s=this._gridOptions.treeDataOptions||{columnId:""},d=A$(e,{...s,identifierPropName:s.identifierPropName??r,shouldAddTreeLevelNumber:!0});if(n){this._currentLocalSorters=[],t.forEach(p=>{this._currentLocalSorters.push({columnId:p.columnId,direction:p.sortAsc?"ASC":"DESC"})});const h=this._gridOptions.backendServiceApi?Cn.remote:Cn.local;this.emitSortChanged(h)}return{hierarchical:e,flat:d}}sortLocalGridByDefaultSortFieldId(){const e=this._gridOptions&&this._gridOptions.defaultColumnSortFieldId||this._gridOptions.datasetIdPropertyName||"id",t={id:e,field:e};this.onLocalSortChanged(this._grid,new Array({columnId:t.id,sortAsc:!0,sortCol:t,clearSortTriggered:!0}),!1,!0)}sortComparers(e,t,n){if(Array.isArray(e))for(const r of e){const s=this.sortComparer(r,t,n);if(void 0!==s)return s}return Li.neutral}sortComparer(e,t,n,r){if(e?.sortCol){const s=e.sortCol,a=s.type||M.string,d=e.sortAsc?Li.asc:Li.desc;let h=r||s.queryFieldSorter||s.queryField||s.field;this._gridOptions.preParseDateColumns&&ih(a)&&e?.columnId&&(h="string"==typeof this._gridOptions.preParseDateColumns?`${this._gridOptions.preParseDateColumns}${e.columnId}`:`${e.columnId}`);let p=h;"function"==typeof s.queryFieldNameGetterFn&&(h=s.queryFieldNameGetterFn(t),p=s.queryFieldNameGetterFn(n));let g=t[h],v=n[p];if(h?.indexOf(".")>=0&&(g=Wn(t,h)),p?.indexOf(".")>=0&&(v=Wn(n,p)),s.sortComparer){const y=s.sortComparer(g,v,d,s,this._gridOptions);if(y!==Li.neutral)return y}else{const y=ry(a,g,v,d,s,this._gridOptions);if(y!==Li.neutral)return y}}}sortTreeData(e,t){Array.isArray(t)&&t.forEach(n=>{this.sortTreeChildren(e,n,0)})}sortTreeChildren(e,t,n){const r=this._gridOptions.treeDataOptions?.childrenPropName??"children";e.sort((s,a)=>this.sortComparer(t,s,a)??Li.neutral),e.forEach(s=>{s&&s.hasOwnProperty(r)&&Array.isArray(s[r])&&(n++,this.sortTreeChildren(s[r],t,n),n--)})}updateSorting(e,t=!0,n=!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 r=this._gridOptions.backendServiceApi;if(r){const s=r?.service;s?.updateSorters&&(s.updateSorters(void 0,e),n&&this.backendUtilities?.refreshBackendDataset(this._gridOptions))}else this.loadGridSorters(e);if(t){const s=r?Cn.remote:Cn.local;this.emitSortChanged(s)}}}disableAllSortingCommands(e=!0){const t=this._grid.getColumns();t.forEach(r=>{void 0!==r.sortable&&(r.sortable=!e),r?.header?.menu&&r.header.menu.commandItems?.forEach(s=>{if(s&&"string"!=typeof s){const a=s.command;("sort-asc"===a||"sort-desc"===a||"clear-sort"===a)&&(s.hidden=e)}})});const n=this._gridOptions.gridMenu?.commandItems;return n&&n.forEach(r=>{r&&"string"!=typeof r&&"clear-sorting"===r.command&&(r.hidden=e)}),t}}class rue{constructor(e,t,n){this.pubSubService=e,this.sharedService=t,this.sortService=n,this._currentToggledItems=[],this._isLastFullToggleCollapsed=!1,this._isOneCpuCyclePassed=!1,this._isTreeDataEnabled=!1,this._subscriptions=[],this._treeDataRecalcHandler=null,this._eventHandler=new Pi,window.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&&(window.clearTimeout(this._timer),this._timer=window.setTimeout(()=>this._treeDataRecalcHandler?.(),this.treeDataOptions?.autoRecalcTotalsDebounce??0))})}applyToggledItemStateChanges(e,t,n=!0,r=!1){if(Array.isArray(e)){const s=fr(this.treeDataOptions,"collapsedPropName"),a=fr(this.treeDataOptions,"hasChildrenPropName");this.dataView.beginUpdate(!0);const h="full-collapse"===(t??this._lastToggleStateChange.previousFullToggleType);t&&(this._lastToggleStateChange.previousFullToggleType=t),n&&(this.dataView.getItems()||[]).forEach(p=>{p[a]&&(p[s]=h)}),this.dynamicallyToggleItemState(e,r)}}dynamicallyToggleItemState(e,t=!0){Array.isArray(e)&&(this.dataView.beginUpdate(!0),e.forEach(n=>{const r=this.dataView.getItemById(n.itemId);if(this.updateToggledItem(r,n.isCollapsed,!0),t){const s=this._currentToggledItems.findIndex(a=>a.itemId===n.itemId);s>=0?this._currentToggledItems[s].isCollapsed=n.isCollapsed:this._currentToggledItems.push({itemId:n.itemId,isCollapsed:n.isCollapsed}),this.pubSubService.publish("onTreeItemToggled",{...this._lastToggleStateChange,fromItemId:n.itemId,toggledItems:this._currentToggledItems,type:n.isCollapsed?mm.toggleCollapse:mm.toggleExpand})}}),this.dataView.endUpdate(),this.dataView.refresh())}getCurrentToggleState(){return this._lastToggleStateChange}getInitialSort(e,t){const n=t?.treeDataOptions,r=n?.initialSort??{columnId:n?.columnId??"",direction:"ASC"},s=e.find(a=>a.id===r.columnId);return{columnId:r.columnId,sortAsc:"DESC"!==r?.direction?.toUpperCase(),sortCol:s}}getItemCount(e){if(void 0!==e){const t=fr(this.treeDataOptions,"levelPropName");return this.dataView.getItems().filter(n=>n[t]===e).length}return this.dataView.getItemCount()}getToggledItems(){return this._currentToggledItems}clearSorting(){const e=this.getInitialSort(this.sharedService.columnDefinitions,this.sharedService.gridOptions);this.sortService.loadGridSorters([{columnId:e.columnId,direction:e.sortAsc?"ASC":"DESC"}])}convertFlatParentChildToTreeDatasetAndSort(e,t,n,r){const s=this.convertFlatParentChildToTreeDataset(e,n),a=Array.isArray(r)&&r.length?r[0]:this.getInitialSort(t,n),d=this.sortService.sortHierarchicalDataset(s,[a],!0);return this._grid?.setSortColumns([a]),d}convertFlatParentChildToTreeDataset(e,t){const n=t?.datasetIdPropertyName??"id",r=t?.treeDataOptions??{columnId:"id"};return T$(e,{...r,identifierPropName:r.identifierPropName??n,initiallyCollapsed:this._isLastFullToggleCollapsed})}enableAutoRecalcTotalsFeature(e=!0){e&&this._isTreeDataEnabled?this._treeDataRecalcHandler=this.recalculateTreeTotals.bind(this,this.gridOptions):this._treeDataRecalcHandler=null}recalculateTreeTotals(e){const t=e.treeDataOptions,n=t?.childrenPropName??oe.treeDataProperties.CHILDREN_PROP,r=t?.levelPropName??oe.treeDataProperties.TREE_LEVEL_PROP;t?.aggregators&&(t.aggregators.forEach(s=>{T_(this.sharedService.hierarchicalDataset||[],{childrenPropName:n,levelPropName:r,aggregator:s})}),this._grid.invalidate())}sortHierarchicalDataset(e,t){const n=t??this.getInitialSort(this.sharedService.allColumns,this.gridOptions),r=Array.isArray(n)?n:[n];return this.sortService.sortHierarchicalDataset(e,r)}toggleTreeDataCollapse(e,t=!0){var n=this;return yn(function*(){if(n.gridOptions?.enableTreeData){const s=fr(n.treeDataOptions,"hasChildrenPropName");t&&(yield n.pubSubService.publish("onTreeFullToggleStart",{collapsing:e})),n.dataView.beginUpdate(!0);const a=n.dataView.getItems()||[];a.forEach(d=>{d[s]&&n.updateToggledItem(d,e,!1)}),n.sharedService.hierarchicalDataset=n.convertFlatParentChildToTreeDataset(a,n.gridOptions),n.dataView.endUpdate(),n.dataView.refresh(),n._isLastFullToggleCollapsed=e}const r=e?mm.fullCollapse:mm.fullExpand;n._lastToggleStateChange={type:r,previousFullToggleType:r,toggledItems:null},t&&n.pubSubService.publish("onTreeFullToggleEnd",n._lastToggleStateChange)})()}handleOnCellClick(e,t){if(e&&t){const n=e.target||{},r=this.gridOptions.datasetIdPropertyName??"id",s=fr(this.treeDataOptions,"collapsedPropName"),a=fr(this.treeDataOptions,"childrenPropName");if("string"==typeof n?.className&&n.className.indexOf("toggle")>=0){const h=this.dataView.getItem(t.row);if(h){h[s]=!h[s];const p=h[s],g=h[r],v=this._currentToggledItems.findIndex(k=>k.itemId===g);v>=0?this._currentToggledItems[v].isCollapsed=p:this._currentToggledItems.push({itemId:g,isCollapsed:p}),this.dataView.updateItem(g,h);const y=k=>k[r]===g,C=gm(this.sharedService.hierarchicalDataset||[],y,a);C&&(C[s]=p),this._grid.invalidate(),this._lastToggleStateChange={type:p?mm.toggleCollapse:mm.toggleExpand,previousFullToggleType:this._isLastFullToggleCollapsed?"full-collapse":"full-expand",toggledItems:this._currentToggledItems},this.pubSubService.publish("onTreeItemToggled",{...this._lastToggleStateChange,fromItemId:g})}e.stopImmediatePropagation()}}}updateToggledItem(e,t,n){const r=this.gridOptions?.datasetIdPropertyName??"id",s=fr(this.treeDataOptions,"childrenPropName"),a=fr(this.treeDataOptions,"collapsedPropName");if(e&&(e[a]=t,this.dataView.updateItem(e[r],e),n)){const d=p=>p[r]===e[r],h=gm(this.sharedService.hierarchicalDataset||[],d,s);h&&(h[a]=t)}}setAutoRecalcTotalsCallbackWhenFeatEnabled(e){return e?.enableTreeData&&e?.treeDataOptions?.autoRecalcTotalsOnFilterChange&&e?.treeDataOptions?.aggregators?this.recalculateTreeTotals.bind(this,e):null}}class _m{constructor(e){this.translaterService=e,this._debounceTypingDelay=0,this._shouldTriggerQuery=!0,this._inputType="text",this.inputFilterType="single",this.searchTerms=[],this._bindEventService=new br}get columnFilter(){return this.columnDef?.filter??{}}get defaultOperator(){return te.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 t=this.gridOptions?.backendServiceApi;this._debounceTypingDelay=(t?t?.filterTypingDebounce??this.gridOptions?.defaultBackendServiceFilterTypingDebounce:this.gridOptions?.filterTypingDebounce)??0;const n=Array.isArray(this.searchTerms)&&this.searchTerms.length>=0?this.searchTerms[0]:"";this.createDomFilterElement(n),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,this.updateFilterStyle(!1),"compound"===this.inputFilterType&&this._selectOperatorElm&&(this._selectOperatorElm.selectedIndex=0),this.onTriggerEvent(void 0,!0))}destroy(){this._bindEventService.unbindAll(),this._selectOperatorElm?.remove?.(),this._filterInputElm?.remove?.()}getValues(){return this._filterInputElm.value}setValues(e,t,n=!1){const r=Array.isArray(e)?e:[e];let s="";for(const a of r)s="single"===this.inputFilterType?t?this.addOptionalOperatorIntoSearchString(a,t):a:`${a}`,this._filterInputElm.value=`${s??""}`,this._currentValue=this._filterInputElm.value;if(this.updateFilterStyle(""!==this.getValues()),this.operator=t||this.defaultOperator,t&&this._selectOperatorElm){const a=Qb(this.operator);this._selectOperatorElm.value=a}n&&this.onTriggerEvent(void 0,!1)}addOptionalOperatorIntoSearchString(e,t){let n="",r="",s=null==e?"":`${e}`;if(t&&s){switch(t){case"<>":case"!=":case"=":case"==":case">":case">=":case"<":case"<=":n=t;break;case"EndsWith":case"*z":n="*";break;case"StartsWith":case"a*":r="*"}s=`${n}${s}${r}`}return s}getCompoundOperatorOptionValues(){const e=this.columnDef.type&&this.columnDef.type?this.columnDef.type:M.string;let t,n="text";if(this.columnFilter?.compoundOperatorList)t=this.columnFilter.compoundOperatorList;else switch(e){case M.string:case M.text:case M.readonly:case M.password:n="text",t=function xle(i,e){return[{operator:"",desc:Sl("CONTAINS","TEXT_CONTAINS","Contains",i,e)},{operator:"<>",desc:Sl("NOT_CONTAINS","TEXT_NOT_CONTAINS","Not Contains",i,e)},{operator:"=",desc:Sl("EQUALS","TEXT_EQUALS","Equals",i,e)},{operator:"!=",desc:Sl("NOT_EQUAL_TO","TEXT_NOT_EQUAL_TO","Not equal to",i,e)},{operator:"a*",desc:Sl("STARTS_WITH","TEXT_STARTS_WITH","Starts with",i,e)},{operator:"*z",desc:Sl("ENDS_WITH","TEXT_ENDS_WITH","Ends with",i,e)}]}(this.gridOptions,this.translaterService);break;default:n="numeric",t=R6(this.gridOptions,this.translaterService)}return P6(this.gridOptions,t,n),t}createDomFilterElement(e){const t=this.columnDef?.id??"";ui(this._cellContainerElm);let n=this.gridOptions?.defaultFilterPlaceholder??"";this.columnFilter?.placeholder&&(n=this.columnFilter.placeholder);const r=`${e??""}`;if(this._filterInputElm=O("input",{type:this._inputType||"text",autocomplete:"off",ariaAutoComplete:"none",placeholder:n,ariaLabel:this.columnFilter?.ariaLabel??`${kd(t+"")} Search Filter`,className:`form-control filter-${t}`,value:r,dataset:{columnid:`${t}`}}),this.updateFilterStyle(!!e),void 0!==e&&(this._currentValue=r),"single"===this.inputFilterType)this._filterContainerElm=this._filterInputElm,this._filterInputElm.classList.add("search-filter","slick-filter"),this._cellContainerElm.appendChild(this._filterInputElm),this._cellContainerElm.appendChild(document.createElement("span"));else{this._filterInputElm.classList.add("compound-input"),this._selectOperatorElm=L6(this.getCompoundOperatorOptionValues(),this.grid),this._filterContainerElm=O("div",{className:`form-group search-filter filter-${t}`});const s=O("div",{className:"input-group"},this._filterContainerElm);O("div",{className:"input-group-addon input-group-prepend operator"},s).appendChild(this._selectOperatorElm),s.appendChild(this._filterInputElm),s.appendChild(O("span")),this.operator&&(this._selectOperatorElm.value=Qb(this.operator)),this._filterContainerElm&&this._cellContainerElm.appendChild(this._filterContainerElm)}}onTriggerEvent(e,t=!1){if(t)this.callback(e,{columnDef:this.columnDef,clearFilterTriggered:t,shouldTriggerQuery:this._shouldTriggerQuery}),this.updateFilterStyle(!1);else{const n=e?.type||"",r=this._selectOperatorElm?.value??this.operator;let s=this._filterInputElm.value;const a=this.gridOptions.enableFilterTrimWhiteSpace||this.columnFilter.enableTrimWhiteSpace;"string"==typeof s&&a&&(s=s.trim()),"select"!==e?.target?.tagName.toLowerCase()&&(this._currentValue=s),this.updateFilterStyle(""!==s);const d={columnDef:this.columnDef,operator:r,searchTerms:s?[s]:null,shouldTriggerQuery:this._shouldTriggerQuery},h="keyup"===n&&"Enter"!==e?.key?this._debounceTypingDelay:0,p=this.columnFilter.skipCompoundOperatorFilterWithNullInput??this.gridOptions.skipCompoundOperatorFilterWithNullInput,g=p&&ri(this._currentValue)||""===this._currentValue&&ri(this._lastSearchValue);("single"===this.inputFilterType||!p||g)&&(h>0?(window.clearTimeout(this._timer),this._timer=window.setTimeout(()=>this.callback(e,d),h)):this.callback(e,d)),this._lastSearchValue=s}this._shouldTriggerQuery=!0}updateFilterStyle(e){e?(this._filterContainerElm?.classList.add("filled"),this._filterInputElm.classList.add("filled")):(this._filterContainerElm?.classList.remove("filled"),this._filterInputElm.classList.remove("filled"))}}class jU extends _m{constructor(e){super(e),this.translaterService=e,this.inputType="text",this.inputFilterType="compound"}}const S9="#86bff8";class D9{constructor(e){this.translaterService=e,this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0,this._sliderTrackFilledColor=S9,this.sliderType="double",this.searchTerms=[],this._bindEventService=new br}get columnFilter(){return this.columnDef?.filter??{}}get currentValue(){return this._currentValue}get currentValues(){return this._currentValues}get defaultOperator(){return"compound"===this.sliderType?te.empty:"single"===this.sliderType?te.greaterThanOrEqual:this.gridOptions.defaultFilterRangeOperator||te.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")||S9,this._filterElm=this.createDomFilterElement(this.searchTerms)}clear(e=!0){if(this._filterElm){this._clearFilterTriggered=!0,this._shouldTriggerQuery=e,this.searchTerms=[];const t=+(this.filterOptions?.sliderStartValue??oe.SLIDER_DEFAULT_MIN_VALUE),n=+(this.filterOptions?.sliderEndValue??oe.SLIDER_DEFAULT_MAX_VALUE);"double"===this.sliderType?(this._sliderLeftInputElm&&(this._sliderLeftInputElm.value=`${t}`),this._sliderRightInputElm&&(this._sliderRightInputElm.value=`${n}`),this._currentValues=[t,n],this._sliderLeftInputElm?.dispatchEvent(new Event("change")),this._sliderRightInputElm?.dispatchEvent(new Event("change"))):(this._sliderRightInputElm&&(this._sliderRightInputElm.value=`${t}`),this._selectOperatorElm&&(this._selectOperatorElm.selectedIndex=0),this._currentValue=t,this._sliderRightInputElm?.dispatchEvent(new Event("change"))),(this.filterOptions?.hideSliderNumber??this.filterOptions?.hideSliderNumbers)||("double"===this.sliderType?this.renderSliderValues(t,n):this.renderSliderValues(void 0,t)),this.updateFilterStyle(!1),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,t,n=!0){const r=e?.toString()||"",s=t?.toString()||"";this._leftSliderNumberElm?.textContent&&(this._leftSliderNumberElm.textContent=r),this._rightSliderNumberElm?.textContent&&(this._rightSliderNumberElm.textContent=s),this._sliderRangeContainElm.title="double"===this.sliderType?`${r} - ${s}`:`${s}`,n&&this.grid.onHeaderRowMouseLeave.notify({column:this.columnDef,grid:this.grid})}getValues(){return"double"===this.sliderType?this._currentValues:this._currentValue}setValues(e,t,n=!1){if(e){let a=[];const d=Array.isArray(e)?e?.[0]:e;if(Array.isArray(e)&&2===e.length?a=e:"string"==typeof d&&d.indexOf("..")>0?(a=d.split(".."),this._currentValue=+(a?.[0]??0)):(ri(d)||""===d)&&(this._currentValue=null===d?void 0:+d,a=[d]),"double"!==this.sliderType&&this._sliderRightInputElm)this._sliderRightInputElm.value="string"==typeof e?e:`${d}`,this.renderSliderValues(void 0,this._sliderRightInputElm.value);else if(Array.isArray(a)&&2===a.length&&!this.filterOptions?.hideSliderNumbers){const[h,p]=a;this._sliderLeftInputElm&&(this._sliderLeftInputElm.value=String(h??oe.SLIDER_DEFAULT_MIN_VALUE)),this._sliderRightInputElm&&(this._sliderRightInputElm.value=String(p??oe.SLIDER_DEFAULT_MAX_VALUE)),this.renderSliderValues(...a)}}else this._currentValue=void 0,this._currentValues=void 0;const r=this.getValues(),s=void 0===r?[]:Array.isArray(r)?r:[r];if(this.updateFilterStyle(s.length>0),void 0!==t&&(this.operator=t),this.operator&&this._selectOperatorElm){const a=Qb(this.operator);this._selectOperatorElm.value=a}n&&this.callback(void 0,{columnDef:this.columnDef,operator:this.operator,searchTerms:s,shouldTriggerQuery:!0})}createDomFilterElement(e){const t=this.columnDef?.id??"",n=+(this.columnFilter.minValue??oe.SLIDER_DEFAULT_MIN_VALUE),r=+(this.columnFilter.maxValue??oe.SLIDER_DEFAULT_MAX_VALUE),s=+(this.columnFilter.valueStep??oe.SLIDER_DEFAULT_STEP);ui(this._argFilterContainerElm);const a=+((Array.isArray(e)&&e?.[0])??this.filterOptions?.sliderStartValue??n),d=+((Array.isArray(e)&&e?.[1])??this.filterOptions?.sliderEndValue??r);if(this._sliderRangeContainElm=O("div",{className:`filter-input filter-${t} slider-input-container slider-values`,title:"double"===this.sliderType?`${a} - ${d}`:`${a}`}),this._sliderTrackElm=O("div",{className:"slider-track"}),"compound"===this.sliderType){const v=O("span",{className:"input-group-addon input-group-prepend operator"});this._selectOperatorElm=L6(this.getOperatorOptionValues(),this.grid),v.appendChild(this._selectOperatorElm)}"double"===this.sliderType&&(this._sliderLeftInputElm=O("input",{type:"range",className:"slider-filter-input",ariaLabel:this.columnFilter.ariaLabel??`${kd(t+"")} Search Filter`,defaultValue:`${a}`,value:`${a}`,min:`${n}`,max:`${r}`,step:`${s}`}));const h="double"===this.sliderType?d:a;this._sliderRightInputElm=O("input",{type:"range",className:"slider-filter-input",ariaLabel:this.columnFilter.ariaLabel??`${kd(t+"")} Search Filter`,defaultValue:`${h}`,value:`${h}`,min:`${n}`,max:`${r}`,step:`${s}`});const p=this.filterOptions?.hideSliderNumber??this.filterOptions?.hideSliderNumbers,g=p?"":"input-group";if(this._divContainerFilterElm=O("div",{className:`${g} search-filter slick-filter slider-container slider-values filter-${t}`.trim()}),this._sliderRangeContainElm.appendChild(this._sliderTrackElm),"double"===this.sliderType&&this._sliderLeftInputElm&&this._sliderRangeContainElm.appendChild(this._sliderLeftInputElm),this._sliderRangeContainElm.appendChild(this._sliderRightInputElm),p)this._divContainerFilterElm.appendChild(this._sliderRangeContainElm);else{let v;"compound"===this.sliderType&&this._selectOperatorElm?(v=O("span",{className:"input-group-addon input-group-prepend operator"}),v.appendChild(this._selectOperatorElm)):"double"===this.sliderType&&(v=O("div",{className:"input-group-addon input-group-prepend slider-range-value"}),this._leftSliderNumberElm=O("span",{className:`input-group-text lowest-range-${t}`,textContent:`${a}`}),v.appendChild(this._leftSliderNumberElm));const y=O("div",{className:"input-group-addon input-group-append slider-range-value"});this._rightSliderNumberElm=O("span",{className:`input-group-text highest-range-${t}`,textContent:`${h}`},y),v&&this._divContainerFilterElm.appendChild(v),this._divContainerFilterElm.appendChild(this._sliderRangeContainElm),this._divContainerFilterElm.appendChild(y)}return this._sliderOptions={minValue:n,maxValue:r,step:s},this._currentValues=[a,d],Array.isArray(e)&&e.length>0&&""!==e[0]&&(this.updateFilterStyle(!0),this._currentValue=a),(void 0!==this.filterOptions.sliderStartValue||void 0!==this.columnFilter.minValue)&&(this._currentValue=a),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(){let e;return e=this.columnFilter.compoundOperatorList?this.columnFilter.compoundOperatorList:R6(this.gridOptions,this.translaterService),P6(this.gridOptions,e,"numeric"),e}onValueChanged(e){const t=parseInt(this._sliderRightInputElm?.value??"",10);let n,r;if("compound"===this.sliderType||"single"===this.sliderType)"select"!==e?.target?.tagName?.toLowerCase()&&(this._currentValue=+t),n=this._currentValue,r=[n||"0"];else if("double"===this.sliderType){const a=[parseInt(this._sliderLeftInputElm?.value??"",10),t];n=a.join(".."),r=a}if(this._clearFilterTriggered)this.updateFilterStyle(!1),this.callback(e,{columnDef:this.columnDef,clearFilterTriggered:this._clearFilterTriggered,searchTerms:[],shouldTriggerQuery:this._shouldTriggerQuery});else{const s=this._selectOperatorElm?.value??this.operator;this.updateFilterStyle(""!==n);const a=this.columnFilter.skipCompoundOperatorFilterWithNullInput??this.gridOptions.skipCompoundOperatorFilterWithNullInput,d=a&&ri(this._currentValue)||!ri(this._currentValue)&&ri(this._lastSearchValue);("compound"!==this.sliderType||!a||d)&&this.callback(e,{columnDef:this.columnDef,operator:s||"",searchTerms:r,shouldTriggerQuery:this._shouldTriggerQuery})}this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0,this.changeBothSliderFocuses(!1),this.grid.onHeaderRowMouseEnter.notify({column:this.columnDef,grid:this.grid},new Ri(e)),this._lastSearchValue=n}changeBothSliderFocuses(e){const t=e?"add":"remove";this._sliderLeftInputElm?.classList[t]("focus"),this._sliderRightInputElm?.classList[t]("focus")}slideLeftInputChanged(e){const t=parseInt(this._sliderLeftInputElm?.value??"",10),n=parseInt(this._sliderRightInputElm?.value??"",10);this._sliderLeftInputElm&&n-t<=(this.filterOptions?.stopGapBetweenSliderHandles??0)&&(this._sliderLeftInputElm.value=String(t-(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,"left",t,n)}slideRightInputChanged(e){const t=parseInt(this._sliderLeftInputElm?.value??"",10),n=parseInt(this._sliderRightInputElm?.value??"",10);"double"===this.sliderType&&this._sliderRightInputElm&&n-t<=(this.filterOptions?.stopGapBetweenSliderHandles??0)&&(this._sliderRightInputElm.value=String(t+(this.filterOptions?.stopGapBetweenSliderHandles??0))),this.sliderLeftOrRightChanged(e,"right",t,n)}sliderLeftOrRightChanged(e,t,n,r){let s=!0;this.updateTrackFilledColorWhenEnabled(),this.changeBothSliderFocuses(!0),this._sliderRangeContainElm.title="double"===this.sliderType?`${n} - ${r}`:`${r}`,"double"===this.sliderType&&this._sliderLeftInputElm&&this._sliderRightInputElm&&("left"===t&&n>r?(this._sliderLeftInputElm.value=`${r}`,s=!1):"right"===t&&n>r&&(this._sliderRightInputElm.value=`${n}`,s=!1)),(this.filterOptions?.hideSliderNumber??this.filterOptions?.hideSliderNumbers)||(this._leftSliderNumberElm?.textContent&&(this._leftSliderNumberElm.textContent=this._sliderLeftInputElm?.value??""),this._rightSliderNumberElm?.textContent&&(this._rightSliderNumberElm.textContent=this._sliderRightInputElm?.value??"")),s&&this.grid.onHeaderRowMouseEnter.notify({column:this.columnDef,grid:this.grid},new Ri(e))}sliderTrackClicked(e){e.preventDefault();const r=100*(e.offsetX+0)/this._sliderTrackElm.offsetWidth;this._sliderRightInputElm&&"double"!==this.sliderType?(this._sliderRightInputElm.value=`${r}`,this._sliderRightInputElm.dispatchEvent(new Event("change"))):this._sliderLeftInputElm&&this._sliderRightInputElm&&(r<=50?(this._sliderLeftInputElm.value=`${r}`,this._sliderLeftInputElm.dispatchEvent(new Event("change"))):(this._sliderRightInputElm.value=`${r}`,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 t=(+this._sliderRightInputElm.value-+this._sliderRightInputElm.min)/(this.sliderOptions?.maxValue??0-+this._sliderRightInputElm.min)*100,n="linear-gradient(to right, %b %p1, %c %p1, %c %p2, %b %p2)".replace(/%b/g,"#eee").replace(/%c/g,this.filterOptions?.sliderTrackFilledColor||this._sliderTrackFilledColor||S9).replace(/%p1/g,`${e}%`).replace(/%p2/g,`${t}%`);this._sliderTrackElm.style.background=n,this._sliderOptions.sliderTrackBackground=n}}updateFilterStyle(e){e?(this._divContainerFilterElm.classList.add("filled"),this._filterElm?.classList.add("filled")):(this._divContainerFilterElm.classList.remove("filled"),this._filterElm?.classList.remove("filled"))}}var pue=Object.defineProperty,$e=(i,e,t)=>((i,e,t)=>e in i?pue(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t)(i,"symbol"!=typeof e?e+"":e,t),gue=class{constructor(i){$e(this,"_distinctEvent"),$e(this,"_boundedEvents",[]),this._distinctEvent=i?.distinctEvent??!1}get boundedEvents(){return this._boundedEvents}dispose(){this.unbindAll(),this._boundedEvents=[]}bind(i,e,t,n,r=""){let s=Array.isArray(e)?e:[e];if("function"==typeof i?.forEach)i.forEach(a=>{for(let d of s)(!this._distinctEvent||this._distinctEvent&&!this.hasBinding(a,d))&&(a.addEventListener(d,t,n),this._boundedEvents.push({element:a,eventName:d,listener:t,groupName:r}))});else for(let a of s)(!this._distinctEvent||this._distinctEvent&&!this.hasBinding(i,a))&&(i.addEventListener(a,t,n),this._boundedEvents.push({element:i,eventName:a,listener:t,groupName:r}))}hasBinding(i,e){return this._boundedEvents.some(t=>t.element===i&&(!e||t.eventName===e))}unbind(i,e,t){if(i){let n=Array.isArray(i)?i:[i],r=Array.isArray(e)?e||"":[e||""];for(let s of n){t||(t=this._boundedEvents.find(a=>{if(a.element===s&&(!e||a.eventName===e))return a.listener}));for(let a of r)s?.removeEventListener?.(a,t)}}}unbindAll(i){if(i){let e=Array.isArray(i)?i:[i];for(let t=this._boundedEvents.length-1;t>=0;--t){let n=this._boundedEvents[t];if(e.some(r=>r===n.groupName)){let{element:r,eventName:s,listener:a}=n;this.unbind(r,s,a),this._boundedEvents.splice(t,1)}}}else for(;this._boundedEvents.length>0;){let e=this._boundedEvents.pop(),{element:t,eventName:n,listener:r}=e;this.unbind(t,n,r)}}},qU=typeof window<"u"&&void 0!==window.multipleSelect?window.multipleSelect:{locales:{}},fue={formatSelectAll:()=>"[Select all]",formatAllSelected:()=>"All selected",formatCountSelected:(i,e)=>`${i} of ${e} selected`,formatNoMatchesFound:()=>"No matches found",formatOkButton:()=>"OK"};qU.locales["en-US"]=fue;var KU=qU.locales,YU={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(i){let{text:e,label:t,search:n}=i;return(t||e||"").includes(n)},showClear:!1,autoAdjustDropHeight:!1,autoAdjustDropPosition:!1,autoAdjustDropWidthByTextSize:!1,adjustedHeightPadding:10,useSelectOptionLabel:!1,useSelectOptionLabelToHtml:!1,navigationHighlight:!0,infiniteScroll:!1,virtualScroll:!0,cssStyler:()=>null,textTemplate:i=>i.innerHTML.trim(),labelTemplate:i=>i.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(YU,KU["en-US"]);var Dc={BLOCK_ROWS:50,CLUSTER_BLOCKS:4,DEFAULTS:YU,METHODS:["init","getOptions","refreshOptions","getSelects","setSelects","enable","disable","open","close","check","uncheck","checkAll","uncheckAll","checkInvert","focus","blur","refresh","destroy"]};function A9(i){let n=Object.prototype.toString.call(i).slice(8,-1).toLowerCase();return"object"===n?(()=>{let r={};for(let s in i)Object.prototype.hasOwnProperty.call(i,s)&&(r[s]=A9(i[s]));return r})():"array"===n?i.map(r=>A9(r)):i}function T9(i){return null!=i&&""!==i}function ET(i,e,t){if(Array.isArray(i))for(let n of i){if(n[e]===t||n[e]===""+ +n[e]&&+n[e]===t)return n;if("optgroup"===n.type)for(let r of n.children)if(r&&(r[e]===t||r[e]===""+ +r[e]&&+r[e]===t))return r}}function M9(i){return Object.keys(i).forEach(e=>void 0===i[e]?delete i[e]:""),i}function my(i,e){if("string"!=typeof i)return i;if("function"==typeof e)return e(i);if("function"==typeof i.normalize)return i.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 I9(i){let e=0,t=0,n=0,r=0,s=window.innerHeight??0,a=window.innerWidth??0,d=function Sue(){return{left:window.pageXOffset||document.documentElement.scrollLeft||0,top:window.pageYOffset||document.documentElement.scrollTop||0}}(),h=d.top,p=d.left,g=R9(i);if(g){let v=g.top??0,y=g.left??0;t=v-h,e=s-(v-h),n=y-p,r=a-(y-p)}return{top:t,bottom:e,left:n,right:r}}function L9(i=""){return i.split(" ").filter(e=>e)}function Zo(i,e,t){let n=document.createElement(i);return e&&Object.keys(e).forEach(r=>{let s=e[r];"object"==typeof s?Object.assign(n[r],s):n[r]=e[r]}),t?.appendChild&&t.appendChild(n),n}function ZU(i,e,t){let n=i.props?.innerHTML?function xue(i,e){let{[e]:t,...n}=i;return n}(i.props,"innerHTML"):i.props,r=Zo(i.tagName,function kue(i,e){return"object"==typeof i?Object.fromEntries(e?Object.entries(i).filter(([t,n])=>!T9(n)&&!e.includes(t)||T9(n)):Object.entries(i).filter(([t,n])=>T9(n))):i}(n,["className","title","style"]),e),s=t;if(s||(s=r),i.props.innerHTML&&(r.innerHTML=i.props.innerHTML),i.attrs)for(let a of Object.keys(i.attrs))r.setAttribute(a,i.attrs[a]);if(i.children)for(let a of i.children)ZU(a,r,s);return e?.appendChild(r),r}function O9(i){return i.hasOwnProperty("tagName")?ZU(i):document.createElement("li")}function FT(i){for(;i?.firstChild;)i.lastChild&&i.removeChild(i.lastChild);return i}function R9(i){if(!i)return;let e=i?.getBoundingClientRect?.(),t=0,n=0,r=0,s=0;return void 0!==e?.top&&void 0!==e.left&&(t=e.top+window.pageYOffset,n=e.left+window.pageXOffset,s=e.right,r=e.bottom),{top:t,left:n,bottom:r,right:s}}function xT(i,e,t){if(!i)return 0;let n=Number.parseFloat(i.style[t]);if(!n||Number.isNaN(n)){switch(e){case"outer":n=i["width"===t?"offsetWidth":"offsetHeight"];break;case"scroll":n=i["width"===t?"scrollWidth":"scrollHeight"];break;default:n=i["width"===t?"clientWidth":"clientHeight"]}n=i.getBoundingClientRect()[t]}if(!n||Number.isNaN(n)){let r=i.style.display,s=i.style.position;i.style.display="block",i.style.position="absolute";let a=window.getComputedStyle(i)[t];n=Number.parseFloat(a),Number.isNaN(n)&&(n=0),i.style.display=r,i.style.position=s}return n||0}function JU(i,e){let t=null,n=i?.parentElement;for(;n;){let[r,s,a,d]=e.match(/^([a-z]*)([#.]{1})([a-z\-]+)$/i)||[];if(a&&d)for(let h of d.replace(a,"").split(" "))n.classList.contains(h)&&(s?n?.tagName.toLowerCase()===s&&(t=n):t=n);n=n.parentElement}return t}function XU(i,e){i?.style&&(i.style.display="none"===i.style.display&&!1!==e||!0===e?"block":"none")}var Due=class{constructor(i){$e(this,"clusterRows"),$e(this,"cache"),$e(this,"scrollEl"),$e(this,"blockHeight"),$e(this,"clusterHeight"),$e(this,"contentEl"),$e(this,"parentEl"),$e(this,"itemHeight"),$e(this,"lastCluster"),$e(this,"scrollTop"),$e(this,"dataStart"),$e(this,"dataEnd"),$e(this,"rows"),$e(this,"destroy"),$e(this,"callback"),$e(this,"sanitizer"),this.rows=i.rows,this.scrollEl=i.scrollEl,this.contentEl=i.contentEl,this.parentEl=i.contentEl?.parentElement,this.callback=i.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),FT(this.contentEl)}}reset(i){this.lastCluster=0,this.cache={},FT(this.contentEl),this.initDOM(i)}initDOM(i){if(typeof this.clusterHeight>"u"){this.cache.scrollTop=this.scrollEl.scrollTop;let s=O9(i[0]);this.contentEl.appendChild(s),this.contentEl.appendChild(s),this.contentEl.appendChild(s),this.cache.data=[i[0]],this.getRowsHeight()}let e=this.initData(i,this.getNum()),t=this.checkChanges("data",e.rows),n=this.checkChanges("top",e.topOffset),r=this.checkChanges("bottom",e.bottomOffset);FT(this.contentEl),t&&n?(e.topOffset&&this.contentEl.appendChild(this.getExtra("top",e.topOffset)),e.rows.forEach(s=>this.contentEl.appendChild(O9(s))),e.bottomOffset&&this.contentEl.appendChild(this.getExtra("bottom",e.bottomOffset))):r&&this.contentEl.lastChild&&(this.contentEl.lastChild.style.height=`${e.bottomOffset}px`)}getRowsHeight(){if(typeof this.itemHeight>"u"){let i=this.parentEl?.style.display||"";this.parentEl&&(""===i||"none"===i)&&(this.parentEl.style.display="block");let e=this.contentEl.children,t=e[Math.floor(e.length/2)];this.itemHeight=t.offsetHeight,this.parentEl&&(this.parentEl.style.display=i)}this.blockHeight=this.itemHeight*Dc.BLOCK_ROWS,this.clusterRows=Dc.BLOCK_ROWS*Dc.CLUSTER_BLOCKS,this.clusterHeight=this.blockHeight*Dc.CLUSTER_BLOCKS}getNum(){this.scrollTop=this.scrollEl.scrollTop;let i=(this.clusterHeight||0)-(this.blockHeight||0);return i&&Math.floor(this.scrollTop/i)||0}initData(i,e){if(i.lengthdelete this[e])))}initLocale(){if(this.options.locale){if("object"==typeof this.options.locale)return void Object.assign(this.options,this.options.locale);let i=window.multipleSelect.locales,e=this.options.locale.split(/-|_/);if(e[0]=e[0].toLowerCase(),e[1]&&(e[1]=e[1].toUpperCase()),i[this.options.locale])Object.assign(this.options,i[this.options.locale]);else if(i[e.join("-")])Object.assign(this.options,i[e.join("-")]);else{if(!i[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,i[e[0]])}}}initContainer(){let i=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=Zo("div",{className:L9(`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=Zo("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(Zo("span",{className:"ms-placeholder",textContent:this.options.placeholder})),this.options.showClear&&(this.selectClearElm=Zo("div",{className:"ms-icon ms-icon-close"}),this.selectClearElm.style.display="none",this.choiceElm.appendChild(this.selectClearElm)),this.choiceElm.appendChild(Zo("div",{className:"ms-icon ms-icon-caret"})),this.dropElm=Zo("div",{className:`ms-drop ${this.options.position}`,ariaExpanded:"false"},this.parentElm),this.options.darkMode&&this.dropElm.classList.add("ms-dark-mode"),i&&(this.dropElm.dataset.name=i);let t=this.elm.getAttribute("data-test")||this.options.dataTest;t&&(this.parentElm.dataset.test=t,this.dropElm.dataset.test=t),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 Fue(i,e){i.parentNode?.insertBefore(e,i.nextSibling)}(this.elm,this.parentElm),this.elm.disabled&&(this.choiceElm.classList.add("disabled"),this.choiceElm.disabled=!0),this.selectAllName=`selectAll${i}`,this.selectGroupName=`selectGroup${i}`,this.selectItemName=`selectItem${i}`,this.options.keepOpen||(this._bindEventService.unbindAll("body-click"),this._bindEventService.bind(document.body,"click",n=>{this.getEventTarget(n)===this.choiceElm||JU(this.getEventTarget(n),".ms-choice")===this.choiceElm||(this.getEventTarget(n)===this.dropElm||JU(this.getEventTarget(n),".ms-drop")!==this.dropElm&&this.getEventTarget(n)!==this.elm)&&this.options.isOpen&&this.close("body.click")},void 0,"body-click"))}initData(){let i=[];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,t]of Object.entries(this.options.data))i.push({value:e,text:`${t}`});this.data=i}}else this.elm.childNodes.forEach(e=>{let t=this.initRow(e);t&&i.push(t)}),this.options.data=i,this.data=i,this.fromHtml=!0;this.dataTotal=function _ue(i){let e=0;return i.forEach((t,n)=>{"optgroup"===t.type?(t._key=`group_${n}`,t.visible=typeof t.visible>"u"||t.visible,t.children.forEach((r,s)=>{r&&(r.visible=typeof r?.visible>"u"||r.visible,r.divider||(r._key=`option_${n}_${s}`,e+=1))})):(t.visible=typeof t.visible>"u"||t.visible,t.divider||(t._key=`option_${n}`,e+=1))}),e}(this.data||[])}initRow(i,e){let t={};return"option"===i.tagName?.toLowerCase()?(t.type="option",t.text=this.options.textTemplate(i),t.value=i.value,t.visible=!0,t.selected=!!i.selected,t.disabled=e||i.disabled,t.classes=i.getAttribute("class")||"",t.title=i.getAttribute("title")||"",i.dataset.value&&(t._value=i.dataset.value),Object.keys(i.dataset).length&&(t._data=i.dataset,t._data.divider&&(t.divider=t._data.divider)),t):"optgroup"===i.tagName?.toLowerCase()?(t.type="optgroup",t.label=this.options.labelTemplate(i),t.visible=!0,t.selected=!!i.selected,t.disabled=i.disabled,t.children=[],Object.keys(i.dataset).length&&(t._data=i.dataset),i.childNodes.forEach(n=>{t.children.push(this.initRow(n,t.disabled))}),t):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 i=0;for(let e of this.data||[])"optgroup"===e.type?i+=e.children.length:i+=1;this.options.filter=i>this.options.filterByDataLength}initList(){if(this.options.filter&&(this.filterParentElm=Zo("div",{className:"ms-search"},this.dropElm),this.filterParentElm.appendChild(Zo("input",{autocomplete:"off",autocapitalize:"off",spellcheck:!1,type:"text",placeholder:this.options.filterPlaceholder||"\u{1f50e}\ufe0e"})),this.options.showSearchClear&&this.filterParentElm.appendChild(Zo("span",{className:"ms-icon ms-icon-close"}))),this.options.selectAll&&!this.options.single){let i=this.elm.getAttribute("name")||this.options.name||"";this.selectAllParentElm=Zo("div",{className:"ms-select-all",dataset:{key:"select_all"}});let e=document.createElement("label"),t="ms-icon "+(this.isAllSelected?"ms-icon-check":this.isPartiallyAllSelected?"ms-icon-minus":"ms-icon-uncheck"),n=Zo("div",{className:"icon-checkbox-container"},e);Zo("input",{type:"checkbox",ariaChecked:String(this.isAllSelected),checked:this.isAllSelected,dataset:{name:`selectAll${i}`}},n),Zo("div",{className:t},n),e.appendChild(Zo("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=Zo("button",{className:"ms-ok-button",type:"button",textContent:this.formatOkButton()},this.dropElm)),this.initListItems()}initListItems(){let i=0,e=this.getListRows();if(this.options.selectAll&&!this.options.single&&(i=-1),e.length>Dc.BLOCK_ROWS*Dc.CLUSTER_BLOCKS){let t=this.dropElm&&"none"!==this.dropElm?.style.display;!t&&this.dropElm&&(this.dropElm.style.left="-10000",this.dropElm.style.display="block",this.dropElm.ariaExpanded="true");let n=()=>{if(this.virtualScroll){this._currentHighlightIndex=0,this.updateDataStart=this.virtualScroll.dataStart+i,this.updateDataEnd=this.virtualScroll.dataEnd+i,this.updateDataStart<0&&(this.updateDataStart=0,this._currentHighlightIndex=0);let r=this.getDataLength();this.updateDataEnd>r&&(this.updateDataEnd=r),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 Due({rows:e,scrollEl:this.ulElm,contentEl:this.ulElm,sanitizer:this.options.sanitizer,callback:()=>{n(),this.events()}})),n(),!t&&this.dropElm&&(this.dropElm.style.left="0",this.dropElm.style.display="none",this.dropElm.ariaExpanded="false")}else this.ulElm&&(FT(this.ulElm),e.forEach(t=>this.ulElm.appendChild(O9(t)))),this.updateDataStart=0,this.updateDataEnd=this.updateData.length;return this.events(),e}getEventTarget(i){return i.composedPath?i.composedPath()[0]:i.target}getListRows(){let i=[];return this.updateData=[],this.data?.forEach(e=>i.push(...this.initListItem(e))),this.options.infiniteScroll&&i.push({tagName:"li",props:{className:"ms-infinite-option",role:"option"}}),i.push({tagName:"li",props:{className:"ms-no-results",textContent:this.formatNoMatchesFound()}}),i}initListItem(i,e=0){let t=i?.title||"",n=this.options.multiple?"multiple":"",r=this.options.single?"radio":"checkbox",s=!!i?.selected,a=this.options.single&&!this.options.singleRadio,d="";if(!i?.visible)return[];if(this.updateData.push(i),a&&(d="hide-radio "),i.selected&&(d+="selected "),"optgroup"===i.type){let x,E=[];if(this.options.hideOptgroupCheckboxes||this.options.single)x={tagName:"span",props:{dataset:{name:this.selectGroupName,key:i._key}}};else{let L={tagName:"input",props:{type:"checkbox",dataset:{name:this.selectGroupName,key:i._key},checked:s,disabled:i.disabled}};x=a?L:{tagName:"div",props:{className:"icon-checkbox-container"+("radio"===r?" radio":"")},children:[L,{tagName:"div",props:{className:"ms-icon "+(s?"radio"===r?"ms-icon-radio":"ms-icon-check":"ms-icon-uncheck")}}]}}!d.includes("hide-radio")&&(this.options.hideOptgroupCheckboxes||this.options.single)&&(d+="hide-radio ");let S={tagName:"span",props:{}};this.applyAsTextOrHtmlWhenEnabled(S.props,i.label);let D={tagName:"li",props:{className:L9(`group${this.options.single||i.disabled?" disabled":""} ${d}`).join(" "),role:"option",ariaSelected:String(s),dataset:{key:i._key}},children:[{tagName:"label",props:{className:L9("optgroup"+(this.options.single||i.disabled?" disabled":"")).join(" ")},children:[x,S]}]},I=this.options.cssStyler(i);return I&&(D.props.style=I),E.push(D),i.children.forEach(L=>E.push(...this.initListItem(L,1))),E}if(d+=i.classes||"",e&&this.options.single&&(d+=`option-level-${e} `),i.divider)return[{tagName:"li",props:{className:"option-divider"}}];let h=n||d?(n+d).trim():"";i.disabled&&(h+=" disabled");let p=""+(i.disabled?"disabled":""),g={tagName:"span",props:{}};this.applyAsTextOrHtmlWhenEnabled(g.props,i.text);let v={tagName:"input",props:{type:r,value:encodeURI(i.value),dataset:{key:i._key,name:this.selectItemName},checked:s,disabled:!!i.disabled}};i.selected&&(v.attrs={checked:"checked"});let y={tagName:"div",props:{className:"icon-checkbox-container"+("radio"===r?" radio":"")},children:[v,{tagName:"div",props:{className:"ms-icon "+(v.props.checked?"radio"===r?"ms-icon-radio":"ms-icon-check":"ms-icon-uncheck")}}]},C={tagName:"li",props:{role:"option",title:t,ariaSelected:String(s),dataset:{key:i._key}},children:[{tagName:"label",props:{className:p},children:[a?v:y,g]}]};h&&(C.props.className=h);let k=this.options.cssStyler(i);return k&&(C.props.style=k),[C]}initSelected(i=!1){let e=0;for(let t of this.data||[])if("optgroup"===t.type){let n=t.children.filter(r=>r?.selected&&!r.disabled&&r.visible).length;t.children.length&&(t.selected=!this.options.single&&n&&n===t.children.filter(r=>r&&!r.disabled&&r.visible&&!r.divider).length),e+=n}else e+=t.selected&&!t.disabled&&t.visible?1:0;this.isAllSelected=this.data?.filter(t=>t.selected&&!t.disabled&&t.visible).length===this.data?.filter(t=>!t.disabled&&t.visible&&!t.divider).length,this.isPartiallyAllSelected=!this.isAllSelected&&e>0,i||(this.isAllSelected?this.options.onCheckAll():0===e&&this.options.onUncheckAll())}initView(){let i;window.getComputedStyle?(i=window.getComputedStyle(this.elm).width,"auto"===i&&(i=xT(this.dropElm,"outer","width")+20)):i=xT(this.elm,"outer","width")+20,this.parentElm.style.width=`${this.options.width||i}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 i=e=>{e.preventDefault(),!this.getEventTarget(e).classList.contains("ms-icon-close")&&(this.options.isOpen?this.close("toggle.close"):this.open())};this.labelElm&&this._bindEventService.bind(this.labelElm,"click",e=>{"label"===this.getEventTarget(e).nodeName.toLowerCase()&&(i(e),(!this.options.filter||!this.options.isOpen)&&this.focus(),e.stopPropagation())}),this._bindEventService.bind(this.choiceElm,"click",i),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 t=[];this.selectItemElms?.forEach(n=>{"none"!==n.closest("li")?.style.display&&t.push(n)}),t.length&&t[0].hasAttribute("data-name")&&this.setSelects([t[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=>{i(e),e.stopPropagation()},void 0,"ok-button"),this.selectGroupElms&&this._bindEventService.bind(this.selectGroupElms,"click",e=>{let t=e.currentTarget,n=t.checked,r=ET(this.data,"_key",t.dataset.key);this._checkGroup(r,n),this.options.onOptgroupClick(M9({label:r.label,selected:r.selected,data:r._data,children:r.children.map(s=>{if(s)return M9({text:s.text,value:s.value,selected:s.selected,disabled:s.disabled,data:s._data})})}))},void 0,"group-checkbox-list"),this.selectItemElms&&this._bindEventService.bind(this.selectItemElms,"click",e=>{let t=e.currentTarget,n=t.checked,r=ET(this.data,"_key",t.dataset.key),s=()=>{this.options.single&&this.options.isOpen&&!this.options.keepOpen&&this.close("selection")};!1!==this.options.onBeforeClick(r)?(this._check(r,n),this.options.onClick(M9({text:r.text,value:r.value,selected:r.selected,data:r._data})),s()):s()},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 t=this.getEventTarget(e).closest(".ms-select-all")||this.getEventTarget(e).closest("li");if(this.dropElm?.contains(t)&&this.lastMouseOverPosition!==`${e.clientX}:${e.clientY}`){let n=this.dropElm?.querySelectorAll(rE)||[],r=Array.from(n).findIndex(s=>s.dataset.key===t.dataset.key);this._currentHighlightIndex!==r&&!t.classList.contains("disabled")&&(this._currentSelectedElm=t,this._currentHighlightIndex=r,this.changeCurrentOptionHighlight(t))}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 t=this.getEventTarget(e).closest(".ms-select-all")||this.getEventTarget(e).closest("li");if(" "===e.key&&this.options.filter||this.options.filterAcceptOnEnter&&!t)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(i,e,t){let n=!1;i&&this.getEventTarget(i)&&this.ulElm&&this.scrolledByMouse?this.getEventTarget(i).scrollTop+this.getEventTarget(i).clientHeight===this.ulElm.scrollHeight&&(n=!0):void 0!==e&&e+1===t&&(n=!0),n&&this.ulElm&&(this.virtualScroll?this.initListItems():this.ulElm.scrollTop=0,this._currentHighlightIndex=0,this.highlightCurrentOption())}open(i=0){return new Promise(e=>{null!==i&&i>=0?(window.clearTimeout(this.openDelayTimer),this.openDelayTimer=window.setTimeout(()=>{this.openDrop(),e()},i)):(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 r,n=R9(this.dropElm);this.options.container instanceof Node?r=this.options.container:"string"==typeof this.options.container&&(r="body"===this.options.container?document.body:document.querySelector(this.options.container)),r.appendChild(this.dropElm),this.dropElm.style.top=`${n?.top??0}px`,this.dropElm.style.left=`${n?.left??0}px`,this.dropElm.style.minWidth="auto",this.dropElm.style.width=`${xT(this.parentElm,"outer","width")}px`}let i=this.options.minHeight,e=this.options.maxHeight;"row"===this.options.maxHeightUnit&&(e=xT(this.dropElm.querySelector("ul>li"),"outer","height")*this.options.maxHeight),this.ulElm??=this.dropElm.querySelector("ul"),this.ulElm&&(i&&(this.ulElm.style.minHeight=`${i}px`),this.ulElm.style.maxHeight=`${e}px`),this.dropElm.querySelectorAll(".multiple").forEach(n=>{n.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 t=this.options.position;if(this.options.autoAdjustDropHeight){if(this.options.autoAdjustDropPosition){let{bottom:n,top:r}=I9(this.dropElm);t=nn?"top":"bottom"}this.adjustDropHeight(t)}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 i=this.dropElm?.querySelectorAll(rE)||[];if(this._currentHighlightIndex<=i.length){let e=i[this._currentHighlightIndex];e&&(this.lastFocusedItemKey=e.dataset.key||"",this._currentSelectedElm=e,this.scrolledByMouse=!1,e.scrollIntoView({block:"nearest"}),this.changeCurrentOptionHighlight(e),window.setTimeout(()=>this.scrolledByMouse=!0,10))}}changeCurrentOptionHighlight(i){i?.classList.add("highlighted"),(this.dropElm?.querySelectorAll(".ms-select-all.highlighted, ul li[data-key].highlighted")||[]).forEach(e=>{e!==i&&e.classList.remove("highlighted")})}moveHighlightDown(){let i=this.dropElm?.querySelectorAll(rE)||[],e=i.length;this._currentHighlightIndex0&&this.ulElm){let t=i[this._currentHighlightIndex+(this.options.single?0:1)],n=t?.dataset.key;return this.lastFocusedItemKey=n,this.ulElm.scrollTop=this.ulElm.scrollTop-t?.getBoundingClientRect().height||10,void(this.isMoveUpRecalcRequired=!0)}this._currentHighlightIndex>0&&(this._currentHighlightIndex--,i[this._currentHighlightIndex]?.classList.contains("disabled")&&this.moveHighlightUp()),this.highlightCurrentOption()}recalculateArrowMove(i){let e=this.dropElm?.querySelectorAll(rE)||[],t=Array.from(e).findIndex(n=>n.dataset.key===this.lastFocusedItemKey);this._currentHighlightIndex=t-1,"down"===i?this.moveHighlightDown():"up"===i&&(this.moveHighlightUp(),this.isMoveUpRecalcRequired=!1)}close(i){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(i)}applyAsTextOrHtmlWhenEnabled(i,e){i||(i={}),this.isRenderAsHtml?i.innerHTML="function"==typeof this.options.sanitizer?this.options.sanitizer(e):e:i.textContent=e}update(i=!1){let e=this.getSelects(),t=this.getSelects("text");this.options.displayValues&&(t=e);let n=this.choiceElm?.querySelector("span"),r=e.length,s=null,a=()=>{if(this.options.useSelectOptionLabel||this.options.useSelectOptionLabelToHtml){let h=e.join(this.options.displayDelimiter);return this.options.useSelectOptionLabelToHtml?function Eue(i){return i.replace(/(\b)(on[a-z]+)(\s*)=([^>]*)|javascript:([^>]*)[^>]*|(<\s*)(\/*)script([<>]*).*(<\s*)(\/*)script(>*)|(<|<)(\/*)(script|script defer)(.*)(>|>|>">)/gi,"")}(h):h}return t.join(this.options.displayDelimiter)};if(n){if(0===r){let h=this.options.placeholder||"";n.classList.add("ms-placeholder"),this.applyAsTextOrHtmlWhenEnabled(n,h)}else s=rthis.options.minimumCountSelected?`${t.slice(0,this.options.minimumCountSelected).join(this.options.displayDelimiter)}...`:this.formatCountSelected(r,this.dataTotal)&&r>this.options.minimumCountSelected?this.formatCountSelected(r,this.dataTotal):a();if(null!==s&&(n?.classList.remove("ms-placeholder"),this.applyAsTextOrHtmlWhenEnabled(n,s)),this.options.showClear&&this.selectClearElm){let h=s?"block":"none";this.selectClearElm.style.display=h}if(this.options.displayTitle){let h=this.options.useSelectOptionLabel||this.options.useSelectOptionLabelToHtml?"value":"text";n.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(p=>p===h.value)}),i||this.elm.dispatchEvent(new Event("change"))}updateSelected(i){for(let t=this.updateDataStart;tt.visible).length;if(this.selectAllElm){this.selectAllElm.ariaChecked=String(this.isAllSelected);let t=this.dropElm?.querySelector(".ms-select-all .icon-checkbox-container div");if(t){let n="";n=this.isAllSelected?"ms-icon-check":this.isPartiallyAllSelected?"ms-icon-minus":"ms-icon-uncheck",t.className=`ms-icon ${n}`}this.selectAllElm.checked=this.isAllSelected,XU(this.selectAllElm.closest("li"),!e)}XU(this.noResultsElm,e),this.virtualScroll&&(this.virtualScroll.rows=i??this.getListRows())}getData(){return this.options.data}getDataLength(){return this.data?.length??0}getOptions(i=!0){let e=Object.assign({},this.options);return delete e.data,i?A9(e):this.options}refreshOptions(i){(function wue(i,e,t=!1){let n=Object.keys(i),r=Object.keys(e);if(t&&n.length!==r.length)return!1;for(let s of n)if(r.includes(s)&&i[s]!==e[s])return!1;return!0})(this.options,i,!0)||(this.options=Object.assign(this.options,i),this.destroy(!1),this.init())}getDropElement(){return this.dropElm}getParentElement(){return this.parentElm}getSelects(i="value"){let e=[];for(let t of this.data||[])if("optgroup"===t.type){let n=t.children.filter(r=>r?.selected);if(!n.length)continue;if("value"===i||this.options.single)e.push(...n.map(r=>"value"===i&&r._value||r[i]));else{let r=[];r.push("["),r.push(t.label),r.push(`: ${n.map(s=>s[i]).join(", ")}`),r.push("]"),e.push(r.join(""))}}else t.selected&&e.push("value"===i&&t._value||t[i]);return e}setSelects(i,e="value",t=!1){let n=!1,r=s=>{for(let a of s){let d=!1;if("text"===e){let h=document.createElement("div");this.applyAsTextOrHtmlWhenEnabled(h,a.text),d=i.includes(h.textContent?.trim()??"")}else d=i.includes(a._value||a.value),!d&&a.value===""+ +a.value&&(d=i.includes(+a.value));a.selected!==d&&(n=!0),a.selected=d}};for(let s of this.data||[])"optgroup"===s.type?r(s.children):r([s]);n&&(this.initSelected(t),this.updateSelected(),this.update(t))}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(i){let e=ET(this.data,"value",i);e&&this._check(e,!0)}uncheck(i){let e=ET(this.data,"value",i);e&&this._check(e,!1)}_check(i,e){this.options.single&&this._checkAll(!1,!0),i.selected=e,this.initSelected(),this.updateSelected(),this.update()}checkAll(){this._checkAll(!0)}uncheckAll(){this._checkAll(!1)}_checkAll(i,e){for(let t of this.data||[])"optgroup"===t.type?this._checkGroup(t,i,!0):!t.disabled&&!t.divider&&(e||t.visible)&&(t.selected=i);e||(this.initSelected(),this.updateSelected(),this.update())}_checkGroup(i,e,t){i.selected=e,i.children.forEach(n=>{n&&!n.disabled&&!n.divider&&(t||n.visible)&&(n.selected=e)}),t||(this.initSelected(),this.updateSelected(),this.update())}checkInvert(){if(!this.options.single){for(let i of this.data||[])if("optgroup"===i.type)for(let e of i.children)e&&(e.divider||(e.selected=!e.selected));else i&&!i.divider&&(i.selected=!i.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(i){let e=this.searchInputElm?.value.trim()??"",t=e.toLowerCase();if(this.filterText===t)return;this.filterText=t;for(let r of this.data||[])if("optgroup"===r.type)if(this.options.filterGroup){let s=`${r?.label??""}`;if(null!=r){let a=this.options.customFilter({label:my(s.toString().toLowerCase(),this.options.diacriticParser),search:my(t,this.options.diacriticParser),originalLabel:s,originalSearch:e,row:r});r.visible=a;for(let d of r.children)d&&(d.visible=a)}}else{for(let s of r.children)if(null!=s){let a=`${s?.text??""}`;s.visible=this.options.customFilter({text:my(a.toString().toLowerCase(),this.options.diacriticParser),search:my(t,this.options.diacriticParser),originalText:a,originalSearch:e,row:s,parent:r})}r.visible=r.children.filter(s=>s?.visible).length>0}else{let s=`${r?.text??""}`;r.visible=this.options.customFilter({text:my(s.toString().toLowerCase(),this.options.diacriticParser),search:my(t,this.options.diacriticParser),originalText:s,originalSearch:e,row:r})}let n=this.initListItems();this.initSelected(i),this.updateSelected(n),i||this.options.onFilter(e)}adjustDropHeight(i){let e="top"!==i,s=(this.filterParentElm?.getBoundingClientRect().height??0)+(this.okButtonElm?.getBoundingClientRect().height??0)+(this.options.single?0:this.selectAllParentElm?.getBoundingClientRect().height??0)+5,{bottom:a,top:d}=I9(this.parentElm),h=this.options.maxHeight;if(h=e?a-s-this.options.adjustedHeightPadding:d-s-this.options.adjustedHeightPadding,!this.options.maxHeight||this.options.maxHeight&&ha)e="bottom";else if(a>t&&n>t){if(this.options.container){let g=r-a;g<0&&(g=0),(g>0||i)&&(e="top",this.dropElm.style.top=`${g<0?0:g}px`)}else e="top",this.dropElm.classList.add(e);this.dropElm.classList.remove("bottom")}h-dt.clientHeight?this.getScrollbarWidth():0,a=0;this.dropElm.querySelectorAll("li label").forEach(d=>{d.scrollWidth>a&&(a=d.scrollWidth)}),a+=n+s,athis.options.maxWidth&&(a=this.options.maxWidth),this.options.minWidth&&a"string"==typeof i?P9(document.querySelectorAll(i),e):i instanceof Node?P9([i],e):P9(i,e);function P9(i,e){let t=Array.from(i),n=[];for(let r=0;rdelete s._multipleSelect,a.onAfterHardDestroyed=()=>n[r]=null,n.push(s._multipleSelect)}catch(a){console.error(a)}}return 1===n.length?n[0]:n}gy.defaults=Dc.DEFAULTS,gy.locales={...KU},gy.methods=Dc.METHODS,typeof window<"u"&&(window.multipleSelect=gy);class QU{constructor(e,t,n,r=!0){this.translaterService=e,this.collectionService=t,this.rxjs=n,this._isMultipleSelect=!0,this._collectionLength=0,this._collectionObservers=[],this._shouldTriggerQuery=!0,this.isFilled=!1,this.enableTranslateLabel=!1,this.subscriptions=[],this._isMultipleSelect=r}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?te.in:te.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 t=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??oe.locales,this.initMultipleSelectTemplate();let n=this.gridOptions?.defaultFilterPlaceholder||"";this.columnFilter?.placeholder&&(n=this.columnFilter.placeholder),this.defaultOptions.placeholder=n||"",this._isMultipleSelect&&this.columnDef?.filter&&(this.columnDef.filter.emptySearchTermReturnAllValues=this.columnDef.filter?.emptySearchTermReturnAllValues??!1);const r=this.columnFilter.collection||[];return new Promise(function(){var s=yn(function*(a,d){try{let h;t.columnFilter.collectionAsync&&!t.columnFilter.collection?(h=fW(t.columnFilter.collectionAsync,t.columnDef,t.renderDomElement.bind(t),t.rxjs,t.subscriptions),a(h)):(h=r,t.renderDomElement(r),a(r)),(t.columnFilter.collectionAsync||t.columnFilter.enableCollectionWatch)&&(yield h??t.columnFilter.collectionAsync,t.watchCollectionChanges())}catch(h){d(h)}});return function(a,d){return s.apply(this,arguments)}}())}clear(e=!0){this._msInstance&&this._collectionLength>0&&(this._msInstance.setSelects([]),this.updateFilterStyle(!1),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(),O_(this.subscriptions)}getValues(){return this._msInstance?.getSelects()??[]}setValues(e,t,n=!1){void 0!==e&&this._msInstance&&(e=Array.isArray(e)?e.every(r=>N_(r))?e.map(String):e:[e],this._msInstance.setSelects(e)),this.updateFilterStyle(this.getValues().length>0),this.operator=t||this.defaultOperator,n&&this.onTriggerEvent()}filterCollection(e){let t=e;if(this.columnFilter&&this.columnFilter.collectionFilterBy){const n=this.columnFilter.collectionFilterBy,r=this.columnFilter.collectionOptions?.filterResultAfterEachPass||null;t=this.collectionService?.filterCollection(t,n,r)||[]}return t}sortCollection(e){let t=e;if(this.columnFilter&&this.columnFilter.collectionSortBy){const n=this.columnFilter.collectionSortBy;t=this.collectionService?.sortCollection(this.columnDef,t,n,this.enableTranslateLabel)||[]}return t}watchCollectionChanges(){this.columnFilter?.collection&&(this._collectionObservers.push(S_(this.columnFilter.collection,this.watchCallback.bind(this))),RA(this.columnFilter,"collection",this.propertyObserverCallback.bind(this)))}propertyObserverCallback(e){this.renderDomElement(e||[]),this.columnFilter.collection&&this._collectionObservers.push(S_(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=Wn(e,this.collectionOptions.collectionInsideObjectProperty||"")}if(!Array.isArray(e))throw new Error('The "collection" passed to the Select Filter is not a valid array.');let t=[];if(e.length>0&&(t=[...e]),this.collectionOptions?.addBlankEntry&&Array.isArray(t)&&t.length>0&&""!==t[0][this.valueName]&&t.unshift(this.createBlankEntry()),this.collectionOptions?.addCustomFirstEntry&&Array.isArray(t)&&t.length>0&&t[0][this.valueName]!==this.collectionOptions.addCustomFirstEntry[this.valueName]&&t.unshift(this.collectionOptions.addCustomFirstEntry),this.collectionOptions?.addCustomLastEntry&&Array.isArray(t)&&t.length>0){t[t.length-1][this.valueName]!==this.collectionOptions.addCustomLastEntry[this.valueName]&&t.push(this.collectionOptions.addCustomLastEntry)}let n=t;n=this.filterCollection(n),n=this.sortCollection(n);const r=wU("filter",n,this.columnDef,this.grid,this.isMultipleSelect,this.translaterService,this.searchTerms||[]);this.isFilled=r.hasFoundSearchTerm,this.createFilterElement(r.selectElement,r.dataCollection),this._collectionLength=n.length}createBlankEntry(){const e={[this.labelName]:"",[this.valueName]:""};return this.labelPrefixName&&(e[this.labelPrefixName]=""),this.labelSuffixName&&(e[this.labelSuffixName]=""),e}createFilterElement(e,t){const n=this.columnDef?.id??"";this.elementName=`filter-${n}`,this.defaultOptions.name=this.elementName,ui(this.filterContainerElm),this.filterElm=e,this.filterElm.dataset.columnId=`${n}`,this.updateFilterStyle(this.isFilled),this.filterContainerElm.appendChild(e),this.filterElmOptions={...this.defaultOptions,...this.filterOptions,data:t},this._msInstance=gy(e,this.filterElmOptions)}initMultipleSelectTemplate(){const e=this.gridOptions?.enableTranslate??!1,n={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:r=>this.grid.sanitizeHtmlString(r),onClose:()=>this.onTriggerEvent(),onClear:()=>this.clear()};if(this._isMultipleSelect){n.single=!1,n.singleRadio=!1,n.showOkButton=!0,n.displayTitle=!0;const r=Fl(this.gridOptions);n.countSelectedText=e&&this.translaterService?.translate?this.translaterService.translate(`${r}X_OF_Y_SELECTED`):this._locales?.TEXT_X_OF_Y_SELECTED,n.allSelectedText=e&&this.translaterService?.translate?this.translaterService.translate(`${r}ALL_SELECTED`):this._locales?.TEXT_ALL_SELECTED,n.noMatchesFoundText=e&&this.translaterService?.translate?this.translaterService.translate(`${r}NO_MATCHES_FOUND`):this._locales?.TEXT_NO_MATCHES_FOUND,n.okButtonText=e&&this.translaterService?.translate?this.translaterService.translate(`${r}OK`):this._locales?.TEXT_OK,n.selectAllText=e&&this.translaterService?.translate?this.translaterService.translate(`${r}SELECT_ALL`):this._locales?.TEXT_SELECT_ALL}this.defaultOptions=n}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 ee={autocompleter:class cce{constructor(e,t,n){this.translaterService=e,this.collectionService=t,this.rxjs=n,this._clearFilterTriggered=!1,this._collectionObservers=[],this._shouldTriggerQuery=!0,this.searchTerms=[],this.isFilled=!1,this.isItemSelected=!1,this.valueName="label",this.enableTranslateLabel=!1,this.subscriptions=[],this._bindEventService=new br}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 t=this.columnFilter?.type??this.columnDef?.type;return!e&&t===M.object&&this.columnDef?.dataKey&&this.columnDef?.labelKey&&(e={label:this.columnDef.labelKey,value:this.columnDef.dataKey}),e}get defaultOperator(){return te.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 t=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??oe.locales;const n=this.columnFilter.collection;return this._collection=n,this.renderDomElement(n),new Promise(function(){var r=yn(function*(s,a){try{const d=t.columnFilter.collectionAsync;let h;d&&!t.columnFilter.collection?(h=fW(d,t.columnDef,t.renderDomElement.bind(t),t.rxjs,t.subscriptions),s(h)):(h=n,s(n)),(d||t.columnFilter.enableCollectionWatch)&&(yield h??d,t.watchCollectionChanges())}catch(d){a(d)}});return function(s,a){return r.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.updateFilterStyle(!1))}destroy(){"function"==typeof this._instance?.destroy&&this._instance.destroy(),this._filterElm,this._filterElm?.remove?.(),this._collection=void 0,this._bindEventService.unbindAll(),this._collectionObservers.forEach(e=>e?.disconnect()),O_(this.subscriptions)}getValues(){return this._filterElm?.value||""}setValues(e,t,n=!1){e&&this._filterElm&&(this._filterElm.value=e),this.updateFilterStyle(""!==this.getValues()),this.operator=t||this.defaultOperator,n&&this.callback(void 0,{columnDef:this.columnDef,operator:this.operator,searchTerms:[this.getValues()],shouldTriggerQuery:!0})}filterCollection(e){let t=e;if(this.columnFilter&&this.columnFilter.collectionFilterBy){const n=this.columnFilter.collectionFilterBy,r=this.columnFilter.collectionOptions&&this.columnFilter.collectionOptions.filterResultAfterEachPass||null;t=this.collectionService?.filterCollection(t,n,r)||[]}return t}sortCollection(e){let t=e;if(this.columnFilter&&this.columnFilter.collectionSortBy){const n=this.columnFilter.collectionSortBy;t=this.collectionService?.sortCollection(this.columnDef,t,n,this.enableTranslateLabel)||[]}return t}watchCollectionChanges(){this.columnFilter?.collection&&(this._collectionObservers.push(S_(this.columnFilter.collection,e=>{this.renderDomElement(this.columnFilter.collection||e||[])})),RA(this.columnFilter,"collection",e=>{this.renderDomElement(e||[]),this.columnFilter.collection&&this._collectionObservers.push(S_(this.columnFilter.collection,t=>{this.renderDomElement(this.columnFilter.collection||t||[])}))}))}renderDomElement(e){if(!Array.isArray(e)&&this.collectionOptions?.collectionInsideObjectProperty){e=Wn(e,this.collectionOptions.collectionInsideObjectProperty||"")}let t=e;t&&(t=this.filterCollection(t),t=this.sortCollection(t));const n=Array.isArray(this.searchTerms)&&this.searchTerms.length>=0?this.searchTerms[0]:"";this._collection=t,this._filterElm=this.createFilterElement(t,n),this._bindEventService.bind(this._filterElm,"input",this.handleOnInputChange.bind(this)),this._bindEventService.bind(this._filterElm,"blur",()=>{this.isItemSelected||this.clear()})}createFilterElement(e,t){this._collection=e;const n=this.columnDef?.id??"";ui(this.filterContainerElm);let r=this.gridOptions?.defaultFilterPlaceholder??"";this.columnFilter?.placeholder&&(r=this.columnFilter.placeholder),this._filterElm=O("input",{type:"text",ariaLabel:this.columnFilter?.ariaLabel??`${kd(n+"")} Search Filter`,autocomplete:"off",ariaAutoComplete:"none",placeholder:r,className:`form-control search-filter slick-filter filter-${n} slick-autocomplete-container`,value:t??"",dataset:{columnid:`${n}`}});const s=t;Array.isArray(e)&&(e=e.every(d=>N_(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,p)=>{p.style.width=""},onSelect:d=>{this.isItemSelected=!0,this.handleSelect(d)},...this.filterOptions},this.gridOptions?.darkMode&&(this._autocompleterOptions.className+=" slick-dark-mode"),this.autocompleterOptions.className=Oi(this.autocompleterOptions.className).join(" "),this._autocompleterOptions.renderItem?.layout?(this._autocompleterOptions.className+=` autocomplete-custom-${iy(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?(gW(this._filterElm,this._autocompleterOptions),this._instance=WA(this._autocompleterOptions)):this._instance=WA({...this._autocompleterOptions,fetch:(d,h)=>{e&&h(e.filter(p=>(("string"==typeof p?p:p?.label)||"").toLowerCase().includes(d.toLowerCase())))}}),this._filterElm.value=s??"";const a=O("div",{className:"autocomplete-filter-container"});return a.appendChild(this._filterElm),a.appendChild(O("span")),t&&this._filterElm.classList.add("filled"),this.filterContainerElm.appendChild(a),this.filterContainerElm.appendChild(document.createElement("span")),this._filterElm}handleSelect(e){if(void 0!==e){const n=this.filterOptions?.renderItem??!1,r="string"==typeof e?e:n?e[this.labelName]:e.label;let s="string"==typeof e?e:n?e[this.valueName]:e.value;s=this.trimWhitespaceWhenEnabled(s),this.updateFilterStyle(""!==s),this.setValues(r),this.callback(void 0,{columnDef:this.columnDef,operator:this.operator,searchTerms:[s],shouldTriggerQuery:this._shouldTriggerQuery}),this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0}return!1}handleOnInputChange(e){let t=e?.target?.value??"";const n=this.filterOptions.triggerOnEveryKeyStroke??!1;if(t=this.trimWhitespaceWhenEnabled(t),this._clearFilterTriggered||""===t||n){const r={columnDef:this.columnDef,shouldTriggerQuery:this._shouldTriggerQuery};this._clearFilterTriggered?r.clearFilterTriggered=this._clearFilterTriggered:(r.operator=this.operator,r.searchTerms=[t]),this.updateFilterStyle(""!==t),this.callback(e,r)}this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0}renderRegularItem(e){return O("div",{textContent:("string"==typeof e?e:e?.label??"")||""})}renderCustomItem(e){const t=this._autocompleterOptions?.renderItem?.templateCallback(e)??"",n=document.createElement("div");return this.grid.applyHtmlCode(n,t),n}renderCollectionItem(e){const t=this.columnFilter?.enableRenderHtml??!1,a=(e.labelPrefix||"")+(e.label||"")+(e.labelSuffix||""),d=this.grid.sanitizeHtmlString(a)||"",h=document.createElement("div");return h[t?"innerHTML":"textContent"]=d,h}trimWhitespaceWhenEnabled(e){let t=e;const n=this.gridOptions.enableFilterTrimWhiteSpace||this.columnFilter.enableTrimWhiteSpace;return"string"==typeof e&&n&&(t=e.trim()),t}updateFilterStyle(e){this.isItemSelected=e,e?this._filterElm.classList.add("filled"):this._filterElm.classList.remove("filled")}},compoundDate:class gde extends yU{constructor(e){super(e),this.translaterService=e,this.inputFilterType="compound"}},compoundInput:jU,compoundInputNumber:class oue extends _m{constructor(e){super(e),this.translaterService=e,this.inputType="number",this.inputFilterType="compound"}},compoundInputPassword:class sue extends _m{constructor(e){super(e),this.translaterService=e,this.inputType="password",this.inputFilterType="compound"}},compoundInputText:jU,compoundSlider:class lue extends D9{constructor(e){super(e),this.translaterService=e,this.sliderType="compound"}},dateRange:class cue extends yU{constructor(e){super(e),this.translaterService=e,this.inputFilterType="range"}},input:_m,inputMask:class due extends _m{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 t=Array.isArray(this.searchTerms)&&this.searchTerms.length>=0?this.searchTerms[0]:"";this.createDomFilterElement(t),this._bindEventService.bind(this._filterInputElm,["keyup","blur","change"],this.onTriggerEvent.bind(this))}onTriggerEvent(e,t=!1){let n="";if(e?.target?.value){let r=e?.target?.value??"";const s=this.gridOptions.enableFilterTrimWhiteSpace||this.columnFilter.enableTrimWhiteSpace;"string"==typeof r&&s&&(r=r.trim());const a=this.unmaskValue(r),d=this.maskValue(a);n=a,e?.keyCode>=48&&(this._filterInputElm.value=d,e.preventDefault())}t?(this.callback(e,{columnDef:this.columnDef,clearFilterTriggered:t,shouldTriggerQuery:this._shouldTriggerQuery}),this._filterInputElm.classList.remove("filled")):(this._filterInputElm.classList.add("filled"),this.callback(e,{columnDef:this.columnDef,operator:this.operator,searchTerms:[n],shouldTriggerQuery:this._shouldTriggerQuery})),this._shouldTriggerQuery=!0}maskValue(e){let t=0,n="";return this._inputMask&&(n=this._inputMask.replace(/[09A]/gi,r=>(("0"===r||"9"===r)&&/\d+/g.test(e[t])||"A"===r.toUpperCase()&&/[^\d]+/gi.test(e[t]))&&e[t++]||"")),n}unmaskValue(e){const t=e.replace(/[^0-9a-z]*/gi,""),n=this._inputMask.replace(/[^0-9a-z]*/gi,"");let r="";for(let s=0;s=s)||"inclusive"===a&&(gs)))h=!1,p=t||oe.VALIDATION_EDITOR_TEXT_LENGTH_BETWEEN.replace(/{{minLength}}|{{maxLength}}/gi,v=>d[v]);else if(void 0!==r&&null!==g&&("exclusive"===a&&g<=r||"inclusive"===a&&null!==g&&gd[y])}else if(void 0!==s&&null!==g&&("exclusive"===a&&g>=s||"inclusive"===a&&null!==g&&g>s)){h=!1;const v="inclusive"===a?oe.VALIDATION_EDITOR_TEXT_MAX_LENGTH_INCLUSIVE:oe.VALIDATION_EDITOR_TEXT_MAX_LENGTH;p=t||v.replace(/{{maxLength}}/gi,y=>d[y])}return{valid:h,msg:p}}function tj(i,e){const t=isNaN(i)?null:parseFloat(i),n=e.decimal||0,r=e.required,s=e.minValue,a=e.maxValue,d=e.operatorConditionalType||"inclusive",h=e.errorMessage,p={"{{minValue}}":s,"{{maxValue}}":a,"{{minDecimal}}":0,"{{maxDecimal}}":n};let g=!0,v="";if("function"==typeof e.validator)return e.validator(i,e.editorArgs);if(r&&""===i)g=!1,v=h||oe.VALIDATION_REQUIRED_FIELD;else if(""!==i&&(isNaN(i)||0===n&&!/^[-+]?(\d*(\.)?(\d)*)$/.test(i)))g=!1,v=h||oe.VALIDATION_EDITOR_VALID_NUMBER;else if(void 0!==s&&void 0!==a&&null!==t&&("exclusive"===d&&(t<=+s||t>=+a)||"inclusive"===d&&(t<+s||t>+a)))g=!1,v=h||oe.VALIDATION_EDITOR_NUMBER_BETWEEN.replace(/{{minValue}}|{{maxValue}}/gi,y=>p[y]);else if(void 0!==s&&null!==t&&("exclusive"===d&&t<=+s||"inclusive"===d&&t<+s)){g=!1;const y="inclusive"===d?oe.VALIDATION_EDITOR_NUMBER_MIN_INCLUSIVE:oe.VALIDATION_EDITOR_NUMBER_MIN;v=h||y.replace(/{{minValue}}/gi,C=>p[C])}else if(void 0!==a&&null!==t&&("exclusive"===d&&t>=+a||"inclusive"===d&&t>+a)){g=!1;const y="inclusive"===d?oe.VALIDATION_EDITOR_NUMBER_MAX_INCLUSIVE:oe.VALIDATION_EDITOR_NUMBER_MAX;v=h||y.replace(/{{maxValue}}/gi,C=>p[C])}else n>0&&!new RegExp(`^[-+]?(\\d*(\\.)?(\\d){0,${n}})$`).test(i)&&(g=!1,v=h||oe.VALIDATION_EDITOR_DECIMAL_BETWEEN.replace(/{{minDecimal}}|{{maxDecimal}}/gi,y=>p[y]));return{valid:g,msg:v}}function ij(i,e){let t=isNaN(i)?null:parseInt(i,10);null!==t&&isNaN(t)&&(t=null);const n=e.errorMessage,r=e.required,s=e.minValue,a=e.maxValue,d=e.operatorConditionalType||"inclusive",h={"{{minValue}}":s,"{{maxValue}}":a};let p=!0,g="";if(e.validator)return e.validator(i,e.editorArgs);if(r&&""===i)p=!1,g=n||oe.VALIDATION_REQUIRED_FIELD;else if(""===i||!isNaN(i)&&/^[+-]?\d+$/.test(i)){if(void 0!==s&&void 0!==a&&null!==t&&("exclusive"===d&&(t<=+s||t>=+a)||"inclusive"===d&&(t<+s||t>+a)))p=!1,g=n||oe.VALIDATION_EDITOR_INTEGER_BETWEEN.replace(/{{minValue}}|{{maxValue}}/gi,v=>h[v]);else if(void 0!==s&&null!==t&&("exclusive"===d&&t<=+s||"inclusive"===d&&null!==t&&t<+s)){p=!1;const v="inclusive"===d?oe.VALIDATION_EDITOR_INTEGER_MIN_INCLUSIVE:oe.VALIDATION_EDITOR_INTEGER_MIN;g=n||v.replace(/{{minValue}}/gi,y=>h[y])}else if(void 0!==a&&null!==t&&("exclusive"===d&&t>=+a||"inclusive"===d&&null!==t&&t>+a)){p=!1;const v="inclusive"===d?oe.VALIDATION_EDITOR_INTEGER_MAX_INCLUSIVE:oe.VALIDATION_EDITOR_INTEGER_MAX;g=n||v.replace(/{{maxValue}}/gi,y=>h[y])}}else p=!1,g=n||oe.VALIDATION_EDITOR_VALID_INTEGER;return{valid:p,msg:g}}class DT{constructor(e,t="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?.getOptions(),this._bindEventService=new br,this.inputType=t,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??"",t=this.args.compositeEditorOptions;this._input=O("input",{type:this._inputType||"text",autocomplete:"off",ariaAutoComplete:"none",ariaLabel:this.columnEditor?.ariaLabel??`${kd(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 n=this.args.container;n&&"function"==typeof n.appendChild&&n.appendChild(this._input),this._bindEventService.bind(this._input,"focus",()=>this._input?.select()),this._bindEventService.bind(this._input,"keydown",r=>{this._isValueTouched=!0,this._lastInputKeyEvent=r,("ArrowLeft"===r.key||"ArrowRight"===r.key||"Home"===r.key||"End"===r.key)&&r.stopImmediatePropagation()}),this.hasAutoCommitEdit&&!t&&this._bindEventService.bind(this._input,["focusout","blur"],()=>{this._isValueTouched=!0,this.save()}),t&&(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 t=this.disabled;if(this.disabled=e,this._input)if(e){this._input.setAttribute("disabled","disabled");const n=this.getValue();t!==e&&this.args?.compositeEditorOptions&&""!==n&&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 t="";for(let n=1;n0?`0.${t}1`:"1"}show(){this.args?.compositeEditorOptions&&this.applyInputUsabilityState()}getValue(){return this._input?.value||""}setValue(e,t=!1,n=!0){if(this._input&&(this._input.value=`${e}`,t)){this.applyValue(this.args.item,this.serializeValue());const r=this.args.compositeEditorOptions;r&&n&&this.handleChangeOnCompositeEditor(null,r,"system")}}applyValue(e,t){const n=this.columnDef?.field;if(void 0!==n){const r=n?.indexOf(".")>0,a=this.validate(null,t)?.valid?t:"";if(r){Ko(e,this.columnEditor?.complexObjectPath??n??"",a)}else n&&(e[n]=a)}}isValueChanged(){const e=this._input?.value,t=this._lastInputKeyEvent?.key;return!(!this.columnEditor?.alwaysSaveOnEnterKey||"Enter"!==t)||!(""===e&&(null===this._originalValue||void 0===this._originalValue))&&e!==this._originalValue}isValueTouched(){return this._isValueTouched}loadValue(e){const t=this.columnDef?.field;if(e&&void 0!==t&&this._input){const r=t?.indexOf(".")>0?Wn(e,t):e.hasOwnProperty(t)&&e[t]||"";this._originalValue=r,this._input.value=this._originalValue,this._input.select()}}reset(e,t=!0,n=!1){const r=e??this._originalValue??"";this._input&&(this._originalValue=r,this._input.value=`${r}`),this._isValueTouched=!1;const s=this.args.compositeEditorOptions;if(s&&t){const a=!n;this.handleChangeOnCompositeEditor(null,s,"user",a)}}save(){const e=this.validate(),t=e&&e.valid||!1;this.hasAutoCommitEdit&&t?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}serializeValue(){return this._input?.value??""}validate(e,t){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return ST(void 0!==t?t: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(),t=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===t)}handleChangeOnCompositeEditor(e,t,n="user",r=!1){const s=this.grid.getActiveCell(),a=this.args.column,d=this.columnDef?.id??"",h=this.dataContext,p=this.grid,g=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,g),this.applyValue(t.formValues,g);const v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(r||this.disabled&&v&&t.formValues.hasOwnProperty(d))&&delete t.formValues[d],p.onCompositeEditorChange.notify({...s,item:h,grid:p,column:a,formValues:t.formValues,editors:t.editors,triggeredBy:n},new Ri(e))}handleOnInputChange(e){this._isValueTouched=!0;const t=this.args.compositeEditorOptions;if(t){const n=this.gridOptions?.editorTypingDebounce??500;window.clearTimeout(this._timer),this._timer=window.setTimeout(()=>this.handleChangeOnCompositeEditor(e,t),n)}}handleOnMouseWheel(e){this._isValueTouched=!0;const t=this.args.compositeEditorOptions;t&&this.handleChangeOnCompositeEditor(e,t)}}class nj{constructor(e,t,n=-1){if(this.args=e,this.isMultipleSelect=t,this.delayOpening=n,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||oe.locales;const r=this.columnDef?.id??"";this.elementName=`editor-${r}`;const s=this.args.compositeEditorOptions,a={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())?s?this.handleChangeOnCompositeEditor(s):(this._isDisposingOrCallingSave=!0,this.save(this.hasAutoCommitEdit)):"key.escape"===d&&this.cancel()}};if(t)if(a.single=!1,a.singleRadio=!1,a.displayTitle=!0,a.showOkButton=!0,this._translaterService?.getCurrentLanguage()){const d=Fl(this.gridOptions);a.countSelectedText=this._translaterService.translate(`${d}X_OF_Y_SELECTED`),a.allSelectedText=this._translaterService.translate(`${d}ALL_SELECTED`),a.selectAllText=this._translaterService.translate(`${d}SELECT_ALL`),a.okButtonText=this._translaterService.translate(`${d}OK`),a.noMatchesFoundText=this._translaterService.translate(`${d}NO_MATCHES_FOUND`)}else a.countSelectedText=this._locales?.TEXT_X_OF_Y_SELECTED,a.allSelectedText=this._locales?.TEXT_ALL_SELECTED,a.selectAllText=this._locales?.TEXT_SELECT_ALL,a.okButtonText=this._locales?.TEXT_OK,a.noMatchesFoundText=this._locales?.TEXT_NO_MATCHES_FOUND;this.defaultOptions=a,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 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=new Set;if((this._msInstance?.getSelects("value")??[]).forEach(r=>e.add(r.toString())),this.collection.every(r=>"number"==typeof r||"string"==typeof r))return this.collection.filter(r=>e.has(r?.toString()));const t=this.collectionOptions?.separatorBetweenTextLabels??"",n=this.collectionOptions?.includePrefixSuffixToSelectedValues??!1;return this.collection.filter(r=>e.has(r?.[this.valueName]?.toString())).map(r=>{const s=r[this.valueName];let a=r[this.labelPrefixName]||"",d=r[this.labelSuffixName]||"";const p=(this.columnDef?.field??"")?.indexOf(".")>0,g=this.columnEditor?.serializeComplexValueFormat??"object";return p&&"object"==typeof r&&"object"===g?r:(a=this.enableTranslateLabel&&this._translaterService&&a&&"string"==typeof a?this._translaterService.translate(a||" "):a,d=this.enableTranslateLabel&&this._translaterService&&d&&"string"==typeof d?this._translaterService.translate(d||" "):d,n?[a,s,d].filter(y=>y).join(t):s)})}get currentValue(){const e=this._msInstance?.getSelects()??[],t=e.length?e[0]:"",n=this.columnDef?.field;if(void 0!==n){if(this.collection.every(p=>"number"==typeof p||"string"==typeof p))return rh(this.collection,p=>p?.toString?.()===`${t}`);const r=this.collectionOptions?.separatorBetweenTextLabels??"",s=this.collectionOptions?.includePrefixSuffixToSelectedValues??!1,a=rh(this.collection,p=>p.hasOwnProperty(this.valueName)&&p[this.valueName]?.toString()===`${t}`),d=n?.indexOf(".")>0,h=this.columnEditor?.serializeComplexValueFormat??"object";if(d&&"object"==typeof a&&"object"===h)return a;if(a&&a.hasOwnProperty(this.valueName)){const p=a[this.valueName];if(s){let g=a[this.labelPrefixName]||"",v=a[this.labelSuffixName]||"";return g=this.enableTranslateLabel&&this._translaterService&&g&&"string"==typeof g?this._translaterService.translate(g||" "):g,v=this.enableTranslateLabel&&this._translaterService&&v&&"string"==typeof v?this._translaterService.translate(v||" "):v,[g,p,v].filter(C=>C).join(r)}return p}}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 CU(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,t=!1,n=!0){if(this.isMultipleSelect&&Array.isArray(e)?this.loadMultipleValues(e):this.loadSingleValue(e),t){this.applyValue(this.args.item,this.serializeValue());const r=this.args.compositeEditorOptions;r&&n&&this.handleChangeOnCompositeEditor(r,"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,t){const n=this.columnDef?.field,r=this.columnDef?.type;let s=t;if(void 0!==n){(r===M.number||r===M.integer||r===M.boolean)&&!isNaN(parseFloat(t))&&(s=parseFloat(t)),this.isMultipleSelect&&"string"==typeof t&&t.indexOf(",")>=0&&(s=t.split(","));const a=n?.indexOf(".")>0;if(s=this.validate(null,s)?.valid?s:"",a){Ko(e,this.columnEditor?.complexObjectPath??n??"",s)}else e[n]=s}}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 t=this.columnDef?.field,n=void 0!==t&&t?.indexOf(".")>0;if(e&&void 0!==t){const r=this.columnEditor?.complexObjectPath??t,s=n?Wn(e,r):e.hasOwnProperty(t)&&e[t],a=n&&s?.hasOwnProperty(this.valueName)?s[this.valueName]:s;this.isMultipleSelect&&Array.isArray(a)?this.loadMultipleValues(a):this.loadSingleValue(a)}}loadMultipleValues(e){if(Array.isArray(e)){this.originalValue=e.map(n=>"number"==typeof n||"boolean"==typeof n?`${n}`:n),this._msInstance?.setSelects(this.originalValue);const t=this.args.compositeEditorOptions;t&&this.handleChangeOnCompositeEditor(t)}}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,t){this.columnEditor&&(this.columnEditor.editorOptions||(this.columnEditor.editorOptions={}),this.columnEditor.editorOptions[e]=t,this.editorElmOptions={...this.editorElmOptions,[e]:t},this._msInstance?.refreshOptions(this.editorElmOptions))}disable(e=!0){const t=this.disabled;if(this.disabled=e,this._msInstance)if(e){this._msInstance.disable();const n=this.getValue(),r=Array.isArray(n)&&this.isMultipleSelect?""===n?.[0]:""===n;t!==e&&this.isCompositeEditor&&!r&&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!Ec(e,this.originalValue);const t=Array.isArray(e)&&e.length>0?e[0]:void 0;return void 0!==t&&t!==this.originalValue}isValueTouched(){return this._isValueTouched}reset(e,t=!0,n=!1){const r=e??this.originalValue;if(this._msInstance){this.originalValue=this.isMultipleSelect?void 0!==r?[r]:[]:r;const a=void 0===this.originalValue?[]:[this.originalValue];this._msInstance.setSelects(a)}this._isValueTouched=!1;const s=this.args.compositeEditorOptions;if(s&&t){const a=!n;this.handleChangeOnCompositeEditor(s,"user",a)}}save(e=!1){const n=this.validate()?.valid??!1;(!this._isDisposingOrCallingSave||e)&&this.hasAutoCommitEdit&&n?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}validate(e,t){const n=!this.isCompositeEditor&&this.columnEditor?.required,r=void 0!==t?t:this._msInstance?.getSelects(),s=this.columnEditor&&this.columnEditor.errorMessage;if(this.isCompositeEditor&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};if(this.validator){const a=void 0!==t?t:this.isMultipleSelect?this.currentValues:this.currentValue;return this.validator(a,this.args)}return n&&(""===r||Array.isArray(r)&&0===r.length)?{valid:!1,msg:s||oe.VALIDATION_REQUIRED_FIELD}:{valid:!0,msg:null}}applyInputUsabilityState(){const e=this.grid.getActiveCell(),t=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===t)}filterCollection(e){let t=e;if(this.columnEditor&&this.columnEditor.collectionFilterBy){const n=this.columnEditor.collectionFilterBy,r=this.columnEditor.collectionOptions?.filterResultAfterEachPass??null;t=this._collectionService.filterCollection(t,n,r)}return t}sortCollection(e){let t=e;if(this.columnDef&&this.columnEditor&&this.columnEditor.collectionSortBy){const n=this.columnEditor.collectionSortBy;t=this._collectionService.sortCollection(this.columnDef,t,n,this.enableTranslateLabel)}return t}renderDomElement(e){if(!Array.isArray(e)&&this.collectionOptions?.collectionInsideObjectProperty){e=Wn(e,this.collectionOptions.collectionInsideObjectProperty)}if(!Array.isArray(e))throw new Error('The "collection" passed to the Select Editor is not a valid array.');let t=[];if(e.length>0&&(t=[...e]),this.collectionOptions?.addBlankEntry&&Array.isArray(t)&&t.length>0&&""!==t[0][this.valueName]&&(t.unshift(this.createBlankEntry()),this.collection.unshift(this.createBlankEntry())),this.collectionOptions?.addCustomFirstEntry&&Array.isArray(t)&&t.length>0&&t[0][this.valueName]!==this.collectionOptions.addCustomFirstEntry[this.valueName]&&(t.unshift(this.collectionOptions.addCustomFirstEntry),this.collection.unshift(this.collectionOptions.addCustomFirstEntry)),this.collectionOptions?.addCustomLastEntry&&Array.isArray(t)&&t.length>0){t[t.length-1][this.valueName]!==this.collectionOptions.addCustomLastEntry[this.valueName]&&t.push(this.collectionOptions.addCustomLastEntry)}let n=t;if(n=this.filterCollection(n),n=this.sortCollection(n),this.columnEditor?.collectionOverride){const s={column:this.columnDef,dataContext:this.dataContext,grid:this.grid,originalCollections:this.collection};if(this.args.compositeEditorOptions){const{formValues:a,modalType:d}=this.args.compositeEditorOptions;s.compositeEditorOptions={formValues:a,modalType:d}}n=this.columnEditor.collectionOverride(n,s)}this.finalCollection=n;const r=wU("editor",n,this.columnDef,this.grid,this.isMultipleSelect,this._translaterService);this.createDomElement(r.selectElement,r.dataCollection)}createBlankEntry(){const e={[this.labelName]:"",[this.valueName]:""};return this.labelPrefixName&&(e[this.labelPrefixName]=""),this.labelSuffixName&&(e[this.labelSuffixName]=""),e}createDomElement(e,t){const n=this.args.container;e&&n&&"function"==typeof n.appendChild&&(ui(n),n.appendChild(e));const r=this.columnEditor?.placeholder??"";this.defaultOptions.placeholder=r||"",this.editorElmOptions={...this.defaultOptions,...this.editorOptions,data:t},this._msInstance=gy(e,this.editorElmOptions),this.editorElm=this._msInstance.getParentElement(),this.isCompositeEditor||this.show(this.delayOpening)}handleChangeOnCompositeEditor(e,t="user",n=!1){const r=this.grid.getActiveCell(),s=this.args.column,a=this.columnDef?.id??"",d=this.dataContext,h=this.grid,p=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,p),this.applyValue(e.formValues,p);const g=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(n||this.disabled&&g&&e.formValues.hasOwnProperty(a))&&delete e.formValues[a],h.onCompositeEditorChange.notify({...r,item:d,grid:h,column:s,formValues:e.formValues,editors:e.editors,triggeredBy:t},new Ri)}}const Ne={autocompleter:class Uue{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 br,this.gridOptions?.translater&&(this._translater=this.gridOptions.translater),this._locales=this.gridOptions?.locales||oe.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 t=this.columnEditor?.type??this.columnDef?.type;return!e&&t===M.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 t=this.disabled;if(this.disabled=e,this._inputElm)if(e){this._inputElm.disabled=!0;const n=this.getValue();t!==e&&this.args?.compositeEditorOptions&&""!==n&&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,t=!1,n=!0){if(this._inputElm.value=e?.hasOwnProperty(this.labelName)?e[this.labelName]:e,t){this._currentValue=e,this._defaultTextValue="string"==typeof e?e:e?.[this.labelName]??"",this.applyValue(this.args.item,this.serializeValue());const r=this.args.compositeEditorOptions;r&&n&&this.handleChangeOnCompositeEditor(null,r,"system")}}applyValue(e,t){let n=t;const r=this.columnDef?.field;if(void 0!==r){Array.isArray(this.collection)&&this.collection.length>0&&(n=rh(this.collection,d=>d&&fm(t)&&d.hasOwnProperty(this.valueName)?d[this.valueName].toString()===(t.hasOwnProperty(this.valueName)&&t[this.valueName].toString()):d&&"string"==typeof t&&d.hasOwnProperty(this.valueName)?d[this.valueName].toString()===t:d?.toString()===t,""));const s=r?.indexOf(".")>0;if(n=this.validate(null,n)?.valid?n:"",s){Ko(e,this.columnEditor?.complexObjectPath??r??"",n)}else e[r]=n}}isValueChanged(){const e=this._inputElm.value,t=this._lastInputKeyEvent?.key;if(this.columnEditor?.alwaysSaveOnEnterKey&&"Enter"===t)return!0;const n=!(""===e&&(null===this._defaultTextValue||void 0===this._defaultTextValue))&&e!==this._defaultTextValue;return this._lastTriggeredByClearInput||n}isValueTouched(){return this._isValueTouched}loadValue(e){const t=this.columnDef?.field;if(e&&void 0!==t){const r=t?.indexOf(".")>0?Wn(e,t):e[t];this._currentValue=r,this._originalValue=r,this._defaultTextValue="string"==typeof r?r:r?.[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 t=this.args.compositeEditorOptions;if(t){const n=!e;this.handleChangeOnCompositeEditor(null,t,"user",n)}else this.save()}reset(e,t=!0,n=!1){const r=e??this._originalValue??"";this._inputElm&&(this._currentValue=r,this._defaultTextValue="string"==typeof r?r:r?.[this.labelName]??"",this._inputElm.value=this._defaultTextValue),this._isValueTouched=!1;const s=this.args.compositeEditorOptions;if(s&&t){const a=!n;this.handleChangeOnCompositeEditor(null,s,"user",a)}}save(){const t=this.validate()?.valid??!1;if(this.hasAutoCommitEdit&&t)this.grid.getEditorLock().commitCurrentEdit();else{const n="Enter"!==this._lastInputKeyEvent?.key;this.args.commitChanges(n)}}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!==M.object&&this.columnEditor?.type!==M.object?this._currentValue[this.valueName]:this._currentValue&&void 0!==this._currentValue.value?this.columnDef?.type===M.object||this.columnEditor?.type===M.object?{[this.labelName]:this._currentValue.label,[this.valueName]:this._currentValue.value}:this._currentValue.value:this._currentValue}validate(e,t){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return ST(void 0!==t?t: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(),t=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===t)}handleChangeOnCompositeEditor(e,t,n="user",r=!1){const s=this.grid.getActiveCell(),a=this.args.column,d=this.columnDef?.id??"",h=this.dataContext,p=this.grid,g=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,g),this.applyValue(t.formValues,g);const v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(r||this.disabled&&v&&t.formValues.hasOwnProperty(d))&&delete t.formValues[d],p.onCompositeEditorChange.notify({...s,item:h,grid:p,column:a,formValues:t.formValues,editors:t.editors,triggeredBy:n},new Ri(e))}handleSelect(e){if(void 0!==e){const t=e;this._currentValue=t,this._isValueTouched=!0;const n=this.args.compositeEditorOptions,r=this.editorOptions?.renderItem??!1,s="string"==typeof t?t:r?t[this.labelName]:t.label;if(this.setValue(s),n?this.handleChangeOnCompositeEditor(null,n):this.save(),"function"==typeof this.editorOptions.onSelectItem){const{row:a,cell:d}=this.grid.getActiveCell()||{};this.editorOptions.onSelectItem(e,a,d,this.args.column,this.args.item)}window.setTimeout(()=>this._lastTriggeredByClearInput=!1)}return!1}renderRegularItem(e){return O("div",{textContent:("string"==typeof e?e:e?.label??"")||""})}renderCustomItem(e){const t=this._autocompleterOptions?.renderItem?.templateCallback(e)??"",n=document.createElement("div");return this.grid.applyHtmlCode(n,t),n}renderCollectionItem(e){const t=this.columnEditor?.enableRenderHtml??!1,a=(e.labelPrefix||"")+(e.label||"")+(e.labelSuffix||""),d=this.grid.sanitizeHtmlString(a)||"",h=document.createElement("div");return h[t?"innerHTML":"textContent"]=d,h}renderDomElement(e){const t=this.columnDef?.id??"",n=this.columnEditor?.placeholder??"",r=this.columnEditor?.title??"";this._editorInputGroupElm=O("div",{className:"autocomplete-container input-group"});const s=O("span",{className:"input-group-btn input-group-append",dataset:{clear:""}});this._clearButtonElm=O("button",{type:"button",className:"btn btn-default btn-clear"}),this._clearButtonElm.appendChild(O("i",{className:"icon-clear"})),this._inputElm=O("input",{type:"text",placeholder:n,title:r,autocomplete:"off",ariaAutoComplete:"none",className:`autocomplete form-control editor-text input-group-editor editor-${t}`,dataset:{input:""}},this._editorInputGroupElm),this._editorInputGroupElm.appendChild(document.createElement("span")),this.editorOptions?.hideClearButton||(s.appendChild(this._clearButtonElm),this._editorInputGroupElm.appendChild(s),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||"Home"===d.key||"End"===d.key)&&d.stopImmediatePropagation(),"Enter"===d.key&&""===d.target.value&&this.columnEditor.alwaysSaveOnEnterKey&&(this._currentValue=null)});let a=e;if(a&&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:p}=this.args.compositeEditorOptions;d.compositeEditorOptions={formValues:h,modalType:p}}a=this.columnEditor.collectionOverride(a,d)}a&&(this.finalCollection=a),Array.isArray(a)&&(a=this.collection.every(d=>N_(d))?a.map(d=>({label:d,value:d})):a.map(d=>({label:d?.[this.labelName],value:d?.[this.valueName],labelPrefix:d?.[this.labelPrefixName]??"",labelSuffix:d?.[this.labelSuffixName]??""})),this._elementCollection=a),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,p)=>{p.style.width=""},onSelect:this.handleSelect.bind(this),...this.editorOptions},this.gridOptions?.darkMode&&(this._autocompleterOptions.className+=" slick-dark-mode"),this.autocompleterOptions.className=Oi(this.autocompleterOptions.className).join(" "),this._autocompleterOptions.renderItem?.layout?(this._autocompleterOptions.className+=` autocomplete-custom-${iy(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?(gW(this._inputElm,this._autocompleterOptions),this._instance=WA(this._autocompleterOptions)):this._instance=WA({...this._autocompleterOptions,fetch:(d,h)=>{a&&h(a.filter(p=>(("string"==typeof p?p:p?.label)||"").toLowerCase().includes(d.toLowerCase())))}}),this.args.container.appendChild(this._editorInputGroupElm),this.args.compositeEditorOptions||window.setTimeout(()=>this.focus(),50)}},checkbox:class jue{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 br,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??"",t=this.args.compositeEditorOptions;this._checkboxContainerElm=O("div",{className:`checkbox-editor-container editor-${e}`}),this._input=O("input",{type:"checkbox",value:"true",ariaLabel:this.columnEditor?.ariaLabel??`${kd(e+"")} Checkbox Editor`,className:`editor-checkbox editor-${e}`,title:this.columnEditor?.title??""});const n=this.args?.container;n&&"function"==typeof n.appendChild&&(t?(this._checkboxContainerElm.appendChild(this._input),n.appendChild(this._checkboxContainerElm)):n.appendChild(this._input)),this.hasAutoCommitEdit&&!t&&this._bindEventService.bind(this._input,"click",()=>{this._isValueTouched=!0,this.save()}),t?this._bindEventService.bind(this._input,"change",r=>{this._isValueTouched=!0,this.handleChangeOnCompositeEditor(r,t)}):this.focus()}destroy(){this._bindEventService.unbindAll(),this._input?.remove?.()}disable(e=!0){const t=this.disabled;if(this.disabled=e,this._input)if(e){this._input.setAttribute("disabled","disabled"),this._checkboxContainerElm.classList.add("disabled");const n=this.getValue();t!==e&&this.args?.compositeEditorOptions&&!1!==n&&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,t=!1,n=!0){const r=!!e;if(this._input&&(this._input.checked=r),t){this.applyValue(this.args.item,this.serializeValue());const s=this.args.compositeEditorOptions;s&&n&&this.handleChangeOnCompositeEditor(null,s,"system")}}applyValue(e,t){const n=this.columnDef?.field;if(void 0!==n){const r=n?.indexOf(".")>0,s=this.validate(null,t),a=s&&s.valid?t:"";if(r){Ko(e,this.columnEditor?.complexObjectPath??n??"",a)}else e[n]=a}}isValueChanged(){return this.serializeValue()!==this._originalValue}isValueTouched(){return this._isValueTouched}loadValue(e){const t=this.columnDef?.field;if(e&&void 0!==t&&this._input){const r=t?.indexOf(".")>0?Wn(e,t):e[t];this._originalValue=r,this._input.checked=!!this._originalValue}}reset(e,t=!0,n=!1){const r=e??this._originalValue??!1;this._input&&(this._originalValue=r,this._input.checked=!!r),this._isValueTouched=!1;const s=this.args.compositeEditorOptions;if(s&&t){const a=!n;this.handleChangeOnCompositeEditor(null,s,"user",a)}}save(){const e=this.validate(),t=e&&e.valid||!1;this.hasAutoCommitEdit&&t?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}serializeValue(){return this._input?.checked??!1}validate(e,t){const n=!this.args?.compositeEditorOptions&&this.columnEditor.required,r=void 0!==t?t:this._input?.checked,s=this.columnEditor.errorMessage;return this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled?{valid:!0,msg:""}:this.validator?this.validator(r,this.args):n&&!r?{valid:!1,msg:s||oe.VALIDATION_REQUIRED_FIELD}:{valid:!0,msg:null}}applyInputUsabilityState(){const e=this.grid.getActiveCell(),t=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===t)}handleChangeOnCompositeEditor(e,t,n="user",r=!1){const s=this.grid.getActiveCell(),a=this.args.column,d=this.columnDef?.id??"",h=this.dataContext,p=this.grid,g=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,g),this.applyValue(t.formValues,g);const v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(r||this.disabled&&v&&t.formValues.hasOwnProperty(d))&&delete t.formValues[d],p.onCompositeEditorChange.notify({...s,item:h,grid:p,column:a,formValues:t.formValues,editors:t.editors,triggeredBy:n},new Ri(e))}},date:class que{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 br,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 yn(function*(){if(e.args&&e.columnDef){const t=e.args.compositeEditorOptions,n=e.columnDef?.id??"",r=e.args.grid.getOptions()||{};e.defaultDate=e.args.item?.[e.columnDef.field];const s=e.columnDef.outputType||e.columnEditor.type||e.columnDef.type||M.dateUtc,a=ea(s),d=e._translaterService?.getCurrentLanguage?.()||r.locale||"en";a&&("ISO8601"===a||a.toLowerCase().includes("h"))&&(e.hasTimePicker=!0);const h=ea(e.hasTimePicker?M.dateTimeIsoAM_PM:M.dateIso),p={input:!0,jumpToSelectedDate:!0,sanitizer:y=>e.grid.sanitizeHtmlString(y),toggleSelected:!1,actions:{clickDay:()=>{e._lastClickIsDate=!0},changeToInput:(y,C)=>{if(C.HTMLInputElement){let k="";if(C.selectedDates[0]?(k=C.selectedDates[0],C.HTMLInputElement.value=Ed(C.selectedDates[0],void 0,s)):C.HTMLInputElement.value="",k&&e.hasTimePicker){const E=$A(k,h);E.setHours(+(C.selectedHours||0)),E.setMinutes(+(C.selectedMinutes||0)),C.HTMLInputElement.value=Ed(E,void 0,s)}e._lastClickIsDate&&(e.handleOnDateChange(),C.hide())}}},settings:{lang:d,iso8601:!1,visibility:{theme:e.gridOptions?.darkMode?"dark":"light",positionToInput:"auto",weekend:!1}}};e.hasTimePicker&&(p.settings.selection={time:24}),e._pickerMergedOptions=en(!0,{},p,{settings:e.editorOptions,type:"default"});const g=`.editor-text.date-picker.editor-${n}.form-control.input-group-editor`;e._editorInputGroupElm=O("div",{className:"vanilla-picker input-group"});const v=O("span",{className:"input-group-btn input-group-append",dataset:{clear:""}});e._clearButtonElm=O("button",{type:"button",className:"btn btn-default btn-clear"}),e._clearButtonElm.appendChild(O("i",{className:"icon-clear"})),e._inputElm=O("input",{placeholder:e.columnEditor?.placeholder??"",title:e.columnEditor&&e.columnEditor.title||"",className:g.replace(/\./g," "),dataset:{input:"",defaultdate:e.defaultDate},readOnly:!0!==e.columnEditor.editorOptions?.allowInput},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()})),e._bindEventService.bind(e._inputElm,"keydown",y=>{!0===e.columnEditor.editorOptions?.allowInput&&(e._isValueTouched=!0,e._lastInputKeyEvent=y,("ArrowLeft"===y.key||"ArrowRight"===y.key||"Home"===y.key||"End"===y.key)&&y.stopImmediatePropagation())}),queueMicrotask(()=>{e.calendarInstance=new bU(e._inputElm,e._pickerMergedOptions),e.calendarInstance.init(),t||(e.show(),e.focus()),e.calendarInstance&&V_(e.columnEditor,e._inputElm,e.calendarInstance,{columnDef:e.columnDef,newVal:e.defaultDate,updatePickerUI:!0})})}})()}destroy(){queueMicrotask(()=>{this.hide(),this.calendarInstance?.destroy(),ui(this._editorInputGroupElm),ui(this._inputElm),this._editorInputGroupElm?.remove(),this._inputElm?.remove()}),this._bindEventService.unbindAll()}clear(){this._lastTriggeredByClearDate=!0,this.calendarInstance&&I6(this.calendarInstance)}disable(e=!0){const t=this.disabled;if(this.disabled=e,this._inputElm)if(e){this._inputElm.setAttribute("disabled","disabled"),this._clearButtonElm.disabled=!0;const n=this.getValue();t!==e&&this.args?.compositeEditorOptions&&""!==n&&this.reset("",!0,!0)}else this._inputElm.removeAttribute("disabled"),this._clearButtonElm.disabled=!1}changeEditorOption(e,t){this.columnEditor.editorOptions||(this.columnEditor.editorOptions={}),this.columnEditor.editorOptions[e]=t,this._pickerMergedOptions=en(!0,{},this._pickerMergedOptions,{settings:{[e]:t}})}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,t=!1,n=!0){if(this.calendarInstance&&V_(this.columnEditor,this._inputElm,this.calendarInstance,{columnDef:this.columnDef,newVal:e,updatePickerUI:!0}),t){this.applyValue(this.args.item,this.serializeValue());const r=this.args.compositeEditorOptions;r&&n&&this.handleChangeOnCompositeEditor(r,"system")}}applyValue(e,t){const n=this.columnDef?.field;if(this.columnDef&&void 0!==n){const r=this.columnDef.saveOutputType||this.columnDef.outputType||this.columnEditor.type||this.columnDef.type||M.dateUtc,s=this.columnDef.outputType||this.columnEditor.type||this.columnDef.type||M.dateUtc,a=n.indexOf(".")>0,d=this.validate(null,t),h=t&&d?.valid?Ed(t,s,r):"";if(a){Ko(e,this.columnEditor?.complexObjectPath??n,h)}else e[n]=h}}isValueChanged(){let e=!1;const t=this.getValue(),n=this._lastInputKeyEvent?.key;return!(!0!==this.columnEditor.editorOptions?.allowInput||!this.columnEditor?.alwaysSaveOnEnterKey||"Enter"!==n)||(this.columnDef&&(e=this._lastTriggeredByClearDate||!(""===t&&""===this._originalDate)&&t!==this._originalDate),e)}isValueTouched(){return this._isValueTouched}loadValue(e){const t=this.columnDef?.field;if(e&&this.columnDef&&void 0!==t){const r=t?.indexOf(".")>0?Wn(e,t):e[t],d=Ed(r,this.columnEditor.type||this.columnDef?.type||M.dateIso,this.columnDef.outputType||this.columnEditor.type||this.columnDef.type||M.dateIso);this._originalDate=""!==d?r:"",this._inputElm.value=d}}reset(e,t=!0,n=!1){const r=e??this._originalDate??"";this.calendarInstance&&(this._originalDate=r,this.calendarInstance.settings.selected.dates=[r],r?V_(this.columnEditor,this._inputElm,this.calendarInstance,{columnDef:this.columnDef,newVal:r}):I6(this.calendarInstance)),this._isValueTouched=!1;const s=this.args.compositeEditorOptions;if(s&&t){const a=!n;this.handleChangeOnCompositeEditor(s,"user",a)}}save(){const t=this.validate()?.valid??!1;this.hasAutoCommitEdit&&t?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}serializeValue(){return this.getValue()||""}validate(e,t){const n=!this.args?.compositeEditorOptions&&this.columnEditor.required,r=t??this._inputElm?.value,s=this.columnEditor.errorMessage;return this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled?{valid:!0,msg:""}:this.validator?this.validator(r,this.args):n&&""===r?{valid:!1,msg:s||oe.VALIDATION_REQUIRED_FIELD}:{valid:!0,msg:null}}applyInputUsabilityState(){const e=this.grid.getActiveCell(),t=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===t)}handleOnDateChange(){if(this._isValueTouched=!0,this.args){const e=this.args.compositeEditorOptions;e?this.handleChangeOnCompositeEditor(e):this.save()}window.setTimeout(()=>this._lastTriggeredByClearDate=!1)}handleChangeOnCompositeEditor(e,t="user",n=!1){const r=this.grid.getActiveCell(),s=this.args.column,a=this.columnDef?.id??"",d=this.dataContext,h=this.grid,p=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,p),this.applyValue(e.formValues,p);const g=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(n||this.disabled&&g&&e.formValues.hasOwnProperty(a))&&delete e.formValues[a],h.onCompositeEditorChange.notify({...r,item:d,grid:h,column:s,formValues:e.formValues,editors:e.editors,triggeredBy:t},new Ri)}},dualInput:class Yue{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 Pi,this._bindEventService=new br,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",n=>this.handleKeyDown(n,"leftInput")),this._bindEventService.bind(this._rightInput,"keydown",n=>this.handleKeyDown(n,"rightInput")),this.hasAutoCommitEdit&&(this._bindEventService.bind(this._leftInput,"focusout",n=>this.handleFocusOut(n,"leftInput")),this._bindEventService.bind(this._rightInput,"focusout",n=>this.handleFocusOut(n,"rightInput"))),this.args?.compositeEditorOptions?(this._bindEventService.bind(this._leftInput,"input",this.handleChangeOnCompositeEditorDebounce.bind(this)),this._bindEventService.bind(this._rightInput,"input",this.handleChangeOnCompositeEditorDebounce.bind(this))):window.setTimeout(()=>this._leftInput.select(),50)}handleFocusOut(e,t){const n=e.relatedTarget?.className||"";!this.args.compositeEditorOptions&&-1===n.indexOf("dual-editor")&&"focusout-right"!==this._lastEventType&&("rightInput"===t||"leftInput"===t&&"focusout-left"!==this._lastEventType)&&("leftInput"===t?this._isLeftValueTouched=!0:this._isRightValueTouched=!0,this.save());const s="leftInput"===t?"left":"right";this._lastEventType=`${e?.type}-${s}`}handleKeyDown(e,t){"leftInput"===t?this._isLeftValueTouched=!0:this._isRightValueTouched=!0,this._lastInputKeyEvent=e,("ArrowLeft"===e.key||"ArrowRight"===e.key||"Home"===e.key||"End"===e.key||"Tab"===e.key)&&e.stopImmediatePropagation()}destroy(){this._eventHandler.unsubscribeAll(),this._bindEventService.unbindAll(),this._leftInput?.remove?.(),this._rightInput?.remove?.()}createInput(e){const t=this.editorParams[e],n=this.columnDef?.id??"",r=this.gridOptions.datasetIdPropertyName||"id",s=this.args?.item?.[r]??"";let a=t.type||"text";("float"===a||"integer"===a)&&(a="number");const d=O("input",{type:a||"text",id:`item-${s}-${e}`,ariaLabel:this.columnEditor?.ariaLabel??`${kd(n+"")} Input Editor`,className:`dual-editor-text editor-${n} ${e.replace(/input/gi,"")}`,autocomplete:"off",ariaAutoComplete:"none",placeholder:t.placeholder||"",title:t.title||""});return"readonly"===a&&(d.readOnly=!0,a="text"),"number"===a&&(d.step=this.getInputDecimalSteps(e)),d}disable(e=!0){const t=this.disabled;this.disabled=e,this._leftInput&&this._rightInput&&(e?(this._leftInput.setAttribute("disabled","disabled"),this._rightInput.setAttribute("disabled","disabled"),t!==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={},t=this._leftInput.value,n=this._rightInput.value,r=this.editorParams.leftInput&&("float"===this.editorParams.leftInput.type||"integer"===this.editorParams.leftInput.type),s=this.editorParams.rightInput&&("float"===this.editorParams.rightInput.type||"integer"===this.editorParams.rightInput.type),a=""!==t&&r?+this._leftInput.value:t||"",d=""!==n&&s?+this._rightInput.value:n||"";return Ko(e,this._leftFieldName,a),Ko(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,t){this.applyValueByPosition(e,t,"leftInput"),this.applyValueByPosition(e,t,"rightInput")}applyValueByPosition(e,t,n){const r="leftInput"===n?this._leftFieldName:this._rightFieldName;if(void 0!==r){const s=r?.indexOf(".")>0;let a=r;if(s){const p=r.split(/\.(.*)/);a=p.length>1?p[1]:p}const d=s?Wn(t,a):t[r],h=this.validate(null,{position:n,inputValue:d});if(s){const p=Wn(t,a),g=h&&h.valid?p:"";Ko(e,this.columnEditor?.complexObjectPath??r??"",g)}else r&&(e[r]=h&&h.valid?t[r]:"")}}isValueChanged(){const e=this._leftInput.value,t=this._rightInput.value,n=this.editorParams?.leftInput,r=this.editorParams?.rightInput,s=this._lastInputKeyEvent?.key;if((n&&n.alwaysSaveOnEnterKey||r&&r.alwaysSaveOnEnterKey)&&"Enter"===s)return!0;const a=!(""===e&&(null===this._originalLeftValue||void 0===this._originalLeftValue))&&e!==this._originalLeftValue,d=!(""===t&&(null===this._originalRightValue||void 0===this._originalRightValue))&&t!==this._originalRightValue;return a||d}isValueTouched(){return this._isLeftValueTouched||this._isRightValueTouched}loadValue(e){this.loadValueByPosition(e,"leftInput"),this.loadValueByPosition(e,"rightInput"),this._leftInput.select()}loadValueByPosition(e,t){const n="leftInput"===t?this._leftFieldName:this._rightFieldName,r="leftInput"===t?"_originalLeftValue":"_originalRightValue",s="leftInput"===t?"_leftInput":"_rightInput";if(e&&void 0!==n){const d=n?.indexOf(".")>0?Wn(e,n):e.hasOwnProperty(n)?e[n]:"";if(this[r]=d,"float"===this.editorParams[t].type){const h=this.getDecimalPlaces(t);null!==h&&(this[r]||0===this[r])&&void 0!==this[r]&&(this[r]=(+this[r]).toFixed(h))}this[s]&&(this[s].value=`${this[r]}`)}}reset(e,t=!0,n=!1){const r=e??this._originalLeftValue??"",s=e??this._originalRightValue??"";this._leftInput&&this._rightInput&&(this._originalLeftValue=r,this._originalRightValue=s,this._leftInput.value=`${r}`,this._rightInput.value=`${s}`),this._isLeftValueTouched=!1,this._isRightValueTouched=!1;const a=this.args.compositeEditorOptions;if(a&&t){const d=!n;this.handleChangeOnCompositeEditor(null,a,"user",d)}}save(){const e=this.validate(),t=e&&e.valid||!1;this._isValueSaveCalled||(this.hasAutoCommitEdit&&t?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges(),this._isValueSaveCalled=!0)}serializeValue(){const e={},t=this.serializeValueByPosition("leftInput"),n=this.serializeValueByPosition("rightInput");return Ko(e,this._leftFieldName,t),Ko(e,this._rightFieldName,n),e}serializeValueByPosition(e){const t="leftInput"===e?this._leftInput.value:this._rightInput.value;if(""===t||isNaN(+t))return t;let n=parseFloat(t);const r=this.getDecimalPlaces(e);return null!==r&&(n||0===n)&&n.toFixed&&(n=parseFloat(n.toFixed(r))),n}getDecimalPlaces(e){const n="leftInput"===e?"leftInput":"rightInput",s=this.editorParams[n]?.decimal;return void 0===s?0:s}getInputDecimalSteps(e){const t=this.getDecimalPlaces(e);let n="";for(let r=1;r0?`0.${n}1`:"1"}validate(e,t){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};if(t){const n=this.validateByPosition(t.position,t.inputValue);if(!n.valid)return"leftInput"===t.position?this._leftInput.select():this._rightInput.select(),n}else{const n=this.validateByPosition("leftInput"),r=this.validateByPosition("rightInput");if(!n.valid)return this._leftInput.select(),n;if(!r.valid)return this._rightInput.select(),r}return{valid:!0,msg:""}}validateByPosition(e,t){const n=this.editorParams[e];let r="";if(t)r=t;else{const d="leftInput"===e?this._leftInput:this._rightInput;r=d&&d.value}const s=this.validator;r="function"==typeof s?this.getValues():r;const a={editorArgs:this.args,errorMessage:n.errorMessage,required:!this.args?.compositeEditorOptions&&n.required,validator:"function"==typeof s?s:n.validator};switch(n.type){case"float":return tj(r,{...a,decimal:this.getDecimalPlaces(e),minValue:n.minValue,maxValue:n.maxValue,operatorConditionalType:n.operatorConditionalType});case"integer":return ij(r,{...a,minValue:n.minValue,maxValue:n.maxValue,operatorConditionalType:n.operatorConditionalType});default:return ST(r,a)}}applyInputUsabilityState(){const e=this.grid.getActiveCell(),t=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===t)}handleChangeOnCompositeEditor(e,t,n="user",r=!1){const s=this.grid.getActiveCell(),a=this.args.column,d=this.columnEditor.params?.leftInput?.field??"",h=this.columnEditor.params?.rightInput?.field??"",p=this.dataContext,g=this.grid,v=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,v),this.applyValue(t.formValues,v);const y=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(r||this.disabled&&y&&t.formValues.hasOwnProperty(d))&&delete t.formValues[d],(r||this.disabled&&y&&t.formValues.hasOwnProperty(h))&&delete t.formValues[h],g.onCompositeEditorChange.notify({...s,item:p,grid:g,column:a,formValues:t.formValues,editors:t.editors,triggeredBy:n},new Ri(e))}handleChangeOnCompositeEditorDebounce(e){const t=this.args?.compositeEditorOptions;if(t){const n=this.gridOptions?.editorTypingDebounce??500;window.clearTimeout(this._timer),this._timer=window.setTimeout(()=>this.handleChangeOnCompositeEditor(e,t),n)}}},float:class Jue extends DT{constructor(e){super(e,"number"),this.args=e}loadValue(e){const t=this.columnDef?.field;if(void 0!==t&&e&&void 0!==t&&this._input){const r=t?.indexOf(".")>0?Wn(e,t):e[t];this._originalValue=r;const s=this.getDecimalPlaces();null!==s&&(this._originalValue||0===this._originalValue)&&void 0!==this._originalValue&&(this._originalValue=(+this._originalValue).toFixed(s)),this._input.value=`${this._originalValue}`,this._input.select()}}serializeValue(){const e=this._input?.value;if(void 0===e||""===e||isNaN(+e))return e;let t=parseFloat(e);const n=this.getDecimalPlaces();return null!==n&&(t||0===t)&&t.toFixed&&(t=parseFloat(t.toFixed(n))),t}validate(e,t){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return tj(void 0!==t?t: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 Que extends DT{constructor(e){super(e,"number"),this.args=e}loadValue(e){const t=this.columnDef?.field;if(void 0!==t&&e&&void 0!==t&&this._input){const r=t?.indexOf(".")>0?Wn(e,t):e[t];this._originalValue=isNaN(r)||null==r?r:`${r}`,this._input.value=`${this._originalValue}`,this._input.select()}}serializeValue(){const e=this._input?.value;if(void 0===e||""===e||isNaN(+e))return e;const t=isNaN(+e)?e:parseInt(e,10);return isNaN(+t)?e:t}validate(e,t){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return ij(void 0!==t?t: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 t=this.args.compositeEditorOptions;t&&this.handleChangeOnCompositeEditor(e,t)}},longText:class ehe{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 t=this.gridOptions||this.args.column.params||{};t?.translater&&(this._translater=t.translater),this._locales=this.gridOptions?.locales||oe.locales,this._bindEventService=new br,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="",t="";if(this._translater&&this._translater.translate&&this.gridOptions.enableTranslate){const g=Fl(this.gridOptions),v=this.editorOptions.buttonTexts?.cancelKey??`${g}CANCEL`,y=this.editorOptions.buttonTexts?.saveKey??`${g}SAVE`;e=this._translater.translate(`${g}${v}`),t=this._translater.translate(`${g}${y}`)}else e=this.editorOptions.buttonTexts?.cancel??this._locales?.TEXT_CANCEL??"Cancel",t=this.editorOptions.buttonTexts?.save??this._locales?.TEXT_SAVE??"Save";const n=this.args.compositeEditorOptions,r=this.columnDef?.id??"",s=this.columnEditor?.maxLength,a=this.editorOptions?.rows??4,d=n?this.args.container:document.body;this._wrapperElm=O("div",{className:`slick-large-editor-text editor-${r}`,style:{position:n?"relative":"absolute"}}),this.gridOptions?.darkMode&&this._wrapperElm.classList.add("slick-dark-mode"),d.appendChild(this._wrapperElm),this._textareaElm=O("textarea",{ariaLabel:this.columnEditor?.ariaLabel??`${kd(r+"")} Text Editor`,cols:this.editorOptions?.cols??40,rows:n&&a>3?3:a,placeholder:this.columnEditor?.placeholder??"",title:this.columnEditor?.title??""},this._wrapperElm);const h=O("div",{className:"editor-footer"}),p=O("span",{className:"counter"});if(this._currentLengthElm=O("span",{className:"text-length",textContent:"0"}),p.appendChild(this._currentLengthElm),void 0!==s&&(p.appendChild(O("span",{className:"separator",textContent:"/"})),p.appendChild(O("span",{className:"max-length",textContent:`${s}`}))),h.appendChild(p),!n){const g=O("button",{className:"btn btn-cancel btn-default btn-xs",textContent:e},h),v=O("button",{className:"btn btn-save btn-primary btn-xs",textContent:t},h);this._bindEventService.bind(g,"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 t=this.disabled;if(this.disabled=e,this._textareaElm&&this._wrapperElm)if(e){this._textareaElm.disabled=!0,this._wrapperElm.classList.add("disabled");const n=this.getValue();t!==e&&this.args?.compositeEditorOptions&&""!==n&&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,t=!1,n=!0){if(this._textareaElm.value=e,this._currentLengthElm.textContent=`${e.length}`,t){this.applyValue(this.args.item,this.serializeValue());const r=this.args.compositeEditorOptions;r&&n&&this.handleChangeOnCompositeEditor(null,r,"system")}}applyValue(e,t){const n=this.columnDef?.field;if(void 0!==n){const r=n?.indexOf(".")>0,a=this.validate(void 0,t)?.valid?t:"";if(r){Ko(e,this.columnEditor?.complexObjectPath??n??"",a)}else e[n]=a}}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 t=this.columnDef?.field;if(e&&void 0!==t){const r=t?.indexOf(".")>0?Wn(e,t):e[t];this._defaultTextValue=r||"",this._textareaElm.value=this._defaultTextValue,this._currentLengthElm.textContent=this._defaultTextValue.length,this._textareaElm.defaultValue=this._defaultTextValue,this._textareaElm.select()}}position(e){const t=kn(this.args.container),n=this.args.container.offsetHeight,r=this.args.container.offsetWidth,s=this._wrapperElm.getBoundingClientRect().height||this.args.position.height,a=this._wrapperElm.getBoundingClientRect().width||this.args.position.width,d=document.body.offsetHeight||window.innerHeight,h=document.body.offsetWidth||window.innerWidth;let p=this.args.container?t.top:e.top??0,g=this.args.container?t.left:e.left??0;const v=this.editorOptions?.position??"auto";if("left"===v||"auto"===v&&g+a>h){g-=a-r+(this.editorOptions?.marginRight??0)}("top"===v||"auto"===v&&p+s>d)&&(p-=s-n),this._wrapperElm.style.top=`${p}px`,this._wrapperElm.style.left=`${g}px`}reset(e,t=!0,n=!1){const r=e??this._defaultTextValue??"";this._textareaElm&&(this._defaultTextValue=r,this._textareaElm.value=r,this._currentLengthElm.textContent=r.length),this._isValueTouched=!1;const s=this.args.compositeEditorOptions;if(s&&t){const a=!n;this.handleChangeOnCompositeEditor(null,s,"user",a)}}save(){const t=this.validate()?.valid??!1;this.hasAutoCommitEdit&&t?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}serializeValue(){return this._textareaElm.value}validate(e,t){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return ST(void 0!==t?t: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(),t=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===t)}handleKeyDown(e){const t=e.key;this._isValueTouched=!0,this.args.compositeEditorOptions||("Enter"===t&&e.ctrlKey||e.ctrlKey&&"S"===e.key.toUpperCase()?(e.preventDefault(),this.save()):"Escape"===t?(e.preventDefault(),this.cancel()):"Tab"===t&&e.shiftKey?(e.preventDefault(),this.args&&this.grid&&this.grid.navigatePrev()):"Tab"===t&&(e.preventDefault(),this.args&&this.grid&&this.grid.navigateNext()))}handleOnInputChange(e){const t=this.args.compositeEditorOptions,n=this.columnEditor?.maxLength;let r=!1;if(n&&(r=this.truncateText(this._textareaElm,n)),r)this._currentLengthElm.textContent=`${n}`;else{const s="paste"===e.type?e.clipboardData.getData("text"):e.target.value;this._currentLengthElm.textContent=`${s.length}`}if(t){const s=this.gridOptions?.editorTypingDebounce??500;window.clearTimeout(this._timer),this._timer=window.setTimeout(()=>this.handleChangeOnCompositeEditor(e,t),s)}}handleChangeOnCompositeEditor(e,t,n="user",r=!1){const s=this.grid.getActiveCell(),a=this.args.column,d=this.columnDef?.id??"",h=this.dataContext,p=this.grid,g=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,g),this.applyValue(t.formValues,g);const v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(r||this.disabled&&v&&t.formValues.hasOwnProperty(d))&&delete t.formValues[d],p.onCompositeEditorChange.notify({...s,item:h,grid:p,column:a,formValues:t.formValues,editors:t.editors,triggeredBy:n},new Ri(e))}truncateText(e,t){const n=e.value+"";return n.length>t&&(e.value=n.substring(0,t),!0)}},multipleSelect:class the extends nj{constructor(e,t=0){super(e,!0,t),this.args=e,this.delayOpening=t}},password:class Xue extends DT{constructor(e){super(e,"password"),this.args=e}},singleSelect:class ihe extends nj{constructor(e,t=0){super(e,!1,t),this.args=e,this.delayOpening=t}},slider:class nhe{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 br,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 t=this.disabled;if(this.disabled=e,this._inputElm)if(e){this._inputElm.disabled=!0;const n=this.getValue();t!==e&&this.args?.compositeEditorOptions&&""!==n&&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,t=!1,n=!0){if(this._inputElm&&(this._inputElm.value=`${e}`),this._sliderNumberElm&&(this._sliderNumberElm.textContent=`${e}`),t){this.applyValue(this.args.item,this.serializeValue());const r=this.args.compositeEditorOptions;r&&n&&this.handleChangeOnCompositeEditor(null,r,"system")}}applyValue(e,t){const n=this.columnDef?.field??"";if(void 0!==n){const r=n?.indexOf(".")>0,s=this.validate(void 0,t),a=s&&s.valid?t:"";if(r){Ko(e,this.columnEditor.complexObjectPath??n??"",a)}else e&&(e[n]=a)}}changeEditorOption(e,t){if(this.columnEditor)switch(this.columnEditor.editorOptions??={},this.columnEditor.editorOptions[e]=t,this._sliderOptions[e]=t,e){case"hideSliderNumber":this.renderSliderNumber(this._editorElm,0);break;case"sliderStartValue":this._inputElm.value=`${t}`,this._inputElm.defaultValue=`${t}`;break;case"maxValue":case"minValue":case"step":this._inputElm[e.replace("Value","")]=`${t}`}}isValueChanged(){const e=this._inputElm?.value??"";return!(""===e&&void 0===this._originalValue)&&+e!==this._originalValue}isValueTouched(){return this._isValueTouched}loadValue(e){const t=this.columnDef?.field??"";if(e&&void 0!==t){let r=t?.indexOf(".")>0?Wn(e,t):e.hasOwnProperty(t)?e[t]:this._defaultValue;(""===r||null==r)&&(r=this._defaultValue),this._originalValue=+r,this._inputElm&&(this._inputElm.value=`${r}`,this._inputElm.title=`${r}`),this._sliderNumberElm&&(this._sliderNumberElm.textContent=`${r}`)}this.updateTrackFilledColorWhenEnabled()}reset(e,t=!0,n=!1){const r=e??this._originalValue??0;this._inputElm&&(this._inputElm.value=`${r}`),this._sliderNumberElm&&(this._sliderNumberElm.textContent=`${r}`),this._isValueTouched=!1;const s=this.args.compositeEditorOptions;if(s&&t){const a=!n;this.handleChangeOnCompositeEditor(null,s,"user",a)}}save(){const e=this.validate(),t=e&&e.valid||!1;this.hasAutoCommitEdit&&t?this.grid.getEditorLock().commitCurrentEdit():this.args.commitChanges()}serializeValue(){const e=this._inputElm?.value??"";return""!==e?parseInt(e,10):this._originalValue}validate(e,t){if(this.args.compositeEditorOptions&&this.applyInputUsabilityState(),this.disabled)return{valid:!0,msg:""};return function Kue(i,e){const t=e.required,n=e.minValue,r=e.maxValue,s=e.errorMessage,a={"{{minValue}}":n,"{{maxValue}}":r};return e.validator?e.validator(i,e.editorArgs):t&&""===i?{valid:!1,msg:s||oe.VALIDATION_REQUIRED_FIELD}:void 0!==n&&void 0!==r&&null!==i&&(ir)?{valid:!1,msg:s||oe.VALIDATION_EDITOR_NUMBER_BETWEEN.replace(/{{minValue}}|{{maxValue}}/gi,d=>a[d])}:{valid:!0,msg:null}}(void 0!==t?t: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??"",t=this.columnEditor.title??"",n=+(this.columnEditor.minValue??oe.SLIDER_DEFAULT_MIN_VALUE),r=+(this.columnEditor.maxValue??oe.SLIDER_DEFAULT_MAX_VALUE),s=+(this.columnEditor.valueStep??oe.SLIDER_DEFAULT_STEP),a=this.editorOptions.sliderStartValue??n;this._defaultValue=+a,this._sliderTrackElm=O("div",{className:"slider-track"}),this._inputElm=O("input",{type:"range",title:t,defaultValue:`${a}`,value:`${a}`,min:`${n}`,max:`${r}`,step:`${this.columnEditor.valueStep??oe.SLIDER_DEFAULT_STEP}`,ariaLabel:this.columnEditor.ariaLabel??`${kd(e+"")} Slider Editor`,className:`slider-editor-input editor-${e}`});const d=O("div",{className:"slider-container slider-editor"}),h=O("div",{className:"slider-input-container slider-editor"});return h.appendChild(this._sliderTrackElm),h.appendChild(this._inputElm),d.appendChild(h),this.renderSliderNumber(d,a),this._sliderOptions={minValue:n,maxValue:r,step:s},d}renderSliderNumber(e,t){if(this.editorOptions.hideSliderNumber)e.querySelector(".slider-value")?.remove();else{e.classList.add("input-group");const n=O("div",{className:"input-group-addon input-group-append slider-value"});this._sliderNumberElm=O("span",{className:"input-group-text",textContent:`${t}`}),n.appendChild(this._sliderNumberElm),e.appendChild(n)}}applyInputUsabilityState(){const e=this.grid.getActiveCell(),t=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===t)}handleChangeEvent(e){this._isValueTouched=!0;const t=this.args.compositeEditorOptions;t?this.handleChangeOnCompositeEditor(e,t):this.save()}handleChangeSliderNumber(e){const t=e.target?.value??"";""!==t&&(!this.editorOptions.hideSliderNumber&&this._sliderNumberElm&&(this._sliderNumberElm.textContent=t),this._inputElm.title=t,this.args?.compositeEditorOptions||this.grid.onMouseEnter.notify({column:this.columnDef,grid:this.grid},new Ri(e))),this.updateTrackFilledColorWhenEnabled()}handleChangeOnCompositeEditor(e,t,n="user",r=!1){const s=this.grid.getActiveCell(),a=this.args.column,d=this.columnDef?.id??"",h=this.dataContext,p=this.grid,g=this.serializeValue();this.validate().valid&&this.applyValue(this.dataContext,g),this.applyValue(t.formValues,g);const v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;(r||this.disabled&&v&&t.formValues.hasOwnProperty(d))&&delete t.formValues[d],p.onCompositeEditorChange.notify({...s,item:h,grid:p,column:a,formValues:t.formValues,editors:t.editors,triggeredBy:n},new Ri(e))}sliderTrackClicked(e){e.preventDefault();const r=100*(e.offsetX+0)/this._sliderTrackElm.offsetWidth;this._inputElm&&(this._inputElm.value=`${r}`,this._inputElm.dispatchEvent(new Event("change")))}updateTrackFilledColorWhenEnabled(){if(this.editorOptions.enableSliderTrackColoring&&this._inputElm){const t=(+this.getValue()-+this._inputElm.min)/(this.sliderOptions?.maxValue??0-+this._inputElm.min)*100,n="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,`${t}%`);this._sliderTrackElm.style.background=n,this._sliderOptions.sliderTrackBackground=n}}},text:DT},AT=(i,e,t)=>{if(Array.isArray(t)&&t.length>0){const n=t.join(", ");return O("span",{title:n,textContent:n})}return t},rj=(i,e,t,n,r)=>{if(!n)return"";const s=n.params||{},a=s?.complexField??s?.complexFieldLabel??n.field;if(!a)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(n.labelKey&&r.hasOwnProperty(a))return r[a]?.[n.labelKey];if("string"==typeof a&&a.indexOf(".")>0){let d=a.split(".").reduce((h,p)=>h?.hasOwnProperty(p)?h[p]:"",r);return(null==d||"object"==typeof d&&0===Object.entries(d).length&&!(d instanceof Date))&&(d=""),d}return t},G={arrayObjectToCsv:(i,e,t,n,r)=>{const s=n&&n.params||{},a=s.propertyNames,d=s?.includeTitle??!0;let h=s.dataContextProperty;if(h||(h=n?.field?.split(".")[0]||""),!a||!Array.isArray(a)||!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(r[h]&&Array.isArray(r[h])&&Array.isArray(r[h])&&r[h].length>0){const p=[];r[h].forEach(y=>{const C=[];a.forEach(k=>{C.push(y[k])}),p.push(C.join(" "))});const g=p.join(", "),v=O("span",{textContent:g});return d&&(v.title=g),v}return t},arrayToCsv:AT,checkmarkMaterial:(i,e,t)=>{let n=!1;const r=pt(t);return r&&(t=+t),(!0===t||r&&+t>0||"string"==typeof t&&t.length>0&&"false"!==t.toLowerCase()&&"0"!==t)&&(n=!0),n?O("i",{className:"mdi mdi-18px mdi-check checkmark-icon",ariaHidden:"true"}):""},complex:rj,complexObject:rj,collection:(i,e,t,n,r,s)=>{if(!(t&&n&&n.params&&n.params.collection&&n.params.collection.length))return t;const{params:a,params:{collection:d}}=n,h=a.customStructure?a.customStructure.label:"label",p=a.customStructure?a.customStructure.value:"value";return Array.isArray(t)?AT(0,0,t.map(g=>rh(d,v=>v[p]===g)[h])):rh(d,g=>g[p]===t)[h]||""},collectionEditor:(i,e,t,n,r,s)=>{if(!(t&&n&&n.editor&&n.editor.collection&&n.editor.collection.length))return t;const{editor:a,editor:{collection:d}}=n,h=a.customStructure?a.customStructure.label:"label",p=a.customStructure?a.customStructure.value:"value";return Array.isArray(t)?d.every(g=>"string"==typeof g)?AT(0,0,t.map(g=>rh(d,v=>v===g))):AT(0,0,t.map(g=>rh(d,v=>v[p]===g)[h])):rh(d,g=>g[p]===t)[h]||""},currency:(i,e,t,n,r,s)=>{const{currencyPrefix:a,currencySuffix:d,minDecimal:h,maxDecimal:p,numberPrefix:g,numberSuffix:v,decimalSeparator:y,thousandSeparator:C,wrapNegativeNumber:k}=Tn(n,s,"decimal","cell");if(pt(t)){return`${g}${wn(t,h,p,k,a,d,y,C)}${v}`}return t},dateIso:Mn(M.dateIso,"-"),dateTimeIso:Mn(M.dateTimeIso,"-"),dateTimeShortIso:Mn(M.dateTimeShortIso,"-"),dateTimeIsoAmPm:Mn(M.dateTimeIsoAmPm,"-"),dateTimeIsoAM_PM:Mn(M.dateTimeIsoAM_PM,"-"),dateEuro:Mn(M.dateEuro,"/"),dateEuroShort:Mn(M.dateEuroShort,"/"),dateTimeEuro:Mn(M.dateTimeEuro,"/"),dateTimeEuroShort:Mn(M.dateTimeEuroShort,"/"),dateTimeShortEuro:Mn(M.dateTimeShortEuro,"/"),dateTimeEuroAmPm:Mn(M.dateTimeEuroAmPm,"/"),dateTimeEuroAM_PM:Mn(M.dateTimeEuroAM_PM,"/"),dateTimeEuroShortAmPm:Mn(M.dateTimeEuroShortAmPm,"/"),dateTimeEuroShortAM_PM:Mn(M.dateTimeEuroShortAM_PM,"/"),dateUs:Mn(M.dateUs,"/"),dateTimeUs:Mn(M.dateTimeUs,"/"),dateTimeShortUs:Mn(M.dateTimeShortUs,"/"),dateTimeUsAmPm:Mn(M.dateTimeUsAmPm,"/"),dateTimeUsAM_PM:Mn(M.dateTimeUsAM_PM,"/"),dateTimeUsShort:Mn(M.dateTimeUsShort,"/"),dateTimeUsShortAmPm:Mn(M.dateTimeUsShortAmPm,"/"),dateTimeUsShortAM_PM:Mn(M.dateTimeUsShortAM_PM,"/"),dateUsShort:Mn(M.dateUsShort,"/"),dateUtc:Mn(M.dateUtc,"-"),decimal:(i,e,t,n,r,s)=>{const{minDecimal:a,maxDecimal:d,numberPrefix:h,numberSuffix:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(n,s,"decimal","cell");return pt(t)?wn(t,a,d,y,h,p,g,v):t},dollar:(i,e,t,n,r,s)=>{const{minDecimal:a,maxDecimal:d,decimalSeparator:h,thousandSeparator:p,wrapNegativeNumber:g}=Tn(n,s,"currency","cell");return pt(t)?wn(t,a,d,g,"$","",h,p):t},dollarColored:(i,e,t,n,r,s)=>{const{minDecimal:a,maxDecimal:d,decimalSeparator:h,thousandSeparator:p,wrapNegativeNumber:g}=Tn(n,s,"currency","cell");if(pt(t)){const v=t>=0?"green":"red",C=O("span",{ariaHidden:"true",textContent:wn(t,a,d,g,"$","",h,p)});return C.style.color=v,C}return t},dollarColoredBold:(i,e,t,n,r,s)=>{const{minDecimal:a,maxDecimal:d,decimalSeparator:h,thousandSeparator:p,wrapNegativeNumber:g}=Tn(n,s,"currency","cell");if(pt(t)){const v=t>=0?"green":"red",C=O("span",{ariaHidden:"true",textContent:wn(t,a,d,g,"$","",h,p)});return C.style.color=v,C.style.fontWeight="bold",C}return t},hyperlink:(i,e,t,n,r,s)=>{const a=n&&n.params||{};let d=a.hyperlinkText?a.hyperlinkText:t;d=s.sanitizeHtmlString(d);let h=a.hyperlinkUrl?a.hyperlinkUrl:t;h=s.sanitizeHtmlString(h);const p=h.match(/^(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?/i);if(p&&Array.isArray(p)&&p.length>0){return O("a",{href:p[0],textContent:d})}return t},icon:(i,e,t,n)=>{const r=n?.params??{},s=r.iconCssClass||r.icon||r.formatterIcon;if(!s)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 O("i",{className:s,ariaHidden:"true",title:r.title||null})},iconBoolean:(i,e,t,n)=>{const s=(n?.params||{}).cssClass;if(!s)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 a=!1;const d=!isNaN(t);return(!0===t||d&&parseFloat(t)>0||!d&&"string"==typeof t&&"false"!==t.toLowerCase()&&"0"!==t)&&(a=!0),a?O("i",{className:s,ariaHidden:"true"}):""},mask:(i,e,t,n,r,s)=>{const d=(n.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(t){let h=0;const p=t.toString(),v=(s.getOptions()||{})?.preventDocumentFragmentUsage?document.createElement("span"):new DocumentFragment;return v.textContent=d.replace(/[09A]/gi,()=>p[h++]||""),v}return t},multiple:bT,percent:(i,e,t,n,r,s)=>{const{minDecimal:a,maxDecimal:d,decimalSeparator:h,thousandSeparator:p,wrapNegativeNumber:g}=Tn(n,s,"percent","cell");if(pt(t)){return wn(100*t,a,d,g,"","%",h,p)}return t},percentComplete:(i,e,t,n,r,s)=>{const{minDecimal:a,maxDecimal:d,decimalSeparator:h,thousandSeparator:p,wrapNegativeNumber:g}=Tn(n,s,"percent","cell");if(pt(t)){const v=t<50?"red":"green",y=wn(t,a,d,g,"","%",h,p);return O("span",{textContent:t>100?"100%":y,style:{color:v}})}return t},percentCompleteBar:(i,e,t)=>{if(!pt(t))return"";let n="",r=parseFloat(t);return r>100&&(r=100),n=r<30?"red":r<70?"silver":"green",O("span",{className:"percent-complete-bar",title:`${r}%`,style:{background:n,width:`${r}%`}})},percentCompleteBarWithText:(i,e,t)=>{if(!pt(t))return"";let n="",r=parseFloat(t);return r>100&&(r=100),n=r<30?"red":r<70?"silver":"green",O("div",{className:"percent-complete-bar-with-text",title:`${r}%`,textContent:`${r}%`,style:{background:n,width:`${r}%`}})},percentSymbol:(i,e,t,n,r,s)=>{const{minDecimal:a,maxDecimal:d,decimalSeparator:h,thousandSeparator:p,wrapNegativeNumber:g}=Tn(n,s,"percent","cell");return pt(t)?wn(t,a,d,g,"","%",h,p):t},progressBar:(i,e,t)=>{if(!pt(t))return"";let n="",r=parseFloat(t);r>100&&(r=100),n=r<30?"danger":r<70?"warning":"success";const s=O("div",{className:"progress"});return s.appendChild(O("div",{className:`progress-bar progress-bar-${n} bg-${n}`,role:"progressbar",ariaValueNow:String(r),ariaValueMin:"0",ariaValueMax:"100",textContent:`${r}%`,style:{minWidth:"2em",width:`${r}%`}})),s},translate:(i,e,t,n,r,s)=>{const d=(s?.getOptions()??{}).translater||n&&n.params&&n.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!=t&&"string"!=typeof t&&(t+=""),t?d.translate(t):""},translateBoolean:(i,e,t,n,r,s)=>{const d=(s?.getOptions()??{}).translater||n&&n.params&&n.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!=t&&"string"!=typeof t&&(t+=""),t?d.translate(t.toUpperCase()):""},tree:(i,e,t,n,r,s)=>{const a=s.getOptions(),d=a?.treeDataOptions,h=d?.indentMarginLeft??15,p=d?.collapsedPropName??oe.treeDataProperties.COLLAPSED_PROP,g=d?.hasChildrenPropName??oe.treeDataProperties.HAS_CHILDREN_PROP,v=d?.levelPropName??oe.treeDataProperties.TREE_LEVEL_PROP;let y=t;if(y=M_(n,r,t),null==y||void 0===r)return"";if(!r.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 C=r?.[v]??0,k=document.createElement("span");k.style.display="inline-block",k.style.width=h*C+"px";const E=`slick-tree-level-${C}`;let x="";r[g]&&(x=r?.[p]?"collapsed":"expanded"),d?.titleFormatter&&(y=yT(d.titleFormatter,i,e,n,r,s));const D=O("div",{className:`slick-group-toggle ${x}`.trim(),ariaExpanded:String("expanded"===x)}),I=O("span",{className:"slick-tree-title"});s.applyHtmlCode(I,y),I.setAttribute("level",C);const L=a?.preventDocumentFragmentUsage?document.createElement("span"):new DocumentFragment;return L.appendChild(k),L.appendChild(D),L.appendChild(I),{addClasses:E,html:L}},treeParseTotals:(i,e,t,n,r,s)=>{const d=s.getOptions()?.treeDataOptions?.hasChildrenPropName??oe.treeDataProperties.HAS_CHILDREN_PROP,{groupTotalsFormatter:h,treeTotalsFormatter:p,params:g}=n;if(!h&&!p)throw new Error('[Slickgrid-Universal] When using Formatters.treeParseTotals, you must provide a total formatter via "groupTotalsFormatter" or "treeTotalsFormatter".');if(r[d]&&r?.__treeTotals&&(h||p))return(p??h)(r?.__treeTotals,n,s);if(g.formatters){let v=t;for(const y of g.formatters)!r[d]&&!r?.__treeTotals&&"function"==typeof y&&(v=y(i,e,v,n,r,s)||t);return v}return t},treeExport:(i,e,t,n,r,s)=>{const a=s.getOptions(),d=a?.treeDataOptions,h=d?.collapsedPropName??oe.treeDataProperties.COLLAPSED_PROP,p=d?.hasChildrenPropName??oe.treeDataProperties.HAS_CHILDREN_PROP,g=d?.levelPropName??oe.treeDataProperties.TREE_LEVEL_PROP,v=d?.exportIndentMarginLeft??5,y=d?.exportIndentationLeadingChar??".",C=d?.exportIndentationLeadingSpaceCount??3,k=a?.excelExportOptions?.groupCollapsedSymbol??"\u2b9e",E=a?.excelExportOptions?.groupExpandedSymbol??"\u2b9f";let x=t;if(x=M_(n,r,t),null==x||void 0===r)return"";if(!r.hasOwnProperty(g))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 S=r?.[g]??0;let D="",I=0;r[p]?(D=r?.[h]?k:E,I=0===S?0:v*S):I=v*(0===S?0:S+1);const L=ey(I);return d?.titleFormatter&&(x=yT(d.titleFormatter,i,e,n,r,s)),x=`${0===S&&D?"":0===S?`${y}${ey(C)}`:y}${L}${D} ${x}`,_n(x)}},St={avgTotals:(i,e,t)=>{const n=e.field??"";let r=i.avg?.[n];const s=e?.params;let a=s?.groupFormatterPrefix||"";const d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"regular","group");if(pt(r)){if(r<0){if(r=Math.abs(r),y){if(isNaN(h)&&isNaN(p)){return`${a}(${nh(Math.round(r),v)})${d}`}return`${a}(${_c(r,h,p,g,v)})${d}`}a+="-"}if(isNaN(h)&&isNaN(p)){return`${a}${nh(Math.round(r),v)}${d}`}return`${a}${_c(r,h,p,g,v)}${d}`}return""},avgTotalsCurrency:(i,e,t)=>{const n=e.field??"",r=i.avg?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",h=s?.groupFormatterCurrencyPrefix||"",p=s?.groupFormatterCurrencySuffix||"",{minDecimal:g,maxDecimal:v,decimalSeparator:y,thousandSeparator:C,wrapNegativeNumber:k}=Tn(e,t,"currency","group");if(pt(r)){return`${a}${wn(r,g,v,k,h,p,y,C)}${d}`}return""},avgTotalsDollar:(i,e,t)=>{const n=e.field??"",r=i.avg?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"currency","group");if(pt(r)){return`${a}${wn(r,h,p,y,"$","",g,v)}${d}`}return""},avgTotalsPercentage:(i,e,t)=>{const n=e.field??"";let r=i.avg?.[n];const s=e?.params;let a=s?.groupFormatterPrefix||"";const d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"percent","group");if(pt(r)){if(r<0){if(r=Math.abs(r),y){if(isNaN(h)&&isNaN(p)){return`${a}(${nh(Math.round(r),v)}%)${d}`}return`${a}(${_c(r,h,p,g,v)}%)${d}`}a+="-"}if(isNaN(h)&&isNaN(p)){return`${a}${nh(Math.round(r),v)}%${d}`}return`${a}${_c(r,h,p,g,v)}%${d}`}return""},maxTotals:(i,e,t)=>{const n=e.field??"",r=i.max?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"regular","group");if(pt(r)){return`${a}${wn(r,h,p,y,"","",g,v)}${d}`}return""},minTotals:(i,e,t)=>{const n=e.field??"",r=i.min?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"regular","group");if(pt(r)){return`${a}${wn(r,h,p,y,"","",g,v)}${d}`}return""},sumTotals:(i,e,t)=>{const n=e.field??"",r=i.sum?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"regular","group");if(pt(r)){return`${a}${wn(r,h,p,y,"","",g,v)}${d}`}return""},sumTotalsBold:(i,e,t)=>{const n=e.field??"",r=i.sum?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"regular","group");if(pt(r)){return O("span",{style:{fontWeight:"bold"},textContent:`${a}${wn(r,h,p,y,"","",g,v)}${d}`})}return""},sumTotalsColored:(i,e,t)=>{const n=e.field??"",r=i.sum?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"regular","group");if(pt(r)){return O("span",{style:{color:r>=0?"green":"red"},textContent:`${a}${wn(r,h,p,y,"","",g,v)}${d}`})}return""},sumTotalsCurrency:(i,e,t)=>{const n=e.field??"",r=i.sum?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",h=s?.groupFormatterCurrencyPrefix||"",p=s?.groupFormatterCurrencySuffix||"",{minDecimal:g,maxDecimal:v,decimalSeparator:y,thousandSeparator:C,wrapNegativeNumber:k}=Tn(e,t,"currency","group");if(pt(r)){return`${a}${wn(r,g,v,k,h,p,y,C)}${d}`}return""},sumTotalsCurrencyColored:(i,e,t)=>{const n=e.field??"",r=i.sum?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",h=s?.groupFormatterCurrencyPrefix||"",p=s?.groupFormatterCurrencySuffix||"",{minDecimal:g,maxDecimal:v,decimalSeparator:y,thousandSeparator:C,wrapNegativeNumber:k}=Tn(e,t,"currency","group");if(pt(r)){return O("span",{style:{color:r>=0?"green":"red"},textContent:`${a}${wn(r,g,v,k,h,p,y,C)}${d}`})}return""},sumTotalsDollar:(i,e,t)=>{const n=e.field??"",r=i.sum?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"currency","group");if(pt(r)){return`${a}${wn(r,h,p,y,"$","",g,v)}${d}`}return""},sumTotalsDollarBold:(i,e,t)=>{const n=e.field??"",r=i.sum?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"currency","group");if(pt(r)){return O("span",{style:{fontWeight:"bold"},textContent:`${a}${wn(r,h,p,y,"$","",g,v)}${d}`})}return""},sumTotalsDollarColored:(i,e,t)=>{const n=e.field??"",r=i.sum?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"currency","group");if(pt(r)){return O("span",{style:{color:r>=0?"green":"red"},textContent:`${a}${wn(r,h,p,y,"$","",g,v)}${d}`})}return""},sumTotalsDollarColoredBold:(i,e,t)=>{const n=e.field??"",r=i.sum?.[n],s=e?.params,a=s?.groupFormatterPrefix||"",d=s?.groupFormatterSuffix||"",{minDecimal:h,maxDecimal:p,decimalSeparator:g,thousandSeparator:v,wrapNegativeNumber:y}=Tn(e,t,"currency","group");if(pt(r)){return O("span",{style:{color:r>=0?"green":"red",fontWeight:"bold"},textContent:`${a}${wn(r,h,p,y,"$","",g,v)}${d}`})}return""}};class Dhe{constructor(){this.options=Pue}}let Jo=class{vcr;constructor(e){this.vcr=e}createInteractiveAngularComponent(e,t,n,r){const s=this.vcr.createComponent(e,r);s?.instance&&n&&Object.assign(s.instance,n);let a=null;const d=s.hostView;return d&&Array.isArray(d.rootNodes)&&d.rootNodes[0]&&(a=d.rootNodes[0],t&&a&&t.replaceChildren(s.location.nativeElement)),{componentRef:s,domElement:a}}createAngularComponent(e,t,n,r){const s=this.vcr.createComponent(e,r);s?.instance&&n&&(Object.assign(s.instance,n),s.changeDetectorRef.detectChanges());let a=null;const d=s.hostView;return d&&Array.isArray(d.rootNodes)&&d.rootNodes[0]&&(a=d.rootNodes[0],t&&a&&(t.innerHTML=a.innerHTML)),{componentRef:s,domElement:a}}createAngularComponentAppendToDom(e,t,n,r){const s=this.createAngularComponent(e,t,n,r);return t?.replaceChildren?t.replaceChildren(s.domElement):document.body.appendChild(s.domElement),s}static ctorParameters=()=>[{type:wo}]};Jo=Oe([uu(),Xt("design:paramtypes",[wo])],Jo);let oE=class{dependencies=[];get(e){const t=this.dependencies.find(n=>n.key===e);return t?.instance?t.instance:null}dispose(){this.dependencies=[]}registerInstance(e,t){this.dependencies.some(r=>r.key===e)||this.dependencies.push({key:e,instance:t})}};oE=Oe([uu()],oE);let sE=class{translateService;constructor(e){this.translateService=e}getCurrentLanguage(){return this.translateService?.currentLang??""}use(e){var t=this;return yn(function*(){return t.translateService?.use?.(e)})()}translate(e){return this.translateService?.instant?.(e||" ")}static ctorParameters=()=>[{type:zt,decorators:[{type:Rs}]}]};function Td(i){if(Array.isArray(i)){let e=i.pop();for(;e;)"function"==typeof e.unsubscribe&&e.unsubscribe(),e=i.pop()}return i}sE=Oe([uu(),Xt("design:paramtypes",[zt])],sE);class Ahe{constructor(e){this.pubSubService=e,this.pluginName="RowDetailView",this._dataViewIdProperty="id",this._expandableOverride=null,this._expandedRows=new Set,this._gridRowBuffer=0,this._gridUid="",this._keyPrefix="",this._lastRange=null,this._outsideRange=5,this._rowIdsOutOfViewport=new Set,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 Pi,this.onAsyncEndUpdate=new me("onAsyncEndUpdate"),this.onAsyncResponse=new me("onAsyncResponse"),this.onAfterRowDetailToggle=new me("onAfterRowDetailToggle"),this.onBeforeRowDetailToggle=new me("onBeforeRowDetailToggle"),this.onRowBackToViewportRange=new me("onRowBackToViewportRange"),this.onRowOutOfViewportRange=new me("onRowOutOfViewportRange")}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=new Set(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=en(!0,{},this._defaults,this.gridOptions.rowDetailView)),this._keyPrefix=this._addonOptions?.keyPrefix||"_",U.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.clear(),this._rowIdsOutOfViewport.clear()),this._eventHandler.subscribe(this.dataView.onRowCountChanged,()=>{this._grid.updateRowCount(),this._grid.render()}),this._eventHandler.subscribe(this.dataView.onRowsChanged,(t,n)=>{this._grid.invalidateRows(n.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,(t,n)=>{n?.endRow&&(this._visibleRenderedCellCount=n.endRow-n.startRow)})}dispose(){this._eventHandler?.unsubscribeAll(),this._expandedRows.clear(),this._rowIdsOutOfViewport.clear()}create(e,t){if(!t.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=en(!0,{},this._defaults,t.rowDetailView),"function"==typeof this._addonOptions.expandableOverride&&this.expandableOverride(this._addonOptions.expandableOverride),Array.isArray(e)&&t){const n=this.getColumnDefinition();if(!e.some(r=>r.id===n.id)){const s=Array.isArray(e)&&e.find(d=>"selectAndMove"===d?.behavior)||n,a=t?.rowDetailView?.columnIndexPosition??0;a>0?e.splice(a,0,s):e.unshift(s),this.pubSubService.publish("onPluginColumnsChanged",{columns:e,pluginName:this.pluginName})}}return this}getOptions(){return this._addonOptions}setOptions(e){this._addonOptions=en(!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,t=!1){t||this.dataView.beginUpdate(),this._addonOptions.loadOnce&&this.saveDetailView(e),e[`${this._keyPrefix}collapsed`]=!0;for(let n=1;n<=e[`${this._keyPrefix}sizePadding`];n++)this.dataView.deleteItem(`${e[this._dataViewIdProperty]}.${n}`);e[`${this._keyPrefix}sizePadding`]=0,this.dataView.updateItem(e[this._dataViewIdProperty],e),this._expandedRows=new Set(Array.from(this._expandedRows).filter(n=>n[this._dataViewIdProperty]!==e[this._dataViewIdProperty])),t||this.dataView.endUpdate()}expandDetailView(e){if(this._addonOptions?.singleRowExpand&&this.collapseAll(),e[`${this._keyPrefix}collapsed`]=!1,this._expandedRows.add(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 t=document.querySelector(`.${this.gridUid} .innerDetailView_${e[this._dataViewIdProperty]}`);if(t){const n=t.innerHTML;void 0!==n&&(e[`${this._keyPrefix}detailContent`]=n)}}handleOnAsyncResponse(e,t){if(!t||!t.item&&!t.itemDetail)return void console.error('SlickRowDetailView plugin requires the onAsyncResponse() to supply "args.item" property.');const n=t.item||t.itemDetail;n[`${this._keyPrefix}detailContent`]=t.detailView??this._addonOptions?.postTemplate?.(n),n[`${this._keyPrefix}detailViewLoaded`]=!0,this.dataView.updateItem(n[this._dataViewIdProperty],n),this.onAsyncEndUpdate.notify({grid:this._grid,item:n,itemDetail:n},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 Array.from(this._expandedRows)}getOutOfViewportRows(){return Array.from(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 t=document.querySelector(`.${this.gridUid} .detailViewContainer_${e[this._dataViewIdProperty]}`),n=document.querySelector(`.${this.gridUid} .cellDetailView_${e[this._dataViewIdProperty]}`),r=document.querySelector(`.${this.gridUid} .innerDetailView_${e[this._dataViewIdProperty]}`);if(!t||!n||!r)return;for(let v=1;v<=e[`${this._keyPrefix}sizePadding`];v++)this.dataView.deleteItem(`${e[this._dataViewIdProperty]}.${v}`);const s=this.gridOptions.rowHeight;t.style.minHeight="";const d=t.scrollHeight,h=Math.ceil(d/s);e[`${this._keyPrefix}sizePadding`]=Math.ceil(2*h*13/s),e[`${this._keyPrefix}height`]=d;let p=e[`${this._keyPrefix}sizePadding`]*s;void 0!==this._addonOptions.maxRows&&e[`${this._keyPrefix}sizePadding`]>this._addonOptions.maxRows&&(p=this._addonOptions.maxRows*s,e[`${this._keyPrefix}sizePadding`]=this._addonOptions.maxRows),this.gridOptions.minRowBuffert.top||0===this._lastRange.top&&0===t.top&&this._lastRange.bottom>t.bottom)&&(e="UP")}this._expandedRows.forEach(n=>{const r=this.dataView.getRowById(n[this._dataViewIdProperty]),s=n[`${this._keyPrefix}sizePadding`],a=this._rowIdsOutOfViewport.has(n[this._dataViewIdProperty]);"UP"===e?(this._addonOptions.saveDetailViewOnScroll&&r>=t.bottom-this._gridRowBuffer&&this.saveDetailView(n),a&&r-this._outsideRange=t.top?this.notifyBackToViewportWhenDomExist(n,n[this._dataViewIdProperty]):!a&&r+s>t.bottom&&this.notifyOutOfViewport(n,n[this._dataViewIdProperty])):"DOWN"===e&&(this._addonOptions.saveDetailViewOnScroll&&r<=t.top+this._gridRowBuffer&&this.saveDetailView(n),a&&r+s+this._outsideRange>t.bottom&&r{const n=this.dataView.getRowById(t[this._dataViewIdProperty]),r=this.checkIsRowOutOfViewportRange(n,e);!r&&this._rowIdsOutOfViewport.has(t[this._dataViewIdProperty])?this.notifyBackToViewportWhenDomExist(t,t[this._dataViewIdProperty]):r&&this.notifyOutOfViewport(t,t[this._dataViewIdProperty])})}}checkExpandableOverride(e,t,n){return"function"!=typeof this._expandableOverride||this._expandableOverride(e,t,n)}checkIsRowOutOfViewportRange(e,t){return Math.abs(t.bottom-this._gridRowBuffer-e)>2*this._visibleRenderedCellCount}getPaddingItem(e,t){const n={};return Object.keys(this.dataView).forEach(r=>{r&&(n[r]=null)}),n[this._dataViewIdProperty]=`${e[this._dataViewIdProperty]}.${t}`,n[`${this._keyPrefix}collapsed`]=!0,n[`${this._keyPrefix}isPadding`]=!0,n[`${this._keyPrefix}parent`]=e,n[`${this._keyPrefix}offset`]=t,n}detailSelectionFormatter(e,t,n,r,s,a){if(!this.checkExpandableOverride(e,s,a))return"";if(void 0===s[`${this._keyPrefix}collapsed`]&&(s[`${this._keyPrefix}collapsed`]=!0,s[`${this._keyPrefix}sizePadding`]=0,s[`${this._keyPrefix}height`]=0,s[`${this._keyPrefix}isPadding`]=!1,s[`${this._keyPrefix}parent`]=void 0,s[`${this._keyPrefix}offset`]=0),!s[`${this._keyPrefix}isPadding`]){if(s[`${this._keyPrefix}collapsed`]){let d=`${this._addonOptions.cssClass||""} expand `;return this._addonOptions.collapsedClass&&(d+=this._addonOptions.collapsedClass),O("div",{className:Oi(d).join(" ")})}{const d=this.gridOptions.rowHeight||0;let h=(s[`${this._keyPrefix}sizePadding`]||0)*this.gridOptions.rowHeight;null!==this._addonOptions.maxRows&&(s[`${this._keyPrefix}sizePadding`]||0)>this._addonOptions.maxRows&&(h=this._addonOptions.maxRows*d,s[`${this._keyPrefix}sizePadding`]=this._addonOptions.maxRows);let p=`${this._addonOptions.cssClass||""} collapse `;this._addonOptions.expandedClass&&(p+=this._addonOptions.expandedClass);const g=O("div",{className:`dynamic-cell-detail cellDetailView_${s[this._dataViewIdProperty]}`,style:{height:`${h}px`,top:`${d}px`}}),v=O("div",{className:`detail-container detailViewContainer_${s[this._dataViewIdProperty]}`}),y=O("div",{className:`innerDetailView_${s[this._dataViewIdProperty]}`});return s[`${this._keyPrefix}detailContent`]instanceof HTMLElement?y.appendChild(s[`${this._keyPrefix}detailContent`]):y.innerHTML=this._grid.sanitizeHtmlString(s[`${this._keyPrefix}detailContent`]),v.appendChild(y),g.appendChild(v),{html:O("div",{className:Oi(p).join(" ")}),insertElementAfterTarget:g}}}return""}handleAccordionShowHide(e){e&&(e[`${this._keyPrefix}collapsed`]?this.expandDetailView(e):this.collapseDetailView(e))}handleClick(e,t){const n=this._grid.getDataItem(t.row);if(this.checkExpandableOverride(t.row,n,this._grid)){const r=this._grid.getColumns()[t.cell];if(this._addonOptions.useRowClick||r.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:n},e,this,!0).getReturnValue())return;this.toggleRowSelection(t.row,n),this.onAfterRowDetailToggle.notify({grid:this._grid,item:n,expandedRows:Array.from(this._expandedRows)},e,this),e.stopPropagation(),e.stopImmediatePropagation()}}}handleScroll(){this._addonOptions.useSimpleViewportCalc?this.calculateOutOfRangeViewsSimplerVersion():this.calculateOutOfRangeViews()}notifyOutOfViewport(e,t){const n=e.rowIndex||this.dataView.getRowById(e[this._dataViewIdProperty]);this.onRowOutOfViewportRange.notify({grid:this._grid,item:e,rowId:t,rowIndex:n,expandedRows:Array.from(this._expandedRows),rowIdsOutOfViewport:Array.from(this.syncOutOfViewportArray(t,!0))},null,this)}notifyBackToViewportWhenDomExist(e,t){const n=e.rowIndex||this.dataView.getRowById(e[this._dataViewIdProperty]);window.setTimeout(()=>{document.querySelector(`.${this.gridUid} .cellDetailView_${e[this._dataViewIdProperty]}`)&&this.onRowBackToViewportRange.notify({grid:this._grid,item:e,rowId:t,rowIndex:n,expandedRows:Array.from(this._expandedRows),rowIdsOutOfViewport:Array.from(this.syncOutOfViewportArray(t,!1))},null,this)},100)}syncOutOfViewportArray(e,t){const n=this._rowIdsOutOfViewport.has(e);return t&&!n?this._rowIdsOutOfViewport.add(e):!t&&n&&this._rowIdsOutOfViewport.delete(e),this._rowIdsOutOfViewport}toggleRowSelection(e,t){this.checkExpandableOverride(e,t,this._grid)&&(this.dataView.beginUpdate(),this.handleAccordionShowHide(t),this.dataView.endUpdate())}}const N9="container_",oj="container_loading";class The extends Ahe{angularUtilService;appRef;eventPubSubService;gridContainerElement;rxjs;rowDetailContainer;_preloadComponent;_views=[];_viewComponent;_subscriptions=[];_userProcessFn;constructor(e,t,n,r,s){super(n),this.angularUtilService=e,this.appRef=t,this.eventPubSubService=n,this.gridContainerElement=r,this.rxjs=s}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=O_(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=t=>this.onProcessing(t),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=t=>this._grid.sanitizeHtmlString(`
`)),(!e||!this._grid.getSelectionModel())&&(e=new fT(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,(t,n)=>{this.rowDetailViewOptions&&"function"==typeof this.rowDetailViewOptions.onAsyncResponse&&this.rowDetailViewOptions.onAsyncResponse(t,n)}),this.onAsyncEndUpdate&&this.eventHandler.subscribe(this.onAsyncEndUpdate,(t,n)=>{this.renderViewModel(n?.item),this.rowDetailViewOptions&&"function"==typeof this.rowDetailViewOptions.onAsyncEndUpdate&&this.rowDetailViewOptions.onAsyncEndUpdate(t,n)}),this.onAfterRowDetailToggle&&this.eventHandler.subscribe(this.onAfterRowDetailToggle,(t,n)=>{this.renderPreloadView(),this.renderAllViewComponents(),this.rowDetailViewOptions&&"function"==typeof this.rowDetailViewOptions.onAfterRowDetailToggle&&this.rowDetailViewOptions.onAfterRowDetailToggle(t,n)}),this.onBeforeRowDetailToggle&&this.eventHandler.subscribe(this.onBeforeRowDetailToggle,(t,n)=>(this.handleOnBeforeRowDetailToggle(t,n),!this.rowDetailViewOptions||"function"!=typeof this.rowDetailViewOptions.onBeforeRowDetailToggle||this.rowDetailViewOptions.onBeforeRowDetailToggle(t,n))),this.onRowBackToViewportRange&&this.eventHandler.subscribe(this.onRowBackToViewportRange,(t,n)=>{this.handleOnRowBackToViewportRange(t,n),this.rowDetailViewOptions&&"function"==typeof this.rowDetailViewOptions.onRowBackToViewportRange&&this.rowDetailViewOptions.onRowBackToViewportRange(t,n)}),this.onRowOutOfViewportRange&&this.eventHandler.subscribe(this.onRowOutOfViewportRange,(t,n)=>{this.rowDetailViewOptions&&"function"==typeof this.rowDetailViewOptions.onRowOutOfViewportRange&&this.rowDetailViewOptions.onRowOutOfViewportRange(t,n)}),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","onGridMenuColumnsChanged","onColumnPickerColumnsChanged"],this.redrawAllViewComponents.bind(this)),this.eventPubSubService?.subscribe(["onGridMenuClearAllFilters","onGridMenuClearAllSorting"],()=>window.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(`${N9}${e.id}`)?.length>=0&&this.renderViewModel(e.dataContext)}renderPreloadView(){const e=this.gridContainerElement.getElementsByClassName(`${oj}`);this._preloadComponent&&e?.length>=0&&this.angularUtilService.createAngularComponentAppendToDom(this._preloadComponent,e[e.length-1])}renderViewModel(e){const t=this.gridContainerElement.getElementsByClassName(`${N9}${e[this.datasetIdPropName]}`);if(this._viewComponent&&t?.length>0){const n=this.angularUtilService.createAngularComponentAppendToDom(this._viewComponent,t[t.length-1],{model:e,addon:this,grid:this._grid,dataView:this.dataView,parent:this.rowDetailViewOptions?.parent});if(n?.componentRef){const r=this._views.find(s=>s.id===e[this.datasetIdPropName]);return r&&(r.componentRef=n.componentRef),r}}}disposeViewComponent(e){const t=e?.componentRef;if(t)return this.appRef.detachView(t.hostView),t?.destroy&&t.destroy(),e}notifyTemplate(e){this.onAsyncResponse&&this.onAsyncResponse.notify({item:e,itemDetail:e},void 0,this)}onProcessing(e){var t=this;return yn(function*(){if(e&&"function"==typeof t._userProcessFn){let n;const s=yield t._userProcessFn(e);if(t.datasetIdPropName in s?n=s:(s&&s instanceof ci||s instanceof Promise)&&(n=yield y6(t.rxjs,s)),!n||!(t.datasetIdPropName in n))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 "${t.datasetIdPropName}" property`);t.notifyTemplate(n||{})}})()}handleOnBeforeRowDetailToggle(e,t){if(t?.item?.__collapsed){const n={id:t.item[this.datasetIdPropName],dataContext:t.item},r=this.gridOptions.datasetIdPropertyName||"id";j$(this._views,n,r)}else{const n=this._views.findIndex(r=>r.id===t.item[this.datasetIdPropName]);if(n>=0&&n in this._views){const r=this._views[n].componentRef;r&&(this.appRef.detachView(r.hostView),r.destroy()),this._views.splice(n,1)}}}handleOnRowBackToViewportRange(e,t){t?.item&&this.redrawAllViewComponents()}}const B9={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:sj},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:ee.input,defaultBackendServiceFilterTypingDebounce:500,defaultColumnSortFieldId:"id",defaultFilterPlaceholder:"\u{1f50e}\ufe0e",defaultFilterRangeOperator:te.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:xl.camelCase,explicitInitialization:!0,excelExportOptions:{addGroupIndentation:!0,exportWithFormatter:!1,filename:"export",format:Ii.xlsx,groupingColumnHeaderTitle:"Group By",groupCollapsedSymbol:"\u2b9e",groupExpandedSymbol:"\u2b9f",groupingAggregatorRowText:"",sanitizeDataExport:!1},textExportOptions:{delimiter:kc.comma,exportWithFormatter:!1,filename:"export",format:Ii.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:sj},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 sj(i,e){let t=i?.columnPickerLabel??i?.name??"";(t instanceof HTMLElement||t instanceof DocumentFragment)&&(t=t.textContent||"");const n=i?.columnGroup||"";return n?n+(e?.columnGroupSeparator??" - ")+t:t}class Ihe{constructor(){this._isPreviouslyShown=!1,this._warningLeftElement=null,this._warningRightElement=null}get gridOptions(){return this._grid?.getOptions()??{}}init(e,t){this._grid=e,this._translaterService=t.get("TranslaterService")}dispose(){this._warningLeftElement?.remove(),this._warningRightElement?.remove(),this._warningLeftElement=null,this._warningRightElement=null}showEmptyDataMessage(e=!0,t){if(!this._grid||!this.gridOptions||this._isPreviouslyShown===e)return!1;this._isPreviouslyShown=e;const n=this._grid.getUID(),s={message:"No data to display.",...this.gridOptions.emptyDataWarning,...t},a=s?.className??"slick-empty-data-warning";this._warningLeftElement=document.querySelector(`.${n} .${a}`);const d=document.querySelector(`.${n} .grid-canvas.grid-canvas-left`),h=document.querySelector(`.${n} .grid-canvas.grid-canvas-right`),p=s.leftViewportMarginLeft??0,g=s.rightViewportMarginLeft??0,v=s.frozenLeftViewportMarginLeft??0,y=s.frozenRightViewportMarginLeft??0,C=void 0!==this.gridOptions?.frozenColumn&&this.gridOptions.frozenColumn>=0,k="string"==typeof p?p:`${p}px`,E="string"==typeof g?g:`${g}px`;if(this.gridOptions.autoHeight){const S=document.querySelector(`.${n} .slick-pane.slick-pane-top.slick-pane-left`);if(S&&S.style&&d&&d.style){const D=parseInt(S.style.height,10)||0,I=this.gridOptions?.rowHeight??0,L=this.gridOptions.enableFiltering?this.gridOptions?.headerRowHeight??0:0,R=this.gridOptions.createPreHeaderPanel?this.gridOptions?.preHeaderPanelHeight??0:0;if(e){let W=null!==D&&D<100?D:100;W+=L+R,S.style.minHeight=`${W}px`,d.style.minHeight=`${I}px`}}}let x=s.message;if(this.gridOptions.enableTranslate&&this._translaterService&&s?.messageKey&&(x=this._translaterService.translate(s.messageKey)),!this._warningLeftElement&&d&&h&&(this._warningLeftElement=document.createElement("div"),this._warningLeftElement.classList.add(...Oi(a)),this._warningLeftElement.classList.add("left"),this._grid.applyHtmlCode(this._warningLeftElement,x),this._warningRightElement=this._warningLeftElement.cloneNode(!0),this._warningRightElement.classList.add("right"),h.appendChild(this._warningRightElement),d.appendChild(this._warningLeftElement)),this._warningLeftElement){let S=e?"flex":"none";C&&e&&(S=s.hideFrozenLeftWarning?"none":"flex"),this._warningLeftElement.style.display=S;const D="string"==typeof v?v:`${v}px`;this._warningLeftElement.style.marginLeft=C?D:k}if(this._warningRightElement){let S=e?"flex":"none";C&&e&&(S=s.hideFrozenRightWarning?"none":"flex"),this._warningRightElement.style.display=S;const D="string"==typeof y?y:`${y}px`;this._warningRightElement.style.marginLeft=C?D:E}return e}}class Lhe{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 t of this._elementBindings)t?.element&&t?.attribute&&(t.element[t.attribute]=e)}bind(e,t,n,r){return e&&e.forEach?e.forEach(s=>this.bindSingleElement(s,t,n,r)):e&&this.bindSingleElement(e,t,n,r),this}unbind(e,t,n,r,s){if(e){e.removeEventListener(t,n,r);const a=this._boundedEventWithListeners.findIndex(d=>d.uid===s);a>=0&&this._boundedEventWithListeners.splice(a,1)}}unbindAll(){let e=this._boundedEventWithListeners.pop();for(;e;){const{element:t,eventName:n,listener:r,uid:s}=e;this.unbind(t,n,r,void 0,s),e=this._boundedEventWithListeners.pop()}this._boundedEventWithListeners=[]}bindSingleElement(e,t,n,r){const s={element:e,attribute:t};if(e){if(n){const a=()=>{let d=e[t];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 r)return r(this.valueGetter())};s.event=n,s.listener=a,e.addEventListener(n,a),this._boundedEventWithListeners.push({element:e,eventName:n,listener:a,uid:this.generateUuidV4()})}this._elementBindings.push(s),e[t]=this._value}}generateUuidV4(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}hasData(e){return null!=e&&""!==e}}class aj{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,t,n,r,s,a){const d=document.querySelectorAll(`${this.querySelectorPrefix}${n}`);let h=this._observers.find(p=>p.property===e);h||(h=new Lhe({variable:e,property:t})),Array.isArray(s)?s.forEach(p=>h?.bind(d,r,p,a)):h?.bind(d,r,s,a),this._observers.push(h)}bindEventHandler(e,t,n,r){document.querySelectorAll(`${this.querySelectorPrefix}${e}`).forEach(a=>{a?.addEventListener&&a.addEventListener(t,n,r)})}setElementAttributeValue(e,t,n){document.querySelectorAll(`${this.querySelectorPrefix}${e}`).forEach(s=>{s.textContent="",s&&t in s&&(s[t]=n)})}}class Ohe{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??oe.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,t,n,r){if(this.grid=e,this.customFooterOptions=t,this.pubSubService=n,this.translaterService=r,this._enableTranslate=!1,this._isLeftFooterOriginallyEmpty=!0,this._isLeftFooterDisplayingSelectionRowCount=!1,this._isRightFooterOriginallyEmpty=!0,this._selectedRowCount=0,this._subscriptions=[],this._bindingHelper=new aj,this._bindingHelper.querySelectorPrefix=`.${this.gridUid} `,this._eventHandler=new Pi,this._enableTranslate=this.gridOptions?.enableTranslate??!1,this._isLeftFooterOriginallyEmpty=!this.gridOptions.customFooterOptions?.leftFooterText,this._isRightFooterOriginallyEmpty=!this.gridOptions.customFooterOptions?.rightFooterText,this.registerOnSelectedRowsChangedWhenEnabled(t),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 s=this.translaterService?.eventName??"onLanguageChange";this._subscriptions.push(this.pubSubService.subscribe(s,()=>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 t=e?.endTime?vr(e.endTime,this.customFooterOptions.dateFormat,"en-US"):"";this._bindingHelper.setElementAttributeValue("span.last-update-timestamp","textContent",t),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 t=e.substring(0,e.lastIndexOf("Key"));this.customFooterOptions.metricTexts[t]=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 t=O("div",{className:`slick-custom-footer ${this.gridUid}`,style:{width:"100%",height:`${this.customFooterOptions.footerHeight||20}px`}}),n=O("div",{className:`left-footer ${this.customFooterOptions.leftContainerClass}`});this.grid.applyHtmlCode(n,this.customFooterOptions.leftFooterText),t.appendChild(n),t.appendChild(this.createFooterRightContainer()),this._footerElement=t,e?.appendChild&&this._footerElement&&e.appendChild(this._footerElement)}createFooterRightContainer(){const e=O("div",{className:`right-footer ${this.customFooterOptions.rightContainerClass||""}`});if(this._isRightFooterOriginallyEmpty){if(!this.customFooterOptions.hideMetrics){e.classList.add("metrics");const t=O("span",{className:"timestamp"},e);if(!this.customFooterOptions.hideLastUpdateTimestamp){const n=this.createFooterLastUpdate();n&&t.appendChild(n)}e.appendChild(O("span",{className:"item-count",textContent:`${this.metrics?.itemCount??"0"}`})),this.customFooterOptions.hideTotalItemCount||(e.appendChild(document.createTextNode("\r\n")),e.appendChild(O("span",{className:"text-of",textContent:` ${this.customFooterOptions.metricTexts?.of??"of"} `})),e.appendChild(document.createTextNode("\r\n")),e.appendChild(O("span",{className:"total-count",textContent:`${this.metrics?.totalItemCount??"0"}`}))),e.appendChild(document.createTextNode("\r\n")),e.appendChild(O("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",t=this.metrics?.endTime?vr(this.metrics?.endTime,this.customFooterOptions.dateFormat,"en-US"):"",n=O("span");return n.appendChild(O("span",{className:"text-last-update",textContent:e})),n.appendChild(document.createTextNode("\r\n")),n.appendChild(O("span",{className:"last-update-timestamp",textContent:t})),n.appendChild(O("span",{className:"separator",textContent:` ${this.customFooterOptions.metricSeparator||""} `})),n}registerOnSelectedRowsChangedWhenEnabled(e){if((this.gridOptions.enableCheckboxSelector||this.gridOptions.enableRowSelection)&&e&&!e.hideRowSelectionCount&&this._isLeftFooterOriginallyEmpty){this._isLeftFooterDisplayingSelectionRowCount=!0;const n=e.metricTexts?.itemsSelected??this.locales?.TEXT_ITEMS_SELECTED??"TEXT_ITEMS_SELECTED";e.leftFooterText=`0 ${n}`,this._eventHandler.subscribe(this.grid.onSelectedRowsChanged,(r,s)=>{this._selectedRowCount=s.rows.length;const a=e.metricTexts?.itemsSelected??this.locales?.TEXT_ITEMS_SELECTED??"TEXT_ITEMS_SELECTED";this.leftFooterText=`${this._selectedRowCount} ${a}`})}}}class Rhe{constructor(){this._enableTranslate=!1,this._subscriptions=[],this.currentPagination={},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 aj,this._bindingEventService=new br}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 gridOptions(){return this._grid?.getOptions()??{}}get gridUid(){return this._grid?.getUID()||""}get locales(){return this.gridOptions?.locales??oe.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}init(e,t,n,r){if(this._grid=e,this._pubSubService=n,this._translaterService=r,this._paginationService=t,this.currentPagination=t.getFullPagination(),this._bindingHelper.querySelectorPrefix=this.gridUid?`.${this.gridUid} `:"",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 s=this._translaterService?.eventName??"onLanguageChange";this._subscriptions.push(this._pubSubService.subscribe(s,()=>this.translatePaginationTexts()))}this._subscriptions.push(this._pubSubService.subscribe("onPaginationRefreshed",s=>{Object.keys(s).forEach(a=>this.currentPagination[a]=s[a]),this.updatePageButtonsUsability(),this._spanInfoFromToElm?.style&&(this._spanInfoFromToElm.style.display=0===this.currentPagination.totalItems?"none":"")}),this._pubSubService.subscribe("onPaginationSetCursorBased",()=>{this.disposeDom(),this.renderPagination(this._gridContainerElm)}))}dispose(){this._pubSubService.unsubscribeAll(this._subscriptions),this.disposeDom()}disposeDom(){this._bindingEventService.unbindAll(),this._bindingHelper.dispose(),this._paginationElement.remove()}renderPagination(e){this._gridContainerElm=e;const t=this.createPaginationContainer(),n=O("div",{className:"slick-pagination-nav"}),r=O("nav",{ariaLabel:"Page navigation"}),s=O("ul",{className:"pagination"});this._seekFirstElm=O("li",{className:"page-item seek-first"},s),this._seekFirstElm.appendChild(O("a",{className:"page-link icon-seek-first",ariaLabel:"First Page",role:"button"})),this._seekPrevElm=O("li",{className:"page-item seek-prev"},s),this._seekPrevElm.appendChild(O("a",{className:"page-link icon-seek-prev",ariaLabel:"Previous Page",role:"button"})),r.appendChild(s);const a=this.createPageNumberSection(),d=O("nav",{ariaLabel:"Page navigation"}),h=O("ul",{className:"pagination"});this._seekNextElm=O("li",{className:"page-item seek-next"},h),this._seekNextElm.appendChild(O("a",{className:"page-link icon-seek-next",ariaLabel:"Next Page",role:"button"})),this._seekEndElm=O("li",{className:"page-item seek-end"},h),this._seekEndElm.appendChild(O("a",{className:"page-link icon-seek-end",ariaLabel:"Last Page",role:"button"})),d.appendChild(h),t.appendChild(n),n.appendChild(r),n.appendChild(a),n.appendChild(d);const p=this.createPaginationSettingsSection();t.appendChild(n),t.appendChild(p),this._paginationElement.appendChild(t),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(O("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=Fl(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=O("div",{id:"pager",className:`slick-pagination-container ${this.gridUid} pager`,style:{width:"100%"}}),t=O("div",{className:"slick-pagination"});return e.appendChild(t),this._paginationElement=e,t}createPageNumberSection(){const e=O("div",{className:"slick-page-number"});return O("span",{className:"text-page",textContent:"Page"},e),e.appendChild(document.createTextNode(" ")),this._paginationService.isCursorBased?O("span",{className:"page-number",ariaLabel:"Page Number",dataset:{test:"page-number-label"},textContent:"1"},e):O("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(" ")),O("span",{className:"text-of",textContent:"of"},e),e.appendChild(document.createTextNode(" ")),O("span",{className:"page-count",dataset:{test:"page-count"}},e),e}createPaginationSettingsSection(){const e=O("span",{className:"slick-pagination-settings"});this._itemPerPageElm=O("select",{id:"items-per-page-label",ariaLabel:"Items per Page",className:"items-per-page"},e),e.appendChild(document.createTextNode(" ")),O("span",{className:"text-item-per-page",textContent:"items per page"},e),e.appendChild(document.createTextNode(", "));const t=O("span",{className:"slick-pagination-count"},e);this._spanInfoFromToElm=O("span",{className:"page-info-from-to"},t),O("span",{className:"item-from",ariaLabel:"Page Item From",dataset:{test:"item-from"}},this._spanInfoFromToElm),this._spanInfoFromToElm.appendChild(document.createTextNode("-")),O("span",{className:"item-to",ariaLabel:"Page Item To",dataset:{test:"item-to"}},this._spanInfoFromToElm),this._spanInfoFromToElm.appendChild(document.createTextNode(" ")),O("span",{className:"text-of",textContent:"of"},this._spanInfoFromToElm),this._spanInfoFromToElm.appendChild(document.createTextNode(" "));const n=O("span",{className:"page-info-total-items"},t);return O("span",{className:"total-items",ariaLabel:"Total Items",dataset:{test:"total-items"}},n),n.appendChild(document.createTextNode(" ")),O("span",{className:"text-items",textContent:"items"},n),n.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 Bhe{constructor(){this.className="RxJsResource"}get EMPTY(){return wr}createObservable(){return new ci}createSubject(){return new mi}firstValueFrom(e){return function Phe(i,e){const t="object"==typeof e;return new Promise((n,r)=>{const s=new ca({next:a=>{n(a),s.unsubscribe()},error:r,complete:()=>{t?n(e.defaultValue):r(new ro)}});i.subscribe(s)})}(e)}iif(e,t,n){return function Nhe(i,e,t){return e_(()=>i()?e:t)}(e,t,n)}isObservable(e){return vd(e)}of(...e){return He(...e)}switchMap(e){return Js(e)}takeUntil(e){return dm(e)}}class Hhe{static 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 treeDataProperties={CHILDREN_PROP:"children",COLLAPSED_PROP:"__collapsed",HAS_CHILDREN_PROP:"__hasChildren",TREE_LEVEL_PROP:"__treeLevel",PARENT_PROP:"__parentId"};static VALIDATION_REQUIRED_FIELD="Field is required";static VALIDATION_EDITOR_VALID_NUMBER="Please enter a valid number";static VALIDATION_EDITOR_VALID_INTEGER="Please enter a valid integer number";static VALIDATION_EDITOR_INTEGER_BETWEEN="Please enter a valid integer number between {{minValue}} and {{maxValue}}";static VALIDATION_EDITOR_INTEGER_MAX="Please enter a valid integer number that is lower than {{maxValue}}";static VALIDATION_EDITOR_INTEGER_MAX_INCLUSIVE="Please enter a valid integer number that is lower than or equal to {{maxValue}}";static VALIDATION_EDITOR_INTEGER_MIN="Please enter a valid integer number that is greater than {{minValue}}";static VALIDATION_EDITOR_INTEGER_MIN_INCLUSIVE="Please enter a valid integer number that is greater than or equal to {{minValue}}";static VALIDATION_EDITOR_NUMBER_BETWEEN="Please enter a valid number between {{minValue}} and {{maxValue}}";static VALIDATION_EDITOR_NUMBER_MAX="Please enter a valid number that is lower than {{maxValue}}";static VALIDATION_EDITOR_NUMBER_MAX_INCLUSIVE="Please enter a valid number that is lower than or equal to {{maxValue}}";static VALIDATION_EDITOR_NUMBER_MIN="Please enter a valid number that is greater than {{minValue}}";static VALIDATION_EDITOR_NUMBER_MIN_INCLUSIVE="Please enter a valid number that is greater than or equal to {{minValue}}";static VALIDATION_EDITOR_DECIMAL_BETWEEN="Please enter a valid number with a maximum of {{maxDecimal}} decimals";static VALIDATION_EDITOR_TEXT_LENGTH_BETWEEN="Please make sure your text length is between {{minLength}} and {{maxLength}} characters";static VALIDATION_EDITOR_TEXT_MAX_LENGTH="Please make sure your text is less than {{maxLength}} characters";static VALIDATION_EDITOR_TEXT_MAX_LENGTH_INCLUSIVE="Please make sure your text is less than or equal to {{maxLength}} characters";static VALIDATION_EDITOR_TEXT_MIN_LENGTH="Please make sure your text is more than {{minLength}} character(s)";static VALIDATION_EDITOR_TEXT_MIN_LENGTH_INCLUSIVE="Please make sure your text is at least {{minLength}} character(s)"}let TT=class{angularUtilService;appRef;cd;containerService;elm;translate;translaterService;forRootConfig;_dataset;_columnDefinitions;_currentDatasetLength=0;_darkMode=!1;_eventHandler=new Pi;_eventPubSubService;_angularGridInstances;_hideHeaderRowAfterPageLoad=!1;_isAutosizeColsCalled=!1;_isGridInitialized=!1;_isDatasetInitialized=!1;_isDatasetHierarchicalInitialized=!1;_isPaginationInitialized=!1;_isLocalGrid=!0;_paginationOptions;_registeredResources=[];_scrollEndCalled=!1;dataView;slickGrid;groupingDefinition={};groupItemMetadataProvider;backendServiceApi;locales;metrics;showPagination=!1;serviceList=[];totalItems=0;paginationData;subscriptions=[];slickEmptyWarning;slickFooter;slickPagination;paginationComponent;slickRowDetailView;backendUtilityService;collectionService;extensionService;extensionUtility;filterFactory;filterService;gridEventService;gridService;gridStateService;headerGroupingService;paginationService;resizerService;rxjs;sharedService;sortService;treeDataService;customDataView;gridId="";gridOptions={};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)}get columnDefinitions(){return this._columnDefinitions}set columnDefinitions(e){this._columnDefinitions=e,this._isGridInitialized&&this.updateColumnDefinitionsList(e),e.length>0&&this.copyColumnWidthsReference(e)}columnDefinitionsChange=new Je(!0);get dataset(){return(this.customDataView?this.slickGrid?.getData?.():this.dataView?.getItems())||[]}set dataset(e){const t=this._currentDatasetLength,n=Ec(e,this._dataset||[]);let r=e;this.slickGrid&&this.gridOptions?.enableTreeData&&Array.isArray(e)&&(e.length>0||e.length!==t||!n)&&(this._isDatasetHierarchicalInitialized=!1,r=this.sortTreeDataset(e,!n)),this._dataset=r,this.refreshGridData(r||[]),this._currentDatasetLength=(e||[]).length,this.slickGrid&&this.gridOptions?.autoFitColumnsOnFirstLoad&&0===t&&!this._isAutosizeColsCalled&&(this.slickGrid.autosizeColumns(),this._isAutosizeColsCalled=!0),this.suggestDateParsingWhenHelpful()}get datasetHierarchical(){return this.sharedService.hierarchicalDataset}set datasetHierarchical(e){const t=Ec(e,this.sharedService?.hierarchicalDataset??[]),n=this._currentDatasetLength;this.sharedService.hierarchicalDataset=e,e&&this.columnDefinitions&&this.filterService?.clearFilters&&this.filterService.clearFilters(),e&&this.slickGrid&&this.sortService?.processTreeDataInitialSort&&(this.sortService.processTreeDataInitialSort(),queueMicrotask(()=>{const r=this.dataView.getItemCount();r>0&&(r!==n||!t)&&this.filterService.refreshTreeDataFilters()}),this._isDatasetHierarchicalInitialized=!0)}get elementRef(){return this.elm}get backendService(){return this.gridOptions?.backendServiceApi?.service}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}slickgridHeader;slickgridFooter;constructor(e,t,n,r,s,a,d,h,p){this.angularUtilService=e,this.appRef=t,this.cd=n,this.containerService=r,this.elm=s,this.translate=a,this.translaterService=d,this.forRootConfig=h;const g=new Dhe;this._eventPubSubService=p?.eventPubSubService??new kle(this.elm.nativeElement),this._eventPubSubService.eventNamingStyle=xl.camelCase,this.backendUtilityService=p?.backendUtilityService??new x$,this.gridEventService=p?.gridEventService??new Ude,this.sharedService=p?.sharedService??new iue,this.collectionService=p?.collectionService??new CU(this.translaterService),this.extensionUtility=p?.extensionUtility??new fde(this.sharedService,this.backendUtilityService,this.translaterService),this.filterFactory=new Rue(g,this.translaterService,this.collectionService),this.filterService=p?.filterService??new Gde(this.filterFactory,this._eventPubSubService,this.sharedService,this.backendUtilityService),this.resizerService=p?.resizerService??new tue(this._eventPubSubService),this.sortService=p?.sortService??new nue(this.collectionService,this.sharedService,this._eventPubSubService,this.backendUtilityService),this.treeDataService=p?.treeDataService??new rue(this._eventPubSubService,this.sharedService,this.sortService),this.paginationService=p?.paginationService??new Kde(this._eventPubSubService,this.sharedService,this.backendUtilityService),this.extensionService=p?.extensionService??new Mde(this.extensionUtility,this.filterService,this._eventPubSubService,this.sharedService,this.sortService,this.treeDataService,this.translaterService,()=>this.gridService),this.gridStateService=p?.gridStateService??new jde(this.extensionService,this.filterService,this._eventPubSubService,this.sharedService,this.sortService,this.treeDataService),this.gridService=p?.gridService??new Wde(this.gridStateService,this.filterService,this._eventPubSubService,this.paginationService,this.sharedService,this.sortService,this.treeDataService),this.headerGroupingService=p?.headerGroupingService??new qde(this.extensionUtility),this.serviceList=[this.containerService,this.extensionService,this.filterService,this.gridEventService,this.gridService,this.gridStateService,this.headerGroupingService,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("HeaderGroupingService",this.headerGroupingService),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.columnDefinitions)throw new Error("Using `` requires [columnDefinitions], it seems that you might have forgot to provide the missing bindable input.");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),this.suggestDateParsingWhenHelpful()}ngOnDestroy(){this._eventPubSubService.publish("onBeforeGridDestroy",this.slickGrid),this.destroy(),this._eventPubSubService.publish("onAfterGridDestroyed",!0)}destroy(e=!1){if(this.serviceList.forEach(t=>{"function"==typeof t?.dispose&&t.dispose()}),this.serviceList=[],this.backendService?.dispose?.(),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 t of Object.keys(this.backendServiceApi))delete this.backendServiceApi[t];this.backendServiceApi=void 0}if(this.columnDefinitions)for(const t of Object.keys(this.columnDefinitions))this.columnDefinitions[t]=null;for(const t of Object.keys(this.sharedService))this.sharedService[t]=null;e&&this.emptyGridContainerElm(),this.subscriptions=O_(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";ui(document.querySelector(`#${e}`))}createBackendApiInternalPostProcessCallback(e){const t=e?.backendServiceApi;if(t?.service){const n=t.service;"function"==typeof n.getDatasetName&&(t.internalPostProcess=r=>{const s=t&&n&&"function"==typeof n.getDatasetName?n.getDatasetName():"";if(r?.data[s]){const a="nodes"in r.data[s]?r.data[s].nodes:r.data[s],d="totalCount"in r.data[s]?r.data[s].totalCount:r.data[s].length;this.refreshGridData(a,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??xl.camelCase,this._eventPubSubService.publish("onBeforeGridCreate",!0),this._dataset||=[],this.gridOptions=this.mergeGridOptions(this.gridOptions),this._paginationOptions=this.gridOptions?.pagination,this.locales=this.gridOptions?.locales??Hhe.locales,this.backendServiceApi=this.gridOptions?.backendServiceApi,this._isLocalGrid=!this.backendServiceApi,this.gridOptions.backendServiceApi&&!this.gridOptions.backendServiceApi?.disableInternalPostProcess&&this.createBackendApiInternalPostProcessCallback(this.gridOptions),!this.customDataView){const n=this.gridOptions?.dataView?.inlineFilters??!1;let r={...this.gridOptions.dataView,inlineFilters:n};(this.gridOptions.draggableGrouping||this.gridOptions.enableGrouping)&&(this.groupItemMetadataProvider=new bW,this.sharedService.groupItemMetadataProvider=this.groupItemMetadataProvider,r={...r,groupItemMetadataProvider:this.groupItemMetadataProvider}),this.dataView=new Tle(r,this._eventPubSubService),this._eventPubSubService.publish("onDataviewCreated",this.dataView)}this.preRegisterResources(),this._columnDefinitions=this.loadSlickGridEditors(this._columnDefinitions||[]),this.gridOptions.autoAddCustomEditorFormatter&&function Fde(i,e){if(Array.isArray(i))for(const t of i)if(t.editor)if(t.formatter&&t.formatter!==bT&&t.formatter!==e){const n=t.formatter;t.formatter=bT,t.params={...t.params,formatters:[n,e]}}else t.formatter&&t.formatter===bT&&t.params?-1===t.params.formatters.findIndex(n=>n===e)&&(t.params.formatters=[...t.params.formatters,e]):t.formatter=e}(this._columnDefinitions,this.gridOptions.autoAddCustomEditorFormatter),this.sharedService.allColumns=this._columnDefinitions,this.sharedService.visibleColumns=this._columnDefinitions,this.subscriptions.push(this._eventPubSubService.subscribe("onPluginColumnsChanged",n=>{this._columnDefinitions=n.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 lce(`#${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 t=void 0!==this.gridOptions.frozenColumn?this.gridOptions.frozenColumn:-1;if(t>=0&&t<=this._columnDefinitions.length&&(this.sharedService.frozenVisibleColumnId=this._columnDefinitions[t].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 Ohe(this.slickGrid,this.gridOptions.customFooterOptions,this._eventPubSubService,this.translaterService),this.slickFooter.renderFooter(this.gridContainerElement)),!this.customDataView&&this.dataView){const n=this.gridOptions?.enableTreeData?this.sortTreeDataset(this._dataset):this._dataset;if(this.dataView.beginUpdate(),this.dataView.setItems(n||[],this.gridOptions.datasetIdPropertyName??"id"),this.dataView.endUpdate(),this.slickGrid?.getSelectionModel()&&this.gridOptions?.dataView&&"syncGridSelection"in this.gridOptions.dataView){let s=!1;this.gridOptions.backendServiceApi&&"syncGridSelectionWithBackendService"in this.gridOptions.dataView&&(s=this.gridOptions.dataView.syncGridSelectionWithBackendService);const a=this.gridOptions.dataView.syncGridSelection;if("boolean"==typeof a){let d=a;this._isLocalGrid||(d=a&&s),this.dataView.syncGridSelection(this.slickGrid,d)}else"object"==typeof a&&this.dataView.syncGridSelection(this.slickGrid,a.preserveHidden,a.preserveHiddenOnSelectionChange)}(this.dataView.getLength()||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.backendService,eventPubSubService:this._eventPubSubService,filterService:this.filterService,gridEventService:this.gridEventService,gridStateService:this.gridStateService,gridService:this.gridService,groupingService:this.headerGroupingService,headerGroupingService:this.headerGroupingService,extensionService:this.extensionService,paginationComponent:this.slickPagination,paginationService:this.paginationService,resizerService:this.resizerService,sortService:this.sortService,treeDataService:this.treeDataService},this._eventPubSubService.publish("onAngularGridCreated",this._angularGridInstances)}paginationChanged(e){const t=this.gridStateService?.needToPreserveRowSelection()??!1;this.slickGrid&&!t&&this.gridOptions?.backendServiceApi&&(this.gridOptions.enableRowSelection||this.gridOptions.enableCheckboxSelector)&&this.slickGrid.setSelectedRows([]);const{pageNumber:n,pageSize:r}=e;this.sharedService&&void 0!==r&&void 0!==n&&(this.sharedService.currentPagination={pageNumber:n,pageSize:r}),this._eventPubSubService.publish("onGridStateChanged",{change:{newValues:{pageNumber:n,pageSize:r},type:qo.pagination},gridState:this.gridStateService.getCurrentGridState()}),this.cd.markForCheck()}refreshGridData(e,t){if(this.gridOptions?.enableEmptyDataWarningMessage&&Array.isArray(e)){const n=t||e.length;this.displayEmptyDataWarning(n<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 n=this.setPaginationOptionsWhenPresetDefined(this.gridOptions,this._paginationOptions),r=void 0!==t?t:this.gridOptions?.pagination?.totalItems;void 0!==r&&r!==this.totalItems&&(this.totalItems=+r),this._isPaginationInitialized?this.paginationService.updateTotalItems(this.totalItems):this.initializePaginationService(n)}if(this.slickGrid&&this.gridOptions.enableAutoResize){const n=this.gridOptions.autoResize&&this.gridOptions.autoResize.delay;this.resizerService.resizeGrid(n||10)}}}setData(e,t=!1){t&&(this._isAutosizeColsCalled=!1,this._currentDatasetLength=0),this.dataset=e||[]}setPaginationOptionsWhenPresetDefined(e,t){return e.presets?.pagination&&t&&!this._isPaginationInitialized&&(this.hasBackendInfiniteScroll()?console.warn("[Angular-Slickgrid] `presets.pagination` is not supported with Infinite Scroll, reverting to first page."):(t.pageSize=e.presets.pagination.pageSize,t.pageNumber=e.presets.pagination.pageNumber)),t}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(t=>t.originalWidth=t.width)}displayEmptyDataWarning(e=!0){this.slickEmptyWarning?.showEmptyDataMessage(e)}bindDifferentHooks(e,t,n){if(this.translate?.onLangChange&&(t.enableTranslate&&this.extensionService.translateAllExtensions(),this.subscriptions.push(this.translate.onLangChange.subscribe(({lang:r})=>{this._eventPubSubService.publish("onLanguageChange"),t.enableTranslate&&(this.extensionService.translateAllExtensions(r),(t.createPreHeaderPanel&&t.createTopHeaderPanel||t.createPreHeaderPanel&&!t.enableDraggableGrouping)&&this.headerGroupingService.translateHeaderGrouping())}))),t.backendServiceApi){const r=t.backendServiceApi;r?.service?.init&&r.service.init(r.options,t.pagination,this.slickGrid,this.sharedService)}n&&e&&(this.gridEventService.bindOnCellChange(e),this.gridEventService.bindOnClick(e),t.enableSorting&&(t.backendServiceApi&&!t.backendServiceApi.useLocalSorting?this.sortService.bindBackendOnSort(e):this.sortService.bindLocalOnSort(e)),t.enableFiltering&&(this.filterService.init(e),t.backendServiceApi&&!t.backendServiceApi.useLocalFiltering?this.filterService.bindBackendOnFilter(e):this.filterService.bindLocalOnFilter(e)),this._eventHandler.subscribe(e.onColumnsReordered,(r,s)=>{this.sharedService.hasColumnsReordered=!0,this.sharedService.visibleColumns=s.impactedColumns}),this._eventHandler.subscribe(e.onSetOptions,(r,s)=>{s.optionsBefore.darkMode!==s.optionsAfter.darkMode&&this.gridContainerElement&&this.setDarkMode(s.optionsAfter.darkMode)}),this.loadColumnPresetsWhenDatasetInitialized(),this.loadFilterPresetsWhenDatasetInitialized(),this._eventHandler.subscribe(n.onRowCountChanged,()=>{e.invalidate(),this.handleOnItemCountChanged(n.getFilteredItemCount()||0,n.getItemCount()||0)}),this._eventHandler.subscribe(n.onSetItemsCalled,(r,s)=>{this.sharedService.isItemsDateParsed=!1,this.handleOnItemCountChanged(n.getFilteredItemCount()||0,s.itemCount),s.itemCount>0&&(this.gridOptions.autosizeColumnsByCellContentOnFirstLoad||this.gridOptions.enableAutoResizeColumnsByCellContent)&&this.resizerService.resizeColumnsByCellContent(!this.gridOptions?.resizeByContentOnlyOnFirstLoad)}),t?.enableFiltering&&!t.enableRowDetailView&&this._eventHandler.subscribe(n.onRowsChanged,(r,{calledOnRowCountChanged:s,rows:a})=>{if(!s&&Array.isArray(a)){const d=e.getRenderedRange();a.filter(h=>h>=d.top&&h<=d.bottom).forEach(h=>e.updateRow(h)),e.render()}})),t?.colspanCallback&&n&&n.getItem&&n.getItemMetadata&&(n.getItemMetadata=r=>{let s=null;return t.colspanCallback&&(s=t.colspanCallback(n.getItem(r))),s})}bindBackendCallbackFunctions(e){const t=e.backendServiceApi,n=t?.service,r=n?.options??{},s=!!r&&(!r||!("executeProcessCommandOnInit"in r)||r.executeProcessCommandOnInit);if(n){if(e?.presets){if(n.updateFilters&&Array.isArray(e.presets.filters)&&e.presets.filters.length>0&&n.updateFilters(e.presets.filters,!0),n.updateSorters&&Array.isArray(e.presets.sorters)&&e.presets.sorters.length>0){const a=this.gridOptions.multiColumnSort?e.presets.sorters:e.presets.sorters.slice(0,1);n.updateSorters(void 0,a)}if(n.updatePagination&&e.presets.pagination&&!this.hasBackendInfiniteScroll()){const{pageNumber:a,pageSize:d}=e.presets.pagination;n.updatePagination(a,d)}}else{const a=this.filterService.getColumnFilters();a&&n.updateFilters&&n.updateFilters(a,!1)}if(t&&n&&(t.onInit||s)){const a="function"==typeof n.buildQuery?n.buildQuery():"",d=s?t.process&&t.process(a)||null:t.onInit&&t.onInit(a)||null;queueMicrotask(()=>{const h=this.backendUtilityService,p=new Date;t.preProcess&&t.preProcess();const g=this.gridOptions?.pagination?.totalItems??0;d instanceof Promise?d.then(v=>h.executeBackendProcessesCallback(p,v,t,g)).catch(v=>h.onBackendError(v,t)):d&&this.rxjs?.isObservable(d)&&this.subscriptions.push(d.subscribe({next:v=>h.executeBackendProcessesCallback(p,v,t,g),error:v=>h.onBackendError(v,t)}))})}t.service.options?.infiniteScroll&&this.addBackendInfiniteScrollCallback()}}addBackendInfiniteScrollCallback(){if(this.slickGrid&&this.gridOptions.backendServiceApi&&this.hasBackendInfiniteScroll()&&!this.gridOptions.backendServiceApi?.onScrollEnd){const e=()=>{this.backendUtilityService.setInfiniteScrollBottomHit(!0),this.paginationService.goToNextPage().then(n=>{n||this.backendUtilityService.setInfiniteScrollBottomHit(!1)})};this.gridOptions.backendServiceApi.onScrollEnd=e,this._eventHandler.subscribe(this.slickGrid.onScroll,(n,r)=>{const s=r.grid.getViewportNode();["mousewheel","scroll"].includes(r.triggeredBy||"")&&this.paginationService?.totalItems&&r.scrollTop>0&&Math.ceil(s.offsetHeight+r.scrollTop)>=r.scrollHeight&&(this._scrollEndCalled||(e(),this._scrollEndCalled=!0))});const t=this.gridOptions.backendServiceApi.postProcess;this.gridOptions.backendServiceApi.postProcess=n=>{this._scrollEndCalled=!1,t&&t(n)}}}bindResizeHook(e,t){if(t.autoFitColumnsOnFirstLoad&&t.autosizeColumnsByCellContentOnFirstLoad||t.enableAutoSizeColumns&&t.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").');t.gridHeight||t.gridWidth?this.resizerService.resizeGrid(0,{height:t.gridHeight,width:t.gridWidth}):this.resizerService.resizeGrid(),e&&t?.enableAutoResize&&t.autoFitColumnsOnFirstLoad&&t.enableAutoSizeColumns&&!this._isAutosizeColsCalled&&(e.autosizeColumns(),this._isAutosizeColsCalled=!0)}executeAfterDataviewCreated(e,t){if(t.enableSorting&&Array.isArray(t.presets?.sorters)){const n=this.gridOptions.multiColumnSort?t.presets.sorters:t.presets.sorters.slice(0,1);this.sortService.loadGridSorters(n)}}handleOnItemCountChanged(e,t){this._currentDatasetLength=t,this.metrics={startTime:new Date,endTime:new Date,itemCount:e,totalItemCount:t},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",t=>{this.paginationChanged(t)}),this._eventPubSubService.subscribe("onPaginationVisibilityChanged",t=>{this.showPagination=t?.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 t=e.editor.collectionAsync;e.editor.disabled=!0,t instanceof ci?this.subscriptions.push(t.subscribe(n=>this.updateEditorCollection(e,n))):t instanceof Promise&&t.then(n=>{Array.isArray(n)&&this.updateEditorCollection(e,n)})}}insertDynamicPresetColumns(e,t){if(this._columnDefinitions){const n=this._columnDefinitions.findIndex(r=>r.id===e);if(n>=0){const r=this._columnDefinitions[n];r?.id===e&&!t.some(s=>s.id===e)&&(n>0?t.splice(n,0,r):t.unshift(r))}}}loadColumnPresetsWhenDatasetInitialized(){if(Array.isArray(this.gridOptions.presets?.columns)&&this.gridOptions.presets.columns.length>0){const e=this.gridStateService.getAssociatedGridColumns(this.slickGrid,this.gridOptions.presets.columns);if(Array.isArray(e)&&e.length>0&&Array.isArray(this._columnDefinitions)){if(this.gridOptions.enableRowMoveManager){const t=this.gridOptions?.rowMoveManager?.columnId??"_move";this.insertDynamicPresetColumns(t,e)}if(this.gridOptions.enableCheckboxSelector){const t=this.gridOptions?.checkboxSelector?.columnId??"_checkbox_selector";this.insertDynamicPresetColumns(t,e)}if(this.gridOptions.enableRowDetailView){const t=this.gridOptions?.rowDetailView?.columnId??"_detail_selector";this.insertDynamicPresetColumns(t,e)}e.forEach(t=>t.originalWidth=t.width),this.slickGrid.setColumns(e),this.sharedService.visibleColumns=e}}}loadFilterPresetsWhenDatasetInitialized(){this.gridOptions&&!this.customDataView&&(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 n=this.dataView.getPagingInfo();n&&"totalRows"in n&&this._paginationOptions.totalItems!==n.totalRows&&(this.totalItems=n.totalRows||0)}this._paginationOptions.totalItems=this.totalItems;const t=this.setPaginationOptionsWhenPresetDefined(this.gridOptions,this._paginationOptions);this.initializePaginationService(t)}}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 n=e.rowSelection.dataContextIds,r=e.rowSelection.gridRowIndexes;Array.isArray(n)&&n.length>0?r=this.dataView.mapIdsToRows(n)||[]:Array.isArray(r)&&r.length>0&&(n=this.dataView.mapRowsToIds(r)||[]),this.slickGrid&&Array.isArray(r)&&(this.slickGrid.setSelectedRows(r),this.dataView.setSelectedIds(n||[],{isRowBeingAdded:!0,shouldTriggerEvent:!1,applyRowSelectionToGrid:!0}))}}hasBackendInfiniteScroll(e){return!!(e||this.gridOptions).backendServiceApi?.service.options?.infiniteScroll}mergeGridOptions(e){e.gridId=this.gridId,e.gridContainerId=`slickGridContainer-${this.gridId}`;const t=en(!0,{},B9,this.forRootConfig,e);return this.hasBackendInfiniteScroll(e)||(e.enablePagination=!!(e.backendServiceApi&&void 0===e.enablePagination||e.enablePagination)),t?.pagination&&(e.enablePagination||e.backendServiceApi)&&(this.forRootConfig.pagination||e.pagination)&&(t.pagination.pageSize=e.pagination?.pageSize??this.forRootConfig.pagination?.pageSize??B9.pagination.pageSize,t.pagination.pageSizes=e.pagination?.pageSizes??this.forRootConfig.pagination?.pageSizes??B9.pagination.pageSizes),this._hideHeaderRowAfterPageLoad=!1===t.showHeaderRow,t.enableFiltering&&!t.showHeaderRow&&(t.showHeaderRow=t.enableFiltering),t&&!t.enableFiltering&&t.enablePagination&&this._isLocalGrid&&(t.enableFiltering=!0,t.showHeaderRow=!1,this._hideHeaderRowAfterPageLoad=!0,this.sharedService&&(this.sharedService.hideHeaderRowAfterPageLoad=!0)),t}registerExternalResources(e,t=!1){t&&this.disposeExternalResources(),e.forEach(n=>this._registeredResources.push(n)),this.initializeExternalResources(e)}resetExternalResources(){this._registeredResources=[]}preRegisterResources(){this._registeredResources=this.gridOptions?.externalResources||[],this.registerRxJsResource(new Bhe),this.gridOptions.enableRowDetailView&&(this.slickRowDetailView=new The(this.angularUtilService,this.appRef,this._eventPubSubService,this.elm.nativeElement,this.rxjs),this.slickRowDetailView.create(this.columnDefinitions,this.gridOptions),this.extensionService.addExtensionToList(st.rowDetailView,{name:st.rowDetailView,instance:this.slickRowDetailView}))}initializeExternalResources(e){if(Array.isArray(e))for(const t of e)this.slickGrid&&"function"==typeof t.init&&t.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.createTopHeaderPanel||this.gridOptions.createPreHeaderPanel&&!this.gridOptions.enableDraggableGrouping)&&this._registeredResources.push(this.headerGroupingService),this.gridOptions.enableTreeData&&this._registeredResources.push(this.treeDataService),this.gridOptions.enableTranslate&&this.extensionService.translateColumnHeaders(),this.slickEmptyWarning=new Ihe,this._registeredResources.push(this.slickEmptyWarning),this.initializeExternalResources(this._registeredResources),this.gridOptions.enableRowDetailView&&this.slickRowDetailView&&this.slickRowDetailView.init(this.slickGrid)}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){if(this.slickGrid&&this.gridOptions?.enablePagination&&!this._isPaginationInitialized&&e){if(this.gridOptions.customPaginationComponent){const t=this.angularUtilService.createAngularComponent(this.gridOptions.customPaginationComponent);this.slickPagination=t.componentRef.instance}else this.slickPagination=new Rhe;this.slickPagination&&(this.slickPagination.init(this.slickGrid,this.paginationService,this._eventPubSubService,this.translaterService),this.slickPagination.renderPagination(this.gridContainerElement),this._isPaginationInitialized=!0)}else e||(this.slickPagination?.dispose(),this._isPaginationInitialized=!1)}sortTreeDataset(e,t=!1){const n=this._currentDatasetLength;let r,s=[];return this._isDatasetHierarchicalInitialized&&this.datasetHierarchical?(r=this.treeDataService.sortHierarchicalDataset(this.datasetHierarchical),s=r.flat):Array.isArray(e)&&e.length>0&&(r=this.treeDataService.convertFlatParentChildToTreeDatasetAndSort(e,this._columnDefinitions,this.gridOptions),this.sharedService.hierarchicalDataset=r.hierarchical,s=r.flat),e.length>0&&(t||e.length!==n)&&this.filterService.refreshTreeDataFilters(s),s}loadSlickGridEditors(e){return e.some(t=>`${t.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(t=>(t?.editor?.collectionAsync&&this.loadEditorCollectionAsync(t),{...t,editorClass:t.editor?.model}))}suggestDateParsingWhenHelpful(){this.dataView?.getItemCount()>1e4&&!this.gridOptions.silenceWarnings&&!this.gridOptions.preParseDateColumns&&this.slickGrid.getColumns().some(e=>ih(e.type))&&console.warn("[Slickgrid-Universal] For getting better perf, we suggest you enable the `preParseDateColumns` grid option, for more info visit => https://ghiscoding.gitbook.io/angular-slickgrid/column-functionalities/sorting#pre-parse-date-columns-for-better-perf")}updateEditorCollection(e,t){if(this.slickGrid&&e.editor){e.editor.collection=t,e.editor.disabled=!1;const n=this.slickGrid.getCellEditor();n?.disable&&n?.renderDomElement&&(n.destroy(),n.disable(!1),n.renderDomElement(t))}}static ctorParameters=()=>[{type:Jo},{type:Go},{type:bn},{type:oE},{type:wi},{type:zt,decorators:[{type:Rs}]},{type:sE,decorators:[{type:Rs}]},{type:void 0,decorators:[{type:Os,args:["config"]}]},{type:void 0,decorators:[{type:Os,args:["externalService"]}]}];static propDecorators={customDataView:[{type:Aa}],gridId:[{type:Aa}],gridOptions:[{type:Aa}],paginationOptions:[{type:Aa}],columnDefinitions:[{type:Aa}],columnDefinitionsChange:[{type:YD}],dataset:[{type:Aa}],datasetHierarchical:[{type:Aa}],slickgridHeader:[{type:b0,args:["slickgridHeader",{static:!0}]}],slickgridFooter:[{type:b0,args:["slickgridFooter",{static:!0}]}]}};var H9;TT=Oe([We({selector:"angular-slickgrid",template:'
\n \n
\n
\n \n
',providers:[Jo,sE]}),Xt("design:paramtypes",[Jo,Go,bn,oE,wi,zt,sE,Object,Object])],TT);let V9=H9=class{static forRoot(e={}){return{ngModule:H9,providers:[{provide:"config",useValue:e},{provide:"externalService",useValue:null},Jo,oE]}}};V9=H9=Oe([iR({imports:[Hp,Qu],declarations:[TT],exports:[TT]})],V9);let MT=class{title="Example 11: Add / Update / Highlight a Datagrid Item";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 ';angularGrid;grid;gridService;dataView;columnDefinitions=[];gridOptions;dataset;updatedObject;constructor(){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,t)=>{console.log(t),confirm("Are you sure?")&&this.angularGrid.gridService.deleteItemById(t.dataContext.id)}},{id:"title",name:"Title",field:"title",sortable:!0,type:M.string,editor:{model:Ne.longText}},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:M.number,editor:{model:Ne.text},onCellChange:(e,t)=>{alert("onCellChange directly attached to the column definition"),console.log(t)}},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,type:M.number,editor:{model:Ne.integer}},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,type:M.date},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,type:M.date},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:G.checkmarkMaterial,type:M.number,editor:{model:Ne.checkbox}}],this.gridOptions={asyncEditorLoading:!1,autoResize:{container:"#demo-container",rightPadding:10},editable:!0,enableColumnPicker:!0,enableCellNavigation:!0,enableRowSelection:!0}}mockDataset(e){const t=[];for(let n=0;n{p.id>n&&(n=p.id)});const r=n+e,s=2e3+Math.floor(10*Math.random()),a=Math.floor(11*Math.random()),d=Math.floor(29*Math.random()),h=Math.round(100*Math.random());return{id:r,title:"Task "+r,duration:Math.round(100*Math.random())+"",percentComplete:h,percentCompleteNumber:h,start:new Date(s,a,d),finish:new Date(s,a+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 n=>{const r=this.dataView.getItem(n);let s={cssClasses:""};return"object"==typeof e&&(s=e(n)),s&&r&&r.duration&&+r.duration>40&&(s.cssClasses=(s.cssClasses||"")+" duration-bg"),s}}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 ctorParameters=()=>[]};MT=Oe([We({encapsulation:Bt.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:[$ae()]}),Xt("design:paramtypes",[])],MT);var Ghe=z(156),$he=z.n(Ghe);let IT=class{selectedId="";selectedItem;collection;onItemChanged=new mi;onChange(e){this.selectedItem=e,this.onItemChanged.next(e)}focus(){}};IT=Oe([We({template:'\n \n\t\t\t\n\t\t\t\t{{ item?.name }}\n\t\t\t\n\t\t'})],IT);class Whe{args;_subscriptions=[];componentRef;defaultId="";defaultItem;grid;constructor(e){this.args=e,this.grid=e?.grid,this.init()}get angularUtilService(){let e=this.gridOptions&&this.gridOptions.params&&this.gridOptions.params.angularUtilService;return(!e||!(e instanceof Jo))&&(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 Jo))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(t=>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(),Td(this._subscriptions)}focus(){"function"==typeof this.componentRef?.instance.focus&&this.componentRef.instance.focus()}applyValue(e,t){e[this.columnDef.field]=t}getValue(){return this.componentRef.instance.selectedId}loadValue(e){const t=e?.[this.columnDef.field];this.componentRef.instance.selectedId=t?.id||"",this.componentRef.instance.selectedItem=t}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 lj{_shouldTriggerQuery=!0;_subscriptions=[];componentRef;grid;searchTerms=[];columnDef;callback;operator=te.equal;get angularUtilService(){let e=this.gridOptions?.params?.angularUtilService;return(!e||!(e instanceof Jo))&&(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=("searchTerms"in e?e.searchTerms:[])||[],!(this.columnFilter&&this.columnFilter.params.component&&this.angularUtilService instanceof Jo))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 t=this.grid.getHeaderRowColumn(this.columnDef.id);if(t){t.innerHTML="";const n=this.angularUtilService.createAngularComponentAppendToDom(this.columnFilter.params.component,t,{collection:this.collection});this.componentRef=n.componentRef,this._subscriptions.push(n.componentRef.instance.onItemChanged.subscribe(r=>{this.callback(void 0,{columnDef:this.columnDef,operator:this.operator,searchTerms:[r.id],shouldTriggerQuery:this._shouldTriggerQuery}),this._shouldTriggerQuery=!0}))}}}clear(e=!0){this._shouldTriggerQuery=e,this.componentRef?.instance&&"selectedId"in this.componentRef.instance&&(this.componentRef.instance.selectedId=0)}destroy(){this.componentRef?.destroy&&this.componentRef.destroy(),Td(this._subscriptions)}setValues(e){this.componentRef?.instance&&"selectedId"in this.componentRef.instance&&(this.componentRef.instance.selectedId=e)}}let LT=class{item};LT=Oe([We({template:"{{item?.assignee?.name}}"})],LT);let aE=class{selectedId="";selectedItem;collection;onItemChanged=new mi;onChange(e){this.selectedItem=e,this.onItemChanged.next(e)}};aE=Oe([We({template:'\n \n\t\t\t\n\t\t\t\t{{ item?.name }}\n\t\t\t\n\t\t'})],aE);let OT=class{item;sayHello(e){alert(`Hello ${e}`)}};OT=Oe([We({template:''})],OT);let RT=class{angularUtilService;translate;title="Example 22: Use of Angular Components";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 ';_commandQueue=[];angularGrid;columnDefinitions=[];gridOptions;dataset;gridObj;isAutoEdit=!0;alertWarning;updatedObject;selectedLanguage="en";assignees=[{id:"",name:""},{id:"1",name:"John"},{id:"2",name:"Pierre"},{id:"3",name:"Paul"}];constructor(e,t){this.angularUtilService=e,this.translate=t}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:M.string,editor:{model:Ne.longText,minLength:5,maxLength:255},onCellChange:(e,t)=>{console.log(t),this.alertWarning=`Updated Title: ${t.dataContext.title}`}},{id:"title2",name:"Title with Angular Component",field:"title",minWidth:100,sortable:!0,type:M.string,formatter:()=>"...",asyncPostRender:this.renderInteractiveAngularComponent.bind(this),params:{component:OT,angularUtilService:this.angularUtilService}},{id:"assignee",name:"Assignee",field:"assignee",minWidth:100,filterable:!0,sortable:!0,filter:{model:lj,collection:this.assignees,params:{component:aE}},queryFieldFilter:"assignee.id",queryFieldSorter:"assignee.name",formatter:G.complexObject,params:{complexFieldLabel:"assignee.name"},exportWithFormatter:!0,editor:{model:Whe,collection:this.assignees,params:{component:IT}},onCellChange:(e,t)=>{console.log(t),this.alertWarning=`Updated Title: ${t.dataContext.title}`}},{id:"assignee2",name:"Assignee with Angular Component",field:"assignee",minWidth:125,filterable:!0,sortable:!0,filter:{model:lj,collection:this.assignees,params:{component:aE}},queryFieldFilter:"assignee.id",queryFieldSorter:"assignee.name",formatter:()=>"...",asyncPostRender:this.renderAngularComponent.bind(this),params:{component:LT,angularUtilService:this.angularUtilService,complexFieldLabel:"assignee.name"},exportCustomFormatter:G.complexObject},{id:"complete",name:"% Complete",field:"percentComplete",minWidth:100,filterable:!0,formatter:G.multiple,type:M.number,editor:{model:Ne.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:ee.slider,operator:">=",filterOptions:{hideSliderNumber:!1}},params:{formatters:[G.collectionEditor,G.percentCompleteBar]}},{id:"start",name:"Start",field:"start",minWidth:100,filterable:!0,filter:{model:ee.compoundDate},formatter:G.dateIso,exportWithFormatter:!0,sortable:!0,type:M.date,editor:{model:Ne.date}},{id:"finish",name:"Finish",field:"finish",minWidth:100,filterable:!0,sortable:!0,filter:{model:ee.compoundDate},formatter:G.dateIso,exportWithFormatter:!0,type:M.date,editor:{model:Ne.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,t)=>this.angularGrid.gridService.deleteItemById(t.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,t,n)=>{this._commandQueue.push(n),n.execute()},i18n:this.translate,params:{angularUtilService:this.angularUtilService}},this.dataset=this.mockData(100)}mockData(e,t=0){const n=[];for(let r=t;r[{type:Jo},{type:zt}]};RT=Oe([We({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:Bt.None,providers:[Jo],styles:[$he()]}),Xt("design:paramtypes",[Jo,zt])],RT);var jhe=z(888),qhe=z.n(jhe);let PT=class{title="Example 23: Grid AutoHeight";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 ';angularGrid;grid;dataView;columnDefinitions=[];gridOptions;dataset;operatorList=["=","<","<=",">",">=","<>","StartsWith","EndsWith"];selectedOperator="=";searchValue="";selectedColumn;ngOnInit(){this.prepareGrid()}angularGridReady(e){this.angularGrid=e}prepareGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:M.string},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:M.number},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,sortable:!0,type:M.number},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,type:M.date},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,type:M.date},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:G.checkmarkMaterial,sortable:!0,type:M.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 t=0;t<25;t++){const n=2e3+Math.floor(10*Math.random()),r=Math.floor(11*Math.random()),s=Math.floor(29*Math.random()),a=Math.round(100*Math.random());e[t]={id:t,title:"Task "+t,duration:Math.round(100*Math.random())+"",percentComplete:a,percentCompleteNumber:a,start:new Date(n,r,s),finish:new Date(n,r+1,s),effortDriven:t%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||""]})}};PT=Oe([We({encapsulation:Bt.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:[qhe()]})],PT);function fy(i){const e=parseInt(i,10);return e<10?`0${e}`:e}let NT=class{_darkModeGrid1=!1;title="Example 1: Basic Grids";subTitle='\n Basic Grids with fixed sizes (800 x 225) set by "gridHeight" & "gridWidth"\n \n ';angularGrid1;columnDefinitions1=[];columnDefinitions2=[];gridOptions1;gridOptions2;dataset1;dataset2;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 t=[];for(let n=0;n\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'})],NT);var Zhe=z(759),Jhe=z.n(Zhe);const BT=["title","data-slick-tooltip"],S1="[title], [data-slick-tooltip]";class HT{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 Pi}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,t){this._grid=e,this._rxjs=t.get("RxJsFacade"),this._sharedService=t.get("SharedService"),this._addonOptions={...this._defaultOptions,...this._sharedService?.gridOptions?.customTooltip},this._eventHandler.subscribe(e.onMouseEnter,this.handleOnMouseOver.bind(this)).subscribe(e.onHeaderMouseOver,(n,r)=>this.handleOnHeaderMouseOverByType(n,r,"slick-header-column")).subscribe(e.onHeaderRowMouseEnter,(n,r)=>this.handleOnHeaderMouseOverByType(n,r,"slick-headerrow-column")).subscribe(e.onHeaderRowMouseOver,(n,r)=>this.handleOnHeaderMouseOverByType(n,r,"slick-headerrow-column")).subscribe(e.onMouseLeave,this.hideTooltip.bind(this)).subscribe(e.onHeaderMouseOut,this.hideTooltip.bind(this)).subscribe(e.onHeaderRowMouseLeave,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=Oi(this.className).join(".");document.body.querySelector(`.${e}${this.gridUidSelector}`)?.remove()}getOptions(){return this._addonOptions}setOptions(e){this._addonOptions={...this._addonOptions,...e}}asyncProcessCallback(e,t,n,r,s){this.hideTooltip();const a={...s,[this.addonOptions?.asyncParamsPropName??"__params"]:e};this._cellAddonOptions?.useRegularTooltip?this.renderRegularTooltip(this._cellAddonOptions.asyncPostFormatter,t,n,r,a):this.renderTooltipFormatter(this._cellAddonOptions.asyncPostFormatter,t,n,r,a)}handleOnHeaderMouseOverByType(e,t,n){this._cellType=n,this._mousePosition={x:e.clientX||0,y:e.clientY||0},this._mouseTarget=document.elementFromPoint(e.clientX||0,e.clientY||0)?.closest(S1),this.hideTooltip();const r={row:-1,cell:this._grid.getColumns().findIndex(h=>(t?.column?.id??"")===h.id)},s=t.column,a={},d="slick-headerrow-column"===n;if(t||={},t.cell=r.cell,t.row=r.row,t.columnDef=s,t.dataContext=a,t.grid=this._grid,t.type=d?"header-row":"header",this._cellAddonOptions={...this._addonOptions,...s?.customTooltip},!s?.disableTooltip&&("function"!=typeof this._cellAddonOptions?.usabilityOverride||this._cellAddonOptions.usabilityOverride(t))&&s&&e.target){this._cellNodeElm=e.target.closest(`.${n}`);const h=d?this._cellAddonOptions.headerRowFormatter:this._cellAddonOptions.headerFormatter;if(this._cellAddonOptions?.useRegularTooltip||!h){const p=d?this._cellAddonOptions?.useRegularTooltip?null:h:s.name;this.renderRegularTooltip(p,r,null,s,a)}else this._cellNodeElm&&"function"==typeof h&&this.renderTooltipFormatter(h,r,null,s,a)}}handleOnMouseOver(e){var t=this;return yn(function*(){if(t._cellType="slick-cell",t._mousePosition={x:e.clientX||0,y:e.clientY||0},t._mouseTarget=document.elementFromPoint(e.clientX||0,e.clientY||0)?.closest(S1),t.hideTooltip(),e&&t._grid){const n=e?.target?.closest(".slick-cell")?.className,r=n&&/l\d+/.exec(n||"")?t._grid.getCellFromEvent(e):null;if(r){const s=t.dataView?t.dataView.getItem(r.row):t._grid.getDataItem(r.row),a=t._grid.getColumns()[r.cell];if(t._cellNodeElm=t._grid.getCellNode(r.row,r.cell),s&&a){if(t._cellAddonOptions={...t._addonOptions,...a?.customTooltip},a?.disableTooltip||"function"==typeof t._cellAddonOptions?.usabilityOverride&&!t._cellAddonOptions.usabilityOverride({cell:r.cell,row:r.row,dataContext:s,column:a,grid:t._grid,type:"cell"}))return;const d=s.hasOwnProperty(a.field)?s[a.field]:null,h=t._grid.getEditorLock().isActive()?null:d;if(t._cellAddonOptions.useRegularTooltip&&!t._cellAddonOptions?.asyncProcess||!t._cellAddonOptions?.formatter)t.renderRegularTooltip(a.formatter,r,h,a,s);else if("function"==typeof t._cellAddonOptions?.formatter&&t.renderTooltipFormatter(t._cellAddonOptions.formatter,r,h,a,s),"function"==typeof t._cellAddonOptions?.asyncProcess){const p=t._cellAddonOptions.asyncProcess(r.row,r.cell,d,a,s,t._grid);if(t._cellAddonOptions.asyncPostFormatter||console.error('[Slickgrid-Universal] when using "asyncProcess" with Custom Tooltip, you must also provide an "asyncPostFormatter" formatter.'),p instanceof Promise)t._cancellablePromise=D$(p),t._cancellablePromise.promise.then(g=>t.asyncProcessCallback(g,r,d,a,s)).catch(g=>{g instanceof A_||console.error(g)});else if(t._rxjs?.isObservable(p)){const g=t._rxjs;t._observable$=p.pipe(g.switchMap(v=>g.of(v))).subscribe(v=>t.asyncProcessCallback(v,r,d,a,s),v=>console.error(v))}}}}}})()}parseFormatterAndSanitize(e,t,n,r,s){if("function"==typeof e){const a=e(t.row,t.cell,n,r,s,this._grid),d=C1(a)?a:a.html||a.text;return this._grid.sanitizeHtmlString((d instanceof HTMLElement?d.textContent:d)||"")}return"string"==typeof e?this._grid.sanitizeHtmlString(e):""}renderRegularTooltip(e,t,n,r,s){const a=document.createElement("div");let d;this._grid.applyHtmlCode(a,this.parseFormatterAndSanitize(e,t,n,r,s)),this._hasMultipleTooltips=(this._cellNodeElm?.querySelectorAll(S1).length||0)>1;const h=this._cellAddonOptions?.useRegularTooltipFromCellTextOnly||!this._mouseTarget?this._cellNodeElm:this._mouseTarget;let p=r?.toolTip??"";p||("slick-cell"===this._cellType&&h&&h.clientWidththis._cellAddonOptions?.tooltipTextMaxLength&&(p=p.substring(0,this._cellAddonOptions.tooltipTextMaxLength-3)+"..."),d=h):(this._cellAddonOptions?.useRegularTooltipFromFormatterOnly?d=a.querySelector(S1):(d=P_(h,BT)?h:a.querySelector(S1),(!d||!P_(d,BT))&&h&&(d=h.querySelector(S1))),"none"===d?.style.display||this._hasMultipleTooltips&&(!h||h===this._cellNodeElm)?p="":(!p||"function"==typeof e&&this._cellAddonOptions?.useRegularTooltipFromFormatterOnly)&&(p=P_(d,BT)||""))),""!==p&&this.renderTooltipFormatter(e,t,n,r,s,p,d),this.swapAndClearTitleAttribute(d,p)}renderTooltipFormatter(e,t,n,r,s,a,d){if(this._tooltipElm=O("div",{className:this.className}),this._tooltipBodyElm=O("div",{className:this.bodyClassName}),this._tooltipElm.classList.add(this.gridUid),this._tooltipElm.classList.add("l"+t.cell),this._tooltipElm.classList.add("r"+t.cell),this.tooltipElm?.appendChild(this._tooltipBodyElm),null==n){const g=this._cellNodeElm?.querySelector(S1);n=P_(g,BT)||n}let h=a||this.parseFormatterAndSanitize(e,t,n,r,s)||"";h=this._cellAddonOptions?.tooltipTextMaxLength&&h.length>this._cellAddonOptions.tooltipTextMaxLength?h.substring(0,this._cellAddonOptions.tooltipTextMaxLength-3)+"...":h;let p="";!a||this._cellAddonOptions?.renderRegularTooltipAsHtml?(p=this._grid.sanitizeHtmlString(h),this._grid.applyHtmlCode(this._tooltipBodyElm,p),this._tooltipBodyElm.style.whiteSpace=this._cellAddonOptions?.whiteSpace??this._defaultOptions.whiteSpace):(p=h||"",this._tooltipBodyElm.textContent=p,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`),p.toString()&&(document.body.appendChild(this._tooltipElm),this.reposition(t),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 t=kn(this._cellNodeElm),n=this._cellNodeElm.offsetWidth,r=this._tooltipElm.getBoundingClientRect().height,s=this._tooltipElm.getBoundingClientRect().width,a=document.body.offsetWidth||window.innerWidth;let d=(t.top||0)-this._tooltipElm.offsetHeight-(this._cellAddonOptions?.offsetTopBottom??0),h=(t.left||0)-(this._cellAddonOptions?.offsetRight??0);const p=this._cellAddonOptions?.position??"auto";let g="";if("center"===p?(h+=n/2-s/2+(this._cellAddonOptions?.offsetRight??0),g="top-center",this._tooltipElm.classList.remove("arrow-left-align","arrow-right-align"),this._tooltipElm.classList.add("arrow-center-align")):"right-align"===p||("auto"===p||"left-align"!==p)&&h+s>a?(g="right",h-=s-n-(this._cellAddonOptions?.offsetLeft??0),this._tooltipElm.classList.remove("arrow-center-align","arrow-left-align"),this._tooltipElm.classList.add("arrow-right-align")):(g="left",this._tooltipElm.classList.remove("arrow-center-align","arrow-right-align"),this._tooltipElm.classList.add("arrow-left-align")),"bottom"===p||("auto"===p||"top"!==p)&&r>R_(this._cellNodeElm).top?(d=(t.top||0)+(this.gridOptions.rowHeight??0)+(this._cellAddonOptions?.offsetTopBottom??0),g=`bottom-${g}`,this._tooltipElm.classList.remove("arrow-down"),this._tooltipElm.classList.add("arrow-up")):(g=`top-${g}`,this._tooltipElm.classList.remove("arrow-up"),this._tooltipElm.classList.add("arrow-down")),this._tooltipElm&&(this._hasMultipleTooltips||this.cellAddonOptions?.repositionByMouseOverTarget)){const v=kn(this._mouseTarget);g.includes("left")||"top-center"===g?h=v.left-(this._addonOptions?.offsetArrow??3):g.includes("right")&&(h=v.left-s+(this._mouseTarget?.offsetWidth??0)+(this._addonOptions?.offsetArrow??3))}this._tooltipElm.style.top=`${d}px`,this._tooltipElm.style.left=`${h}px`}}swapAndClearTitleAttribute(e,t){let n;e&&(n=this._cellNodeElm&&(this._cellNodeElm.hasAttribute("title")&&this._cellNodeElm.getAttribute("title")?this._cellNodeElm:this._cellNodeElm?.querySelector("[title]")));const r=e||this._cellNodeElm&&(this._cellNodeElm.hasAttribute("title")&&this._cellNodeElm.getAttribute("title")?this._cellNodeElm:this._cellNodeElm?.querySelector("[title]"));r&&(r.setAttribute("data-slick-tooltip",t||""),r.hasAttribute("title")&&r.setAttribute("title",""),n?.hasAttribute("title")&&n.setAttribute("title",""))}}let VT=class{translate;subscriptions=[];angularGrid;gridOptions;columnDefinitions;dataset;selectedLanguage="";selectedLanguageFile="";fetchResult="";statusClass="alert alert-light";statusStyle="display: none";constructor(e){this.translate=e;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:Ne.text}},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,minWidth:100,filterable:!0,type:M.number,editor:{model:Ne.text}},{id:"%",name:"% Complete",field:"percentComplete",sortable:!0,minWidth:100,filterable:!0,type:M.number,editor:{model:Ne.text}},{id:"start",name:"Start",field:"start",formatter:G.dateIso,exportWithFormatter:!0,filterable:!0,editor:{model:Ne.date}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,exportWithFormatter:!0,filterable:!0,editor:{model:Ne.date}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",sortable:!0,minWidth:100,filterable:!0,type:"boolean",editor:{model:Ne.checkbox}}],this.gridOptions={enableAutoResize:!1,gridHeight:350,gridWidth:800,rowHeight:33,enableExcelCopyBuffer:!0,excelCopyBufferOptions:{onBeforePasteCell:(e,t)=>t.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:t,percentComplete:n,finish:r,start:s,duration:a,title:d}=e.dataContext;return a>40?(alert("Sorry, 40 is the maximum allowed duration."),Promise.resolve(!1)):function tpe(i,e){return new Promise(t=>{window.setTimeout(()=>{t(new Response(JSON.stringify({status:200,message:"success"})))},window.Cypress?10:500)})}(0,JSON.stringify({effortDriven:t,percentComplete:n,finish:r,start:s,duration:a,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 HT]}}getData(e){const t=[];for(let n=0;n{this.selectedLanguage=e}))}static ctorParameters=()=>[{type:zt}]};VT=Oe([We({encapsulation:Bt.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:[Jhe()]}),Xt("design:paramtypes",[zt])],VT);var dj={},zi=Uint8Array,Fs=Uint16Array,lE=Int32Array,vy=new zi([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]),by=new zi([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]),cE=new zi([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),uj=function(i,e){for(var t=new Fs(31),n=0;n<31;++n)t[n]=e+=1<>1|(21845&Fn)<<1;Em=(61680&(Em=(52428&Em)>>2|(13107&Em)<<2))>>4|(3855&Em)<<4,dE[Fn]=((65280&Em)>>8|(255&Em)<<8)>>1}var Md=function(i,e,t){for(var n=i.length,r=0,s=new Fs(e);r>h]=p}else for(d=new Fs(n),r=0;r>15-i[r]);return d},Fm=new zi(288);for(Fn=0;Fn<144;++Fn)Fm[Fn]=8;for(Fn=144;Fn<256;++Fn)Fm[Fn]=9;for(Fn=256;Fn<280;++Fn)Fm[Fn]=7;for(Fn=280;Fn<288;++Fn)Fm[Fn]=8;var uE=new zi(32);for(Fn=0;Fn<32;++Fn)uE[Fn]=5;var gj=Md(Fm,9,0),vj=Md(uE,5,0),hE=function(i){return(i+7)/8|0},xm=function(i,e,t){return(null==e||e<0)&&(e=0),(null==t||t>i.length)&&(t=i.length),new zi(i.subarray(e,t))},yj=["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"],hi=function(i,e,t){var n=new Error(e||yj[i]);if(n.code=i,Error.captureStackTrace&&Error.captureStackTrace(n,hi),!t)throw n;return n},Id=function(i,e,t){t<<=7&e;var n=e/8|0;i[n]|=t,i[n+1]|=t>>8},yy=function(i,e,t){t<<=7&e;var n=e/8|0;i[n]|=t,i[n+1]|=t>>8,i[n+2]|=t>>16},UT=function(i,e){for(var t=[],n=0;ny&&(y=s[n].s);var C=new Fs(y+1),k=jT(t[g-1],C,0);if(k>e){n=0;var E=0,x=k-e,S=1<e))break;E+=S-(1<>=x;E>0;){var I=s[n].s;C[I]=0&&E;--n){var L=s[n].s;C[L]==e&&(--C[L],++E)}k=e}return{t:new zi(C),l:k}},jT=function(i,e,t){return-1==i.s?Math.max(jT(i.l,e,t+1),jT(i.r,e,t+1)):e[i.s]=t},$9=function(i){for(var e=i.length;e&&!i[--e];);for(var t=new Fs(++e),n=0,r=i[0],s=1,a=function(h){t[n++]=h},d=1;d<=e;++d)if(i[d]==r&&d!=e)++s;else{if(!r&&s>2){for(;s>138;s-=138)a(32754);s>2&&(a(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(a(r),--s;s>6;s-=6)a(8304);s>2&&(a(s-3<<5|8208),s=0)}for(;s--;)a(r);s=1,r=i[d]}return{c:t.subarray(0,n),n:e}},Cy=function(i,e){for(var t=0,n=0;n>8,i[r+2]=255^i[r],i[r+3]=255^i[r+1];for(var s=0;s4&&!Se[cE[tt-1]];--tt);var Et,Ae,yt,Ni,mt=p+5<<3,qt=Cy(r,Fm)+Cy(s,uE)+a,Kt=Cy(r,y)+Cy(s,E)+a+14+3*tt+Cy(re,Se)+2*re[16]+3*re[17]+7*re[18];if(h>=0&&mt<=qt&&mt<=Kt)return W9(e,g,i.subarray(h,h+p));if(Id(e,g,1+(Kt15&&(Id(e,g,pi[ie]>>5&127),g+=pi[ie]>>12)}}}else Et=gj,Ae=Fm,yt=vj,Ni=uE;for(ie=0;ie255){yy(e,g,Et[(ur=ht>>18&31)+257]),g+=Ae[ur+257],ur>7&&(Id(e,g,ht>>23&31),g+=vy[ur]);var qr=31&ht;yy(e,g,yt[qr]),g+=Ni[qr],qr>3&&(yy(e,g,ht>>5&8191),g+=by[qr])}else yy(e,g,Et[ht]),g+=Ae[ht]}return yy(e,g,Et[256]),g+Ae[256]},Cj=new lE([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),j9=new zi(0),wj=function(i,e,t,n,r,s){var a=s.z||i.length,d=new zi(n+a+5*(1+Math.ceil(a/7e3))+r),h=d.subarray(n,d.length-r),p=s.l,g=7&(s.r||0);if(e){g&&(h[0]=s.r>>3);for(var v=Cj[e-1],y=v>>13,C=8191&v,k=(1<7e3||Se>24576)&&(Et>423||!p)){g=U9(i,h,0,L,R,W,ie,Se,tt,se-tt,g),Se=re=ie=0,tt=se;for(var Ae=0;Ae<286;++Ae)R[Ae]=0;for(Ae=0;Ae<30;++Ae)W[Ae]=0}var yt=2,Ni=0,Xo=C,Gt=qt-Kt&32767;if(Et>2&&mt==I(se-Gt))for(var Lr=Math.min(y,Et)-1,pi=Math.min(32767,se),ur=Math.min(258,Et);Gt<=pi&&--Xo&&qt!=Kt;){if(i[se+yt]==i[se+yt-Gt]){for(var ht=0;htyt){if(yt=ht,Ni=Gt,ht>Lr)break;var qr=Math.min(Gt,ht-2),Ha=0;for(Ae=0;AeHa&&(Ha=mh,Kt=Ml)}}}Gt+=(qt=Kt)-(Kt=E[qt])&32767}if(Ni){L[Se++]=268435456|zT[yt]<<18|G9[Ni];var Le=31&zT[yt],gt=31&G9[Ni];ie+=vy[Le]+by[gt],++R[257+Le],++W[gt],Ie=se+yt,++re}else L[Se++]=i[se],++R[i[se]]}}for(se=Math.max(se,Ie);se=a&&(h[g/8|0]=p,nn=a),g=W9(h,g+1,i.subarray(se,nn))}s.i=a}return xm(d,0,n+hE(g)+r)},kj=function(){for(var i=new Int32Array(256),e=0;e<256;++e){for(var t=e,n=9;--n;)t=(1&t&&-306674912)^t>>>1;i[e]=t}return i}(),qT=function(){var i=-1;return{p:function(e){for(var t=i,n=0;n>>8;i=t},d:function(){return~i}}},KT=function(i,e,t,n,r){if(!r&&(r={l:1},e.dictionary)){var s=e.dictionary.subarray(-32768),a=new zi(s.length+i.length);a.set(s),a.set(i,s.length),i=a,r.w=s.length}return wj(i,null==e.level?6:e.level,null==e.mem?r.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(i.length)))):20:12+e.mem,t,n,r)},YT=function(i,e){var t={};for(var n in i)t[n]=i[n];for(var n in e)t[n]=e[n];return t},_j=function(i,e,t){for(var n=i(),r=i.toString(),s=r.slice(r.indexOf("[")+1,r.lastIndexOf("]")).replace(/\s+/g,"").split(","),a=0;a>>=8};function JT(i,e){return KT(i,e||{},0,0)}var eN=function(i,e,t,n){for(var r in i){var s=i[r],a=e+r,d=n;Array.isArray(s)&&(d=YT(n,s[1]),s=s[0]),s instanceof zi?t[a]=[s,d]:(t[a+="/"]=[new zi(0),d],eN(s,a,t,n))}},Oj=typeof TextEncoder<"u"&&new TextEncoder,tN=typeof TextDecoder<"u"&&new TextDecoder;try{tN.decode(j9,{stream:!0}),1}catch{}function mE(i,e){if(e){for(var t=new zi(i.length),n=0;n>1)),a=0,d=function(g){s[a++]=g};for(n=0;ns.length){var h=new zi(a+8+(r-n<<1));h.set(s),s=h}var p=i.charCodeAt(n);p<128||e?d(p):p<2048?(d(192|p>>6),d(128|63&p)):p>55295&&p<57344?(d(240|(p=65536+(1047552&p)|1023&i.charCodeAt(++n))>>18),d(128|p>>12&63),d(128|p>>6&63),d(128|63&p)):(d(224|p>>12),d(128|p>>6&63),d(128|63&p))}return xm(s,0,a)}var gE=function(i){var e=0;if(i)for(var t in i){var n=i[t].length;n>65535&&hi(9),e+=n+4}return e},XT=function(i,e,t,n,r,s,a,d){var h=n.length,p=t.extra,g=d&&d.length,v=gE(p);In(i,e,null!=a?33639248:67324752),e+=4,null!=a&&(i[e++]=20,i[e++]=t.os),i[e]=20,e+=2,i[e++]=t.flag<<1|(s<0&&8),i[e++]=r&&8,i[e++]=255&t.compression,i[e++]=t.compression>>8;var y=new Date(null==t.mtime?Date.now():t.mtime),C=y.getFullYear()-1980;if((C<0||C>119)&&hi(10),In(i,e,C<<25|y.getMonth()+1<<21|y.getDate()<<16|y.getHours()<<11|y.getMinutes()<<5|y.getSeconds()>>1),e+=4,-1!=s&&(In(i,e,t.crc),In(i,e+4,s<0?-s-2:s),In(i,e+8,t.size)),In(i,e+12,h),In(i,e+14,v),e+=16,null!=a&&(In(i,e,g),In(i,e+6,t.attrs),In(i,e+10,a),e+=14),i.set(n,e),e+=h,v)for(var k in p){var E=p[k],x=E.length;In(i,e,+k),In(i,e+2,x),i.set(E,e+4),e+=4+x}return g&&(i.set(d,e),e+=g),e},Nj=function(i,e,t,n,r){In(i,e,101010256),In(i,e+8,t),In(i,e+10,t),In(i,e+12,n),In(i,e+16,r)};function fpe(i,e,t){t||(t=e,e={}),"function"!=typeof t&&hi(7);var n={};eN(i,"",n,e);var r=Object.keys(n),s=r.length,a=0,d=0,h=s,p=new Array(s),g=[],v=function(){for(var x=0;x65535&&qt(hi(11,0,1),null),mt)if(W<16e4)try{qt(null,JT(I,L))}catch(Kt){qt(Kt,null)}else g.push(function cpe(i,e,t){return t||(t=e,e={}),"function"!=typeof t&&hi(7),wy(i,e,[Y9],function(n){return Sm(JT(n.data[0],n.data[1]))},0,t)}(I,L,qt));else qt(null,I)},E=0;E((i,e,t)=>e in i?vpe(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t)(i,"symbol"!=typeof e?e+"":e,t);function ch(i){const e=typeof i;return null!=i&&("object"===e||"function"===e)}function ype(i){if("object"!=typeof i||null===i||"[object Object]"!==Object.prototype.toString.call(i))return!1;const e=Object.getPrototypeOf(i);if(null===e)return!0;const t=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return"function"==typeof t&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(i)}function D1(i){return null!=i&&"string"==typeof i.valueOf()}const Cpe={"&":"&","<":"<",">":">",'"':""","'":"'"},Bj=i=>("string"!=typeof i&&(i=`${i}`),i.replace(/[&<>"']/g,e=>Cpe[e]));class eM{constructor(e,t){ne(this,"documentElement"),this.documentElement=this.createElement(t),this.documentElement.setAttribute("xmlns",e)}createElement(e){return new tM({nodeName:e})}createTextNode(e){return new Hj(e)}toString(){return this.documentElement.toString()}}ne(eM,"Node",{Create:i=>{switch(i.type){case"XML":return new tM(i);case"TEXT":return new Hj(i.nodeValue);default:return null}}});class Hj{constructor(e){ne(this,"nodeValue"),this.nodeValue=e}toJSON(){return{nodeValue:this.nodeValue,type:"TEXT"}}toString(){return Bj(this.nodeValue)}}class tM{constructor(e){if(ne(this,"nodeName",""),ne(this,"children"),ne(this,"nodeValue"),ne(this,"attributes"),ne(this,"firstChild"),this.nodeName=e.nodeName,this.children=[],this.nodeValue=e.nodeValue||"",this.attributes={},e.children)for(let t=0,n=e.children.length;t${t}`:"/>",e}toJSON(){const e=[];for(let t=0,n=this.children.length;t0;)s-=Math.pow(26,n-1),r=s%Math.pow(26,n),s-=r,r/=Math.pow(26,n-1),a="ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(r)+a,n+=1;return M1.LETTER_REFS[e]=a,a.concat(String(t))}};ne(iM,"_idSpaces",{}),ne(iM,"LETTER_REFS",{}),ne(iM,"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=iM;const iN={};function Na(i="$lodash$"){iN[i]||(iN[i]=0);const e=++iN[i];return"$lodash$"===i?`${e}`:`${i}${e}`}const Dm={};class nM{constructor(){ne(this,"relations",{}),ne(this,"lastId",1),Na("rId")}importData(e){this.relations=e.relations,this.lastId=e.lastId}exportData(){return{relations:this.relations,lastId:this.lastId}}addRelation(e,t){return this.relations[e.id]={id:Na("rId"),schema:ce.schemas[t],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"),t=e.documentElement;for(const[n,r]of Object.entries(this.relations)){const s=ce.createElement(e,"Relationship",[["Id",r.id],["Type",r.schema],["Target",r.object.target||Dm[n]]]);r.object.targetMode&&s.setAttribute("TargetMode",r.object.targetMode),t.appendChild(s)}return e}}class _pe{constructor(){ne(this,"state",null),ne(this,"xSplit",null),ne(this,"ySplit",null),ne(this,"activePane","bottomRight"),ne(this,"topLeftCell",null),ne(this,"_freezePane")}freezePane(e,t,n){this._freezePane={xSplit:e,ySplit:t,cell:n}}exportXML(e){const t=e.createElement("pane");return null!==this.state&&(t.setAttribute("xSplit",this._freezePane.xSplit),t.setAttribute("ySplit",this._freezePane.ySplit),t.setAttribute("topLeftCell",this._freezePane.cell),t.setAttribute("activePane","bottomRight"),t.setAttribute("state","frozen")),t}}class $j{constructor(){ne(this,"strings",{}),ne(this,"stringArray",[]),ne(this,"id",Na("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"),t=e.documentElement;this.stringArray.reverse();let n=this.stringArray.length;t.setAttribute("count",n),t.setAttribute("uniqueCount",n);const r=e.createElement("si"),s=e.createElement("t");s.appendChild(e.createTextNode("--placeholder--")),r.appendChild(s);const a=this.stringArray;for(;n--;){const d=r.cloneNode(!0);"string"==typeof a[n]&&a[n].match(/\s+/)&&d.firstChild.setAttribute("xml:space","preserve"),d.firstChild.firstChild.nodeValue=a[n],t.appendChild(d)}return e}}class Epe{constructor(e){ne(this,"pane"),ne(this,"showZeros",null),ne(this,"defaultGridColor",null),ne(this,"colorId",null),ne(this,"rightToLeft",null),ne(this,"showFormulas",null),ne(this,"showGridLines",null),ne(this,"showOutlineSymbols",null),ne(this,"showRowColHeaders",null),ne(this,"showRuler",null),ne(this,"showWhiteSpace",null),ne(this,"tabSelected",null),ne(this,"topLeftCell",null),ne(this,"viewType",null),ne(this,"windowProtection",null),ne(this,"zoomScale",null),ne(this,"zoomScaleNormal",null),ne(this,"zoomScalePageLayoutView",null),ne(this,"zoomScaleSheetLayoutView",null);const t=e||{};this.pane=t.pane||new _pe}freezePane(e,t,n){this.pane.state="frozen",this.pane.xSplit=e,this.pane.ySplit=t,this.pane.topLeftCell=n}exportXML(e){const t=e.createElement("sheetViews"),n=e.createElement("sheetView");return ce.setAttributesOnDoc(n,{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}),n.appendChild(this.pane.exportXML(e)),t.appendChild(n),t}}class Wj{constructor(){ne(this,"id",Na("StyleSheet")),ne(this,"cellStyles",[{name:"Normal",xfId:"0",builtinId:"0"}]),ne(this,"defaultTableStyle",!1),ne(this,"differentialStyles",[{}]),ne(this,"masterCellFormats",[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfid:0}]),ne(this,"masterCellStyles",[{numFmtId:0,fontId:0,fillId:0,borderId:0}]),ne(this,"fonts",[{}]),ne(this,"numberFormatters",[]),ne(this,"fills",[{},{type:"pattern",patternType:"gray125",fgColor:"FF333333",bgColor:"FF333333"}]),ne(this,"borders",[{top:{},left:{},right:{},bottom:{},diagonal:{}}]),ne(this,"tableStyles",[])}createSimpleFormatter(e){const t={id:this.masterCellFormats.length};if("date"===e)t.numFmtId=14;return this.masterCellFormats.push(t),t}createFill(e){const t=this.fills.length,n=e;return n.id=t,this.fills.push(n),n}createNumberFormatter(e){const t={id:this.numberFormatters.length+100,formatCode:e};return this.numberFormatters.push(t),t}createFormat(e){const t={id:this.masterCellFormats.length};if(e.protection&&(t.protection=e.protection),e.font&&ch(e.font))t.fontId=this.createFontStyle(e.font).id;else if(e.font){if(Number.isNaN(Number.parseInt(e.font,10)))throw new Error("Passing a non-numeric font id is not supported");t.fontId=e.font}if(e.format&&D1(e.format))t.numFmtId=this.createNumberFormatter(e.format).id;else if(e.format){if(Number.isNaN(Number.parseInt(e.format,10)))throw new Error("Invalid number formatter id");t.numFmtId=e.format}if(e.border&&ch(e.border))t.borderId=this.createBorderFormatter(e.border).id;else if(e.border){if(Number.isNaN(Number.parseInt(e.border,10)))throw new Error("Passing a non-numeric border id is not supported");t.borderId=e.border}if(e.fill&&ch(e.fill))t.fillId=this.createFill(e.fill).id;else if(e.fill){if(Number.isNaN(Number.parseInt(e.fill,10)))throw new Error("Passing a non-numeric fill id is not supported");t.fillId=e.fill}return e.alignment&&ch(e.alignment)&&(t.alignment=function Fpe(i,e){return e.reduce((t,n)=>(null!=i&&i.hasOwnProperty(n)&&(t[n]=i[n]),t),{})}(e.alignment,["horizontal","justifyLastLine","readingOrder","relativeIndent","shrinkToFit","textRotation","vertical","wrapText"])),this.masterCellFormats.push(t),t}createDifferentialStyle(e){const t=this.differentialStyles.length,n={id:t};return e.font&&ch(e.font)&&(n.font=e.font),e.border&&ch(e.border)&&(n.border=Object.assign({top:{},left:{},right:{},bottom:{},diagonal:{}},e.border)),e.fill&&ch(e.fill)&&(n.fill=e.fill),e.alignment&&ch(e.alignment)&&(n.alignment=e.alignment),e.format&&D1(e.format)&&(n.numFmt=e.format),this.differentialStyles[t]=n,n}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 t={id:this.fonts.length};return e.bold&&(t.bold=!0),e.italic&&(t.italic=!0),e.superscript&&(t.vertAlign="superscript"),e.subscript&&(t.vertAlign="subscript"),e.underline&&("string"==typeof e.underline&&["double","singleAccounting","doubleAccounting"].includes(e.underline)?t.underline=e.underline:t.underline=!0),e.strike&&(t.strike=!0),e.outline&&(t.outline=!0),e.shadow&&(t.shadow=!0),e.size&&(t.size=e.size),e.color&&(t.color=e.color),e.fontName&&(t.fontName=e.fontName),this.fonts.push(t),t}exportBorders(e){const t=e.createElement("borders");t.setAttribute("count",this.borders.length);for(let n=0,r=this.borders.length;n{const a=e.createElement(s);return t[s].style&&a.setAttribute("style",t[s].style),t[s].color&&a.appendChild(this.exportColor(e,t[s].color)),a};return n.appendChild(r("left")),n.appendChild(r("right")),n.appendChild(r("top")),n.appendChild(r("bottom")),n.appendChild(r("diagonal")),n}exportColor(e,t){const n=e.createElement("color");return D1(t)?(n.setAttribute("rgb",t),n):(void 0!==t.tint&&n.setAttribute("tint",t.tint),void 0!==t.auto&&n.setAttribute("auto",String(!!t.auto)),void 0!==t.theme&&n.setAttribute("theme",t.theme),n)}exportMasterCellFormats(e){const t=ce.createElement(e,"cellXfs",[["count",this.masterCellFormats.length]]);for(let n=0,r=this.masterCellFormats.length;n-1!==r.indexOf(d));if(t.alignment){const d=t.alignment;n.appendChild(this.exportAlignment(e,d))}t.protection&&(n.appendChild(this.exportProtection(e,t.protection)),n.setAttribute("applyProtection","1"));let a=s.length;for(;a--;)n.setAttribute(s[a],t[s[a]]);return t.fillId&&n.setAttribute("applyFill","1"),t.fontId&&n.setAttribute("applyFont","1"),t.borderId&&n.setAttribute("applyBorder","1"),t.alignment&&n.setAttribute("applyAlignment","1"),t.numFmtId&&n.setAttribute("applyNumberFormat","1"),void 0!==t.numFmtId&&void 0===t.xfId&&n.setAttribute("xfId","0"),n}exportAlignment(e,t){const n=e.createElement("alignment"),r=Object.keys(t);for(let s=0,a=r.length;s{if("name"===s)return;r++;const d=e.createElement("tableStyleElement");d.setAttribute("type",s),d.setAttribute("dxfId",a),n.appendChild(d)}),n.setAttribute("count",String(r)),n}exportProtection(e,t){const n=e.createElement("protection");for(const r in t)r in t&&n.setAttribute(r,t[r]);return n}toXML(){const e=ce.createXmlDoc(ce.schemas.spreadsheetml,"styleSheet"),t=e.documentElement;return t.appendChild(this.exportNumberFormatters(e)),t.appendChild(this.exportFonts(e)),t.appendChild(this.exportFills(e)),t.appendChild(this.exportBorders(e)),t.appendChild(this.exportMasterCellStyles(e)),t.appendChild(this.exportMasterCellFormats(e)),t.appendChild(this.exportCellStyles(e)),t.appendChild(this.exportDifferentialStyles(e)),this.tableStyles.length&&t.appendChild(this.exportTableStyles(e)),e}}class xpe{constructor(e){ne(this,"name",""),ne(this,"id",Na("Worksheet")),ne(this,"_timezoneOffset"),ne(this,"relations",null),ne(this,"columnFormats",[]),ne(this,"data",[]),ne(this,"mergedCells",[]),ne(this,"columns",[]),ne(this,"sheetProtection",!1),ne(this,"_headers",[]),ne(this,"_footers",[]),ne(this,"_tables",[]),ne(this,"_drawings",[]),ne(this,"_orientation"),ne(this,"_margin"),ne(this,"_rowInstructions",{}),ne(this,"_freezePane",{}),ne(this,"sharedStrings",null),ne(this,"hyperlinks",[]),ne(this,"sheetView"),ne(this,"showZeros",null),this._timezoneOffset=60*(new Date).getTimezoneOffset()*1e3,this.sheetView=e.sheetView||new Epe,this.initialize(e)}initialize(e){e=e||{},this.name=e.name,this.id=Na("Worksheet"),this._timezoneOffset=60*(new Date).getTimezoneOffset()*1e3,e.columns&&this.setColumns(e.columns),this.relations=new nM}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,t){this._rowInstructions[e]=t}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(D1(e))return'&"-,Regular"'.concat(e);if(ch(e)&&!Array.isArray(e)){let t="";if(e.font||e.bold){const n=e.bold?"Bold":"Regular";t+=`&"${e.font||"-"}`,t+=`,${n}"`}else t+='&"-,Regular"';return e.underline&&(t+="&U"),e.fontSize&&(t+=`&${e.fontSize}`),t+=e.text,t}return Array.isArray(e)?e.reduce((t,n)=>t.concat(this.compilePageDetailPiece(n)),""):void 0}exportHeader(e){const t=e.createElement("oddHeader");return t.appendChild(e.createTextNode(this.compilePageDetailPackage(this._headers))),t}exportFooter(e){const t=e.createElement("oddFooter");return t.appendChild(e.createTextNode(this.compilePageDetailPackage(this._footers))),t}_buildCache(e){const t=e.createElement("c"),n=e.createElement("v");n.appendChild(e.createTextNode("--temp--")),t.appendChild(n);const r=e.createElement("c"),s=e.createElement("f");s.appendChild(e.createTextNode("--temp--")),r.appendChild(s);const a=e.createElement("c");a.setAttribute("t","s");const d=e.createElement("v");return d.appendChild(e.createTextNode("--temp--")),a.appendChild(d),{number:t,date:t,string:a,formula:r}}collectSharedStrings(){const e=this.data,t={};for(let n=0,r=e.length;n"u"&&(t[h]=!0)}}return Object.keys(t)}toXML(){var e,t,n;const r=this.data,s=this.columns||[],a=ce.createXmlDoc(ce.schemas.spreadsheetml,"worksheet"),d=a.documentElement;let h,p,g;d.setAttribute("xmlns:r",ce.schemas.relationships),d.setAttribute("xmlns:mc",ce.schemas.markupCompat);let v=0;const y=ce.createElement(a,"sheetData"),C=this._buildCache(a);for(g=0,p=r.length;gv?E:v;const x=a.createElement("row");for(let S=0;S0){const k=a.createElement("hyperlinks"),E=this.hyperlinks;for(h=0,p=E.length;h0){const k=a.createElement("mergeCells");for(h=0,p=this.mergedCells.length;h0||this._footers.length>0){const k=a.createElement("headerFooter");this._headers.length>0&&k.appendChild(this.exportHeader(a)),this._footers.length>0&&k.appendChild(this.exportFooter(a)),d.appendChild(k)}for(h=0,p=this._drawings.length;h0){const k=a.createElement("tableParts");for(k.setAttribute("count",this._tables.length),h=0,p=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`),p.setAttribute("name",this.worksheets[d].name),p.setAttribute("sheetId",d+1),p.setAttribute("r:id",this.relations.getRelationshipId(this.worksheets[d])),r.appendChild(p)}t.appendChild(r);const s=ce.createElement(e,"definedNames");let a=0;for(const d in this.printTitles)if(d in this.printTitles){const h=this.printTitles[d],p=e.createElement("definedName");p.setAttribute("name","_xlnm.Print_Titles"),p.setAttribute("localSheetId",a++);let g="";h.top&&(g+=`${d}!$1:$${h.top}`,h.left&&(g+=",")),h.left&&(g+=`${d}!$A:$${h.left}`),p.appendChild(e.createTextNode(g)),s.appendChild(p)}return t.appendChild(s),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 t,n;for(Dm[this.styleSheet.id]="styles.xml",Dm[this.sharedStrings.id]="sharedStrings.xml",Dm[this.id]="/xl/workbook.xml",t=0,n=this.tables.length;t\n${r}`}}generateFiles(){return new Promise(e=>{const t={};this._generateCorePaths(t);for(let n=0,r=this.worksheets.length;n{i.generateFiles().then(a=>{for(const[d,h]of Object.entries(a))n[d.substr(1)]=mE(h);return fpe(n,t?.zipOptions||{},(d,h)=>{if(d)s(d);else if("Uint8Array"===e)r(h);else{const p=t?.fileFormat??"xlsx";let g=t?.mimeType;void 0===g&&(g="xls"===p?"application/vnd.ms-excel":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"),r(new Blob([h],{type:g}))}})})})}(i,"Blob",{...t,fileFormat:n}).then(r=>{!function Ape(i,e){const t=document.createElement("a"),n=URL.createObjectURL(e);t&&document&&(t.textContent="download",t.href=n,t.setAttribute("download",i),t.style.visibility="hidden",document.body.appendChild(t),t.click(),document.body.removeChild(t),URL.revokeObjectURL(n))}(e,r)})}const Tpe=(i,{excelFormatId:e})=>void 0!==e?{value:i,metadata:{style:e}}:i,Mpe=(i,{columnDef:e,excelFormatId:t,gridOptions:n})=>({value:"string"==typeof i&&/\d/g.test(i)?Ipe(i,e,n):i,metadata:{style:t}});function Ipe(i,e,t){let n=i;if("string"==typeof i&&i){const r=Ad("decimalSeparator",e,t,oe.DEFAULT_NUMBER_DECIMAL_SEPARATOR),s=parseFloat(","===r?i.replace(/[^0-9,-]+/g,"").replace(",","."):i.replace(/[^\d.-]/g,""));n=isNaN(s)?i:s}return n}function Lpe(i,e,t,n,r=!0){const s=I_(t);let a,d=Tpe;return s===M.number&&r&&(a=nN(i,e,t,n,"cell").excelFormat.id,d=Mpe),{excelFormatId:a,getDataValueParser:d}}function Ope(i,e){return i?.[e.groupType]?.[e.columnDef.field]??0}function jj(i){let e;switch(i){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 nN(i,e,t,n,r){let d,s="",a=t.groupTotalsExcelExportOptions?.groupType||"";const h=I_(t);if("group"===r)switch(t.groupTotalsFormatter){case St.avgTotals:case St.avgTotalsCurrency:case St.avgTotalsDollar:case St.avgTotalsPercentage:a="avg";break;case St.minTotals:a="min";break;case St.maxTotals:a="max";break;case St.sumTotals:case St.sumTotalsBold:case St.sumTotalsColored:case St.sumTotalsCurrency:case St.sumTotalsCurrencyColored:case St.sumTotalsDollar:case St.sumTotalsDollarColoredBold:case St.sumTotalsDollarColored:case St.sumTotalsDollarBold:a="sum";break;default:d=e.numberFormat}else if(h===M.number)switch(t.formatter){case G.multiple:if(Array.isArray(t.params?.formatters))for(const p of t.params.formatters){const{excelFormat:g}=nN(i,e,{...t,formatter:p},n,r);if(g!==e.numberFormat){d=g;break}}d||(d=e.numberFormat);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:s=Kj(t,n,"cell");break;default:d=e.numberFormat}return!d&&(t.formatter||t.groupTotalsFormatter)&&(s=Kj(t,n,r,a),e.hasOwnProperty(s)||(e[s]=i.createFormat({format:s})),d=e[s]),{excelFormat:d,groupType:a}}function qj(i){const[e,t,n,r,s,a,d,h]=i?.match(/^([^\d(-]*)([(]?)([^\d]*)([-]?[\w]]?[\d\s]*[.,\d]*[\d]*[^)\s%]?)([^\d.,)]*)([)]?)([^\d]*)$/i)||[],p=(s||"").replace(/1/g,"0").replace(/[2]/g,"#");return[rM(t??""),n??"",rM(r??""),p,rM(a??""),d??"",rM(h??"")].join("").replace(",",",")}function Kj(i,e,t,n=""){let r="",s="",a="";const{minDecimal:d,maxDecimal:h,thousandSeparator:p}=function Rpe(i,e,t){let n;if("group"===t)switch(i.groupTotalsFormatter){case St.avgTotalsCurrency:case St.avgTotalsDollar:case St.sumTotalsCurrency:case St.sumTotalsCurrencyColored:case St.sumTotalsDollar:case St.sumTotalsDollarBold:case St.sumTotalsDollarColored:case St.sumTotalsDollarColoredBold:n="currency";break;case St.avgTotalsPercentage:n="percent";break;case St.avgTotals:case St.minTotals:case St.maxTotals:case St.sumTotals:case St.sumTotalsColored:case St.sumTotalsBold:default:n="decimal"}else if(i.formatter===G.multiple&&Array.isArray(i.params?.formatters)){n="decimal";for(const r of i.params.formatters)if(n=jj(r),"decimal"!==n)break}else n=jj(i.formatter);return Tn(i,e,n,t)}(i,e,t),v=parseFloat(`${p?"2220":"0"}.${function Ppe(i,e){return Yj("1",i)+Yj("2",e-i)}(d,h)}`);return"group"===t&&i.groupTotalsFormatter?(s=_n(i.groupTotalsFormatter({[n]:{[i.field]:v}},i,e)),a=_n(i.groupTotalsFormatter({[n]:{[i.field]:-v}},i,e))):i.formatter&&(s=_n(i.formatter(0,0,v,i,{},e)),a=_n(i.formatter(0,0,-v,i,{},e))),s&&a&&(r=qj(s)+";"+qj(a)),r}function rM(i){return i&&`"${i}"`}function Yj(i,e){let t="";for(let n=0;n{const r={name:this._excelExportOptions.sheetName||"Sheet1"};this._workbook=new Uj,this._sheet=this._workbook.createWorksheet(r),this._stylesheet=this._workbook.getStyleSheet();const s=this._stylesheet.createFormat({font:{bold:!0}}),a=this._stylesheet.createFormat({format:"@"}),d=this._stylesheet.createFormat({format:"0"});this._stylesheetFormats={boldFormat:s,numberFormat:d,stringFormat:a},this._sheet.setColumnFormats([s]);const h=this.getDataOutput();window.setTimeout(yn(function*(){t._gridOptions?.excelExportOptions?.customExcelHeader&&t._gridOptions.excelExportOptions.customExcelHeader(t._workbook,t._sheet);const p=t._grid?.getColumns()||[];t._sheet.setColumns(t.getColumnStyles(p));const g=t._sheet.data;let v=g;Array.isArray(g)&&Array.isArray(h)&&(v=t._sheet.data.concat(h)),t._sheet.setData(v),t._workbook.addWorksheet(t._sheet);let y=t._excelExportOptions?.mimeType;void 0===y&&(y=t._fileFormat===Ii.xls?"application/vnd.ms-excel":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");const C=`${t._excelExportOptions.filename}.${t._fileFormat}`;Dpe(t._workbook,C,{mimeType:y}).then(()=>{t._pubSubService?.publish("onAfterExportToExcel",{filename:C,mimeType:y}),n(!0)})}))})}getExcelColumnNameByIndex(e){const t="ZABCDEFGHIJKLMNOPQRSTUVWXY";let n=Math.floor(e/26);const r=Math.floor(e%26);return 0===r&&n--,e>26?this.getExcelColumnNameByIndex(n)+t[r]:t[r]+""}getDataOutput(){const e=this._grid?.getColumns()||[],t=[],r=this._gridOptions?.excelExportOptions?.columnHeaderStyle;let s=this._stylesheetFormats.boldFormat.id;if(r&&(s=this._stylesheet.createFormat(r).id),this._gridOptions.createPreHeaderPanel&&this._gridOptions.showPreHeaderPanel&&!this._gridOptions.enableDraggableGrouping){const a=this._stylesheet.createFormat({alignment:{horizontal:"center"},font:{bold:!0}});t.push(this.getColumnGroupedHeaderTitlesData(e,{style:a?.id})),this._hasColumnTitlePreHeader=!0}return t.push(this.getColumnHeaderData(e,{style:s})),this.pushAllGridRowDataToArray(t,e),t}getColumnStyles(e){const t=this._dataView.getGrouping(),n=[];return Array.isArray(t)&&t.length>0&&n.push({bestFit:!0,columnStyles:this._gridOptions?.excelExportOptions?.customColumnWidth??10}),e.forEach(r=>{const s=r.excludeFromExport??!1;(void 0===r.width||r.width>0)&&!s&&n.push({bestFit:!0,width:r.excelExportOptions?.width??this._gridOptions?.excelExportOptions?.customColumnWidth??10})}),n}getColumnGroupedHeaderTitlesData(e,t){let n=[];this._groupedColumnHeaders=this.getColumnGroupedHeaderTitles(e)||[],this._groupedColumnHeaders&&Array.isArray(this._groupedColumnHeaders)&&this._groupedColumnHeaders.length>0&&(n=this._groupedColumnHeaders.map(a=>({value:a.title,metadata:t})));let r=0;const s=this._groupedColumnHeaders.length;for(let a=0;a0&&(n=this._columnHeaders.map(s=>({value:_n(s.title),metadata:t})));const r=this.getGroupColumnTitle();return r&&n.unshift({value:r,metadata:t}),n}getGroupColumnTitle(){let e=this._excelExportOptions.groupingColumnHeaderTitle;!e&&this._gridOptions.enableTranslate&&this._translaterService?.translate?e=this._translaterService.translate(`${Fl(this._gridOptions)}GROUP_BY`):e||(e=this._locales?.TEXT_GROUP_BY);const t=this._dataView.getGrouping();return Array.isArray(t)&&t.length>0?(this._hasGroupedItems=!0,e):(this._hasGroupedItems=!1,null)}getColumnGroupedHeaderTitles(e){const t=[];return Array.isArray(e)&&e.forEach(n=>{let r="";r=n.columnGroupKey&&this._gridOptions.enableTranslate&&this._translaterService?.translate?this._translaterService.translate(n.columnGroupKey):n.columnGroup||"";const s=n.excludeFromExport||!1;(void 0===n.width||n.width>0)&&!s&&t.push({key:n.field||n.id,title:r||""})}),t}getColumnHeaders(e){const t=[];return Array.isArray(e)&&e.forEach(n=>{let r="";r=(n.nameKey||n.nameKey)&&this._gridOptions.enableTranslate&&this._translaterService?.translate?this._translaterService.translate(n.nameKey||n.nameKey):Un(n.name||"","innerHTML")||Qs(n.field);const s=n.excludeFromExport||!1;(void 0===n.width||n.width>0)&&!s&&t.push({key:(n.field||n.id)+"",title:r})}),t}pushAllGridRowDataToArray(e,t){const n=this._dataView.getLength();for(let r=0;r1||"*"===h&&v>0||(h=x?.colspan??1),"*"===h?C=e.length-v:(C=h,y.id in E&&(k=y.id,p=v))}if("*"===h&&v>0||!isNaN(h)&&+h>1&&y.id!==k){const E=t+(this._hasColumnTitlePreHeader?3:2);if("number"==typeof h&&C-1==1){const x=this.getExcelColumnNameByIndex(p+1),S=this.getExcelColumnNameByIndex(v+1);this._sheet.mergeCells(`${x}${E}`,`${S}${E}`),a.push("")}else if("*"===h&&1===C){const x=this.getExcelColumnNameByIndex(v+1);this._sheet.mergeCells(`A${E}`,`${x}${E}`)}else a.push("");"number"==typeof h&&!isNaN(h)&&+h>1&&(C=h--)}else{let E="";const x=I_(y),S={...this._excelExportOptions};if(!1!==y.exportWithFormatter&&ih(x)&&(S.exportWithFormatter=!0),E=C9(t,v,y,n,this._grid,S),!this._regularCellExcelFormats.hasOwnProperty(y.id)){const L=y.excelExportOptions?.autoDetectCellFormat??this._excelExportOptions?.autoDetectCellFormat,R=Lpe(this._stylesheet,this._stylesheetFormats,y,this._grid,L);y.excelExportOptions?.style&&(R.excelFormatId=this._stylesheet.createFormat(y.excelExportOptions.style).id),y.excelExportOptions?.valueParserCallback&&(R.getDataValueParser=y.excelExportOptions.valueParserCallback),this._regularCellExcelFormats[y.id]=R}"string"==typeof E&&(y.sanitizeDataExport||this._excelExportOptions.sanitizeDataExport)&&(E=_n(E));const{excelFormatId:D,getDataValueParser:I}=this._regularCellExcelFormats[y.id];E=I(E,{columnDef:y,excelFormatId:D,stylesheet:this._stylesheet,gridOptions:this._gridOptions,dataRowIdx:r,dataContext:n}),a.push(E),s++}}return a}readGroupedRowTitle(e){const t=_n(e.title);if(this._excelExportOptions?.addGroupIndentation){const n=this._excelExportOptions?.groupCollapsedSymbol||"\u2b9e",r=this._excelExportOptions?.groupExpandedSymbol||"\u2b9f";return(e.collapsed?n:r)+" "+ey(5*e.level)+t}return t}readGroupedTotalRows(e,t,n){const s=[this._excelExportOptions.groupingAggregatorRowText||""];return e.forEach(a=>{let d="";const h=I_(a),p=a.excludeFromExport||!1;if(a.exportCustomGroupTotalsFormatter){const v=a.exportCustomGroupTotalsFormatter(t,a,this._grid);d=v instanceof HTMLElement?v.textContent||"":v}const g=a.excelExportOptions?.autoDetectCellFormat??this._excelExportOptions?.autoDetectCellFormat;if(h===M.number&&!1!==g){let v=this._groupTotalExcelFormats[a.id];v?.groupType||(v=nN(this._stylesheet,this._stylesheetFormats,a,this._grid,"group"),a.groupTotalsExcelExportOptions?.style&&(v.excelFormat=this._stylesheet.createFormat(a.groupTotalsExcelExportOptions.style)),this._groupTotalExcelFormats[a.id]=v);const y=a.groupTotalsExcelExportOptions?.valueParserCallback??Ope;if(void 0!==t[v.groupType]?.[a.field]){const C=y(t,{columnDef:a,groupType:v.groupType,excelFormatId:v.excelFormat?.id,stylesheet:this._stylesheet,dataRowIdx:n});d="object"==typeof C&&C.hasOwnProperty("metadata")?C:d={value:C,metadata:{style:v.excelFormat?.id}}}}else if(a.groupTotalsFormatter){const v=a.groupTotalsFormatter(t,a,this._grid);d=v instanceof HTMLElement?v.textContent||"":v}"string"==typeof d&&(a.sanitizeDataExport||this._excelExportOptions.sanitizeDataExport)&&(d=_n(d)),(void 0===a.width||a.width>0)&&!p&&s.push(d)}),s}}class rN{_clearFilterTriggered=!1;_shouldTriggerQuery=!0;filterElm;grid;searchTerms=[];columnDef;callback;operator=te.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=("searchTerms"in e?e.searchTerms:[])||[];const t=Array.isArray(this.searchTerms)&&this.searchTerms.length>=0?this.searchTerms[0]:"";this.filterElm=this.createFilterElement(t),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 t=e?.target?.value??"";const n=this.gridOptions.enableFilterTrimWhiteSpace||this.columnFilter.enableTrimWhiteSpace;"string"==typeof t&&n&&(t=t.trim()),this._clearFilterTriggered?(this.callback(e,{columnDef:this.columnDef,clearFilterTriggered:this._clearFilterTriggered,shouldTriggerQuery:this._shouldTriggerQuery}),this.filterElm?.classList.remove("filled")):(""===t?this.filterElm?.classList.remove("filled"):this.filterElm?.classList.add("filled"),this.callback(e,{columnDef:this.columnDef,searchTerms:[t],shouldTriggerQuery:this._shouldTriggerQuery})),this._clearFilterTriggered=!1,this._shouldTriggerQuery=!0}createFilterElement(e){const t=this.grid.getHeaderRowColumn(this.columnDef.id);if(t){t.innerHTML="";let n=this.gridOptions?.defaultFilterPlaceholder??"";this.columnFilter?.placeholder&&(n=this.columnFilter.placeholder),this.filterElm=document.createElement("input"),this.filterElm.type="text",this.filterElm.className="form-control search-filter",this.filterElm.placeholder=n,this.filterElm.value=`${e||""}`,this.filterElm.dataset.columnid=`${this.columnDef.id}`,t.appendChild(this.filterElm)}return this.filterElm}}function dh(i,e){return Math.floor(Math.random()*(e-i+1)+i)}let oM=class{http;translate;title="Example 4: Client Side Sort/Filter";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 ';angularGrid;columnDefinitions=[];gridOptions;dataset;metrics;constructor(e,t){this.http=e,this.translate=t}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,minWidth:55,type:M.string,filterable:!0,filter:{model:ee.compoundInputText}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,type:M.string,filter:{model:rN,enableTrimWhiteSpace:!0}},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:M.number,exportCsvForceToKeepAsString:!0,minWidth:55,filterable:!0,filter:{collectionAsync:this.http.get("assets/data/collection_500_numbers.json"),collectionFilterBy:[{property:"value",operator:te.notEqual,value:360},{property:"value",operator:te.notEqual,value:365}],collectionSortBy:{property:"value",sortDesc:!0,fieldType:M.number},customStructure:{value:"value",label:"label",optionLabel:"value",labelSuffix:"text"},collectionOptions:{separatorBetweenTextLabels:" ",filterResultAfterEachPass:"chain"},model:ee.multipleSelect,filterOptions:{maxHeight:250,width:175,useSelectOptionLabelToHtml:!0}}},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,minWidth:70,type:M.number,sortable:!0,filterable:!0,filter:{model:ee.compoundInputNumber}},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,minWidth:75,type:M.date,filterable:!0,filter:{model:ee.compoundDate}},{id:"usDateShort",name:"US Date Short",field:"usDateShort",sortable:!0,minWidth:70,width:70,type:M.dateUsShort,exportWithFormatter:!0,filterable:!0,filter:{model:ee.compoundDate}},{id:"utcDate",name:"UTC Date",field:"utcDate",formatter:G.dateTimeIsoAmPm,sortable:!0,minWidth:115,type:M.dateUtc,exportWithFormatter:!0,outputType:M.dateTimeIsoAmPm,filterable:!0,filter:{model:ee.compoundDate,filterOptions:{range:{date:"today"}}}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven.isEffort",minWidth:85,maxWidth:85,type:M.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:ee.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 xs],preParseDateColumns:"__"},this.dataset=this.mockData(10500)}angularGridReady(e){this.angularGrid=e}logItems(){console.log(this.angularGrid.dataView?.getItems())}mockData(e,t=0){const n=[];for(let r=t;r=",searchTerms:["2001-02-28"]}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"duration",direction:"ASC"},{columnId:"start",direction:"DESC"}])}refreshMetrics(e,t){t&&t.current>=0&&window.setTimeout(()=>{this.metrics={startTime:new Date,endTime:new Date,itemCount:t&&t.current||0,totalItemCount:this.dataset.length||0}})}scrollGridBottom(){this.angularGrid.slickGrid.navigateBottom()}scrollGridTop(){this.angularGrid.slickGrid.navigateTop()}static ctorParameters=()=>[{type:Mi},{type:zt}]};oM=Oe([We({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 \n
'}),Xt("design:paramtypes",[Mi,zt])],oM);var zpe=z(368),Gpe=z.n(zpe);let sM=class{title="Example 15: Column Span & Header Grouping";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 ";angularGrid2;gridObj2;columnDefinitions1;columnDefinitions2;gridOptions1;gridOptions2;dataset1=[];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:M.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 xs]},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:M.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 xs]},this.dataset2=this.getData(500)}getData(e){const t=[];for(let n=0;n\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:[Gpe()]})],sM);var Wpe=z(953),Upe=z.n(Wpe);function Zj(i,e,t){let n;t={modalType:"edit",validationFailedMsg:"Some of the fields have failed validation",validationMsgPrefix:null,show:null,hide:null,position:null,destroy:null,formValues:{},editors:{},...t};const s=()=>{},a=h=>{const p=e[h],g=kn(p),v=p?.clientWidth??0,y=p?.clientHeight??0;return{top:g.top,left:g.left,bottom:g.top+y,right:g.left+v,width:v,height:y,visible:!0}};function d(h){const p=this;let g=[];p.getEditors=()=>g,p.destroy=()=>{let y=g.pop();for(;y;)y?.destroy(),y=g.pop();let C=e.pop();for(;C;)ui(C),C?.remove(),C=e.pop();t?.destroy?.(),g=[],e=null},p.focus=()=>{(n||g[0]).focus()},p.isValueChanged=()=>{let y=0;for(;y{const y=[];let C=0;for(;C{let k=0;for(;k{let C=0;for(;C{let C;n=null;const k=[];let E=0;for(;E{let y=0;for(;y{let y=0;for(;y{t?.position?.(y)},function v(){let y={},C=0;for(;C{Array.isArray(g)&&g.length>0&&"function"==typeof g[0].focus&&g[0].focus()},0)}()}return d.prototype=this,d}const Jj=i=>console.log(i.message);class jpe{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 Pi,this._bindEventService=new br}init(e,t){if(this.grid=e,this.gridService=t.get("GridService"),this.translaterService=t.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??oe.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,t,n=!1,r=!0){const s=this.getColumnByObjectOrId(e),a="string"==typeof e?e:s?.id??"",d=this._editors?.[a];let h=t;if(!d&&!n)throw new Error(`Composite Editor with column id "${a}" not found.`);if("function"==typeof d?.setValue&&Array.isArray(this._editorContainers)){d.setValue(t,!0,r);const g=this._editorContainers.find(y=>y.dataset.editorid===a),v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;!d.disabled||d.disabled&&!v?g?.classList?.add("modified"):(h="",g?.classList?.remove("modified")),d.disabled&&(""!==h||null!==h||void 0!==h||0!==h)&&(h="")}const p=s?.field??"";if(s&&p?.includes(".")){const g=s.editor?.complexObjectPath??p??"";Ko(this._formValues??{},g,t)}else this._formValues={...this._formValues,[a]:h}}changeFormValue(e,t){const n=this.getColumnByObjectOrId(e),r="string"==typeof e?e:n?.id??"",s=n?.field??e;if(s?.includes(".")){const a=n?.editor?.complexObjectPath??s??"";Ko(this._formValues,a,t)}else this._formValues={...this._formValues,[r]:t};this._formValues=b1({},this._itemDataContext,this._formValues)}changeFormEditorOption(e,t,n){const r=this._editors?.[e];if(!r?.changeEditorOption)throw new Error(`Editor with column id "${e}" not found OR the Editor does not support "changeEditorOption" (current only available with Date, MultipleSelect, SingleSelect & Slider Editors).`);r.changeEditorOption(t,n)}disableFormInput(e,t=!0){const n=this._editors?.[e];n?.disable&&Array.isArray(this._editorContainers)&&n.disable(t)}openDetails(e){const t=e.onError??Jj,n={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={...n,...this.gridOptions.compositeEditorOptions,...e,labels:{...this.gridOptions.compositeEditorOptions?.labels,...e?.labels}},this._options.backdrop=void 0!==e.backdrop?e.backdrop:"static";const r=this._options.viewColumnLayout||1,s=this.grid.getActiveCell(),a=s?.cell??0,d=s?.row??0,h=this.grid.getUID()||"";let p=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&&(p=e?.headerTitleMassSelection)):(this._options.modalType="mass-update",e?.headerTitleMassUpdate&&(p=e?.headerTitleMassUpdate)));const g=this._options.modalType||"edit";if(!this.gridOptions.editable)return t({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 t({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"===g||"create"===g))return t({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(!s&&("clone"===g||"edit"===g))return t({type:"warning",code:"NO_RECORD_FOUND",message:"No records selected for edit or clone operation."}),null;{const v="mass-update"===g||"mass-selection"===g,y=v?{}:this.grid.getDataItem(d);this._originalDataContext=en(!0,{},y),this._columnDefinitions=this.grid.getColumns();const C=this.hasRowSelectionEnabled()?this.grid.getSelectedRows():[],k=this.dataView?.getItemCount()??0;this._lastActiveRowNumber=d;const E=this.dataView.getAllSelectedIds(),x="create"===g?this.dataViewLength:d;if(!this.focusOnFirstColumnCellWithEditor(this._columnDefinitions,y,a,x,v))return null;if("edit"===g&&!y)return t({type:"warning",code:"ROW_NOT_EDITABLE",message:"Current row is not editable."}),null;if("mass-selection"===g&&C.length<1)return t({type:"warning",code:"ROW_SELECTION_REQUIRED",message:"You must select some rows before trying to apply new value(s)."}),null;let D=[];D=v?this._columnDefinitions.filter(Ae=>Ae.editorClass&&!0===Ae.editor?.massUpdate):this._columnDefinitions.filter(Ae=>Ae.editorClass),D.some(Ae=>void 0!==Ae.editor?.compositeEditorFormOrder)&&D.sort((Ae,yt)=>Q$(Ae?.editor?.compositeEditorFormOrder??1/0,yt?.editor?.compositeEditorFormOrder??1/0,Li.asc));const I=p.replace(/\{\{(.*?)\}\}/g,(Ae,yt)=>Wn(y,yt)),L="auto"===r?this.autoCalculateLayoutColumnCount(D.length):r;this._modalElm=O("div",{className:`slick-editor-modal ${h}`});const R=O("div",{className:"slick-editor-modal-content"});if(this.gridOptions?.darkMode&&R.classList.add("slick-dark-mode"),!isNaN(r)&&+r>1||"auto"===r&&L>1){const Ae=2===L?"split-view":"triple-split-view";R.classList.add(Ae)}const W=O("div",{className:"slick-editor-modal-title"});this.grid.applyHtmlCode(W,I);const re=O("button",{type:"button",ariaLabel:"Close",textContent:"\xd7",className:"close",dataset:{action:"close"}});this._options.showCloseButtonOutside&&(W?.classList?.add("outside"),re?.classList?.add("outside"));const ie=O("div",{ariaLabel:"Close",className:"slick-editor-modal-header"});ie.appendChild(W),ie.appendChild(re);const se=O("div",{className:"slick-editor-modal-body"});this._modalBodyTopValidationElm=O("div",{className:"validation-summary",style:{display:"none"}},se);const Se=O("div",{className:"slick-editor-modal-footer"}),Ie=O("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 tt="",mt="";switch(g){case"clone":mt=this.getLabelText("cloneButton","TEXT_CLONE","Clone");break;case"mass-update":const Ae=this.getLabelText("massUpdateStatus","TEXT_ALL_X_RECORDS_SELECTED","All {{x}} records selected");tt=this.parseText(Ae,{x:k}),mt=this.getLabelText("massUpdateButton","TEXT_APPLY_MASS_UPDATE","Mass Update");break;case"mass-selection":const yt=this.getLabelText("massSelectionStatus","TEXT_X_OF_Y_MASS_SELECTED","{{x}} of {{y}} selected");tt=this.parseText(yt,{x:E.length,y:k}),mt=this.getLabelText("massSelectionButton","TEXT_APPLY_TO_SELECTION","Update Selection");break;default:mt=this.getLabelText("saveButton","TEXT_SAVE","Save")}const qt=O("div",{className:"footer-status-text",textContent:tt});this._modalSaveButtonElm=O("button",{type:"button",className:"btn btn-save btn-primary btn-sm",ariaLabel:mt,textContent:mt,dataset:{action:"create"===g||"edit"===g?"save":g,ariaLabel:mt}});const Kt=O("div",{className:"footer-buttons"});("mass-update"===g||"mass-selection"===g)&&Se.appendChild(qt),Kt.appendChild(Ie),Kt.appendChild(this._modalSaveButtonElm),Se.appendChild(Kt),R.appendChild(ie),R.appendChild(se),R.appendChild(Se),this._modalElm.appendChild(R);for(const Ae of D)if(Ae.editorClass){const yt=O("div",{className:`item-details-container editor-${Ae.id}`});1===L?yt.classList.add("slick-col-medium-12"):yt.classList.add("slick-col-medium-6","slick-col-xlarge-"+12/L);const Ni=O("div",{className:`item-details-label editor-${Ae.id}`});this.grid.applyHtmlCode(Ni,this.getColumnLabel(Ae)||"n/a");const Xo=O("div",{className:"item-details-editor-container slick-cell",dataset:{editorid:`${Ae.id}`}}),Gt=O("div",{className:`item-details-validation editor-${Ae.id}`});if(this._options?.showResetButtonOnEachEditor){const Lr=this.createEditorResetButtonElement(`${Ae.id}`);this._bindEventService.bind(Lr,"click",this.handleResetInputValue.bind(this)),Ni.appendChild(Lr)}yt.appendChild(Ni),yt.appendChild(Xo),yt.appendChild(Gt),se.appendChild(yt)}if(this._options?.showFormResetButton){const Ae=this.createFormResetButtonElement();this._bindEventService.bind(Ae,"click",this.handleResetFormClicked.bind(this)),se.appendChild(Ae)}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=D.map(Ae=>se.querySelector(`[data-editorid='${Ae.id}']`))||[],this._compositeOptions={destroy:this.disposeComponent.bind(this),modalType:g,validationMsgPrefix:"* ",formValues:{},editors:this._editors};const Et=new Zj(D,this._editorContainers,this._compositeOptions);this.grid.editActiveCell(Et),this._bindEventService.bind(re,"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,(Ae,yt)=>{this._originalDataContext=this.insertNewItemInDataView(yt.item)})}return this}catch(r){this.dispose();const s="string"==typeof r?r:r?.message??r?.body?.message??"";return t({type:"error",code:"string"==typeof r?r:r?.status??r?.body?.status??s,message:s}),null}}cancelEditing(){var e=this;return yn(function*(){let t=!0;e.formValues&&Object.keys(e.formValues).length>0&&"function"==typeof e._options.onClose&&(t=yield e._options.onClose()),t&&(e.grid.getEditController()?.cancelCurrentEdit(),("edit"===e._options?.modalType||"clone"===e._options?.modalType)&&e.resetCurrentRowDataContext(),e.grid.setActiveRow(e._lastActiveRowNumber),e.dispose())})()}showValidationSummaryText(e,t=""){e&&""!==t?(this._modalBodyTopValidationElm.textContent=t,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=t)}applySaveMassUpdateChanges(e,t,n=!0){const r=n?this.dataView.getItems():en(!0,[],this.dataView.getItems());return Object.keys(e).forEach(s=>{s in e&&r.forEach(a=>{s in e&&(void 0===this._options?.validateMassUpdateChange||!1!==this._options.validateMassUpdateChange(s,a,e))&&(a[s]=e[s])})}),n&&(this.dataView.setItems(r,this.gridOptions.datasetIdPropertyName),this.grid.invalidate()),r}applySaveMassSelectionChanges(e,t,n=!0){const s=(t?.dataContextIds??[]).map(d=>this.dataView.getItemById(d)),a=n?s:en(!0,[],s);return Object.keys(e).forEach(d=>{d in e&&a.forEach(h=>{d in e&&(void 0===this._options?.validateMassUpdateChange||!1!==this._options.validateMassUpdateChange(d,h,e))&&(h[d]=e[d])})}),n&&this.gridService?.updateItems(a),a}autoCalculateLayoutColumnCount(e){return e>=15?3:e>=8?2:1}createEditorResetButtonElement(e){const t=O("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 n=Oi(this._options?.resetEditorButtonCssClass);for(const r of n)t.classList.add(r)}return t}createFormResetButtonElement(){const e=O("div",{className:"reset-container"}),t=O("button",{type:"button",className:"btn btn-sm reset-form"},e);return O("span",{className:this._options?.resetFormButtonIconCssClass??""},t),t.appendChild(document.createTextNode(" Reset Form")),e}executeOnError(e){(this._options?.onError??Jj)(e)}executeOnSave(e,t,n,r){var s=this;return yn(function*(){try{if(s.showValidationSummaryText(!1,""),s.validateCompositeEditors().valid){if(s._modalSaveButtonElm.classList.add("saving"),s._modalSaveButtonElm.disabled=!0,"function"==typeof s._options?.onSave){const d="mass-update"===s._options.modalType||"mass-selection"===s._options.modalType;let h;d&&s._options?.shouldPreviewMassChangeDataset&&(h=e(s.formValues,s.getCurrentRowSelections(),!1));const p=d?h:r;(yield s._options?.onSave(s.formValues,s.getCurrentRowSelections(),p))&&(e(s.formValues,s.getCurrentRowSelections()),t())}else e(s.formValues,s.getCurrentRowSelections()),t();"function"==typeof n&&n(),s.dispose()}}catch(a){const d="string"==typeof a?a:a?.message??a?.body?.message??"";s.showValidationSummaryText(!0,d)}})()}focusOnFirstColumnCellWithEditor(e,t,n,r,s){const a=s&&!this.gridOptions.enableAddRow&&r>=this.dataViewLength?this.dataViewLength-1:r;let d=n;const h=e[n].editorClass;let p=this.grid.getCellNode(a,n);if(!h||!p||!this.getActiveCellEditor(a,n)){if(d=this.findNextAvailableEditorColumnIndex(e,t,r,s),-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(a,d,!1),s&&this.grid.setActiveRow(this.dataViewLength,d,!0)}return p=this.grid.getCellNode(a,d),!!p}findNextAvailableEditorColumnIndex(e,t,n,r){let s=-1;for(let a=0;an.id===e)),t}getActiveCellEditor(e,t){return this.grid.setActiveCell(e,t,!1),this.grid.getCellEditor()}getColumnLabel(e){const t=this.gridOptions.columnGroupSeparator||" - ";let n=e.nameCompositeEditor||e.name||"",r=e.columnGroup||"";if(this.gridOptions.enableTranslate&&this.translaterService){const a=e.nameCompositeEditorKey||e.nameKey;a&&(n=this.translaterService.translate(a)),e.columnGroupKey&&this.translaterService?.translate&&(r=this.translaterService.translate(e.columnGroupKey))}return Un(r?`${r}${t}${n}`:n,"innerHTML")}getLabelText(e,t,n){const r={...this.gridOptions.compositeEditorOptions?.labels,...this._options?.labels};if(this.gridOptions?.enableTranslate&&this.translaterService?.translate&&r.hasOwnProperty(`${e}Key`)){const s=r[`${e}Key`];return this.translaterService.translate(s||"")}return r?.[e]??this._locales?.[t]??n}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 t=e.target.name,n=this._editors?.[t];"function"==typeof n?.reset&&n.reset(),delete this._formValues?.[t]}handleMassSaving(e,t){var n=this;return yn(function*(){if(n.formValues&&0!==Object.keys(n.formValues).length){const r="mass-update"===e?"applySaveMassUpdateChanges":"applySaveMassSelectionChanges";n.executeOnSave(n[r].bind(n),t.bind(n))}else n.executeOnError({type:"warning",code:"NO_CHANGES_DETECTED",message:"Sorry we could not detect any changes."})})()}handleOnCompositeEditorChange(e,t){const n=t.column?.id??"";this._formValues={...this._formValues,...t.formValues};const r=this._editors?.[n],s=r?.isValueTouched?.()??r?.isValueChanged?.()??!1;this._itemDataContext=r?.dataContext??{};const a=this._modalElm.querySelector(`[data-editorid='${n}']`);a?.classList&&(s?a.classList.add("modified"):a.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 t=this._editors[e];t?.reset&&t.reset()}this._formValues=K$(this._formValues)}handleSaveClicked(){var e=this;return yn(function*(){const t=e._options?.modalType;switch(t){case"mass-update":e.handleMassSaving(t,()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveCell(0,0,!1),e._options.shouldClearRowSelectionAfterMassAction&&e.grid.setSelectedRows([])});break;case"mass-selection":e.handleMassSaving(t,()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveRow(e._lastActiveRowNumber),e._options.shouldClearRowSelectionAfterMassAction&&e.grid.setSelectedRows([])});break;case"clone":const n={...e._originalDataContext,...e.formValues},r=()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveCell(0,0,!1)};e.executeOnSave(e.insertNewItemInDataView.bind(e,n),r,e.resetCurrentRowDataContext.bind(e),n);break;default:let s=e.grid.getEditController()?.commitCurrentEdit();if(s&&"function"==typeof e._options?.onSave){const a="create"===t?e._originalDataContext:e.grid.getDataItem(e._lastActiveRowNumber);s=yield e._options?.onSave(e.formValues,e.getCurrentRowSelections(),a)}s&&e.dispose()}})()}insertNewItemInDataView(e){const t=this.dataView?.getItemCount()||0,n=this._options.insertNewId??t+1;return e[this.gridOptions.datasetIdPropertyName||"id"]=n,this.dataView.getItemById(n)?this.executeOnError({type:"error",code:"ITEM_ALREADY_EXIST",message:`The item object which you are trying to add already exist with the same Id:: ${n}`}):this.gridService?.addItem(e,this._options.insertOptions),e}parseText(e,t){return e.replace(/\{\{(.*?)\}\}/g,(n,r)=>void 0!==t[r]?t[r]:n)}resetCurrentRowDataContext(){const e=this.gridOptions.datasetIdPropertyName||"id";this.grid.getData().updateItem(this._originalDataContext[e],this._originalDataContext)}validateCompositeEditors(e){let t={valid:!0,msg:""};const n=this.grid.getCellEditor();return n&&(t=n.validate(e)),t}validateCurrentEditor(){const e=this.grid.getCellEditor();e?.validate&&e.validate()}}const Zpe=(i,e,t,n,r,s)=>(t=t??"",s.getOptions().editable&&n.editor?{text:t,addClasses:"editable-field"}:t),Jpe=(i,e)=>null!=i&&i.length||!(e.compositeEditorOptions&&"create"===e.compositeEditorOptions.modalType||"edit"===e.compositeEditorOptions.modalType)?/^(task\s\d+)*$/i.test(i)?{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 aM=class{http;_darkMode=!1;title="Example 30: Composite Editor Modal";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.)';angularGrid;compositeEditorInstance;gridOptions;columnDefinitions=[];dataset=[];editQueue=[];editedItems={};isGridEditable=!0;isCompositeDisabled=!1;isMassSelectionDisabled=!0;cellCssStyleQueue=[];complexityLevelList=[{value:0,label:"Very Simple"},{value:1,label:"Simple"},{value:2,label:"Straightforward"},{value:3,label:"Complex"},{value:4,label:"Very Complex"}];constructor(e){this.http=e,this.compositeEditorInstance=new jpe}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:M.string,minWidth:75,cssClass:"text-uppercase fw-bold",columnGroup:"Common Factor",filterable:!0,filter:{model:ee.compoundInputText},editor:{model:Ne.longText,massUpdate:!1,required:!0,alwaysSaveOnEnterKey:!0,maxLength:12,editorOptions:{cols:45,rows:6,buttonTexts:{cancel:"Close",save:"Done"}},validator:Jpe}},{id:"duration",name:"Duration",field:"duration",sortable:!0,filterable:!0,minWidth:75,type:M.number,columnGroup:"Common Factor",formatter:(e,t,n)=>null==n||""===n?"":n>1?`${n} days`:`${n} day`,editor:{model:Ne.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:M.number,columnGroup:"Analysis",filter:{model:ee.compoundInputNumber},formatter:G.dollar},{id:"percentComplete",name:"% Complete",field:"percentComplete",minWidth:100,type:M.number,sortable:!0,filterable:!0,columnGroup:"Analysis",filter:{model:ee.compoundSlider,operator:">="},editor:{model:Ne.slider,massUpdate:!0,minValue:0,maxValue:100},customTooltip:{position:"center"}},{id:"complexity",name:"Complexity",field:"complexity",minWidth:100,type:M.number,sortable:!0,filterable:!0,columnGroup:"Analysis",formatter:(e,t,n)=>this.complexityLevelList[n]?.label,exportCustomFormatter:(e,t,n)=>this.complexityLevelList[n]?.label,filter:{model:ee.multipleSelect,collection:this.complexityLevelList},editor:{model:Ne.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:M.date,outputType:M.dateUs,saveOutputType:M.dateUtc,filterable:!0,filter:{model:ee.compoundDate},editor:{model:Ne.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:ee.singleSelect},editor:{model:Ne.checkbox,massUpdate:!0}},{id:"finish",name:"Finish",field:"finish",sortable:!0,minWidth:100,formatter:G.dateUs,columnGroup:"Period",type:M.date,outputType:M.dateUs,saveOutputType:M.dateUtc,filterable:!0,filter:{model:ee.compoundDate},exportCustomFormatter:G.dateUs,editor:{model:Ne.date,editorOptions:{range:{min:"today"}},massUpdate:!0,validator:(e,t)=>{const n=t&&t.item;return n&&n.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:M.object,sortComparer:La.objectString,editor:{model:Ne.autocompleter,alwaysSaveOnEnterKey:!0,massUpdate:!0,editorOptions:{minLength:1,fetch:(e,t)=>{t(this.mockProducts().filter(r=>r.itemName.toLowerCase().includes(e.toLowerCase())))},renderItem:{layout:"fourCorners",templateCallback:e=>this.renderItemCallbackWith4Corners(e)}}},filter:{model:ee.inputText,type:M.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:M.object,sortComparer:La.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:Ne.autocompleter,massUpdate:!0,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get("assets/data/countries.json"),editorOptions:{minLength:0}},filter:{model:ee.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,t)=>{const n=t.dataContext;confirm(`Do you really want to delete row (${(t?.row??0)+1}) with "${n.title}"`)&&this.angularGrid.gridService.deleteItemById(n.id)}}]}}],this.gridOptions={enableAddRow:!0,enableCellNavigation:!0,asyncEditorLoading:!1,autoEdit:!0,autoCommitEdit:!0,editable:!0,autoAddCustomEditorFormatter:Zpe,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 xs,new HT,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,t,n)=>{const r=Array.isArray(n.prevSerializedValue)?n.prevSerializedValue:[n.prevSerializedValue],s=Array.isArray(n.serializedValue)?n.serializedValue:[n.serializedValue],a=this.columnDefinitions.filter(h=>void 0!==h.editor),d=[];r.forEach((h,p)=>{const g=r[p],v=s[p];if(g!==v||""===v){const y=Array.isArray(n.prevSerializedValue)?a[p]:t;this.editedItems[this.gridOptions.datasetIdPropertyName||"id"]=e,this.angularGrid.slickGrid.invalidate(),n.execute(),this.renderUnsavedCellStyling(e,y,n),d.push(y)}}),this.editQueue.push({item:e,columns:d,editCommand:n})},enableCellMenu:!0,cellMenu:{activateCellOnMenuClick:!0},gridMenu:{hideToggleDarkModeCommand:!1,onCommand:(e,t)=>{"toggle-dark-mode"===t.command&&(this._darkMode=!this._darkMode,this.toggleBodyBackground())}}}}loadData(e){const t=[];for(let n=0;n100?n>5?100:88:v,C=100===y;t[n]={id:n,title:"Task "+n,duration:Math.floor(100*Math.random())+10,percentComplete:y,analysis:{percentComplete:y},complexity:n%3?0:2,start:new Date(s,d,h,h,p,p,p),finish:C||n%3==0&&g>new Date&&n>3?C?new Date:g:"",cost:n%33==0?null:Math.round(1e4*Math.random())/100,completed:C||n%3==0&&g>new Date&&n>3,product:{id:this.mockProducts()[r]?.id,itemName:this.mockProducts()[r]?.itemName},origin:n%2?{code:"CA",name:"Canada"}:{code:"US",name:"United States"}},n%8||(delete t[n].finish,delete t[n].percentComplete)}return t}handleValidationError(e,t){if(t.validationResults){let n=t.validationResults.msg||"";if(t.editor&&t.editor instanceof Zj){if(t.validationResults.errors){n+="\n";for(const r of t.validationResults.errors){n+=`${r.editor.args.column.name.toUpperCase()}: ${r.msg}`}}console.log(n)}}else alert(t.validationResults.msg);return!1}handleItemDeleted(e){console.log("item deleted with id:",e)}handleOnBeforeEditCell(e,t){const{column:n,item:r,grid:s}=t;return!(n&&r&&!function Ype(i,e,t){const n=t?.getOptions(),r=e.editor;let a=!(!n.editable||!r);i&&e&&n&&n.editable&&"finish"===e.id&&(a=!!i?.completed);return a}(r,n,s))||(e.preventDefault(),!1)}handleOnCellChange(e,t){const n=t?.item;n&&!n.completed&&(n.finish=null,this.angularGrid.gridService.updateItem(n))}handleOnCellClicked(e,t){console.log(e,t)}handleOnCompositeEditorChange(e,t){const n=t.column,r=t.formValues;"percentComplete"===n.id&&100===r.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 t="";switch(e){case"create":t="Inserting New Task";break;case"clone":t="Clone - {{title}}";break;case"edit":t='Editing - {{title}} (id: {{id}})';break;case"mass-update":t="Mass Update All Records";break;case"mass-selection":t="Update Selected Records"}this.compositeEditorInstance?.openDetails({headerTitle:t,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:n=>alert(n.message),onRendered:n=>{n.dataset.bsTheme=this._darkMode?"dark":"light"},onSave:(n,r,s)=>"mass-update"===e||"mass-selection"===e?new Promise((d,h)=>{window.setTimeout(()=>{n.percentComplete>=50?d(!0):h("Unfortunately we only accept a minimum of 50% Completion...")},50)}):(console.log(`${e} item data context`,s),new Promise(d=>window.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,t,n){const r=`unsaved_highlight_${[t.id]}${n}`;this.angularGrid.slickGrid.removeCellCssStyles(r);const s=this.cellCssStyleQueue.findIndex(a=>a===r);s>=0&&this.cellCssStyleQueue.splice(s,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:t,columns:n,editCommand:r}=e;Array.isArray(n)&&n.forEach(s=>{this.renderUnsavedCellStyling(t,s,r)})}}renderUnsavedCellStyling(e,t,n){if(n&&e&&t){const r=this.angularGrid.dataView?.getRowByItem(e);if(void 0!==r&&r>=0){const s={[r]:{[t.id]:"unsaved-editable-field"}},a=`unsaved_highlight_${[t.id]}${r}`;this.angularGrid.slickGrid.setCellCssStyles(a,s),this.cellCssStyleQueue.push(a)}}}saveAll(){console.log(this.editQueue),console.log(this.editedItems),this.removeAllUnsavedStylingFromCell(),this.editQueue=[],this.editedItems={}}undoLastEdit(e=!1){const t=this.editQueue.pop(),n=t?.editCommand;if(t&&n&&Fc.cancelCurrentEdit()){n.undo();for(const r of t.columns)this.removeUnsavedStylingFromCell(t.item,r,n.row);this.angularGrid.slickGrid.invalidate(),e&&this.angularGrid.slickGrid.gotoCell(n.row,n.cell,!1)}}undoAllEdits(){for(const e of this.editQueue){const t=e?.editCommand;if(t&&Fc.cancelCurrentEdit()){t.undo();for(const n of e.columns)this.removeUnsavedStylingFromCell(e.item,n,t.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 t=["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"],n=Math.floor(Math.random()*t.length-1);return t[e??n]}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 ${wn(e.listPrice,2,2,!1,"$")}\n
\n
\n
\n
${e.itemNameTranslated}
\n Type: ${"I"===e.itemTypeName?"Item":"C"===e.itemTypeName?"PdCat":"Cat"}\n
`}static ctorParameters=()=>[{type:Mi}]};aM=Oe([We({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:Bt.None,styles:[Upe()]}),Xt("design:paramtypes",[Mi])],aM);var Qpe=z(94),eme=z.n(Qpe);const tme=(i,e,t,n,r)=>3===r.priority?'
Action
':'
Action
',ime=(i,e,t)=>{if(!t)return"";let n="";const r=+(t>=3?3:t),a=``;for(let d=1;d<=r;d++)n+=a;return n},nme=(i,e,t,n,r,s)=>{if(!t)return"";const d=s.getOptions().i18n,h=+(t>=3?3:t),p=3===h?"HIGH":2===h?"MEDIUM":"LOW";return d&&d.instant&&d.instant(p)},rme=(i,e,t,n,r,s)=>{const d=s.getOptions().i18n;return d&&d.instant&&d.instant("TASK_X",{x:t})};let lM=class{translate;title="Example 26: Cell Menu & Context Menu Plugins";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
';_darkModeGrid=!1;subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset;selectedLanguage;constructor(e){this.translate=e;this.translate.use("en"),this.selectedLanguage="en"}angularGridReady(e){this.angularGrid=e}get cellMenuInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(st.cellMenu)}get contextMenuInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(st.contextMenu)}ngOnInit(){this.prepareGrid(),this.dataset=this.getData(1e3)}ngOnDestroy(){Td(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:rme,sortable:!0,filterable:!0,params:{useFormatterOuputToFilter:!0}},{id:"percentComplete",nameKey:"PERCENT_COMPLETE",field:"percentComplete",minWidth:100,exportWithFormatter:!1,sortable:!0,filterable:!0,filter:{model:ee.slider,operator:">="},formatter:G.percentCompleteBar,type:M.number},{id:"start",name:"Start",field:"start",nameKey:"START",minWidth:100,formatter:G.dateIso,outputType:M.dateIso,type:M.date,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:G.dateIso,outputType:M.dateIso,type:M.date,minWidth:100,filterable:!0,filter:{model:ee.compoundDate}},{id:"priority",nameKey:"PRIORITY",field:"priority",exportCustomFormatter:nme,formatter:ime,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:1,labelKey:"LOW"},{value:2,labelKey:"MEDIUM"},{value:3,labelKey:"HIGH"}],model:ee.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:ee.singleSelect,enableTranslateLabel:!0}},{id:"action",name:"Action",field:"action",width:100,maxWidth:110,excludeFromExport:!0,formatter:tme,cellMenu:{hideCloseButton:!1,menuUsabilityOverride:e=>3===e.dataContext.priority,commandTitleKey:"COMMANDS",commandItems:[{command:"command2",title:"Command 2",positionOrder:62,action:(e,t)=>{console.log(t.dataContext,t.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,t)=>{},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 xs],enableContextMenu:!0,enableCellMenu:!0,cellMenu:{onCommand:(e,t)=>this.executeCommand(e,t),onOptionSelected:(e,t)=>{const n=t&&t.dataContext;n&&"completed"in n&&(n.completed=t.item.option,this.angularGrid.gridService.updateItem(n))},onBeforeMenuShow:(e,t)=>{console.log("Before the Cell Menu is shown",t)},onBeforeMenuClose:(e,t)=>console.log("Cell Menu is closing",t)},contextMenu:this.getContextMenuOptions()}}executeCommand(e,t){const n=t.command,r=t.dataContext;switch(n){case"contact-email":case"contact-chat":case"contact-meeting":alert("Command: "+t?.command);break;case"exports-csv":case"exports-txt":case"exports-xlsx":alert(`Exporting as ${t.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 ${t.row+1} with ${this.translate.instant("TASK_X",{x:r.id})}`)&&this.angularGrid.dataView.deleteItem(r.id)}}getData(e){const t=[];for(let n=0;n(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,t)=>{},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,t)=>{}},{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,t)=>{this.angularGrid.slickGrid.setActiveCell(t.row,t.cell,!1),console.log("Before the global Context Menu is shown",t)},onBeforeMenuClose:(e,t)=>console.log("Global Context Menu is closing",t),onCommand:(e,t)=>this.executeCommand(e,t),onOptionSelected:(e,t)=>{const n=t&&t.dataContext;n&&"priority"in n&&(n.priority=t.item.option,this.angularGrid.gridService.updateItem(n))}}}showContextCommandsAndOptions(e){const t=e?[]:["id","title","complete","start","finish","completed","action"];this.contextMenuInstance?.setOptions({commandShownOverColumnIds:t})}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 ctorParameters=()=>[{type:zt}]};lM=Oe([We({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:Bt.None,styles:[eme()]}),Xt("design:paramtypes",[zt])],lM);var ame=z(643),lme=z.n(ame);let cM=class{elm;_paginationElement;_subscriptions=[];_gridContainerElm;_grid;_paginationService;_pubSubService;currentPagination={};constructor(e){this.elm=e}init(e,t,n){this._grid=e,this._paginationService=t,this._pubSubService=n,this.currentPagination=this._paginationService.getFullPagination(),this._subscriptions.push(this._pubSubService.subscribe("onPaginationRefreshed",r=>{this.currentPagination.dataFrom=r.dataFrom,this.currentPagination.dataTo=r.dataTo,this.currentPagination.pageCount=r.pageCount,this.currentPagination.pageNumber=r.pageNumber,this.currentPagination.pageSize=r.pageSize,this.currentPagination.pageSizes=r.pageSizes,this.currentPagination.totalItems=r.totalItems}))}dispose(){this._pubSubService.unsubscribeAll(this._subscriptions),this.disposeElement()}disposeElement(){this._paginationElement.remove()}renderPagination(e,t="top"){this._gridContainerElm=e,this._paginationElement=this.elm.nativeElement,this._paginationElement.id="pager",this._paginationElement.className=`pagination-container pager ${this._grid.getUID()}`,this._paginationElement.style.width="100%","top"===t?(this._paginationElement.classList.add("top"),e.prepend(this._paginationElement)):(this._paginationElement.classList.add("bottom"),e.appendChild(this._paginationElement))}onFirstPageClicked(e){this.isLeftPaginationDisabled()||this._paginationService.goToFirstPage(e)}onLastPageClicked(e){this.isRightPaginationDisabled()||this._paginationService.goToLastPage(e)}onNextPageClicked(e){this.isRightPaginationDisabled()||this._paginationService.goToNextPage(e)}onPreviousPageClicked(e){this.isLeftPaginationDisabled()||this._paginationService.goToPreviousPage(e)}isLeftPaginationDisabled(){return 1===this.currentPagination.pageNumber||0===this.currentPagination.totalItems}isRightPaginationDisabled(){return this.currentPagination.pageNumber===this.currentPagination.pageCount||0===this.currentPagination.totalItems}static ctorParameters=()=>[{type:wi}]};cM=Oe([We({template:'
\n \n \n \n \n {{currentPagination?.dataFrom}}\n -\n \n {{currentPagination?.dataTo}}\n \n of\n \n \n {{currentPagination?.totalItems}}\n items\n \n \n \n
\n\n
\n Page\n {{currentPagination?.pageNumber}}\n of\n {{currentPagination?.pageCount}}\n
\n\n
\n
',styles:[lme()]}),Xt("design:paramtypes",[wi])],cM);function fE(i,e){return Math.floor(Math.random()*(e-i+1)+i)}let dM=class{angularUtilService;pageSize=50;columnDefinitions=[];gridContainerElm;gridOptions;dataset=[];paginationPosition="top";angularGrid;constructor(e){this.angularUtilService=e}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.defineGrid(),this.dataset=this.loadData(5e3)}defineGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"id",minWidth:100,sortable:!0,filterable:!0,formatter:(e,t,n)=>`Task ${n}`,params:{useFormatterOuputToFilter:!0}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,type:M.string},{id:"percentComplete",name:"% Complete",field:"percentComplete",minWidth:120,sortable:!0,customTooltip:{position:"center"},formatter:G.progressBar,type:M.number,filterable:!0,filter:{model:ee.sliderRange,maxValue:100,operator:te.rangeInclusive,filterOptions:{hideSliderNumbers:!1,min:0,step:5}}},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,minWidth:75,width:100,exportWithFormatter:!0,type:M.date,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,minWidth:75,width:120,exportWithFormatter:!0,type:M.date,filterable:!0,filter:{model:ee.dateRange}},{id:"duration",field:"duration",name:"Duration",maxWidth:90,type:M.number,sortable:!0,filterable:!0,filter:{model:ee.input,operator:te.rangeExclusive}},{id:"completed",name:"Completed",field:"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:ee.singleSelect,filterOptions:{autoAdjustDropHeight:!0}}}],this.gridOptions={autoResize:{container:"#demo-container",bottomPadding:"top"===this.paginationPosition?-1:38},enableExcelCopyBuffer:!0,enableFiltering:!0,customPaginationComponent:cM,enablePagination:!0,pagination:{pageSize:this.pageSize},rowHeight:40}}loadData(e){const t=[];for(let n=0,r=e;n[{type:Jo}]};dM=Oe([We({template:'
\n

\n Example 42: Custom Pagination\n \n \n code\n \n \n

\n
\n You can create a Custom Pagination by passing an Angular Custom Component and it must implements BasePaginationComponent.\n Any of the pagination controls could be moved anywhere on the page (for example we purposely moved the page size away from the rest of the pagination elements).\n
\n\n
\n \n\n \n Page Size\n \n \n
\n\n \n \n
',providers:[Jo]}),Xt("design:paramtypes",[Jo])],dM);var ume=z(271),hme=z.n(ume);let uM=class{title="Example 32: Regular & Custom Tooltips";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 ';angularGrid;columnDefinitions;editCommandQueue=[];gridOptions;dataset;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:M.string,editor:{model:Ne.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},filterable:!0,customTooltip:{position:"right-align",formatter:()=>'
loading...
',asyncProcess:()=>new Promise(e=>{window.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:Ne.float,decimal:2,valueStep:1,maxValue:1e4,alwaysSaveOnEnterKey:!0},formatter:(e,t,n)=>n>1?`${n} days`:`${n} day`,type:M.number},{id:"desc",name:"Description",field:"description",width:100,filterable:!0,editor:{model:Ne.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},formatter:(e,t,n,r,s)=>`${n||""}`,customTooltip:{useRegularTooltip:!0,useRegularTooltipFromCellTextOnly:!0}},{id:"desc2",name:"Description 2",field:"description",width:100,filterable:!0,editor:{model:Ne.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},formatter:(e,t,n,r,s)=>`${n||""}`,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,t,n)=>`${n||""}`]},customTooltip:{useRegularTooltip:!0,useRegularTooltipFromFormatterOnly:!0},type:M.number},{id:"percentComplete",name:"% Complete",field:"percentComplete",type:M.number,editor:{model:Ne.slider,minValue:0,maxValue:100},formatter:G.percentCompleteBar,sortable:!0,filterable:!0,filter:{model:ee.slider,operator:">="},customTooltip:{position:"center",formatter:(e,t,n)=>"string"==typeof n&&n.includes("%")?n:`${n}%`,headerFormatter:void 0,headerRowFormatter:void 0}},{id:"start",name:"Start",field:"start",sortable:!0,type:M.date,outputType:M.dateIso,filterable:!0,filter:{model:ee.compoundDate},formatter:G.dateIso,editor:{model:Ne.date},customTooltip:{formatter:()=>"",asyncProcess:()=>new Promise(e=>{window.setTimeout(()=>e({}),this.serverApiDelay)}),asyncPostFormatter:this.tooltipFormatter.bind(this)}},{id:"finish",name:"Finish",field:"finish",sortable:!0,editor:{model:Ne.date,editorOptions:{range:{min:"today"}}},type:M.date,outputType:M.dateIso,formatter:G.dateIso,filterable:!0,filter:{model:ee.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:ee.singleSelect},exportWithFormatter:!1,formatter:G.checkmarkMaterial},{id:"prerequisites",name:"Prerequisites",field:"prerequisites",filterable:!0,formatter:(e,t,n)=>{if(n&&Array.isArray(n)){const r=n.map(s=>`Task ${s}`).join(", ");return`${r}`}return""},customTooltip:{useRegularTooltip:!0,maxWidth:500},exportWithFormatter:!0,sanitizeDataExport:!0,minWidth:100,sortable:!0,type:M.string,editor:{collectionAsync:new Promise(e=>{window.setTimeout(()=>{e(Array.from(Array(this.dataset.length).keys()).map(t=>({value:t,label:t,prefix:"Task",suffix:"days"})))},500)}),customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:Ne.multipleSelect},filter:{collectionAsync:new Promise(e=>{window.setTimeout(()=>{e(Array.from(Array(this.dataset.length).keys()).map(t=>({value:t,label:`Task ${t}`})))})}),customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:ee.multipleSelect,operator:te.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,t)=>{console.log(t.dataContext,t.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 HT,new xs],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,t,n)=>{this.editCommandQueue.push(n),n.execute()},enableCellMenu:!0,cellMenu:{onCommand:(e,t)=>this.executeCommand(e,t),onOptionSelected:(e,t)=>{const n=t&&t.dataContext;n&&"completed"in n&&(n.completed=t.item.option,this.angularGrid.gridService.updateItem(n))}}}}loadData(e){const t=[];for(let n=0;nCustom Tooltip - Header
\n
Column:
${r.name}
`}headerRowFormatter(e,t,n,r){return`
Custom Tooltip - Header Row (filter)
\n
Column:
${r.field}
`}tooltipFormatter(e,t,n,r,s,a){const h=G.checkmarkMaterial(e,t,s.effortDriven,r,s,a);return`
Custom Tooltip
\n
Id:
${s.id}
\n
Title:
${s.title}
\n
Effort Driven:
${h.outerHTML||""}
\n
Completion:
${this.loadCompletionIcons(s.percentComplete)}
\n `}tooltipTaskAsyncFormatter(e,t,n,r,s,a){return`
${`Task ${s.id} - (async tooltip)`}
\n
Completion:
${G.percentCompleteBarWithText(e,t,s.percentComplete,r,s,a).outerHTML||""}
\n
Lifespan:
${s.__params.lifespan.toFixed(2)}
\n
Ratio:
${s.__params.ratio.toFixed(2)}
\n `}loadCompletionIcons(e){let t="",n=0;e>5&&e<25?n=1:e>=25&&e<50?n=2:e>=50&&e<75?n=3:e>=75&&e<100?n=4:100===e&&(n=5);for(let r=0;r=3?"text-warning":"text-secondary"}">`}return t}};uM=Oe([We({template:'
\n

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

\n
\n\n
\n \n \n
\n\n \n \n
',encapsulation:Bt.None,styles:[hme()]})],uM);function uh(i,e,t){return e<=i&&i<=t}function hM(i){if(void 0===i)return{};if(i===Object(i))return i;throw TypeError("Could not convert argument to dictionary")}function oN(i){this.tokens=[].slice.call(i)}oN.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():-1},prepend:function(i){if(Array.isArray(i))for(var e=i;e.length;)this.tokens.unshift(e.pop());else this.tokens.unshift(i)},push:function(i){if(Array.isArray(i))for(var e=i;e.length;)this.tokens.push(e.shift());else this.tokens.push(i)}};function sN(i,e){if(i)throw TypeError("Decoder error");return e||65533}(function vme(){}).prototype={handler:function(i,e){}},function bme(){}.prototype={handler:function(i,e){}};var mM="utf-8";function gM(i,e){if(!(this instanceof gM))return new gM(i,e);if((i=void 0!==i?String(i).toLowerCase():mM)!==mM)throw new Error("Encoding not supported. Only utf-8 is supported");e=hM(e),this._streaming=!1,this._encoder=null,this._options={fatal:!!e.fatal},Object.defineProperty(this,"encoding",{value:"utf-8"})}function yme(i){var e=i.fatal,t=0,n=0,r=0,s=128,a=191;this.handler=function(d,h){if(-1===h&&0!==r)return r=0,sN(e);if(-1===h)return-1;if(0===r){if(uh(h,0,127))return h;if(uh(h,194,223))r=1,t=h-192;else if(uh(h,224,239))224===h&&(s=160),237===h&&(a=159),r=2,t=h-224;else{if(!uh(h,240,244))return sN(e);240===h&&(s=144),244===h&&(a=143),r=3,t=h-240}return t<<=6*r,null}if(!uh(h,s,a))return t=r=n=0,s=128,a=191,d.prepend(h),sN(e);if(s=128,a=191,t+=h-128<<6*(r-(n+=1)),n!==r)return null;var p=t;return t=r=n=0,p}}function Cme(i){i.fatal;this.handler=function(t,n){if(-1===n)return-1;if(uh(n,0,127))return n;var r,s;uh(n,128,2047)?(r=1,s=192):uh(n,2048,65535)?(r=2,s=224):uh(n,65536,1114111)&&(r=3,s=240);for(var a=[(n>>6*r)+s];r>0;){var d=n>>6*(r-1);a.push(128|63&d),r-=1}return a}}(function aN(i,e){if(!(this instanceof aN))return new aN(i,e);if((i=void 0!==i?String(i).toLowerCase():mM)!==mM)throw new Error("Encoding not supported. Only utf-8 is supported");e=hM(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,t){var n;n="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),t=hM(t),this._streaming||(this._decoder=new yme({fatal:this._fatal}),this._BOMseen=!1),this._streaming=!!t.stream;for(var a,r=new oN(n),s=[];!r.endOfStream()&&-1!==(a=this._decoder.handler(r,r.read()));)null!==a&&(Array.isArray(a)?s.push.apply(s,a):s.push(a));if(!this._streaming){do{if(-1===(a=this._decoder.handler(r,r.read())))break;null!==a&&(Array.isArray(a)?s.push.apply(s,a):s.push(a))}while(!r.endOfStream());this._decoder=null}return s.length&&-1!==["utf-8"].indexOf(this.encoding)&&!this._ignoreBOM&&!this._BOMseen&&(65279===s[0]?(this._BOMseen=!0,s.shift()):this._BOMseen=!0),function fme(i){for(var e="",t=0;t>10),56320+(1023&n)))}return e}(s)}},gM.prototype={encode:function(e,t){e=e?String(e):"",t=hM(t),this._streaming||(this._encoder=new Cme(this._options)),this._streaming=!!t.stream;for(var s,n=[],r=new oN(function gme(i){for(var e=String(i),t=e.length,n=0,r=[];n57343)r.push(s);else if(56320<=s&&s<=57343)r.push(65533);else if(55296<=s&&s<=56319)if(n===t-1)r.push(65533);else{var a=i.charCodeAt(n+1);if(56320<=a&&a<=57343){var d=1023&s,h=1023&a;r.push(65536+(d<<10)+h),n+=1}else r.push(65533)}n+=1}return r}(e));!r.endOfStream()&&-1!==(s=this._encoder.handler(r,r.read()));)Array.isArray(s)?n.push.apply(n,s):n.push(s);if(!this._streaming){for(;-1!==(s=this._encoder.handler(r,r.read()));)Array.isArray(s)?n.push.apply(n,s):n.push(s);this._encoder=null}return new Uint8Array(n)}};const wme={delimiter:kc.comma,filename:"export",format:Ii.csv,useUtf8WithBom:!0};class lN{constructor(){this._delimiter=",",this._exportQuoteWrapper="",this._fileFormat=Ii.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,t){if(this._grid=e,this._pubSubService=t.get("PubSubService"),this._locales=this._gridOptions&&this._gridOptions.locales||oe.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(t=>{this._pubSubService?.publish("onBeforeExportToTextFile",!0),this._exportOptions=en(!0,{},{...wme,...this._gridOptions.textExportOptions,...e}),this._delimiter=this._exportOptions.delimiterOverride||this._exportOptions.delimiter||"",this._fileFormat=this._exportOptions.format||Ii.csv;const n=this.getDataOutput();window.setTimeout(()=>{const r={filename:`${this._exportOptions.filename}.${this._fileFormat}`,format:this._fileFormat||Ii.csv,mimeType:this._exportOptions.mimeType||"text/plain",useUtf8WithBom:!this._exportOptions||!this._exportOptions.hasOwnProperty("useUtf8WithBom")||this._exportOptions.useUtf8WithBom};this.startDownloadFile({...r,content:n}),this._pubSubService?.publish("onAfterExportToTextFile",r),t(!0)},0)})}startDownloadFile(e){const t=P$(e.content);let n;n=e.format===Ii.csv?new gM("utf-8").encode(t):t;const r=new Blob([e.useUtf8WithBom?"\ufeff":"",n],{type:e.mimeType});if("function"==typeof navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(r,e.filename);else{const s=document.createElement("a"),a=URL.createObjectURL(r);s.textContent="download",s.href=a,s.setAttribute("download",e.filename),s.style.visibility="hidden",document.body.appendChild(s),s.click(),document.body.removeChild(s)}}getDataOutput(){const e=this._grid.getColumns()||[];let t=this._exportOptions.groupingColumnHeaderTitle;!t&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?t=this._translaterService.translate(`${Fl(this._gridOptions)}GROUP_BY`):t||(t=this._locales&&this._locales.TEXT_GROUP_BY),this._exportQuoteWrapper=this._fileFormat===Ii.csv?'"':"";let n="";const r=this._dataView.getGrouping();if(r&&Array.isArray(r)&&r.length>0?(this._hasGroupedItems=!0,n+=this._fileFormat===Ii.csv?`"${t}"${this._delimiter}`:`${t}${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)){n+=this._groupedColumnHeaders.map(a=>`${this._exportQuoteWrapper}${a.title}${this._exportQuoteWrapper}`).join(this._delimiter)+this._lineCarriageReturn}if(this._columnHeaders=this.getColumnHeaders(e)||[],this._columnHeaders&&Array.isArray(this._columnHeaders)&&this._columnHeaders.length>0){n+=this._columnHeaders.map(a=>_n(`${this._exportQuoteWrapper}${a.title}${this._exportQuoteWrapper}`)).join(this._delimiter)+this._lineCarriageReturn}return n+=this.getAllGridRowData(e,this._lineCarriageReturn),n}getAllGridRowData(e,t){const n=[],r=this._dataView.getLength();for(let s=0;s{let r="";r=n.columnGroupKey&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?this._translaterService.translate(n.columnGroupKey):n.columnGroup||"";const s=n.excludeFromExport||!1;(void 0===n.width||n.width>0)&&!s&&t.push({key:n.field||n.id,title:r||""})}),t}getColumnHeaders(e){const t=[];return e&&Array.isArray(e)&&e.forEach(n=>{let r="";r=(n.nameKey||n.nameKey)&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?this._translaterService.translate(n.nameKey||n.nameKey):Un(n.name||"","innerHTML")||Qs(n.field);const s=n.excludeFromExport||!1;(void 0===n.width||n.width>0)&&!s&&t.push({key:n.field||n.id,title:r||""})}),t}readRegularRowData(e,t,n){let r=0;const s=[],a=this._exportQuoteWrapper;let d=1;const h=this._dataView.getItemMetadata(t);for(let p=0,g=e.length;p1||"*"===d&&p>0||(d=k?.colspan??1),"*"!==d&&v.id in C&&(y=v.id)}if("*"===d&&p>0||!isNaN(d)&&+d>1&&v.id!==y)s.push(""),!isNaN(d)&&+d>1&&d--;else{let C=C9(t,p,v,n,this._grid,this._exportOptions);(v.sanitizeDataExport||this._exportOptions.sanitizeDataExport)&&(C=_n(C)),this._fileFormat===Ii.csv&&C&&(C=C.toString().replace(/"/gi,'""'));const k=v?.exportCsvForceToKeepAsString?"=":"";s.push(k+a+C+a)}r++}return s.join(this._delimiter)}readGroupedTitleRow(e){let t=_n(e.title);const n=this._exportQuoteWrapper;return t=ey(5*e.level)+t,this._fileFormat===Ii.csv&&(t=t.toString().replace(/"/gi,'""')),n+t+n}readGroupedTotalRow(e,t){const n=this._exportOptions.delimiter,r=this._exportOptions.format,s=this._exportOptions.groupingAggregatorRowText||"",a=this._exportQuoteWrapper,d=[`${a}${s}${a}`];return e.forEach(h=>{let p="";const g=h.excludeFromExport||!1;if(h.groupTotalsFormatter){const v=h.groupTotalsFormatter(t,h,this._grid);p=v instanceof HTMLElement?v.textContent||"":v}(h.sanitizeDataExport||this._exportOptions.sanitizeDataExport)&&(p=_n(p)),r===Ii.csv&&(p=p.toString().replace(/"/gi,'""')),(void 0===h.width||h.width>0)&&!g&&d.push(a+p+a)}),d.join(n)}}let fM=class{_darkMode=!1;title="Example 19: Draggable Grouping & Aggregators";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 ';angularGrid;columnDefinitions;dataset;dataviewObj;draggableGroupingPlugin;durationOrderByCount=!1;gridObj;gridOptions;processing=!1;selectedGroupingFields=["","",""];excelExportService=new xs;textExportService=new lN;constructor(){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 Ei_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"duration",name:"Duration",field:"duration",columnGroup:"Common Factor",width:70,sortable:!0,filterable:!0,editor:{model:Ne.float,decimal:2,valueStep:1,maxValue:1e4,alwaysSaveOnEnterKey:!0},filter:{model:ee.slider,operator:">="},type:M.number,groupTotalsFormatter:St.sumTotals,grouping:{getter:"duration",formatter:e=>`Duration: ${e.value} (${e.count} items)`,comparer:(e,t)=>this.durationOrderByCount?e.count-t.count:La.numeric(e.value,t.value,Li.asc),aggregators:[new Ei_Sum("duration"),new Ei_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"start",name:"Start",field:"start",columnGroup:"Period",minWidth:60,sortable:!0,filterable:!0,filter:{model:ee.compoundDate},formatter:G.dateIso,type:M.dateUtc,outputType:M.dateIso,exportWithFormatter:!0,grouping:{getter:"start",formatter:e=>`Start: ${e.value} (${e.count} items)`,aggregators:[new Ei_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"finish",name:"Finish",field:"finish",columnGroup:"Period",minWidth:60,sortable:!0,filterable:!0,filter:{model:ee.compoundDate},formatter:G.dateIso,type:M.dateUtc,outputType:M.dateIso,exportWithFormatter:!0,grouping:{getter:"finish",formatter:e=>`Finish: ${e.value} (${e.count} items)`,aggregators:[new Ei_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"cost",name:"Cost",field:"cost",columnGroup:"Analysis",width:90,sortable:!0,filterable:!0,filter:{model:ee.compoundInput},formatter:G.dollar,groupTotalsFormatter:St.sumTotalsDollar,type:M.number,grouping:{getter:"cost",formatter:e=>`Cost: ${e.value} (${e.count} items)`,aggregators:[new Ei_Sum("cost")],aggregateCollapsed:!0,collapsed:!0}},{id:"percentComplete",name:"% Complete",field:"percentComplete",columnGroup:"Analysis",minWidth:70,width:90,formatter:G.percentCompleteBar,type:M.number,filterable:!0,filter:{model:ee.compoundSlider},sortable:!0,groupTotalsFormatter:St.avgTotalsPercentage,grouping:{getter:"percentComplete",formatter:e=>`% Complete: ${e.value} (${e.count} items)`,aggregators:[new Ei_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:ee.singleSelect},formatter:G.checkmarkMaterial,grouping:{getter:"effortDriven",formatter:e=>`Effort-Driven: ${e.value?"True":"False"} (${e.count} items)`,aggregators:[new Ei_Sum("duration"),new Ei_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,t)=>{"toggle-preheader"===t.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,t)=>this.onGroupChanged(t),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 t=[];for(let n=0;nthis.selectedGroupingFields[t]="")}collapseAllGroups(){this.dataviewObj.collapseAllGroups()}expandAllGroups(){this.dataviewObj.expandAllGroups()}exportToExcel(){this.excelExportService.exportToExcel({filename:"Export",format:Ii.xlsx})}groupByDurationOrderByCount(e=!1){if(this.durationOrderByCount=e,this.clearGrouping(!1),this.draggableGroupingPlugin?.setDroppedGroups){this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups("duration");const t=e?[]:[{columnId:"duration",sortAsc:!0}];this.gridObj?.setSortColumns(t),this.gridObj?.invalidate()}}groupByDurationEffortDriven(){this.clearGrouping(!1),this.draggableGroupingPlugin?.setDroppedGroups&&(this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups(["duration","effortDriven"]),this.gridObj?.invalidate())}groupByFieldName(e,t){if(this.clearGrouping(),this.draggableGroupingPlugin&&this.draggableGroupingPlugin.setDroppedGroups){const n=this.selectedGroupingFields.filter(r=>""!==r);this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups(n),this.gridObj.invalidate()}}onGroupChanged(e){const t=e&&e.caller||[],n=e&&e.groupColumns||[];Array.isArray(this.selectedGroupingFields)&&Array.isArray(n)&&n.length>0?this.selectedGroupingFields.forEach((r,s)=>this.selectedGroupingFields[s]=n[s]&&n[s].getter||""):0===n.length&&"remove-group"===t&&this.clearGroupingSelects()}onCellChanged(){this.angularGrid.dataView?.refresh()}showPreHeader(){this.gridObj.setPreHeaderPanelVisibility(!0)}selectTrackByFn(e,t){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.setTopHeaderPanelVisibility(!this.gridObj.getOptions().showTopHeaderPanel)}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 ctorParameters=()=>[]};fM=Oe([We({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
'}),Xt("design:paramtypes",[])],fM);var _me=z(530),Eme=z.n(_me);let vM=class{angularGrid;gridOptions;columnDefinitions;dataset;dragHelper;dragRows=[];dragMode="";ngOnInit(){this.defineGrids(),this.dataset=this.mockData()}angularGridReady(e){this.angularGrid=e}isBrowserDarkModeEnabled(){return window.matchMedia?.("(prefers-color-scheme: dark)").matches??!1}defineGrids(){this.columnDefinitions=[{id:"name",name:"Name",field:"name",width:300,cssClass:"cell-title",editor:{model:Ne.Text},validator:this.requiredFieldValidator},{id:"complete",name:"Complete",width:60,cssClass:"cell-effort-driven",field:"complete",cannotTriggerInsert:!0,formatter:G.checkmarkMaterial,editor:{model:Ne.Checkbox}}],this.gridOptions={enableAutoResize:!1,gridHeight:225,gridWidth:800,rowHeight:33,enableCellNavigation:!0,enableRowSelection:!0,enableRowMoveManager:!0,rowSelectionOptions:{selectActiveRow:!1},rowMoveManager:{columnIndexPosition:0,cancelEditOnDrag:!0,disableRowSelection:!0,hideRowMoveShadow:!1,onBeforeMoveRows:this.onBeforeMoveRows.bind(this),onMoveRows:this.onMoveRows.bind(this)}}}mockData(){return[{id:0,name:"Make a list",complete:!0},{id:1,name:"Check it twice",complete:!1},{id:2,name:"Find out who's naughty",complete:!1},{id:3,name:"Find out who's nice",complete:!1}]}onBeforeMoveRows(e,t){for(const n of t.rows)if(n===t.insertBefore||n===t.insertBefore-1)return e.stopPropagation(),!1;return!0}onMoveRows(e,t){const n=[],r=t.rows,s=t.insertBefore,a=this.dataset.slice(0,s),d=this.dataset.slice(s,this.dataset.length);r.sort((p,g)=>p-g);for(const p of r)n.push(this.dataset[p]);r.reverse();for(const p of r)pd==d))&&(r=[n],this.angularGrid.slickGrid?.setSelectedRows(r)),this.dragRows=r;const s=r.length,a=document.createElement("span");return a.className="drag-message",a.textContent=`Drag to Recycle Bin to delete ${s} selected row(s)`,this.dragHelper=a,document.body.appendChild(a),document.querySelector("#dropzone")?.classList.add("drag-dropzone"),a}handleOnDrag(e,t){if("recycle"!==this.dragMode)return;this.dragHelper instanceof HTMLElement&&(this.dragHelper.style.top=`${e.pageY+5}px`,this.dragHelper.style.left=`${e.pageX+5}px`);const n=document.querySelector("#dropzone");t.target instanceof HTMLElement&&("dropzone"===t.target.id||t.target===n)?n.classList.add("drag-hover"):n.classList.remove("drag-hover")}handleOnDragEnd(e,t){if("recycle"!=this.dragMode||(this.dragHelper?.remove(),document.querySelector("#dropzone")?.classList.remove("drag-dropzone","drag-hover"),"recycle"!=this.dragMode||"dropzone"!==t.target.id))return;const n=this.dragRows.sort().reverse();for(const r of n)this.dataset.splice(r,1);this.angularGrid.slickGrid?.invalidate(),this.angularGrid.slickGrid?.setSelectedRows([]),this.dataset=[...this.dataset]}requiredFieldValidator(e){return null!=e&&null!=e&&e.length?{valid:!0,msg:null}:{valid:!1,msg:"This is a required field"}}};vM=Oe([We({template:'
\n

\n Example 41: Drag & Drop\n \n \n code\n \n \n

\n\n
\n
    \n
  • Click to select, Ctrl-click to toggle selection(s).
  • \n
  • Drag one or more rows by the handle icon (1st column) to reorder.
  • \n
  • Drag one or more rows by selection (2nd or 3rd column) and drag to the recycle bin to delete.
  • \n
\n
\n\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n\n
\n
\n Recycle Bin\n
\n
\n
\n
\n',encapsulation:Bt.None,styles:[Eme()]})],vM);class xme{args;_lastInputEvent;inputElm;defaultValue;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||"",t=this.columnEditor?.title||"";this.inputElm=document.createElement("input"),this.inputElm.type="text",this.inputElm.className="editor-text",this.inputElm.placeholder=e,this.inputElm.title=t,this.args.container.appendChild(this.inputElm),this.inputElm.addEventListener("keydown",this.onKeydown.bind(this)),this.hasAutoCommitEdit&&this.inputElm.addEventListener("focusout",this.save.bind(this)),window.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,t){const n=this.validate(t);e[this.args.column.field]=n&&n.valid?t:""}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 t=void 0!==e?e:this.inputElm?.value;return this.validator(t,this.args)}return{valid:!0,msg:null}}}const Xj_timeout=5e3,Xj_jsonpCallback="callback",bM=i=>delete window[i],cN=i=>{const e=document.getElementById(i);e&&document.getElementsByTagName("head")[0].removeChild(e)};const Ame=function Dme(i,e={}){let t=i;const n=e.timeout||Xj_timeout,r=e.jsonpCallback||Xj_jsonpCallback;let s;return new Promise((a,d)=>{const h=e.jsonpCallbackFunction||`jsonp_${Date.now()}_${Math.ceil(1e5*Math.random())}`,p=`${r}_${h}`;window[h]=v=>{a({ok:!0,json:()=>Promise.resolve(v)}),s&&clearTimeout(s),cN(p),bM(h)},t+=-1===t.indexOf("?")?"?":"&";const g=document.createElement("script");g.setAttribute("src",`${t}${r}=${h}`),e.charset&&g.setAttribute("charset",e.charset),e.nonce&&g.setAttribute("nonce",e.nonce),e.referrerPolicy&&g.setAttribute("referrerPolicy",e.referrerPolicy),e.crossorigin&&g.setAttribute("crossorigin","true"),g.id=p,document.getElementsByTagName("head")[0].appendChild(g),s=setTimeout(()=>{d(new Error(`JSONP request to ${i} timed out`)),bM(h),cN(p),window[h]=()=>{bM(h)}},n),g.onerror=()=>{d(new Error(`JSONP request to ${i} failed`)),bM(h),cN(p),s&&clearTimeout(s)}})},Qj="assets/data/collection_100_numbers.json",eq="assets/data/countries.json",tq="assets/data/country_names.json",dN=(i,e)=>null!=i&&i.length?/^Task\s\d+$/.test(i)?{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"},Mme=(i,e,t)=>{if(t&&Array.isArray(t)){const r=t.map(s=>`Task ${s}`).join(", ");return`${r}`}return""};let yM=class{http;translate;title="Example 3: Editors / Delete";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 ';_commandQueue=[];angularGrid;columnDefinitions;gridOptions;dataset;gridObj;isAutoEdit=!0;alertWarning;updatedObject;selectedLanguage="en";duplicateTitleHeaderCount=1;constructor(e,t){this.http=e,this.translate=t}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,t)=>{console.log(t),this.alertWarning=`Editing: ${t.dataContext.title}`,this.angularGrid.gridService.highlightRow(t.row,1500),this.angularGrid.gridService.setSelectedRow(t.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:M.string,editor:{model:Ne.longText,required:!0,maxLength:12,editorOptions:{cols:42,rows:5,buttonTexts:{}},validator:dN},onCellChange:(e,t)=>{console.log(t),this.alertWarning=`Updated Title: ${t.dataContext.title}`}},{id:"title2",name:"Title, Custom Editor",field:"title",minWidth:70,filterable:!0,sortable:!0,type:M.string,editor:{model:xme,placeholder:"custom",validator:dN},filter:{model:rN,placeholder:"\u{1f50e}\ufe0e custom"}},{id:"duration",name:"Duration (days)",field:"duration",minWidth:100,filterable:!0,sortable:!0,formatter:G.complexObject,type:M.number,exportWithFormatter:!0,filter:{model:ee.slider,filterOptions:{hideSliderNumber:!1}},editor:{model:Ne.slider,minValue:0,maxValue:100}},{id:"complete",name:"% Complete",field:"percentComplete",minWidth:100,filterable:!0,formatter:G.multiple,type:M.number,editor:{model:Ne.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:te.notEqual},editorOptions:{maxHeight:400}},params:{formatters:[G.collectionEditor,G.percentCompleteBar]}},{id:"start",name:"Start",field:"start",minWidth:100,filterable:!0,filter:{model:ee.compoundDate},formatter:G.multiple,params:{formatters:[G.complexObject,G.dateIso]},exportWithFormatter:!0,sortable:!0,type:M.date,editor:{model:Ne.date}},{id:"finish",name:"Finish",field:"finish",minWidth:100,filterable:!0,sortable:!0,filter:{model:ee.compoundDate},formatter:G.dateIso,exportWithFormatter:!0,type:M.date,saveOutputType:M.dateUtc,editor:{model:Ne.date,editorOptions:{range:{min:"today"}}}},{id:"cityOfOrigin",name:"City of Origin",field:"cityOfOrigin",filterable:!0,minWidth:100,editor:{model:Ne.autocompleter,placeholder:"\u{1f50e}\ufe0e search city",editorOptions:{forceUserInput:!0,minLength:3,fetch:(e,t)=>{window.processJSONPResponse=a=>{t(a),(a=>{delete window[a]})("processJSONPResponse")};const s=document.createElement("script");s.src=`http://gd.geobytes.com/AutoCompleteCity?q=${e}&callback=processJSONPResponse`,document.getElementsByTagName("head")[0].appendChild(s)}}},filter:{model:ee.autocompleter,filterOptions:{minLength:3,fetch:(e,t)=>{Ame(`http://gd.geobytes.com/AutoCompleteCity?q=${e}`).then(n=>n.json()).then(n=>t(n)).catch(n=>console.log("invalid JSONP response",n))}}}},{id:"countryOfOrigin",name:"Country of Origin",field:"countryOfOrigin",formatter:G.complexObject,exportWithFormatter:!0,dataKey:"code",labelKey:"name",type:M.object,sortComparer:La.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:Ne.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get(eq)},filter:{model:ee.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get(eq)}},{id:"countryOfOriginName",name:"Country of Origin Name",field:"countryOfOriginName",filterable:!0,sortable:!0,minWidth:100,editor:{model:Ne.autocompleter,collectionAsync:this.http.get(tq)},filter:{model:ee.autocompleter,collectionAsync:this.http.get(tq)}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",minWidth:70,filterable:!0,type:M.boolean,filter:{model:ee.singleSelect,collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}]},formatter:G.checkmarkMaterial,editor:{model:Ne.checkbox}},{id:"prerequisites",name:"Prerequisites",field:"prerequisites",minWidth:100,filterable:!0,formatter:Mme,exportWithFormatter:!0,sanitizeDataExport:!0,sortable:!0,type:M.string,editor:{placeholder:"choose option",collectionAsync:this.http.get(Qj),collectionSortBy:{property:"label",sortDesc:!0},customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:Ne.multipleSelect,required:!0},filter:{collectionAsync:this.http.get(Qj),collectionSortBy:{property:"label",sortDesc:!0},customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:ee.multipleSelect,operator:te.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,t,n)=>{this._commandQueue.push(n),n.execute()},i18n:this.translate},this.dataset=this.mockData(100)}addItem(){const e=this.dataset.length,t=this.mockData(1,e);window.setTimeout(()=>{const n=this.columnDefinitions.find(r=>"prerequisites"===r.id);if(n){const r=n.filter.collectionAsync,s=n.editor.collection;Array.isArray(s)&&(this.angularGrid.gridService.addItem(t[0]),s.push({value:e,label:e,prefix:"Task"}),r instanceof mi&&r.next(s))}},250)}deleteItem(){const e=this.columnDefinitions.find(t=>"prerequisites"===t.id);if(e){const t=e.filter.collectionAsync,n=e.filter.collection;if(Array.isArray(n)){const r=this.sortCollectionDescending(n).pop();this.angularGrid.gridService.deleteItemById(r.value),t instanceof mi&&t.next(n)}}}sortCollectionDescending(e){return e.sort((t,n)=>t.value-n.value)}mockData(e,t=0){const n=[];for(let r=t;r[{type:Mi},{type:zt}]};yM=Oe([We({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
'}),Xt("design:paramtypes",[Mi,zt])],yM);let CM=class{_darkMode=!1;title="Example 37: Footer Totals Row";subTitle="Display a totals row at the end of the grid.";columnDefinitions=[];gridOptions;dataset;angularGrid;angularGridReady(e){this.angularGrid=e,this.updateAllTotals()}ngOnInit(){this.defineGrid(),this.dataset=this.loadData(100)}ngOnDestroy(){document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"}defineGrid(){const e=[];for(let t=0;t<10;t++)e.push({id:t,name:String.fromCharCode(65+t),field:String(t),type:M.number,width:58,editor:{model:Ne.integer}});this.columnDefinitions=e,this.gridOptions={autoEdit:!0,autoCommitEdit:!0,editable:!0,darkMode:this._darkMode,gridHeight:450,gridWidth:800,enableCellNavigation:!0,rowHeight:30,createFooterRow:!0,showFooterRow:!0,footerRowHeight:28}}loadData(e){const t=[];for(let n=0;n\n

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

\n
\n\n \n \n
'})],CM);var Rme=z(674),Pme=z.n(Rme);const Bme=(i,e,t,n,r,s)=>{const a=function Nme(i,e,t){const n=t.getOptions(),r=e.editor;return n.editable&&r}(0,n,s);t=t??"";const d=document.createElement("div");return d.className="editing-field",t instanceof HTMLElement?d.appendChild(t):d.textContent=t,a?d:t};class uN{field;taxRate;_sum=0;_type="sum";constructor(e,t){this.field=e,this.taxRate=t}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 t=0;e.taxable&&(t=e.price*e.qty*(this.taxRate/100)),this._sum+=e.price*e.qty+t}}storeResult(e){(!e||void 0===e[this._type])&&(e[this._type]={}),e[this._type][this.field]=this._sum}}let wM=class{columnDefinitions=[];gridOptions;dataset=[];angularGrid;excelExportService;isDataGrouped=!1;taxRate=7.5;constructor(){this.excelExportService=new xs}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:M.number,editor:{model:Ne.float,decimal:2},sortable:!0,width:70,filterable:!0,formatter:G.dollar,groupTotalsFormatter:St.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:M.number,groupTotalsFormatter:St.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:Ne.integer},sortable:!0,width:60,filterable:!0},{id:"subTotal",name:"Sub-Total",field:"subTotal",cssClass:"text-sub-total",type:M.number,sortable:!0,width:70,filterable:!0,exportWithFormatter:!1,formatter:G.multiple,groupTotalsFormatter:St.sumTotalsDollarBold,params:{formatters:[(e,t,n,r,s)=>s.price*s.qty,G.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:G.checkmarkMaterial,exportCustomFormatter:(e,t,n)=>n?"\u2713":"",excelExportOptions:{style:{alignment:{horizontal:"center"}}}},{id:"taxes",name:"Taxes",field:"taxes",cssClass:"text-taxes",type:M.number,sortable:!0,width:70,filterable:!0,formatter:G.multiple,groupTotalsFormatter:St.sumTotalsDollarBold,params:{formatters:[(e,t,n,r,s)=>s.taxable?s.price*s.qty*(this.taxRate/100):null,G.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:M.number,sortable:!0,width:70,filterable:!0,cssClass:"text-total",formatter:G.multiple,groupTotalsFormatter:St.sumTotalsDollarBold,params:{formatters:[(e,t,n,r,s)=>{let a=s.price*s.qty;return s.taxable&&(a+=a*(this.taxRate/100)),a},G.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:Bme,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,t)=>{const n=e.getStyleSheet().createFormat({font:{size:18,fontName:"Calibri",bold:!0,color:"FFFFFFFF"},alignment:{wrapText:!0,horizontal:"center"},fill:{type:"pattern",patternType:"solid",fgColor:"FF203764"}});t.setRowInstructions(0,{height:40});const s=this.isDataGrouped?"H1":"G1";t.mergeCells("A1",s),t.data.push([{value:"Grocery Shopping List",metadata:{style:n.id}}])}}}}invalidateAll(){this.angularGrid.dataView?.refresh(),this.angularGrid.slickGrid?.invalidate()}updateTaxRate(){this.isDataGrouped&&this.groupByTaxable(),this.invalidateAll()}exportToExcel(){this.excelExportService.exportToExcel()}excelGroupCellParser(e,{columnDef:t,excelFormatId:n,dataRowIdx:r}){const d=this.angularGrid.slickGrid?.getColumnIndex("price")||0,h=this.angularGrid.slickGrid?.getColumnIndex("qty")||0,p=this.angularGrid.slickGrid?.getColumnIndex("taxes")||0,g=this.angularGrid.slickGrid?.getColumnIndex("subTotal")||0,v=this.angularGrid.slickGrid?.getColumnIndex("total")||0,y=e?.group?.count||0,C=`${String.fromCharCode(65+d-0)}`,k=`${String.fromCharCode(65+h-0)}`,E=`${String.fromCharCode(65+g-0)}`,x=`${String.fromCharCode(65+p-0)}`,S=`${String.fromCharCode(65+v-0)}`;let D="";switch(t.id){case"price":D=C;break;case"qty":D=k;break;case"subTotal":D=E;break;case"taxes":D=x;break;case"total":D=S}return{value:`SUM(${D}${r+3-y}:${D}${r+3-1})`,metadata:{type:"formula",style:n}}}excelRegularCellParser(e,{columnDef:t,excelFormatId:n,dataRowIdx:r,dataContext:s}){const a=this.isDataGrouped?0:1,h=this.angularGrid.slickGrid?.getColumnIndex("price")||0,p=this.angularGrid.slickGrid?.getColumnIndex("qty")||0,g=this.angularGrid.slickGrid?.getColumnIndex("taxes")||0,v=`${String.fromCharCode(65+h-a)}${r+3}`,y=`${String.fromCharCode(65+p-a)}${r+3}`,C=`${String.fromCharCode(65+g-a)}${r+3}`;let k="";switch(t.id){case"subTotal":k=`${v}*${y}`;break;case"taxes":k=s.taxable?`${v}*${y}*${this.taxRate/100}`:"";break;case"total":k=`(${v}*${y})+${C}`}return{value:k,metadata:{type:"formula",style:n}}}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:n=>`Taxable: (${n.count} items)`,comparer:(n,r)=>r.value-n.value,aggregators:[new Ei_Sum("price"),new Ei_Sum("qty"),new uN("subTotal",this.taxRate),new uN("taxes",this.taxRate),new uN("total",this.taxRate)],aggregateCollapsed:!1,lazyTotalsCalculation:!1}),this.angularGrid?.dataView?.refresh()}static ctorParameters=()=>[]};wM=Oe([We({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:Bt.None,styles:[Pme()]}),Xt("design:paramtypes",[])],wM);const Vme=(i,e,t)=>t?'':{text:'',addClasses:"lightblue",toolTip:"Freezing"},zme=(i,e,t)=>`\n \n `;let kM=class{title="Example 2: Grid with Formatters";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 ';columnDefinitions=[];gridOptions;dataset;angularGrid;resizerPaused=!1;angularGridReady(e){this.angularGrid=e}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:M.string,width:70},{id:"phone",name:"Phone Number using mask",field:"phone",sortable:!0,type:M.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:M.number,minWidth:90,exportWithFormatter:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,type:M.number,sortable:!0,minWidth:100},{id:"percent2",name:"% Complete",field:"percentComplete2",formatter:G.progressBar,type:M.number,sortable:!0,minWidth:100},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,type:M.date,minWidth:90,exportWithFormatter:!0},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,type:M.date,minWidth:90,exportWithFormatter:!0},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:Vme,type:M.number,sortable:!0,minWidth:100},{id:"completed",name:"Completed",field:"completed",type:M.number,sortable:!0,minWidth:100,formatter:zme,onCellClick:(t,n)=>{this.toggleCompletedProperty(n?.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 t=0;t<500;t++){const n=2e3+Math.floor(10*Math.random()),r=Math.floor(11*Math.random()),s=Math.floor(29*Math.random()),a=Math.round(100*Math.random());e[t]={id:t,title:"Task "+t,phone:this.generatePhoneNumber(),duration:t%33==0?null:100*Math.random()+"",percentComplete:a,percentComplete2:a,percentCompleteNumber:a,start:new Date(n,r,s),finish:new Date(n,r+1,s),effortDriven:t%5==0}}this.dataset=e}generatePhoneNumber(){let e="";for(let t=0;t<10;t++)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,window.setTimeout(()=>{this.angularGrid.gridService.updateItemById(e.id,e,{highlightRow:!1})},250))}};kM=Oe([We({template:'
\n

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

\n
\n\n \n\n \n \n
'})],kM);var $me=z(758),Wme=z.n($me);let _M=class{title="Example 20: Pinned (frozen) Columns/Rows";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 ';angularGrid;columnDefinitions;gridOptions;dataset;frozenColumnCount=2;frozenRowCount=3;isFrozenBottom=!1;gridObj;slickEventHandler;constructor(){this.slickEventHandler=new Pi}ngOnInit(){this.prepareDataGrid()}ngOnDestroy(){this.slickEventHandler.unsubscribeAll()}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid,this.slickEventHandler.subscribe(this.gridObj.onMouseEnter,t=>this.colorizeHoveringRow(t,!0)),this.slickEventHandler.subscribe(this.gridObj.onMouseLeave,t=>this.colorizeHoveringRow(t,!1))}colorizeHoveringRow(e,t){const n=this.gridObj.getCellFromEvent(e),r=t?[n?.row??0]:[];this.gridObj.setSelectedRows(r),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:M.number,filterable:!0,filter:{model:ee.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:ee.compoundSlider},editor:{model:Ne.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:ee.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 t=0;t<500;t++)e[t]={id:t,title:"Task "+t,cost:t%33==0?null:1e4*Math.random(),duration:t%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:t%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,t,n,r,s){const a=this.isNullUndefinedOrEmpty(s.cost)?"n/a":wn(s.cost,0,2,!1,"$","",".",",");let d="n/a";return!this.isNullUndefinedOrEmpty(s.duration)&&s.duration>=0&&(d=`${s.duration} ${s.duration>1?"days":"day"}`),`${a} | ${d}`}isNullUndefinedOrEmpty(e){return""===e||null==e}onValidationError(e,t){alert(t.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 ctorParameters=()=>[]};_M=Oe([We({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:Bt.None,styles:[Wme()]}),Xt("design:paramtypes",[])],_M);class Am{constructor(e,t){if(this.queryFnName=e,this.head=[],"string"==typeof t)this.alias=t;else if("object"==typeof t)this.filter(t);else{if(void 0===t&&2===arguments.length)throw new TypeError('You have passed undefined as Second argument to "Query"');if(void 0!==t)throw new TypeError(`Second argument to "Query" should be an alias name(String) or filter arguments(Object). What was passed is: ${t}`)}}filter(e){for(const t of Object.keys(e)){if("function"==typeof e[t])continue;const n=this.getGraphQLValue(e[t]);"{}"!==n&&this.head.push(`${t}:${n}`)}return this}find(...e){if(!e||!Array.isArray(e)||0===e.length)throw new TypeError("find value can not be >>falsy<<");const t=1===e.length&&Array.isArray(e[0])?e[0]:e;return this.body=this.parceFind(t),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((n,r)=>{const s=e[r];if(s instanceof Am)return s.toString();if(Array.isArray(s)||"object"!=typeof s){if("string"==typeof s)return s;throw new RangeError(`cannot handle Find value of ${s}`)}{const a=Object.keys(s);if(1!==a.length)throw new RangeError(`Alias objects should only have one value. was passed: ${JSON.stringify(s)}`);const d=a[0],h=s[d];return Array.isArray(h)?new Am(d).find(h):`${d} : ${h} `}}).join(",")}getGraphQLValue(e){return"string"==typeof e?e=JSON.stringify(e):Array.isArray(e)?e=`[${e=e.map(t=>this.getGraphQLValue(t)).join()}]`:e instanceof Date?e=JSON.stringify(e):null!==e&&"object"==typeof e&&(e=this.objectToString(e)),e}objectToString(e){const t=[];for(const n of Object.keys(e))"function"!=typeof e[n]&&t.push(`${n}:${this.getGraphQLValue(e[n])}`);return`{${t.join()}}`}}class hN{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,t,n,r){this._grid=n,this.options=e||{datasetName:""},this.pagination=t,this._datasetIdPropName=this._gridOptions.datasetIdPropertyName||"id","function"==typeof n?.getColumns&&(this._columnDefinitions=r?.allColumns??n.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(g=>!g.excludeFromQuery);const t=new Am(`query ${this.options.operationName??""}`),n=new Am(this.options.datasetName),r=new Am("nodes"),s=[];if(Array.isArray(e))for(const g of e)g.excludeFieldFromQuery||s.push(g.field),g.fields&&s.push(...g.fields);-1===s.indexOf(this._datasetIdPropName)&&s.unshift(this._datasetIdPropName);const a=this.buildFilterQuery(s);let d=[];if(!1!==this._gridOptions.enablePagination||this.options.infiniteScroll){if(this.options.useCursor){const g=new Am("edges"),v=new Am("pageInfo");v.find("hasNextPage","hasPreviousPage","endCursor","startCursor"),r.find(a),g.find(["cursor"]),d=["totalCount",r,v,g]}else r.find(a),d=["totalCount",r];n.find(d)}else n.find(a);let h={};if(!1!==this._gridOptions.enablePagination||this.options.infiniteScroll)if(h={},this.options.useCursor&&this.options.paginationOptions)h={...this.options.paginationOptions};else{const g=this.options?.paginationOptions;h.first=this.options?.infiniteScroll?.fetchSize??this.options?.paginationOptions?.first??this.pagination?.pageSize??this.defaultPaginationOptions.first,h.offset=g&&"offset"in g?+g.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 g of this.options.extraQueryArguments)h[g.field]=g.value;n.filter(h),t.find(n);return this.trimDoubleQuotesOnEnumField(t.toString(),["direction:","field:","operator:"],this.options.keepArgumentFieldDoubleQuotes||!1)}postProcess(e){e.data&&this.pagination&&(this.pagination.totalItems=e.data[this.getDatasetName()]?.totalCount||0)}buildFilterQuery(e){const t=(r={},s)=>{const a=s.shift();return r[a]=s.length?t(r[a]??{},s):null,r},n=e.reduce((r,s)=>t(r,s.split(".")),{});return JSON.stringify(n).replace(/"|:|null/g,"").replace(/^\{/,"").replace(/\}$/,"")}clearFilters(){this._currentFilters=[],this.updateOptions({filteringOptions:[]})}clearSorters(){this._currentSorters=[],this.updateOptions({sortingOptions:[]})}getInitPaginationOptions(){const e=this.options?.infiniteScroll?.fetchSize??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||!("enablePagination"in this._gridOptions)||this.options?.infiniteScroll)&&this.updateOptions({paginationOptions:e})}updateOptions(e){this.options={...this.options,...e}}processOnFilterChanged(e,t){if(void 0===this._gridOptions.backendServiceApi)throw new Error('Something went wrong in the GraphqlService, "backendServiceApi" is not initialized');if(this._currentFilters=this.castFilterToColumnFilters(t.columnFilters),!t||!t.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(t.columnFilters,!1),this.resetPaginationOptions(),this.buildQuery()}processOnPaginationChanged(e,t){const n=+(this.options?.infiniteScroll?.fetchSize||t.pageSize||(this.pagination?this.pagination.pageSize:20));return"first"in t||"last"in t?this.updatePagination(t.newPage,n,t):this.updatePagination(t.newPage,n),this.buildQuery()}processOnSortChanged(e,t){const n=t.multiColumnSort?t.sortCols:new Array({columnId:t.sortCol?.id??"",sortCol:t.sortCol,sortAsc:t.sortAsc});return this.updateSorters(n),this.options?.infiniteScroll&&this.updateOptions({paginationOptions:{offset:0}}),this.buildQuery()}updateFilters(e,t){const n=[];let r;t&&(this._currentFilters=this.castFilterToColumnFilters(e));for(const s in e)if(s in e){const a=e[s];let d;if(d=t&&Array.isArray(this._columnDefinitions)?this._columnDefinitions.find(I=>I.id===a.columnId):a.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=_n(h.innerHTML));const p=d.type||M.string;let g=a?.searchTerms??[],v=Array.isArray(g)&&1===g.length?g[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||a.verbatimSearchTerms){n.push({field:Un(h),operator:a.operator,value:JSON.stringify(a.searchTerms)});continue}v=null==v?"":`${v}`;const C=!1!==(d.autoParseInputFilterOperator??this._gridOptions.autoParseInputFilterOperator)?v.match(/^((.*[^\\*\r\n])[*]{1}(.*[^*\r\n]))|^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/)||[]:[v,"","","","",v,""],k=C?.[2]||"",E=C?.[3]||"";let x=a.operator||C?.[4];r=C?.[1]||C?.[5]||"";const S=C?.[6]||"*z"===x||x===te.endsWith?"*":"";if(h&&""===r&&0===g.length)continue;let D;if("function"==typeof this.options?.filterQueryOverride&&(D=this.options?.filterQueryOverride({fieldName:Un(h),columnDef:d,operator:x,columnFilterOperator:a.operator,searchValues:g,grid:this._grid})),void 0!==D)n.push(D);else{if(k&&E?(g=[k,E],x=te.startsWithEndsWith):Array.isArray(g)&&1===g.length&&"string"==typeof g[0]&&g[0].indexOf("..")>=0&&(x!==te.rangeInclusive&&x!==te.rangeExclusive&&(x=this._gridOptions.defaultFilterRangeOperator??te.rangeInclusive),g=g[0].split("..",2),""===g[0]?(x=x===te.rangeInclusive?"<=":x===te.rangeExclusive?"<":x,g=g.slice(1),r=g[0]):""===g[1]&&(x=x===te.rangeInclusive?">=":x===te.rangeExclusive?">":x,g=g.slice(0,1),r=g[0])),"string"==typeof r&&("*"===x||"a*"===x||"*z"===x||"*"===S)&&(x="*"===x||"*z"===x?"EndsWith":"StartsWith"),!x&&d.filter&&d.filter.operator&&(x=d.filter.operator),!x&&Array.isArray(g)&&2===g.length&&g[0]&&g[1]&&(x=this._gridOptions.defaultFilterRangeOperator),(x===te.rangeInclusive||x===te.rangeExclusive)&&Array.isArray(g)&&1===g.length&&p===M.date&&(x=te.equal),r=this.normalizeSearchValue(p,r),Array.isArray(g)&&g.forEach((I,L)=>{g[L]=this.normalizeSearchValue(p,g[L])}),x===te.startsWithEndsWith&&Array.isArray(g)&&2===g.length){n.push({field:Un(h),operator:te.startsWith,value:k}),n.push({field:Un(h),operator:te.endsWith,value:E});continue}if(g?.length>1&&("IN"===x||"NIN"===x||"NOT_IN"===x))r=g.join(",");else if(2===g?.length&&(x===te.rangeExclusive||x===te.rangeInclusive)){n.push({field:Un(h),operator:x===te.rangeInclusive?"GE":"GT",value:g[0]}),n.push({field:Un(h),operator:x===te.rangeInclusive?"LE":"LT",value:g[1]});continue}x||(x=L_(p)),n.push({field:Un(h),operator:M$(x),value:r})}}this.updateOptions({filteringOptions:n})}updatePagination(e,t,n){this._currentPagination={pageNumber:e,pageSize:t};let r={};if(this.options?.useCursor)if(n&&n instanceof Object){const{pageSize:s,newPage:a,...d}=n;r=d}else r={first:t};else r={first:t,offset:e>1?(e-1)*t:0};this.updateOptions({paginationOptions:r})}updateSorters(e,t){let n=[];const r=[];if(!e&&t){n=t,n.forEach(a=>a.direction=a.direction.toUpperCase());const s=n.map(a=>{const d=this._columnDefinitions?.find(h=>h.id===a.columnId);return r.push({field:d?(d.queryFieldSorter||d.queryField||d.field)+"":a.columnId+"",direction:a.direction}),d?{columnId:a.columnId,sortAsc:a.direction.toUpperCase()===ar.ASC}:null});Array.isArray(s)&&this._grid&&this._grid.setSortColumns(s.filter(a=>a)||[])}else if(e&&!t&&Array.isArray(e)&&e.length>0)for(const s of e)if(s&&s.sortCol){n.push({columnId:s.sortCol.id+"",direction:s.sortAsc?ar.ASC:ar.DESC});const a=(s.sortCol.queryFieldSorter||s.sortCol.queryField||s.sortCol.field||"")+"";a&&r.push({field:a,direction:s.sortAsc?ar.ASC:ar.DESC})}this._currentSorters=n,this.updateOptions({sortingOptions:r})}trimDoubleQuotesOnEnumField(e,t,n){const r='s?((field:s*)?".*?")';let s=t.join(r+"|");s+=r;const a=new RegExp(s,"g");return e.replace(a,d=>{let h=!0;return d.startsWith("field:")&&n&&(h=!1),h?d.replace(/"/g,""):d})}castFilterToColumnFilters(e){const t="object"==typeof e?Object.keys(e).map(n=>e[n]):e;return Array.isArray(t)?t.map(n=>{const r={columnId:n.columnId||""};return n.operator&&(r.operator=n.operator),n.targetSelector&&(r.targetSelector=n.targetSelector),Array.isArray(n.searchTerms)&&(r.searchTerms=n.searchTerms),r}):[]}normalizeSearchValue(e,t){switch(e){case M.date:case M.string:case M.text:case M.readonly:"string"==typeof t&&(t=t.replace(/'/g,"''"));break;case M.integer:case M.number:case M.float:"string"==typeof t&&((""===(t=(t=(t=(t=(t=t.replace(/\.\./g,".")).replace(/\.+$/g,"")).replace(/^\.+/g,"0.")).replace(/^-+\.+/g,"-0.")).replace(/(?!^-)[^\d.]/g,""))||"-"===t)&&(t="0"))}return t}}const pN="users",rq="gridStateGraphql";let EM=class{cd;translate;title="Example 6: Grid connected to Backend Server with GraphQL";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 ';subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset=[];metrics;isWithCursor=!1;graphqlQuery="";processing=!0;status={text:"processing...",class:"alert alert-danger"};selectedLanguage;serverWaitDelay=250;constructor(e,t){this.cd=e,this.translate=t;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"name",field:"name",nameKey:"NAME",width:60,columnGroupKey:"CUSTOMER_INFORMATION",type:M.string,sortable:!0,filterable:!0,filter:{model:ee.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:ee.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:ee.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:M.number,columnGroupKey:"BILLING.INFORMATION",filterable:!0,sortable:!0,filter:{model:ee.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:M.date,columnGroupKey:"BILLING.INFORMATION",filterable:!0,filter:{model:ee.dateRange,filterShortcuts:[{titleKey:"NEXT_20_DAYS",iconCssClass:"mdi mdi-calendar",searchTerms:[vr(new Date,"YYYY-MM-DD"),vr(H_(new Date,20),"YYYY-MM-DD")]}]}}];const e=(new Date).getFullYear(),t=`${e}-01-01`,n=`${e}-02-15`;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:(r,s)=>{"reset-grid"===s.command&&(this.angularGrid.gridService.resetGrid(this.columnDefinitions),localStorage[rq]=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:te.equal},{columnId:"name",searchTerms:["Joh*oe"],operator:te.startsWithEndsWith},{columnId:"company",searchTerms:["xyz"],operator:"IN"},{columnId:"finish",searchTerms:[t,n],operator:te.rangeInclusive}],sorters:[{columnId:"name",direction:"asc"},{columnId:"company",direction:ar.DESC}],pagination:{pageNumber:this.isWithCursor?1:2,pageSize:20}},backendServiceApi:{service:new hN,options:{datasetName:pN,addLocaleIntoQuery:!0,extraQueryArguments:[{field:"userId",value:123}],filterQueryOverride:({fieldName:r,columnDef:s,columnFilterOperator:a,searchValues:d})=>{if(a===te.custom&&"name"===s?.id)return{field:r,operator:"Like",value:d[0]}},useCursor:this.isWithCursor,keepArgumentFieldDoubleQuotes:!0},preProcess:()=>this.displaySpinner(!0),process:r=>this.getCustomerApiCall(r),postProcess:r=>{this.metrics=r.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 t;if(this.angularGrid?.paginationService){const{paginationService:r}=this.angularGrid,s=r._initialized?r.getCurrentPageNumber():1,a=String.fromCharCode(65+s-1),d=String.fromCharCode(a.charCodeAt(0)+1);t={hasPreviousPage:0===r.dataFrom,hasNextPage:100===r.dataTo,startCursor:a,endCursor:d}}else t={hasPreviousPage:!1,hasNextPage:!0,startCursor:"A",endCursor:"B"};const n={data:{[pN]:{nodes:[],totalCount:100,pageInfo:t}}};return new Promise(r=>{window.setTimeout(()=>{this.graphqlQuery=this.angularGrid.backendService.buildQuery(),this.isWithCursor&&this.angularGrid?.paginationService?.setCursorPageInfo(n.data[pN].pageInfo),r(n)},this.serverWaitDelay)})}goToFirstPage(){this.angularGrid.paginationService.goToFirstPage()}goToLastPage(){this.angularGrid.paginationService.goToLastPage()}gridStateChanged(e){console.log("GraphQL Example, Grid State changed:: ",e),localStorage[rq]=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=(new Date).getFullYear(),t=`${e}-01-01`,n=`${e}-02-15`;this.angularGrid.filterService.updateFilters([{columnId:"gender",searchTerms:["female"],operator:te.equal},{columnId:"name",searchTerms:["Jane"],operator:te.startsWith},{columnId:"company",searchTerms:["acme"],operator:"IN"},{columnId:"billingAddressZip",searchTerms:["11"],operator:te.greaterThanOrEqual},{columnId:"finish",searchTerms:[t,n],operator:te.rangeInclusive}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"billingAddressZip",direction:"DESC"},{columnId:"company",direction:"ASC"}])}resetToOriginalPresets(){const e=(new Date).getFullYear(),t=`${e}-01-01`,n=`${e}-02-15`;this.angularGrid.filterService.updateFilters([{columnId:"gender",searchTerms:["male"],operator:te.equal},{columnId:"name",searchTerms:["Joh*oe"],operator:te.startsWithEndsWith},{columnId:"company",searchTerms:["xyz"],operator:"IN"},{columnId:"finish",searchTerms:[t,n],operator:te.rangeInclusive}]),this.angularGrid.sortService.updateSorting([{columnId:"name",direction:"asc"},{columnId:"company",direction:ar.DESC}]),window.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 t=this.gridOptions.backendServiceApi.service;this.angularGrid.paginationService.setCursorBased(e.useCursor),t.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 ctorParameters=()=>[{type:bn},{type:zt}]};EM=Oe([We({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
'}),Xt("design:paramtypes",[bn,zt])],EM);var Yme=z(612),Zme=z.n(Yme);const mN="https://countries.trevorblades.com/";let FM=class{http;title="Example 27: GraphQL Basic API without Pagination";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 ';angularGrid;columnDefinitions;gridOptions;dataset=[];metrics;graphqlQuery="";processing=!0;status={text:"processing...",class:"alert alert-danger"};isDataLoaded=!1;constructor(e){this.http=e}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:ee.multipleSelect,collectionAsync:this.getLanguages(),operator:te.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:ee.multipleSelect,collectionAsync:this.getLanguages(),operator:te.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:ee.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 hN,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(mN,{query:e})}getContinents(){return this.http.post(mN,{query:"query { continents { code, name }}"})}getLanguages(){return this.http.post(mN,{query:"query { languages { code, name, native }}"})}static ctorParameters=()=>[{type:Mi}]};FM=Oe([We({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:Bt.None,styles:[Zme()]}),Xt("design:paramtypes",[Mi])],FM);let xM=class{title="Example 14: Grouping & Aggregators";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 ';angularGrid;columnDefinitions;gridOptions;dataset;gridObj;dataviewObj;processing=!1;excelExportService=new xs;textExportService=new lN;ngOnInit(){this.initializeGrid()}initializeGrid(){const e=document.createElement("div"),t=document.createElement("button"),n=document.createElement("span");n.className="mdi mdi-help-circle no-padding",t.dataset.test="col1-hello-btn",t.className="btn btn-outline-secondary btn-xs btn-icon ms-1",t.textContent="Click me",t.title="simple column header test with a button click listener",t.addEventListener("click",()=>alert("Hello World")),t.appendChild(n),e.appendChild(document.createTextNode("Id ")),e.appendChild(t),this.columnDefinitions=[{id:"sel",name:e,field:"num",type:M.number,columnPickerLabel:"Custom Label",width:140,maxWidth:150,excludeFromExport:!0,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:ee.slider,operator:">="},sortable:!0,type:M.number,groupTotalsFormatter:St.sumTotals,params:{groupFormatterPrefix:"Total: "}},{id:"%",name:"% Complete",field:"percentComplete",minWidth:70,width:90,formatter:G.percentCompleteBar,filterable:!0,filter:{model:ee.compoundSlider},sortable:!0,type:M.number,groupTotalsFormatter:St.avgTotalsPercentage,params:{groupFormatterPrefix:"Avg: "}},{id:"start",name:"Start",field:"start",minWidth:60,filterable:!0,filter:{model:ee.compoundDate},sortable:!0,type:M.dateIso,formatter:G.dateIso,exportWithFormatter:!0},{id:"finish",name:"Finish",field:"finish",minWidth:60,filterable:!0,filter:{model:ee.compoundDate},sortable:!0,type:M.dateIso,formatter:G.dateIso,exportWithFormatter:!0},{id:"cost",name:"Cost",field:"cost",minWidth:70,width:80,sortable:!0,filterable:!0,filter:{model:ee.compoundInputNumber},type:M.number,formatter:G.currency,groupTotalsFormatter:St.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:ee.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 t=[];for(let n=0;n`Duration: ${e.value} (${e.count} items)`,aggregators:[new Ei_Avg("percentComplete"),new Ei_Sum("cost")],comparer:(e,t)=>La.numeric(e.value,t.value,Li.asc),aggregateCollapsed:!1,lazyTotalsCalculation:!0}),this.gridObj.invalidate()}groupByDurationOrderByCount(e){this.angularGrid.filterService.setSortColumnIcons([]),this.dataviewObj.setGrouping({getter:"duration",formatter:t=>`Duration: ${t.value} (${t.count} items)`,comparer:(t,n)=>t.count-n.count,aggregators:[new Ei_Avg("percentComplete"),new Ei_Sum("cost")],aggregateCollapsed:e,lazyTotalsCalculation:!0}),this.gridObj.invalidate()}groupByDurationEffortDriven(){this.angularGrid.filterService.setSortColumnIcons([{columnId:"duration",sortAsc:!0},{columnId:"effortDriven",sortAsc:!0}]),this.dataviewObj.setGrouping([{getter:"duration",formatter:t=>`Duration: ${t.value} (${t.count} items)`,aggregators:[new Ei_Sum("duration"),new Ei_Sum("cost")],aggregateCollapsed:!0,lazyTotalsCalculation:!0},{getter:"effortDriven",formatter:t=>`Effort-Driven: ${t.value?"True":"False"} (${t.count} items)`,aggregators:[new Ei_Avg("percentComplete"),new Ei_Sum("cost")],collapsed:!0,lazyTotalsCalculation:!0}]),this.gridObj.invalidate()}groupByDurationEffortDrivenPercent(){this.angularGrid.filterService.setSortColumnIcons([{columnId:"duration",sortAsc:!0},{columnId:"effortDriven",sortAsc:!0},{columnId:"percentComplete",sortAsc:!0}]),this.dataviewObj.setGrouping([{getter:"duration",formatter:t=>`Duration: ${t.value} (${t.count} items)`,aggregators:[new Ei_Sum("duration"),new Ei_Sum("cost")],aggregateCollapsed:!0,lazyTotalsCalculation:!0},{getter:"effortDriven",formatter:t=>`Effort-Driven: ${t.value?"True":"False"} (${t.count} items)`,aggregators:[new Ei_Sum("duration"),new Ei_Sum("cost")],lazyTotalsCalculation:!0},{getter:"percentComplete",formatter:t=>`% Complete: ${t.value} (${t.count} items)`,aggregators:[new Ei_Avg("percentComplete")],aggregateCollapsed:!0,collapsed:!0,lazyTotalsCalculation:!0}]),this.gridObj.invalidate()}};xM=Oe([We({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
'})],xM);var Xme=z(780),Qme=z.n(Xme);const oq="assets/data",SM="users";function gN(i){return i.replace(/^"/,"").replace(/"$/,"").toLowerCase()}let DM=class{cd;http;translate;subscriptions=[];angularGrid;backendService;columnDefinitions;gridOptions;dataset=[];metrics;tagDataClass="";graphqlQuery="...";processing=!1;selectedLanguage;status={text:"processing...",class:"alert alert-danger"};serverWaitDelay=250;constructor(e,t,n){this.cd=e,this.http=t,this.translate=n,this.backendService=new hN;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){this.initializeGrid()}angularGridReady(e){this.angularGrid=e}initializeGrid(){this.columnDefinitions=[{id:"name",field:"name",nameKey:"NAME",width:60,type:M.string,sortable:!0,filterable:!0,filter:{model:ee.compoundInput}},{id:"gender",field:"gender",nameKey:"GENDER",filterable:!0,sortable:!0,width:60,filter:{model:ee.singleSelect,collection:[{value:"",label:""},{value:"male",labelKey:"MALE"},{value:"female",labelKey:"FEMALE"}]}},{id:"company",field:"company",nameKey:"COMPANY",width:60,sortable:!0,filterable:!0,filter:{model:ee.multipleSelect,customStructure:{label:"company",value:"company"},collectionSortBy:{property:"company",sortDesc:!1},collectionAsync:this.http.get(`${oq}/customers_100.json`),filterOptions:{filter:!0}}}],this.gridOptions={enableAutoResize:!0,autoResize:{container:"#demo-container",rightPadding:10},enableAutoTooltip:!0,autoTooltipOptions:{enableForHeaderCells:!0},enableTranslate:!0,i18n:this.translate,enableFiltering:!0,enableCellNavigation:!0,multiColumnSort:!1,gridMenu:{resizeOnShowHeaderRow:!0},backendServiceApi:{disableInternalPostProcess:!0,service:this.backendService,options:{datasetName:SM,addLocaleIntoQuery:!0,extraQueryArguments:[{field:"userId",value:123}],infiniteScroll:{fetchSize:30}},preProcess:()=>this.displaySpinner(!0),process:e=>this.getCustomerApiCall(e),postProcess:e=>{this.metrics={endTime:new Date,totalItemCount:e.data[SM].totalCount||0},this.displaySpinner(!1),this.getCustomerCallback(e),this.cd.detectChanges()}}}}clearAllFiltersAndSorts(){this.angularGrid?.gridService&&this.angularGrid.gridService.clearAllFiltersAndSorts()}displaySpinner(e){this.processing=e,this.status=e?{text:"processing...",class:"alert alert-danger"}:{text:"finished",class:"alert alert-success"}}getCustomerCallback(e){const{nodes:t,totalCount:n}=e.data[SM];this.angularGrid&&(this.metrics.totalItemCount=n,e.infiniteScrollBottomHit?this.angularGrid.dataView?.addItems(t):(this.angularGrid.slickGrid?.scrollTo(0),this.dataset=t,this.metrics.itemCount=t.length))}getCustomerApiCall(e){return this.getCustomerDataApiMock(e)}getCustomerDataApiMock(e){return new Promise(t=>{let n=0,r=0,s="",a="";this.http.get(`${oq}/customers_100.json`).subscribe(d=>{let h=d;if(e.includes("first:")&&(n=+(e.match(/first:([0-9]+),/)||[])[1]),e.includes("offset:")&&(r=+(e.match(/offset:([0-9]+),/)||[])[1]),e.includes("orderBy:")){const[C,k,E]=/orderBy:\[{field:([a-zA-Z/]+),direction:(ASC|DESC)}\]/gi.exec(e)||[];s=k||"",a=E||""}if(e.includes("orderBy:")){const[C,k,E]=/orderBy:\[{field:([a-zA-Z/]+),direction:(ASC|DESC)}\]/gi.exec(e)||[];s=k||"",a=E||""}if(e.includes("filterBy:")){const C=/{field:(\w+),operator:(\w+),value:([0-9a-z',"\s]*)}/gi;let k;for(;null!==(k=C.exec(e));){const E=k[1]||"",x=k[2]||"",S=k[3]||"";let[D,I]=S.split(",");E&&x&&""!==S&&(h=h.filter(L=>{const R=L[E];switch(D=gN(D),I=gN(I||""),x){case"EQ":return R.toLowerCase()===D;case"NE":return R.toLowerCase()!==D;case"LE":return R.toLowerCase()<=D;case"LT":return R.toLowerCase()D;case"GE":return R.toLowerCase()>=D;case"EndsWith":return R.toLowerCase().endsWith(D);case"StartsWith":return R.toLowerCase().startsWith(D);case"Starts+Ends":return R.toLowerCase().startsWith(D)&&R.toLowerCase().endsWith(I);case"Contains":return R.toLowerCase().includes(D);case"Not_Contains":return!R.toLowerCase().includes(D);case"IN":const W=S.toLocaleLowerCase().split(",");for(const re of W)if(R.toLocaleLowerCase()===gN(re))return!0}}))}}let p=r;p>h.length&&(e=e.replace(`offset:${p}`,""),p=0);const g=C=>s?C[s]:C;switch(a.toUpperCase()){case"ASC":h=h.sort((C,k)=>g(C).localeCompare(g(k)));break;case"DESC":h=h.sort((C,k)=>g(k).localeCompare(g(C)))}const v=h.slice(p,p+n),y={data:{[SM]:{nodes:v,totalCount:h.length}}};window.setTimeout(()=>{this.graphqlQuery=this.gridOptions.backendServiceApi.service.buildQuery(),t(y)},this.serverWaitDelay)})})}refreshMetrics(e){e?.current>=0&&(this.metrics.itemCount=this.angularGrid.dataView?.getFilteredItemCount()||0,this.tagDataClass=this.metrics.itemCount===this.metrics.totalItemCount?"fully-loaded":"partial-load")}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e})),this.getCustomerApiCall(this.backendService.buildQuery()||"")}static ctorParameters=()=>[{type:bn},{type:Mi},{type:zt}]};DM=Oe([We({encapsulation:Bt.None,template:'
\n

\n Example 39: GraphQL Backend Service with Infinite Scroll\n \n \n code\n \n \n

\n\n
\n
    \n
  • \n Infinite scrolling allows the grid to lazy-load rows from the server when reaching the scroll bottom (end) position.\n In its simplest form, the more the user scrolls down, the more rows get loaded.\n If we reached the end of the dataset and there is no more data to load, then we\'ll assume to have the entire dataset loaded in memory.\n This contrast with the regular Pagination approach which will only hold a single page data at a time.\n
  • \n
  • NOTES
  • \n
      \n
    1. \n presets.pagination is not supported with Infinite Scroll and will revert to the first page,\n simply because since we keep appending data, we always have to start from index zero (no offset).\n
    2. \n
    3. \n Pagination is not shown BUT in fact, that is what is being used behind the scene whenever reaching the scroll end (fetching next batch).\n
    4. \n
    5. \n Also note that whenever the user changes the Sort(s)/Filter(s) it will always reset and go back to zero index (first page).\n
    6. \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 Locale:\n \n {{selectedLanguage + \'.json\'}}\n \n
\n
\n
\n
\n Metrics:\n \n {{metrics.endTime | date: \'dd MMM, h:mm:ssa\'}} \u2014\n {{metrics.itemCount}}\n of\n {{metrics.totalItemCount}}\n items\n \n All Data Loaded!!!\n
\n
\n\n
\n
\n GraphQL Query:\n
\n
\n
\n
\n\n \n \n
\n',styles:[Qme()]}),Xt("design:paramtypes",[bn,Mi,zt])],DM);let AM=class{angularGrid;columnDefinitions;dataset=[];gridOptions;metrics;shouldResetOnSort=!1;ngOnInit(){this.defineGrid(),this.dataset=this.loadData(0,50),this.metrics={itemCount:50,totalItemCount:50}}angularGridReady(e){this.angularGrid=e}defineGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,minWidth:100,filterable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,minWidth:100,filterable:!0,type:M.number},{id:"percentComplete",name:"% Complete",field:"percentComplete",sortable:!0,minWidth:100,filterable:!0,type:M.number},{id:"start",name:"Start",field:"start",formatter:G.dateIso,exportWithFormatter:!0,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,exportWithFormatter:!0,filterable:!0,filter:{model:ee.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",sortable:!0,minWidth:100,filterable:!0,formatter:G.checkmarkMaterial}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableAutoResize:!0,enableFiltering:!0,enableGrouping:!0,editable:!1,rowHeight:33}}handleOnScroll(e){const t=e.grid.getViewportNode();if(["mousewheel","scroll"].includes(e.triggeredBy||"")&&t.scrollTop>0&&Math.ceil(t.offsetHeight+e.scrollTop)>=e.scrollHeight){console.log("onScroll end reached, add more items");const n=this.angularGrid.dataView?.getItemCount()||0,r=this.loadData(n,50);this.angularGrid.dataView?.addItems(r)}}handleOnSort(){if(this.shouldResetOnSort){const e=this.loadData(0,50);this.angularGrid.slickGrid?.scrollTo(0),this.angularGrid.dataView?.setItems(e),this.angularGrid.dataView?.reSort()}}groupByDuration(){this.angularGrid?.dataView?.setGrouping({getter:"duration",formatter:e=>`Duration: ${e.value} (${e.count} items)`,comparer:(e,t)=>La.numeric(e.value,t.value,Li.asc),aggregators:[new Ei_Avg("percentComplete"),new Ei_Sum("cost")],aggregateCollapsed:!1,lazyTotalsCalculation:!0}),this.angularGrid?.slickGrid?.setSortColumns([{columnId:"duration",sortAsc:!0}]),this.angularGrid?.slickGrid?.invalidate()}loadData(e,t){const n=[];for(let r=e;r="}])}refreshMetrics(e){this.angularGrid&&e?.current>=0&&(this.metrics.itemCount=this.angularGrid.dataView?.getFilteredItemCount()||0,this.metrics.totalItemCount=e.itemCount||0)}setSortingDynamically(){this.angularGrid?.sortService.updateSorting([{columnId:"title",direction:"DESC"}])}};AM=Oe([We({template:'
\n

\n Example 40: Infinite Scroll from JSON data\n \n \n code\n \n \n

\n\n
\n
    \n
  • \n Infinite scrolling allows the grid to lazy-load rows from the server when reaching the scroll bottom (end) position.\n In its simplest form, the more the user scrolls down, the more rows get loaded.\n
  • \n
  • NOTES: presets.pagination is not supported with Infinite Scroll and will revert to the first page,\n simply because since we keep appending data, we always have to start from index zero (no offset).\n
  • \n
\n
\n\n
\n
\n \n \n \n \n\n \n \n \n
\n
\n\n
\n Metrics:\n \n {{metrics.endTime | date: \'dd MMM, h:mm:ssa\'}} \u2014\n {{metrics.totalItemCount}}\n items\n \n
\n\n \n \n
\n'})],AM);var nge=z(280),rge=z.n(nge);class sge{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(!0===this._odataOptions?.enableCount){const t=this._odataOptions.version&&this._odataOptions.version>=4?"$count=true":"$inlinecount=allpages";e.push(t)}if(this._odataOptions.top&&e.push(`$top=${this._odataOptions.top}`),this._odataOptions.skip&&e.push(`$skip=${this._odataOptions.skip}`),this._odataOptions.orderBy){let t="";t=Array.isArray(this._odataOptions.orderBy)?this._odataOptions.orderBy.join(","):this._odataOptions.orderBy,e.push(`$orderby=${t}`)}if(this._odataOptions.filterBy||this._odataOptions.filter){const t=this._odataOptions.filter||this._odataOptions.filterBy;if(t){this._filterCount=1,this._odataOptions.filterQueue=[];let n=t;Array.isArray(t)&&(this._filterCount=t.length,n=t.join(` ${this._odataOptions.filterBySeparator||"and"} `)),"string"==typeof n&&("("===n[0]&&")"===n.slice(-1)?this.addToFilterQueueWhenNotExists(n):this.addToFilterQueueWhenNotExists(`(${n})`))}}if(this._odataOptions.filterQueue.length>0){const t=this._odataOptions.filterQueue.join(` ${this._odataOptions.filterBySeparator||"and"} `);this._odataOptions.filter=t,e.push(`$filter=${t}`)}if(this._odataOptions.enableSelect||this._odataOptions.enableExpand){const t=this._columnDefinitions.flatMap(r=>r.fields??[r.field]);t.unshift(this._datasetIdPropName);const n=this.buildSelectExpand([...new Set(t)]);if(this._odataOptions.enableSelect){const r=n.selectParts.join(",");e.push(`$select=${r}`)}if(this._odataOptions.enableExpand){const r=n.expandParts.join(",");e.push(`$expand=${r}`)}}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&&e in this._columnFilters&&delete this._columnFilters[e]}saveColumnFilter(e,t,n){this._columnFilters[e]={search:n,value:t}}updateOptions(e){for(const t of Object.keys(e))if(t in e&&(this._odataOptions[t]=e[t]),"orderBy"===t||"sortBy"===t){let n=e[t];this._odataOptions.caseType===v1.pascalCase&&(Array.isArray(n)?n.forEach((r,s,a)=>{a[s]=Qs(r)}):n=Qs(e[t])),this._odataOptions.orderBy=n,this._defaultSortBy=n}}addToFilterQueueWhenNotExists(e){-1===this._odataOptions.filterQueue?.indexOf(e)&&this._odataOptions.filterQueue.push(e)}buildSelectExpand(e){const t={},n=new Set;for(const r of e){const s=r.split("/");if(1===s.length)n.add(r);else{const a=s[0],d=s.splice(1).join("/");t[a]||(t[a]=[]),t[a].push(d),this._odataOptions.enableExpand&&!(this._odataOptions.version&&this._odataOptions.version>=4)&&n.add(a)}}return{selectParts:[...n],expandParts:this._odataOptions.enableExpand?this.buildExpand(t):[]}}buildExpand(e){const t=[];for(const n of Object.keys(e))if(this._odataOptions.enableSelect&&this._odataOptions.version&&this._odataOptions.version>=4){const r=this.buildSelectExpand(e[n]);let s=r.selectParts.join(",");s.length>0&&(s="$select="+s),this._odataOptions.enableExpand&&r.expandParts.length>0&&(s+=(s.length>0?";":"")+"$expand="+r.expandParts.join(",")),s.length>0&&(s="("+s+")"),t.push(n+s)}else t.push(n);return t}}class aq{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:v1.pascalCase},this._odataService=new sge}init(e,t,n,r){this._grid=n;const s={...this.defaultOptions,...e};if(this._gridOptions.enablePagination||s?.infiniteScroll){const a=s.infiniteScroll?.fetchSize??t?.pageSize??this.defaultOptions.top;this._odataService.options={...s,top:a},this._currentPagination={pageNumber:1,pageSize:this._odataService.options.top||this.defaultOptions.top||20}}else this._odataService.options={...s,top:void 0},this._currentPagination=null;if(this.options=this._odataService.options,this.pagination=t,n?.getColumns){const a=r?.allColumns??n.getColumns()??[];this._columnDefinitions=a.filter(d=>!d.excludeFromQuery)}this._odataService.columnDefinitions=this._columnDefinitions,this._odataService.datasetIdPropName=this._gridOptions.datasetIdPropertyName||"id"}buildQuery(){return this._odataService.buildQuery()}postProcess(e){const t=this._odataService.options.version??2;if(this.pagination&&this._odataService.options.enableCount){const r=(this._odataService.options.countExtractor??t>=4?s=>s?.["@odata.count"]:3===t?s=>s?.__count:s=>s?.d?.__count)(e);"number"==typeof r&&(this.pagination.totalItems=r)}if(this._odataService.options.enableExpand){const r=(this._odataService.options.datasetExtractor??t>=4?s=>s?.value:3===t?s=>s?.results:s=>s?.d?.results)(e);if(Array.isArray(r)){const s=new Set(this._columnDefinitions.flatMap(a=>a.fields??[a.field]).filter(a=>a.includes("/")));if(s.size>0){const a=new Set;for(const d of r){for(const h of s){const p=h.split("/"),g=p[0];a.add(g);let v=d[g];for(let y=1;y":t="gt";break;case">=":t="ge";break;case"<>":case"!=":t="ne";break;default:t="eq"}return t}resetPaginationOptions(){this._odataService.updateOptions({skip:0})}saveColumnFilter(e,t,n){this._odataService.saveColumnFilter(e,t,n)}processOnFilterChanged(e,t){if(void 0===this._gridOptions.backendServiceApi)throw new Error('Something went wrong in the GridOdataService, "backendServiceApi" is not initialized');if(this._currentFilters=this.castFilterToColumnFilters(t.columnFilters),!t||!t.grid)throw new Error('Something went wrong when trying create the GridOdataService, it seems that "args" is not populated correctly');return this.updateFilters(t.columnFilters),this.resetPaginationOptions(),this._odataService.buildQuery()}processOnPaginationChanged(e,t){const n=+(this.options?.infiniteScroll?.fetchSize||t.pageSize||(this.pagination?this.pagination.pageSize:20));return this.updatePagination(t.newPage,n),this._odataService.buildQuery()}processOnSortChanged(e,t){const n=t.multiColumnSort?t.sortCols:new Array({columnId:t.sortCol?.id??"",sortCol:t.sortCol,sortAsc:t.sortAsc});return this.updateSorters(n),this.options?.infiniteScroll&&this._odataService.updateOptions({skip:void 0}),this._odataService.buildQuery()}updateFilters(e,t){let n="";const r=[],s=this._odataService.options.version??2;t&&(this._currentFilters=this.castFilterToColumnFilters(e));for(const a in e)if(e.hasOwnProperty(a)){const d=e[a];let h;if(h=t&&Array.isArray(this._columnDefinitions)?this._columnDefinitions.find(R=>R.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 p=h.filter?.queryField||h.queryFieldFilter||h.queryField||h.field||h.name||"";p instanceof HTMLElement&&(p=_n(p.innerHTML));const g=h.type||M.string;let v=(d?.searchTerms?[...d.searchTerms]:null)||[],y=Array.isArray(v)&&1===v.length?v[0]:"";if(typeof y>"u"&&(y=""),!p)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){r.push(`${p} ${d.operator} ${JSON.stringify(d.searchTerms)}`.trim());continue}y=null==y?"":`${y}`;const k=!1!==(h.autoParseInputFilterOperator??this._gridOptions.autoParseInputFilterOperator)?y.match(/^((.*[^\\*\r\n])[*]{1}(.*[^*\r\n]))|^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/)||[]:[y,"","","","",y,""],E=k?.[2]||"",x=k?.[3]||"";let S=d.operator||k?.[4],D=k?.[1]||k?.[5]||"";const I=k?.[6]||"*z"===S||S===te.endsWith?"*":"",L=d.bypassBackendQuery||!1;if(p&&""===D&&v.length<=1){this.removeColumnFilter(Un(p));continue}if(E&&x?(v=[E,x],S=te.startsWithEndsWith):Array.isArray(v)&&1===v.length&&"string"==typeof v[0]&&v[0].indexOf("..")>=0&&(S!==te.rangeInclusive&&S!==te.rangeExclusive&&(S=this._gridOptions.defaultFilterRangeOperator??te.rangeInclusive),v=v[0].split("..",2),""===v[0]?(S=S===te.rangeInclusive?"<=":S===te.rangeExclusive?"<":S,v=v.slice(1),D=v[0]):""===v[1]&&(S=S===te.rangeInclusive?">=":S===te.rangeExclusive?">":S,v=v.slice(0,1),D=v[0])),!S&&h.filter&&(S=h.filter.operator),!S&&Array.isArray(v)&&2===v.length&&v[0]&&v[1]&&(S=this._gridOptions.defaultFilterRangeOperator),(S===te.rangeInclusive||S===te.rangeExclusive)&&Array.isArray(v)&&1===v.length&&g===M.date&&(S=te.equal),S||(S=L_(g)),L)p&&this.saveColumnFilter(Un(p),y,v);else{let R;if(D=this.normalizeSearchValue(g,D,s),Array.isArray(v)&&v.forEach((W,re)=>{v[re]=this.normalizeSearchValue(g,v[re],s)}),n="",this._odataService.options.caseType===v1.pascalCase&&(p=Qs(Un(p||""))),"function"==typeof this._odataService.options.filterQueryOverride&&(R=this._odataService.options.filterQueryOverride({fieldName:Un(p),columnDef:h,operator:S,columnFilterOperator:d.operator,searchValues:v,grid:this._grid})),void 0!==R)n=R;else if(S===te.startsWithEndsWith&&Array.isArray(v)&&2===v.length){const W=[],[re,ie]=v;W.push(`startswith(${p}, ${re})`),W.push(`endswith(${p}, ${ie})`),n=W.join(" and ")}else if(v?.length>1&&("IN"===S||"NIN"===S||"NOTIN"===S||"NOT IN"===S||"NOT_IN"===S)){const W=[];if("IN"===S){for(let re=0,ie=v.length;re=4?`contains(${p}, ${D})`:`substringof(${D}, ${p})`,S===te.notContains&&(n=`not ${n}`));""!==n&&(r.push(n.trim()),this.saveColumnFilter(Un(p||""),y,D))}}this._odataService.updateOptions({filter:r.length>0?r.join(" and "):"",skip:void 0})}updatePagination(e,t){this._currentPagination={pageNumber:e,pageSize:t},this._gridOptions&&(this._gridOptions.enablePagination||!this._gridOptions.hasOwnProperty("enablePagination")||this.options?.infiniteScroll)&&this._odataService.updateOptions({top:t,skip:(e-1)*t})}updateSorters(e,t){let n=[];const r=[];if(!e&&t){n=t,n.forEach(d=>d.direction=d.direction.toLowerCase());const a=n.map(d=>{const h=this._columnDefinitions.find(p=>p.id===d.columnId);return r.push({field:h?(h.queryFieldSorter||h.queryField||h.field)+"":d.columnId+"",direction:d.direction}),h?{columnId:d.columnId,sortAsc:d.direction.toUpperCase()===ar.ASC}:null});Array.isArray(a)&&this._grid&&this._grid.setSortColumns(a)}else if(e&&!t&&0!==e?.length&&e)for(const a of e)if(a.sortCol){let d=(a.sortCol.queryFieldSorter||a.sortCol.queryField||a.sortCol.field)+"",h=(a.sortCol.field||a.sortCol.id)+"",p=(a.sortCol.queryFieldSorter||a.sortCol.queryField||a.sortCol.field||"")+"";this._odataService.options.caseType===v1.pascalCase&&(d=Qs(d),h=Qs(h),p=Qs(p)),n.push({columnId:a.sortCol.id,direction:a.sortAsc?ar.asc:ar.desc}),""!==p&&r.push({field:p,direction:a.sortAsc?ar.ASC:ar.DESC})}n=n||[];const s=r.map(a=>{let d="";return a&&a.field&&(d=`${this._odataService.options.caseType===v1.pascalCase?Qs(a.field):a.field} ${a&&a.direction&&a.direction.toLowerCase()||""}`),d}).join(",");return this._odataService.updateOptions({orderBy:s}),this._currentSorters=n,this._odataService.buildQuery()}castFilterToColumnFilters(e){const t="object"==typeof e?Object.keys(e).map(n=>e[n]):e;return Array.isArray(t)?t.map(n=>{const r={columnId:n.columnId||""};return n.operator&&(r.operator=n.operator),n.targetSelector&&(r.targetSelector=n.targetSelector),Array.isArray(n.searchTerms)&&(r.searchTerms=n.searchTerms),r}):[]}filterBySearchTermRange(e,t,n){let r="";return Array.isArray(n)&&2===n.length&&(t===te.rangeInclusive?(r=`(${e} ge ${n[0]}`,""!==n[1]&&(r+=` and ${e} le ${n[1]}`),r+=")"):t===te.rangeExclusive&&(r=`(${e} gt ${n[0]}`,""!==n[1]&&(r+=` and ${e} lt ${n[1]}`),r+=")")),r}normalizeSearchValue(e,t,n){switch(e){case M.date:t=wle(t),t=n>=4?t:`DateTime'${t}'`;break;case M.string:case M.text:case M.readonly:"string"==typeof t&&(t=t.replace(/'/g,"''"),t=`'${t=encodeURIComponent(t)}'`);break;case M.integer:case M.number:case M.float:"string"==typeof t&&((""===(t=(t=(t=(t=(t=t.replace(/\.\./g,".")).replace(/\.+$/g,"")).replace(/^\.+/g,"0.")).replace(/^-+\.+/g,"-0.")).replace(/(?!^-)[^\d.]/g,""))||"-"===t)&&(t="0"))}return t}}let TM=class{cd;http;angularGrid;backendService;columnDefinitions;gridOptions;dataset=[];isPageErrorTest=!1;metrics;tagDataClass="";odataQuery="";processing=!1;errorStatus="";errorStatusClass="hidden";status={text:"processing...",class:"alert alert-danger"};constructor(e,t){this.cd=e,this.http=t,this.backendService=new aq}ngOnInit(){this.initializeGrid()}angularGridReady(e){this.angularGrid=e}initializeGrid(){this.columnDefinitions=[{id:"name",name:"Name",field:"name",sortable:!0,type:M.string,filterable:!0,filter:{model:ee.compoundInput}},{id:"gender",name:"Gender",field:"gender",filterable:!0,sortable:!0,filter:{model:ee.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,formatter:(e,t,n,r,s)=>s.category?.name||""}],this.gridOptions={enableAutoResize:!0,autoResize:{container:"#demo-container",rightPadding:10},checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},enableCellNavigation:!0,enableFiltering:!0,enableCheckboxSelector:!0,enableRowSelection:!0,enableGrouping:!0,headerMenu:{hideFreezeColumnsCommand:!1},presets:{},backendServiceApi:{service:this.backendService,options:{infiniteScroll:{fetchSize:30},enableCount:!0,version:4},onError:e=>{this.errorStatus=e.message,this.errorStatusClass="visible notification is-light is-danger is-small is-narrow",this.displaySpinner(!1,!0)},preProcess:()=>{this.errorStatus="",this.errorStatusClass="hidden",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,t){this.processing=e,this.status=t?{text:"ERROR!!!",class:"alert alert-danger"}:e?{text:"loading",class:"alert alert-warning"}:{text:"finished",class:"alert alert-success"},this.cd.detectChanges()}getCustomerCallback(e){const t=e["@odata.count"];this.metrics.totalItemCount=t,e.infiniteScrollBottomHit?this.angularGrid.dataView?.addItems(e.value):(this.angularGrid.slickGrid?.scrollTo(0),this.dataset=e.value,this.metrics.itemCount=e.value.length),this.odataQuery=e.query}getCustomerApiCall(e){return this.getCustomerDataApiMock(e)}getCustomerDataApiMock(e){return this.errorStatusClass="hidden",new Promise(t=>{const n=e.toLowerCase().split("&");let r=0,s=0,a="",d=100;const h={};if(this.isPageErrorTest)throw this.isPageErrorTest=!1,new Error("Server timed out trying to retrieve data for the last page");for(const p of n){if(p.includes("$top=")&&(r=+p.substring(5),5e4===r))throw new Error("Server timed out retrieving 50,000 rows");if(p.includes("$skip=")&&(s=+p.substring(6)),p.includes("$orderby=")&&(a=p.substring(9)),p.includes("$filter=")){const g=p.substring(8).replace("%20"," ");if(g.includes("matchespattern")){const v=new RegExp("matchespattern\\(([a-zA-Z]+),\\s'%5E(.*?)'\\)","i"),y=g.match(v)||[],C=y[1].trim();h[C]={type:"matchespattern",term:"^"+y[2].trim()}}if(g.includes("contains")){const v=g.match(/contains\(([a-zA-Z/]+),\s?'(.*?)'/)||[],y=v[1].trim();h[y]={type:"substring",term:v[2].trim()}}if(g.includes("substringof")){const v=g.match(/substringof\('(.*?)',\s([a-zA-Z/]+)/)||[],y=v[2].trim();h[y]={type:"substring",term:v[1].trim()}}for(const v of["eq","ne","le","lt","gt","ge"])if(g.includes(v)){const C=new RegExp(`([a-zA-Z ]*) ${v} '(.*?)'`).exec(g);if(Array.isArray(C)){const k=C[1].trim();h[k]={type:v,term:C[2].trim()}}}if(g.includes("startswith")&&g.includes("endswith")){const v=g.match(/startswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],y=g.match(/endswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],C=v[1].trim();h[C]={type:"starts+ends",term:[v[2].trim(),y[2].trim()]}}else if(g.includes("startswith")){const v=g.match(/startswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],y=v[1].trim();h[y]={type:"starts",term:v[2].trim()}}else if(g.includes("endswith")){const v=g.match(/endswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],y=v[1].trim();h[y]={type:"ends",term:v[2].trim()}}if(g.includes("company"))throw new Error('Server could not filter using the field "Company"')}}if(a.includes("company"))throw new Error('Server could not sort using the field "Company"');this.http.get("assets/data/customers_100.json").subscribe(p=>{let g=p;if(a?.length>0){const k=a.split(",");for(const E of k){const x=E.split(" "),S=x[0];let D=L=>L;for(const L of S.split("/")){const R=D;D=W=>R(W)[L]}switch((x[1]??"asc").toLocaleLowerCase()){case"asc":g=g.sort((L,R)=>D(L).localeCompare(D(R)));break;case"desc":g=g.sort((L,R)=>D(R).localeCompare(D(L)))}}}let v=s,y=g;if(h){for(const k in h)k in h&&(y=y.filter(E=>{const x=h[k].type,S=h[k].term;let D=k;if(-1!==k?.indexOf(" ")){const R=k.split(" ");D=R[R.length-1]}let I,L=E;for(const R of D.split("/"))I=L[R],L=I;if(I){const[R,W]=Array.isArray(S)?S:[S];switch(x){case"eq":return I.toLowerCase()===R;case"ne":return I.toLowerCase()!==R;case"le":return I.toLowerCase()<=R;case"lt":return I.toLowerCase()R;case"ge":return I.toLowerCase()>=R;case"ends":return I.toLowerCase().endsWith(R);case"starts":return I.toLowerCase().startsWith(R);case"starts+ends":return I.toLowerCase().startsWith(R)&&I.toLowerCase().endsWith(W);case"substring":return I.toLowerCase().includes(R);case"matchespattern":return new RegExp(R.replaceAll("%25",".*"),"i").test(I)}}}));d=y.length}v>y.length&&(e=e.replace(`$skip=${v}`,""),v=0);const C=y.slice(v,v+r);window.setTimeout(()=>{const k={query:e};k.value=C,k["@odata.count"]=d,t(k)},100)})})}groupByGender(){this.angularGrid?.dataView?.setGrouping({getter:"gender",formatter:e=>`Gender: ${e.value} (${e.count} items)`,comparer:(e,t)=>La.string(e.value,t.value),aggregators:[new Ei_Sum("gemder")],aggregateCollapsed:!1,lazyTotalsCalculation:!0}),this.angularGrid?.slickGrid.setSortColumns([{columnId:"duration",sortAsc:!0}]),this.angularGrid?.slickGrid.invalidate()}clearAllFiltersAndSorts(){this.angularGrid?.gridService&&this.angularGrid.gridService.clearAllFiltersAndSorts()}setFiltersDynamically(){this.angularGrid?.filterService.updateFilters([{columnId:"gender",searchTerms:["female"]}])}refreshMetrics(e){e?.current>=0&&(this.metrics.itemCount=this.angularGrid.dataView?.getFilteredItemCount()||0,this.tagDataClass=this.metrics.itemCount===this.metrics.totalItemCount?"fully-loaded":"partial-load")}setSortingDynamically(){this.angularGrid?.sortService.updateSorting([{columnId:"name",direction:"DESC"}])}static ctorParameters=()=>[{type:bn},{type:Mi}]};TM=Oe([We({encapsulation:Bt.None,template:'
\n

\n Example 38: OData (v4) Backend Service with Infinite Scroll\n \n \n code\n \n \n

\n\n
\n
    \n
  • \n Infinite scrolling allows the grid to lazy-load rows from the server when reaching the scroll bottom (end) position.\n In its simplest form, the more the user scrolls down, the more rows get loaded.\n If we reached the end of the dataset and there is no more data to load, then we\'ll assume to have the entire dataset loaded in memory.\n This contrast with the regular Pagination approach which will only hold a single page data at a time.\n
  • \n
  • NOTES
  • \n
      \n
    1. \n presets.pagination is not supported with Infinite Scroll and will revert to the first page,\n simply because since we keep appending data, we always have to start from index zero (no offset).\n
    2. \n
    3. \n Pagination is not shown BUT in fact, that is what is being used behind the scene whenever reaching the scroll end (fetching next batch).\n
    4. \n
    5. \n Also note that whenever the user changes the Sort(s)/Filter(s) it will always reset and go back to zero index (first page).\n
    6. \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\n
\n Metrics:\n \n {{metrics.endTime | date: \'dd MMM, h:mm:ssa\'}} \u2014\n {{metrics.itemCount}}\n of\n {{metrics.totalItemCount}}\n items\n \n All Data Loaded!!!\n
\n
\n
\n\n \n \n
\n',styles:[rge()]}),Xt("design:paramtypes",[bn,Mi])],TM);var uge=z(567),hge=z.n(uge);let MM={},IM={},LM=class{title="Example 7: Header Button Plugin";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 ';columnDefinitions1=[];columnDefinitions2=[];gridOptions1;gridOptions2;dataset1=[];dataset2=[];angularGrid1;angularGrid2;constructor(){MM={},IM={}}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,t)=>console.log("onCopyCells",e,t),onPasteCells:(e,t)=>console.log("onPasteCells",e,t),onCopyCancelled:(e,t)=>console.log("onCopyCancelled",e,t)},enableCellNavigation:!0,gridHeight:275,headerButton:{onCommand:(e,t)=>this.handleOnCommand(e,t,1)}},this.gridOptions2={...this.gridOptions1,enableHeaderMenu:!0,enableFiltering:!0,headerButton:{onCommand:(e,t)=>this.handleOnCommand(e,t,2)}}}handleOnCommand(e,t,n){const r=t.column,s=t.button;"toggle-highlight"===t.command&&("mdi mdi-lightbulb-on text-danger"===s.cssClass?(1===n?delete MM[r.id]:delete IM[r.id],s.cssClass="mdi mdi-lightbulb-outline text-warning faded",s.tooltip="Highlight negative numbers."):(1===n?MM[r.id]=!0:IM[r.id]=!0,s.cssClass="mdi mdi-lightbulb-on text-danger",s.tooltip="Remove highlight."),this[`angularGrid${n}`].slickGrid.invalidate())}loadData(e,t){for(let r=0;r<10;r++)this[`columnDefinitions${t}`].push({id:r,name:"Column "+String.fromCharCode(65+r),field:r+"",width:0===r?70:100,filterable:!0,sortable:!0,formatter:(s,a,d,h)=>1===t&&MM[h.id]&&d<0||2===t&&IM[h.id]&&d<0?`
${d}
`:d,header:{buttons:[{cssClass:"mdi mdi-lightbulb-outline text-warning faded",command:"toggle-highlight",tooltip:"Highlight negative numbers.",itemVisibilityOverride:s=>"Column E"!==s.column.name,itemUsabilityOverride:s=>"Column J"!==s.column.name,action:(s,a)=>{console.log(`execute a callback action to "${a.command}" on ${a.column.name}`)}}]}});this[`columnDefinitions${t}`][0].name="Resize me!",this[`columnDefinitions${t}`][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===t&&this.columnDefinitions2[0].header?.buttons?.reverse(),this[`columnDefinitions${t}`][1].name="Hover me!",this[`columnDefinitions${t}`][1].header={buttons:[{cssClass:"mdi mdi-help-circle",showOnHover:!0,tooltip:"This button only appears on hover.",handler:()=>{alert("Help")}}]};const n=[];for(let r=0;r[]};LM=Oe([We({encapsulation:Bt.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:[hge()]}),Xt("design:paramtypes",[])],LM);let fN=class{clickedTimes=0;clickMe(){this.clickedTimes++}};fN=Oe([We({template:'\n
You\'ve clicked me {{clickedTimes}} time(s)
',selector:"custom-footer"})],fN);let OM=class{title="Example 34: Custom header & footer Templates";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 ";columnDefinitions=[];gridOptions;dataset;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 t=[];for(let n=0;n\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'})],OM);var vge=z(154),bge=z.n(vge);let RM=class{translate;title="Example 8: Header Menu Plugin";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 ';subscriptions=[];columnDefinitions;gridOptions;dataset;selectedLanguage;constructor(e){this.translate=e;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(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:t=>!("title"===t.column.id||"completed"===t.column.id),itemVisibilityOverride:t=>"percentComplete"!==t.column.id,action:(t,n)=>{console.log("execute an action on Help",n)}},{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,t)=>{const n=t.item?.command;n.includes("hello-")?alert(t?.item.title):n.includes("sport-")?alert("Just do it, play "+t?.item?.title):n.includes("contact-")?alert("Command: "+t?.item?.command):"help"===t.command&&alert("Please help!!!")}},enableTranslate:!0,i18n:this.translate},this.getData()}getData(){const e=[];for(let t=0;t<1e3;t++)e[t]={id:t,title:"Task "+t,duration:Math.round(25*Math.random())+" days",percentComplete:Math.round(100*Math.random()),start:"01/01/2009",finish:"01/05/2009",completed:t%5==0};this.dataset=e}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}static ctorParameters=()=>[{type:zt}]};RM=Oe([We({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:Bt.None,styles:[bge()]}),Xt("design:paramtypes",[zt])],RM);const lq=(i,e,t,n,r,s)=>s.getOptions().i18n.instant("TASK_X",{x:t});let PM=class{translate;title="Example 12: Localization (i18n)";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 ';subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset;selectedLanguage;duplicateTitleHeaderCount=1;gridObj;excelExportService=new xs;textExportService=new lN;constructor(e){this.translate=e;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"id",nameKey:"TITLE",minWidth:100,formatter:lq,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:M.number,filter:{model:ee.slider,filterOptions:{hideSliderNumber:!0}}},{id:"start",name:"Start",field:"start",nameKey:"START",minWidth:100,formatter:G.dateIso,outputType:M.dateIso,type:M.date,exportWithFormatter:!0,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:G.dateIso,outputType:M.dateIso,type:M.date,minWidth:100,filterable:!0,filter:{model:ee.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:ee.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:ee.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,t)=>{const n="fr"===this.translate.currentLang?"Titre qui est suffisament long pour \xeatre coup\xe9":"My header that is long enough to wrap",a=e.getStyleSheet().createFormat({font:{size:12,fontName:"Calibri",bold:!0,color:"FF0000FF"},alignment:{wrapText:!0}});t.setRowInstructions(0,{height:30}),t.mergeCells("B1","D1");const d=[];d.push({value:""}),d.push({value:n,metadata:{style:a.id}}),t.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 t=[];for(let n=0;n{this.selectedLanguage=e}))}static ctorParameters=()=>[{type:zt}]};PM=Oe([We({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
'}),Xt("design:paramtypes",[zt])],PM);var kge=z(341),_ge=z.n(kge);let NM=class{translate;title="Example 9: Grid Menu Control";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 ';subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset;selectedLanguage;constructor(e){this.translate=e;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",nameKey:"TITLE",filterable:!0,type:M.string},{id:"duration",name:"Duration",field:"duration",nameKey:"DURATION",sortable:!0,filterable:!0,type:M.string},{id:"percentComplete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",sortable:!0,filterable:!0,type:M.number,formatter:G.percentCompleteBar,filter:{model:ee.compoundSlider,filterOptions:{hideSliderNumber:!1}}},{id:"start",name:"Start",field:"start",nameKey:"START",filterable:!0,type:M.string},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",filterable:!0,type:M.string},{id:"effort-driven",name:"Completed",field:"effortDriven",nameKey:"COMPLETED",maxWidth:80,formatter:G.checkmarkMaterial,type:M.boolean,minWidth:100,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:ee.singleSelect}}],this.gridOptions={columnPicker:{hideForceFitButton:!0,hideSyncResizeButton:!0,onColumnsChanged:(e,t)=>{console.log("Column selection changed from Column Picker, visible columns: ",t.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,t)=>alert(t.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,t)=>alert(t.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,t)=>{const n=t.item?.command;n.includes("exports-")?alert("Exporting as "+t?.item.title):n.includes("contact-")||"help"===n?alert("Command: "+t.command):console.log("onGridMenuCommand",t.command)},onColumnsChanged:(e,t)=>{console.log("Column selection changed from Grid Menu, visible columns: ",t.visibleColumns)}},enableTranslate:!0,i18n:this.translate},this.getData()}angularGridReady(e){this.angularGrid=e}getData(){const e=[];for(let t=0;t<500;t++)e[t]={id:t,title:"Task "+t,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:t%5==0};this.dataset=e}generatePhoneNumber(){let e="";for(let t=0;t<10;t++)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?.extensionService&&this.angularGrid.extensionService.getExtensionInstanceByName(st.gridMenu).showGridMenu(e,{dropSide:"right"})}isObjectEmpty(e){for(const t in e)if(t in e&&""!==e[t])return!1;return!0}static ctorParameters=()=>[{type:zt}]};NM=Oe([We({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:Bt.None,styles:[_ge()]}),Xt("design:paramtypes",[zt])],NM);let BM=class{cd;http;title="Example 5: Grid connected to Backend Server with OData";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 ';angularGrid;columnDefinitions;gridOptions;dataset=[];metrics;paginationOptions;isCountEnabled=!0;isSelectEnabled=!1;isExpandEnabled=!1;odataVersion=2;odataQuery="";processing=!0;errorStatus="";isPageErrorTest=!1;status={text:"processing...",class:"alert alert-danger"};constructor(e,t){this.cd=e,this.http=t}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.columnDefinitions=[{id:"name",name:"Name",field:"name",sortable:!0,type:M.string,filterable:!0,filter:{model:ee.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:ee.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:te.equal}],sorters:[{columnId:"name",direction:"asc"}],pagination:{pageNumber:2,pageSize:20}},backendServiceApi:{service:new aq,options:{enableCount:this.isCountEnabled,enableSelect:this.isSelectEnabled,enableExpand:this.isExpandEnabled,filterQueryOverride:({fieldName:e,columnDef:t,columnFilterOperator:n,searchValues:r})=>{if(n===te.custom&&"name"===t?.id){let s=r[0].replace(/\*/g,".*");return s=s.slice(0,1)+"%5E"+s.slice(1),s=s.slice(0,-1)+"$'",`matchesPattern(${e}, ${s})`}},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,t){this.processing=e,this.status=t?{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 t=e.totalRecordCount;this.isCountEnabled&&(t=4===this.odataVersion?e["@odata.count"]:e.d.__count),this.metrics&&(this.metrics.totalItemCount=t),this.paginationOptions={...this.gridOptions.pagination,totalItems:t},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(t=>{const n=e.toLowerCase().split("&");let r,s=0,a="",d=100;const h={};if(this.isPageErrorTest)throw this.isPageErrorTest=!1,new Error("Server timed out trying to retrieve data for the last page");for(const p of n){if(p.includes("$top=")&&(r=+p.substring(5),5e4===r))throw new Error("Server timed out retrieving 50,000 rows");if(p.includes("$skip=")&&(s=+p.substring(6)),p.includes("$orderby=")&&(a=p.substring(9)),p.includes("$filter=")){const g=p.substring(8).replace("%20"," ");if(g.includes("matchespattern")){const v=new RegExp("matchespattern\\(([a-zA-Z]+),\\s'%5E(.*?)'\\)","i"),y=g.match(v)||[],C=y[1].trim();h[C]={type:"matchespattern",term:"^"+y[2].trim()}}if(g.includes("contains")){const v=g.match(/contains\(([a-zA-Z/]+),\s?'(.*?)'/),y=v[1].trim();h[y]={type:"substring",term:v[2].trim()}}if(g.includes("substringof")){const v=g.match(/substringof\('(.*?)',\s([a-zA-Z/]+)/),y=v[2].trim();h[y]={type:"substring",term:v[1].trim()}}for(const v of["eq","ne","le","lt","gt","ge"])if(g.includes(v)){const C=new RegExp(`([a-zA-Z ]*) ${v} '(.*?)'`).exec(g);if(Array.isArray(C)){const k=C[1].trim();h[k]={type:v,term:C[2].trim()}}}if(g.includes("startswith")&&g.includes("endswith")){const v=g.match(/startswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],y=g.match(/endswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],C=v[1].trim();h[C]={type:"starts+ends",term:[v[2].trim(),y[2].trim()]}}else if(g.includes("startswith")){const v=g.match(/startswith\(([a-zA-Z ]*),\s?'(.*?)'/),y=v[1].trim();h[y]={type:"starts",term:v[2].trim()}}else if(g.includes("endswith")){const v=g.match(/endswith\(([a-zA-Z ]*),\s?'(.*?)'/),y=v[1].trim();h[y]={type:"ends",term:v[2].trim()}}if(g.includes("company"))throw new Error('Server could not filter using the field "Company"')}}if(a.includes("company"))throw new Error('Server could not sort using the field "Company"');this.http.get("assets/data/customers_100.json").subscribe(p=>{let g=p;if(a?.length>0){const k=a.split(",");for(const E of k){const x=E.split(" "),S=x[0];let D=L=>L;for(const L of S.split("/")){const R=D;D=W=>R(W)[L]}switch((x[1]??"asc").toLocaleLowerCase()){case"asc":g=g.sort((L,R)=>D(L).localeCompare(D(R)));break;case"desc":g=g.sort((L,R)=>D(R).localeCompare(D(L)))}}}let v=s,y=g;if(h){for(const k in h)k in h&&(y=y.filter(E=>{const x=h[k].type,S=h[k].term;let D=k;if(-1!==k?.indexOf(" ")){const R=k.split(" ");D=R[R.length-1]}let I,L=E;for(const R of D.split("/"))I=L[R],L=I;if(I){const[R,W]=Array.isArray(S)?S:[S];switch(x){case"eq":return I.toLowerCase()===R;case"ne":return I.toLowerCase()!==R;case"le":return I.toLowerCase()<=R;case"lt":return I.toLowerCase()R;case"ge":return I.toLowerCase()>=R;case"ends":return I.toLowerCase().endsWith(R);case"starts":return I.toLowerCase().startsWith(R);case"starts+ends":return I.toLowerCase().startsWith(R)&&I.toLowerCase().endsWith(W);case"substring":return I.toLowerCase().includes(R);case"matchespattern":return new RegExp(R.replaceAll("%25",".*"),"i").test(I)}}}));d=y.length}v>y.length&&(e=e.replace(`$skip=${v}`,""),v=0);const C=y.slice(v,v+r);window.setTimeout(()=>{const k={query:e};this.isCountEnabled||(k.totalRecordCount=d),4===this.odataVersion?(k.value=C,this.isCountEnabled&&(k["@odata.count"]=d)):(k.d={results:C},this.isCountEnabled&&(k.d.__count=d)),t(k)},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 t=this.gridOptions.backendServiceApi.service;t.updateOptions(e),t.clearFilters(),this.angularGrid?.filterService.clearFilters()}static ctorParameters=()=>[{type:bn},{type:Mi}]};BM=Oe([We({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
'}),Xt("design:paramtypes",[bn,Mi])],BM);function bE(i,e){return Math.floor(Math.random()*(e-i+1)+i)}const Age=(i,e,t,n,r,s)=>s.getOptions().i18n.instant("TASK_X",{x:t});let HM=class{translate;title="Example 25: Filtering from Range of Search Values";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 ';subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset;selectedLanguage;metrics;filterList=[{value:"",label:""},{value:"currentYearTasks",label:"Current Year Completed Tasks"},{value:"nextYearTasks",label:"Next Year Active Tasks"}];selectedPredefinedFilter;constructor(e){this.translate=e;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"id",nameKey:"TITLE",minWidth:100,formatter:Age,sortable:!0,filterable:!0,params:{useFormatterOuputToFilter:!0}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,type:M.string,filter:{model:rN,enableTrimWhiteSpace:!0}},{id:"percentComplete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",minWidth:120,sortable:!0,customTooltip:{position:"center"},formatter:G.progressBar,type:M.number,filterable:!0,filter:{model:ee.sliderRange,maxValue:100,operator:te.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:M.date,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:G.dateIso,sortable:!0,minWidth:75,width:120,exportWithFormatter:!0,type:M.date,filterable:!0,filter:{model:ee.dateRange}},{id:"duration",field:"duration",nameKey:"DURATION",maxWidth:90,type:M.number,sortable:!0,filterable:!0,filter:{model:ee.input,operator:te.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:ee.singleSelect,filterOptions:{autoAdjustDropHeight:!0}}}];const e=new Date,t=vr(H_(new Date,-2),"YYYY-MM-DD"),n=vr(H_(new Date,e.getDate()<14?28: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:[t,n]}],sorters:[{columnId:"percentComplete",direction:"DESC"},{columnId:"duration",direction:"ASC"}]},externalResources:[new HT,new xs]},this.dataset=this.mockData(1500)}angularGridReady(e){this.angularGrid=e}mockData(e,t=0){const n=[];for(let r=t;r=0&&window.setTimeout(()=>{this.metrics={startTime:new Date,itemCount:t&&t.current||0,totalItemCount:this.dataset.length||0}})}setFiltersDynamically(){const e=vr(H_(new Date,-5),"YYYY-MM-DD"),t=vr(H_(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,t]}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"finish",direction:"DESC"},{columnId:"percentComplete",direction:"ASC"}])}usePredefinedFilter(e){let t=[];const n=(new Date).getFullYear();switch(e){case"currentYearTasks":t=[{columnId:"finish",operator:te.rangeInclusive,searchTerms:[`${n}-01-01`,`${n}-12-31`]},{columnId:"completed",operator:te.equal,searchTerms:[!0]}];break;case"nextYearTasks":t=[{columnId:"start",operator:">=",searchTerms:[`${n+1}-01-01`]}]}this.angularGrid.filterService.updateFilters(t)}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}static ctorParameters=()=>[{type:zt}]};HM=Oe([We({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
'}),Xt("design:paramtypes",[zt])],HM);const Mge=(i,e,t,n,r)=>r&&r.brand&&r.brand.name||"",Ige=(i,e,t,n,r)=>{let s="";return r&&r.octopart_url&&r.mpn&&(s=`${r.mpn}`),s};let VM=class{_eventHandler=new Pi;title="Example 18: Octopart Catalog Search - Remote Model Plugin";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 ';angularGrid;columnDefinitions;customDataView;gridObj;gridOptions;dataset=[];loaderDataView;loading=!1;search="";constructor(){}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:Ige,width:100,sortable:!0},{id:"brand",name:"Brand",field:"brand.name",formatter:Mge,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,t)=>{this.loading=!0}),this._eventHandler.subscribe(this.loaderDataView.onDataLoaded,(e,t)=>{if(t&&this.gridObj&&this.gridObj.invalidateRow&&this.gridObj.updateRowCount&&this.gridObj.render){for(let n=t.from;n<=t.to;n++)this.gridObj.invalidateRow(n);this.gridObj.updateRowCount(),this.gridObj.render(),this.loading=!1}}))}onSort(e,t){if(this.gridObj&&this.gridObj.getViewport&&this.loaderDataView&&this.loaderDataView.ensureData&&this.loaderDataView.setSort){const n=this.gridObj.getViewport();t&&t.sortCol&&t.sortCol.field&&this.loaderDataView.setSort(t.sortCol.field,t.sortAsc?1:-1),this.loaderDataView.ensureData(n.top,n.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 t=this.gridObj.getViewport();this.loaderDataView.setSearch(e),this.loaderDataView.ensureData(t.top,t.bottom)}}static ctorParameters=()=>[]};VM=Oe([We({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
'}),Xt("design:paramtypes",[])],VM);var Oge=z(348),Rge=z.n(Oge);const Bge=(i,e,t,n,r,s)=>(t=t??"",s.getOptions().editable&&n.editor?{text:t,addClasses:"editable-field",toolTip:"Click to Edit"}:t),Hge=i=>null!=i&&i.length?/^(task\s\d+)*$/i.test(i)?{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 zM=class{http;title="Example 31: Columns Resize by Content";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.';angularGrid;gridOptions;columnDefinitions=[];dataset=[];editQueue=[];editedItems={};isUsingDefaultResize=!1;isGridEditable=!0;isMassSelectionDisabled=!0;complexityLevelList=[{value:0,label:"Very Simple"},{value:1,label:"Simple"},{value:2,label:"Straightforward"},{value:3,label:"Complex"},{value:4,label:"Very Complex"}];constructor(e){this.http=e}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:M.string,minWidth:65,resizeExtraWidthPadding:4,resizeCharWidthInPx:7.6,resizeCalcWidthRatio:1,resizeMaxWidthThreshold:200,columnGroup:"Common Factor",cssClass:"text-uppercase fw-bold",filterable:!0,filter:{model:ee.inputText,filterPredicate:(e,t)=>{const n=t.parsedSearchTerms||[];if(n?.length){const r=t.columnId,s=n[0],a=e[r].toLowerCase(),d=s.matchAll(/^%([^%\r\n]+)[^%\r\n]*$|(.*)%(.+)%(.*)|(.+)%(.+)|([^%\r\n]+)%$/gi),h=Array.from(d),p=h.length?h[0]:[],[g,v,y,C,k,E,x,S]=p;return v?a.endsWith(v.toLowerCase()):y&&C?a.startsWith(y.toLowerCase())&&a.includes(C.toLowerCase()):C&&k?a.includes(C)&&a.endsWith(k.toLowerCase()):C&&!k?a.includes(C.toLowerCase()):E&&x?a.startsWith(E.toLowerCase())&&a.endsWith(x.toLowerCase()):S?a.startsWith(S.toLowerCase()):a.includes(s.toLowerCase())}return!0}},editor:{model:Ne.longText,required:!0,alwaysSaveOnEnterKey:!0,maxLength:12,editorOptions:{cols:45,rows:6,buttonTexts:{cancel:"Close",save:"Done"}},validator:Hge}},{id:"duration",name:"Duration",field:"duration",sortable:!0,filterable:!0,minWidth:65,type:M.number,columnGroup:"Common Factor",formatter:(e,t,n)=>null==n||""===n?"":n>1?`${n} days`:`${n} day`,editor:{model:Ne.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:M.number,columnGroup:"Analysis",filter:{model:ee.compoundInputNumber},formatter:G.dollar},{id:"percentComplete",name:"% Complete",field:"percentComplete",minWidth:100,type:M.number,sortable:!0,filterable:!0,columnGroup:"Analysis",filter:{model:ee.compoundSlider,operator:">="},editor:{model:Ne.slider,minValue:0,maxValue:100}},{id:"complexity",name:"Complexity",field:"complexity",resizeCalcWidthRatio:.82,sortable:!0,filterable:!0,columnGroup:"Analysis",formatter:(e,t,n)=>this.complexityLevelList[n]?.label,exportCustomFormatter:(e,t,n)=>this.complexityLevelList[n]?.label,filter:{model:ee.multipleSelect,collection:this.complexityLevelList},editor:{model:Ne.singleSelect,collection:this.complexityLevelList}},{id:"start",name:"Start",field:"start",sortable:!0,formatter:G.dateUs,columnGroup:"Period",exportCustomFormatter:G.dateUs,type:M.date,outputType:M.dateUs,saveOutputType:M.dateUtc,filterable:!0,filter:{model:ee.compoundDate},editor:{model:Ne.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:ee.singleSelect},editor:{model:Ne.checkbox}},{id:"finish",name:"Finish",field:"finish",sortable:!0,formatter:G.dateUs,columnGroup:"Period",type:M.date,outputType:M.dateUs,saveOutputType:M.dateUtc,filterable:!0,filter:{model:ee.compoundDate},exportCustomFormatter:G.dateUs,editor:{model:Ne.date,editorOptions:{range:{min:"today"}},validator:(e,t)=>{const n=t&&t.item;return n&&n.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:M.object,sortComparer:La.objectString,editor:{model:Ne.autocompleter,alwaysSaveOnEnterKey:!0,editorOptions:{minLength:1,fetch:(e,t)=>{t(this.mockProducts().filter(r=>r.itemName.toLowerCase().includes(e.toLowerCase())))},renderItem:{layout:"fourCorners",templateCallback:e=>this.renderItemCallbackWith4Corners(e)}}},filter:{model:ee.inputText,type:M.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:M.object,sortComparer:La.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:Ne.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get("assets/data/countries.json")},filter:{model:ee.inputText,type:M.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,t)=>{const n=t.dataContext;confirm(`Do you really want to delete row (${(t?.row??0)+1}) with "${n.title}"`)&&this.angularGrid.gridService.deleteItemById(n.id)}}]}}],this.gridOptions={editable:!0,autoAddCustomEditorFormatter:Bge,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 xs],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,t,n)=>{const r=Array.isArray(n.prevSerializedValue)?n.prevSerializedValue:[n.prevSerializedValue],s=Array.isArray(n.serializedValue)?n.serializedValue:[n.serializedValue],a=this.columnDefinitions.filter(h=>void 0!==h.editor),d=[];r.forEach((h,p)=>{if(r[p]!==s[p]){const y=Array.isArray(n.prevSerializedValue)?a[p]:t;this.editedItems[this.gridOptions.datasetIdPropertyName||"id"]=e,this.angularGrid.slickGrid.invalidate(),n.execute(),this.renderUnsavedCellStyling(e,y,n),d.push(y)}}),this.editQueue.push({item:e,columns:d,editCommand:n})},enableCellMenu:!0}}loadData(e){const t=[];for(let n=0;n100?n>5?100:88:v,C=100===y;t[n]={id:n,title:"Task "+n,duration:Math.floor(100*Math.random())+10,percentComplete:y,analysis:{percentComplete:y},complexity:n%3?0:2,start:new Date(s,d,h,h,p,p,p),finish:C||n%3==0&&g>new Date&&n>3?C?new Date:g:"",cost:n%33==0?null:Math.round(1e4*Math.random())/100,completed:C||n%3==0&&g>new Date&&n>3,product:{id:this.mockProducts()[r]?.id,itemName:this.mockProducts()[r]?.itemName},origin:n%2?{code:"CA",name:"Canada"}:{code:"US",name:"United States"}},n%8||(delete t[n].finish,delete t[n].percentComplete)}return t}handleValidationError(e,t){return t.validationResults&&alert(t.validationResults.msg),!1}handleItemDeleted(e,t){console.log("item deleted with id:",t.itemId)}handleOnBeforeEditCell(e,t){const{column:n,item:r,grid:s}=t;return n&&r&&!function Nge(i,e,t){const n=t.getOptions(),r=e.editor;let a=!(!n.editable||!r);i&&e&&n&&n.editable&&"finish"===e.id&&(a=!!i?.completed);return a}(r,n,s)&&e.preventDefault(),!1}handleOnCellChange(e,t){const n=t?.item;n&&!n.completed&&(n.finish=null,this.angularGrid.gridService.updateItem(n))}handlePaginationChanged(){this.removeAllUnsavedStylingFromCell(),this.renderUnsavedStylingOnAllVisibleCells()}handleDefaultResizeColumns(){const e=this.angularGrid.slickGrid.getColumns();e.forEach(t=>t.width=t.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,t,n){this.angularGrid.slickGrid.removeCellCssStyles(`unsaved_highlight_${[t.id]}${n}`)}removeAllUnsavedStylingFromCell(){for(const e of this.editQueue){const t=e?.editCommand;if(t)for(const n of e.columns)this.removeUnsavedStylingFromCell(e.item,n,t.row)}}renderUnsavedStylingOnAllVisibleCells(){for(const e of this.editQueue)if(e){const{item:t,columns:n,editCommand:r}=e;Array.isArray(n)&&n.forEach(s=>{this.renderUnsavedCellStyling(t,s,r)})}}renderUnsavedCellStyling(e,t,n){if(n&&e&&t){const r=this.angularGrid.dataView.getRowByItem(e);if(r>=0){const s={[r]:{[t.id]:"unsaved-editable-field"}};this.angularGrid.slickGrid.setCellCssStyles(`unsaved_highlight_${[t.id]}${r}`,s)}}}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 t=this.editQueue.pop(),n=t?.editCommand;if(t&&n&&Fc.cancelCurrentEdit()){n.undo();for(const r of t.columns)this.removeUnsavedStylingFromCell(t.item,r,n.row);this.angularGrid.slickGrid.invalidate(),e&&this.angularGrid?.slickGrid.gotoCell(n.row,n.cell,!1)}}undoAllEdits(){for(const e of this.editQueue){const t=e?.editCommand;if(t&&Fc.cancelCurrentEdit()){t.undo();for(const n of e.columns)this.removeUnsavedStylingFromCell(e.item,n,t.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 t=["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"],n=Math.floor(Math.random()*t.length-1);return t[e??n]}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 ${wn(e.listPrice,2,2,!1,"$")}\n
\n
\n
\n
${e.itemNameTranslated}
\n Type: ${"I"===e.itemTypeName?"Item":"C"===e.itemTypeName?"PdCat":"Cat"}\n
`}static ctorParameters=()=>[{type:Mi}]};zM=Oe([We({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:Bt.None,styles:[Rge()]}),Xt("design:paramtypes",[Mi])],zM);var zge=z(785),Gge=z.n(zge),$ge=z(297),Wge=z.n($ge);let GM=class{model;addon;grid;dataView;parent;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}`)}};GM=Oe([We({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',styles:[Gge(),Wge()]})],GM);let $M=class{};$M=Oe([We({template:'

\n \n Loading...\n

'})],$M);let WM=class{_darkMode=!1;title="Example 21: Row Detail View";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 ';angularGrid;columnDefinitions=[];gridOptions;dataset=[];detailViewRowCount=9;flashAlertType="info";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:M.string,width:70,filterable:!0,editor:{model:Ne.text}},{id:"duration",name:"Duration (days)",field:"duration",formatter:G.decimal,params:{minDecimal:1,maxDecimal:2},sortable:!0,type:M.number,minWidth:90,filterable:!0},{id:"percent2",name:"% Complete",field:"percentComplete2",editor:{model:Ne.slider},formatter:G.progressBar,type:M.number,sortable:!0,minWidth:100,filterable:!0,filter:{model:ee.slider,operator:">"}},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,type:M.date,minWidth:90,exportWithFormatter:!0,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,type:M.date,minWidth:90,exportWithFormatter:!0,filterable:!0,filter:{model:ee.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",minWidth:100,formatter:G.checkmarkMaterial,type:M.boolean,filterable:!0,sortable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ee.singleSelect}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!0,enableRowDetailView:!0,darkMode:this._darkMode,datasetIdPropertyName:"rowId",rowDetailView:{process:e=>this.simulateServerAsyncCall(e),loadOnce:!0,singleRowExpand:!1,useRowClick:!0,panelRows:this.detailViewRowCount,preloadComponent:$M,viewComponent:GM,parent:this,onBeforeRowDetailToggle:(e,t)=>(console.log("before toggling row detail",t.item),!0)},rowSelectionOptions:{selectActiveRow:!0}},this.getData()}getData(){const e=[];for(let t=0;t<1e3;t++){const n=2e3+Math.floor(10*Math.random()),r=Math.floor(11*Math.random()),s=Math.floor(29*Math.random()),a=Math.round(100*Math.random());e[t]={rowId:t,title:"Task "+t,duration:t%33==0?null:100*Math.random()+"",percentComplete:a,percentComplete2:a,percentCompleteNumber:a,start:new Date(n,r,s),finish:new Date(n,r+1,s),effortDriven:t%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?.extensionService&&this.rowDetailInstance.collapseAll()}showFlashMessage(e,t="info"){this.message=e,this.flashAlertType=t}simulateServerAsyncCall(e){const t=["John Doe","Jane Doe","Chuck Norris","Bumblebee","Jackie Chan","Elvis Presley","Bob Marley","Mohammed Ali","Bruce Lee","Rocky Balboa"];return new Promise(n=>{window.setTimeout(()=>{const r=e;r.assignee=t[this.randomNumber(0,10)],r.reporter=t[this.randomNumber(0,10)],n(r)},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,t){return Math.floor(Math.random()*(t-e+1)+e)}};WM=Oe([We({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 {{message}}\n
\n
\n\n
\n\n \n \n
'})],WM);let UM=class{title="Example 17: Row Move & Checkbox Selector";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 ';angularGrid;columnDefinitions;gridOptions;dataset;angularGridReady(e){this.angularGrid=e}get rowMoveInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(st.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:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",filterable:!0,sortable:!0,filter:{model:ee.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:ee.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 t=0;t<500;t++)e[t]={id:t,title:"Task "+t,duration:Math.round(25*Math.random())+" days",percentComplete:Math.round(100*Math.random()),start:"01/01/2009",finish:"01/05/2009",effortDriven:t%5==0};this.dataset=e}onBeforeMoveRow(e,t){for(const n of t.rows)if(n===t.insertBefore||n===t.insertBefore-1&&t.insertBefore-1!==this.angularGrid.dataView.getItemCount())return e.stopPropagation(),!1;return!0}onMoveRows(e,t){const n=t.rows,r=t.insertBefore,s=[];this.angularGrid.dataView.sort(void 0,!0);const a=this.angularGrid.dataView.getItems(),d=this.angularGrid.dataView.getFilteredItems(),h=this.angularGrid.dataView.getItem(r),p=h?this.angularGrid.dataView.getIdxById(h.id):this.angularGrid.dataView.getItemCount(),g=[];n.forEach(E=>g.push(d[E]));const v=g.map(E=>this.angularGrid.dataView.getIdxById(E.id)),y=a.slice(0,p),C=a.slice(p,a.length);n.sort((E,x)=>E-x);for(const E of v)void 0!==E&&s.push(a[E]);v.reverse();for(const E of v)void 0!==E&&void 0!==p&&(E{alert(`Technically we should Edit "Task ${n.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:(t,n)=>{confirm("Are you sure?")&&this.angularGrid.gridService.deleteItemById(n.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()}};UM=Oe([We({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
'})],UM);var Yge=z(293),Zge=z.n(Yge),Jge=z(898),Xge=z.n(Jge);let jM=class{cd;title="Example 10: Multiple Grids with Row Selection";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 ';angularGrid1;angularGrid2;columnDefinitions1;columnDefinitions2;gridOptions1;gridOptions2;dataset1;dataset2;gridObj1;gridObj2;isGrid2WithPagination=!0;selectedTitles="";selectedTitle="";selectedGrid2IDs;constructor(e){this.cd=e}ngOnInit(){this.prepareGrid()}angularGridReady1(e){this.angularGrid1=e,this.gridObj1=e?.slickGrid||{}}angularGridReady2(e){this.angularGrid2=e,this.gridObj2=e?.slickGrid||{}}prepareGrid(){this.columnDefinitions1=[{id:"title",name:"Title",field:"title",sortable:!0,type:M.string,filterable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:M.number,filterable:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,type:M.number,filterable:!0,sortable:!0},{id:"start",name:"Start",field:"start",formatter:G.dateIso,exportWithFormatter:!0,type:M.date,filterable:!0,sortable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,exportWithFormatter:!0,type:M.date,filterable:!0,sortable:!0,filter:{model:ee.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:G.checkmarkMaterial,type:M.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:ee.singleSelect}}],this.columnDefinitions2=[{id:"title",name:"Title",field:"title",sortable:!0,type:M.string,filterable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:M.number,filterable:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,type:M.number,filterable:!0,sortable:!0},{id:"start",name:"Start",field:"start",formatter:G.dateIso,exportWithFormatter:!0,type:M.date,filterable:!0,sortable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,exportWithFormatter:!0,type:M.date,filterable:!0,sortable:!0,filter:{model:ee.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:G.checkmarkMaterial,type:M.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:ee.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 t=[];for(let n=0;nt-n),this.selectedTitles=this.selectedGrid2IDs.map(t=>`Task ${t}`).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,t){Array.isArray(t.rows)&&this.gridObj1&&(this.selectedTitle=t.rows.map(n=>this.gridObj1.getDataItem(n).title||""))}static ctorParameters=()=>[{type:bn}]};jM=Oe([We({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:[Zge(),Xge()]}),Xt("design:paramtypes",[bn])],jM);function A1(i,e){return Math.floor(Math.random()*(e-i+1)+i)}const qM="gridState";let KM=class{translate;title="Example 16: Grid State & Presets using Local Storage";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 ';subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset;selectedLanguage;constructor(e){this.translate=e,this.selectedLanguage=this.translate.getDefaultLang()}angularGridReady(e){this.angularGrid=e}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){const e=JSON.parse(localStorage[qM]||null);this.defineGrid(e);this.translate.use("en"),this.selectedLanguage="en"}clearGridStateFromLocalStorage(){this.angularGrid.gridService.resetGrid(this.columnDefinitions),this.angularGrid.paginationService.changeItemPerPage(25),window.setTimeout(()=>localStorage[qM]=null)}defineGrid(e){const t=[];for(let n=0;n<500;n++)t.push({value:n,label:n});this.columnDefinitions=[{id:"title",name:"Title",field:"title",nameKey:"TITLE",filterable:!0,sortable:!0,type:M.string,minWidth:45,width:100,filter:{model:ee.compoundInput}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,width:100,type:M.string,filter:{model:ee.input,filterShortcuts:[{titleKey:"BLANK_VALUES",searchTerms:["< A"],iconCssClass:"mdi mdi-filter-minus-outline"},{titleKey:"NON_BLANK_VALUES",searchTerms:["> A"],iconCssClass:"mdi mdi-filter-plus-outline"}]}},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:M.number,exportCsvForceToKeepAsString:!0,minWidth:55,width:100,nameKey:"DURATION",filterable:!0,filter:{collection:t,model:ee.multipleSelect,filterOptions:{maxHeight:250,width:175}}},{id:"complete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",minWidth:70,type:M.number,sortable:!0,width:100,formatter:G.percentCompleteBar,filterable:!0,filter:{model:ee.slider,operator:">"}},{id:"start",name:"Start",field:"start",nameKey:"START",formatter:G.dateIso,sortable:!0,minWidth:75,exportWithFormatter:!0,width:100,type:M.date,filterable:!0,filter:{model:ee.compoundDate,filterShortcuts:[{titleKey:"PAST",searchTerms:[vr(new Date,"YYYY-MM-DD")],operator:"<",iconCssClass:"mdi mdi-calendar"},{titleKey:"FUTURE",searchTerms:[vr(new Date,"YYYY-MM-DD")],operator:">",iconCssClass:"mdi mdi-calendar-clock"}]}},{id:"completed",field:"completed",nameKey:"COMPLETED",minWidth:85,maxWidth:85,formatter:G.checkmarkMaterial,width:100,type:M.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ee.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 t=(new Date).getFullYear(),n=[];for(let r=0;r
',styles:[Gpe()]})],sM);var Wpe=z(953),Upe=z.n(Wpe);function Zj(i,e,t){let n;t={modalType:"edit",validationFailedMsg:"Some of the fields have failed validation",validationMsgPrefix:null,show:null,hide:null,position:null,destroy:null,formValues:{},editors:{},...t};const s=()=>{},a=h=>{const p=e[h],g=kn(p),v=p?.clientWidth??0,y=p?.clientHeight??0;return{top:g.top,left:g.left,bottom:g.top+y,right:g.left+v,width:v,height:y,visible:!0}};function d(h){const p=this;let g=[];p.getEditors=()=>g,p.destroy=()=>{let y=g.pop();for(;y;)y?.destroy(),y=g.pop();let C=e.pop();for(;C;)ui(C),C?.remove(),C=e.pop();t?.destroy?.(),g=[],e=null},p.focus=()=>{(n||g[0]).focus()},p.isValueChanged=()=>{let y=0;for(;y{const y=[];let C=0;for(;C{let k=0;for(;k{let C=0;for(;C{let C;n=null;const k=[];let E=0;for(;E{let y=0;for(;y{let y=0;for(;y{t?.position?.(y)},function v(){let y={},C=0;for(;C{Array.isArray(g)&&g.length>0&&"function"==typeof g[0].focus&&g[0].focus()},0)}()}return d.prototype=this,d}const Jj=i=>console.log(i.message);class jpe{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 Pi,this._bindEventService=new br}init(e,t){if(this.grid=e,this.gridService=t.get("GridService"),this.translaterService=t.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??oe.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,t,n=!1,r=!0){const s=this.getColumnByObjectOrId(e),a="string"==typeof e?e:s?.id??"",d=this._editors?.[a];let h=t;if(!d&&!n)throw new Error(`Composite Editor with column id "${a}" not found.`);if("function"==typeof d?.setValue&&Array.isArray(this._editorContainers)){d.setValue(t,!0,r);const g=this._editorContainers.find(y=>y.dataset.editorid===a),v=this.gridOptions?.compositeEditorOptions?.excludeDisabledFieldFormValues??!1;!d.disabled||d.disabled&&!v?g?.classList?.add("modified"):(h="",g?.classList?.remove("modified")),d.disabled&&(""!==h||null!==h||void 0!==h||0!==h)&&(h="")}const p=s?.field??"";if(s&&p?.includes(".")){const g=s.editor?.complexObjectPath??p??"";Ko(this._formValues??{},g,t)}else this._formValues={...this._formValues,[a]:h}}changeFormValue(e,t){const n=this.getColumnByObjectOrId(e),r="string"==typeof e?e:n?.id??"",s=n?.field??e;if(s?.includes(".")){const a=n?.editor?.complexObjectPath??s??"";Ko(this._formValues,a,t)}else this._formValues={...this._formValues,[r]:t};this._formValues=b1({},this._itemDataContext,this._formValues)}changeFormEditorOption(e,t,n){const r=this._editors?.[e];if(!r?.changeEditorOption)throw new Error(`Editor with column id "${e}" not found OR the Editor does not support "changeEditorOption" (current only available with Date, MultipleSelect, SingleSelect & Slider Editors).`);r.changeEditorOption(t,n)}disableFormInput(e,t=!0){const n=this._editors?.[e];n?.disable&&Array.isArray(this._editorContainers)&&n.disable(t)}openDetails(e){const t=e.onError??Jj,n={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={...n,...this.gridOptions.compositeEditorOptions,...e,labels:{...this.gridOptions.compositeEditorOptions?.labels,...e?.labels}},this._options.backdrop=void 0!==e.backdrop?e.backdrop:"static";const r=this._options.viewColumnLayout||1,s=this.grid.getActiveCell(),a=s?.cell??0,d=s?.row??0,h=this.grid.getUID()||"";let p=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&&(p=e?.headerTitleMassSelection)):(this._options.modalType="mass-update",e?.headerTitleMassUpdate&&(p=e?.headerTitleMassUpdate)));const g=this._options.modalType||"edit";if(!this.gridOptions.editable)return t({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 t({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"===g||"create"===g))return t({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(!s&&("clone"===g||"edit"===g))return t({type:"warning",code:"NO_RECORD_FOUND",message:"No records selected for edit or clone operation."}),null;{const v="mass-update"===g||"mass-selection"===g,y=v?{}:this.grid.getDataItem(d);this._originalDataContext=en(!0,{},y),this._columnDefinitions=this.grid.getColumns();const C=this.hasRowSelectionEnabled()?this.grid.getSelectedRows():[],k=this.dataView?.getItemCount()??0;this._lastActiveRowNumber=d;const E=this.dataView.getAllSelectedIds(),x="create"===g?this.dataViewLength:d;if(!this.focusOnFirstColumnCellWithEditor(this._columnDefinitions,y,a,x,v))return null;if("edit"===g&&!y)return t({type:"warning",code:"ROW_NOT_EDITABLE",message:"Current row is not editable."}),null;if("mass-selection"===g&&C.length<1)return t({type:"warning",code:"ROW_SELECTION_REQUIRED",message:"You must select some rows before trying to apply new value(s)."}),null;let D=[];D=v?this._columnDefinitions.filter(Ae=>Ae.editorClass&&!0===Ae.editor?.massUpdate):this._columnDefinitions.filter(Ae=>Ae.editorClass),D.some(Ae=>void 0!==Ae.editor?.compositeEditorFormOrder)&&D.sort((Ae,yt)=>Q$(Ae?.editor?.compositeEditorFormOrder??1/0,yt?.editor?.compositeEditorFormOrder??1/0,Li.asc));const I=p.replace(/\{\{(.*?)\}\}/g,(Ae,yt)=>Wn(y,yt)),L="auto"===r?this.autoCalculateLayoutColumnCount(D.length):r;this._modalElm=O("div",{className:`slick-editor-modal ${h}`});const R=O("div",{className:"slick-editor-modal-content"});if(this.gridOptions?.darkMode&&R.classList.add("slick-dark-mode"),!isNaN(r)&&+r>1||"auto"===r&&L>1){const Ae=2===L?"split-view":"triple-split-view";R.classList.add(Ae)}const W=O("div",{className:"slick-editor-modal-title"});this.grid.applyHtmlCode(W,I);const re=O("button",{type:"button",ariaLabel:"Close",textContent:"\xd7",className:"close",dataset:{action:"close"}});this._options.showCloseButtonOutside&&(W?.classList?.add("outside"),re?.classList?.add("outside"));const ie=O("div",{ariaLabel:"Close",className:"slick-editor-modal-header"});ie.appendChild(W),ie.appendChild(re);const se=O("div",{className:"slick-editor-modal-body"});this._modalBodyTopValidationElm=O("div",{className:"validation-summary",style:{display:"none"}},se);const Se=O("div",{className:"slick-editor-modal-footer"}),Ie=O("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 tt="",mt="";switch(g){case"clone":mt=this.getLabelText("cloneButton","TEXT_CLONE","Clone");break;case"mass-update":const Ae=this.getLabelText("massUpdateStatus","TEXT_ALL_X_RECORDS_SELECTED","All {{x}} records selected");tt=this.parseText(Ae,{x:k}),mt=this.getLabelText("massUpdateButton","TEXT_APPLY_MASS_UPDATE","Mass Update");break;case"mass-selection":const yt=this.getLabelText("massSelectionStatus","TEXT_X_OF_Y_MASS_SELECTED","{{x}} of {{y}} selected");tt=this.parseText(yt,{x:E.length,y:k}),mt=this.getLabelText("massSelectionButton","TEXT_APPLY_TO_SELECTION","Update Selection");break;default:mt=this.getLabelText("saveButton","TEXT_SAVE","Save")}const qt=O("div",{className:"footer-status-text",textContent:tt});this._modalSaveButtonElm=O("button",{type:"button",className:"btn btn-save btn-primary btn-sm",ariaLabel:mt,textContent:mt,dataset:{action:"create"===g||"edit"===g?"save":g,ariaLabel:mt}});const Kt=O("div",{className:"footer-buttons"});("mass-update"===g||"mass-selection"===g)&&Se.appendChild(qt),Kt.appendChild(Ie),Kt.appendChild(this._modalSaveButtonElm),Se.appendChild(Kt),R.appendChild(ie),R.appendChild(se),R.appendChild(Se),this._modalElm.appendChild(R);for(const Ae of D)if(Ae.editorClass){const yt=O("div",{className:`item-details-container editor-${Ae.id}`});1===L?yt.classList.add("slick-col-medium-12"):yt.classList.add("slick-col-medium-6","slick-col-xlarge-"+12/L);const Ni=O("div",{className:`item-details-label editor-${Ae.id}`});this.grid.applyHtmlCode(Ni,this.getColumnLabel(Ae)||"n/a");const Xo=O("div",{className:"item-details-editor-container slick-cell",dataset:{editorid:`${Ae.id}`}}),Gt=O("div",{className:`item-details-validation editor-${Ae.id}`});if(this._options?.showResetButtonOnEachEditor){const Lr=this.createEditorResetButtonElement(`${Ae.id}`);this._bindEventService.bind(Lr,"click",this.handleResetInputValue.bind(this)),Ni.appendChild(Lr)}yt.appendChild(Ni),yt.appendChild(Xo),yt.appendChild(Gt),se.appendChild(yt)}if(this._options?.showFormResetButton){const Ae=this.createFormResetButtonElement();this._bindEventService.bind(Ae,"click",this.handleResetFormClicked.bind(this)),se.appendChild(Ae)}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=D.map(Ae=>se.querySelector(`[data-editorid='${Ae.id}']`))||[],this._compositeOptions={destroy:this.disposeComponent.bind(this),modalType:g,validationMsgPrefix:"* ",formValues:{},editors:this._editors};const Et=new Zj(D,this._editorContainers,this._compositeOptions);this.grid.editActiveCell(Et),this._bindEventService.bind(re,"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,(Ae,yt)=>{this._originalDataContext=this.insertNewItemInDataView(yt.item)})}return this}catch(r){this.dispose();const s="string"==typeof r?r:r?.message??r?.body?.message??"";return t({type:"error",code:"string"==typeof r?r:r?.status??r?.body?.status??s,message:s}),null}}cancelEditing(){var e=this;return yn(function*(){let t=!0;e.formValues&&Object.keys(e.formValues).length>0&&"function"==typeof e._options.onClose&&(t=yield e._options.onClose()),t&&(e.grid.getEditController()?.cancelCurrentEdit(),("edit"===e._options?.modalType||"clone"===e._options?.modalType)&&e.resetCurrentRowDataContext(),e.grid.setActiveRow(e._lastActiveRowNumber),e.dispose())})()}showValidationSummaryText(e,t=""){e&&""!==t?(this._modalBodyTopValidationElm.textContent=t,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=t)}applySaveMassUpdateChanges(e,t,n=!0){const r=n?this.dataView.getItems():en(!0,[],this.dataView.getItems());return Object.keys(e).forEach(s=>{s in e&&r.forEach(a=>{s in e&&(void 0===this._options?.validateMassUpdateChange||!1!==this._options.validateMassUpdateChange(s,a,e))&&(a[s]=e[s])})}),n&&(this.dataView.setItems(r,this.gridOptions.datasetIdPropertyName),this.grid.invalidate()),r}applySaveMassSelectionChanges(e,t,n=!0){const s=(t?.dataContextIds??[]).map(d=>this.dataView.getItemById(d)),a=n?s:en(!0,[],s);return Object.keys(e).forEach(d=>{d in e&&a.forEach(h=>{d in e&&(void 0===this._options?.validateMassUpdateChange||!1!==this._options.validateMassUpdateChange(d,h,e))&&(h[d]=e[d])})}),n&&this.gridService?.updateItems(a),a}autoCalculateLayoutColumnCount(e){return e>=15?3:e>=8?2:1}createEditorResetButtonElement(e){const t=O("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 n=Oi(this._options?.resetEditorButtonCssClass);for(const r of n)t.classList.add(r)}return t}createFormResetButtonElement(){const e=O("div",{className:"reset-container"}),t=O("button",{type:"button",className:"btn btn-sm reset-form"},e);return O("span",{className:this._options?.resetFormButtonIconCssClass??""},t),t.appendChild(document.createTextNode(" Reset Form")),e}executeOnError(e){(this._options?.onError??Jj)(e)}executeOnSave(e,t,n,r){var s=this;return yn(function*(){try{if(s.showValidationSummaryText(!1,""),s.validateCompositeEditors().valid){if(s._modalSaveButtonElm.classList.add("saving"),s._modalSaveButtonElm.disabled=!0,"function"==typeof s._options?.onSave){const d="mass-update"===s._options.modalType||"mass-selection"===s._options.modalType;let h;d&&s._options?.shouldPreviewMassChangeDataset&&(h=e(s.formValues,s.getCurrentRowSelections(),!1));const p=d?h:r;(yield s._options?.onSave(s.formValues,s.getCurrentRowSelections(),p))&&(e(s.formValues,s.getCurrentRowSelections()),t())}else e(s.formValues,s.getCurrentRowSelections()),t();"function"==typeof n&&n(),s.dispose()}}catch(a){const d="string"==typeof a?a:a?.message??a?.body?.message??"";s.showValidationSummaryText(!0,d)}})()}focusOnFirstColumnCellWithEditor(e,t,n,r,s){const a=s&&!this.gridOptions.enableAddRow&&r>=this.dataViewLength?this.dataViewLength-1:r;let d=n;const h=e[n].editorClass;let p=this.grid.getCellNode(a,n);if(!h||!p||!this.getActiveCellEditor(a,n)){if(d=this.findNextAvailableEditorColumnIndex(e,t,r,s),-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(a,d,!1),s&&this.grid.setActiveRow(this.dataViewLength,d,!0)}return p=this.grid.getCellNode(a,d),!!p}findNextAvailableEditorColumnIndex(e,t,n,r){let s=-1;for(let a=0;an.id===e)),t}getActiveCellEditor(e,t){return this.grid.setActiveCell(e,t,!1),this.grid.getCellEditor()}getColumnLabel(e){const t=this.gridOptions.columnGroupSeparator||" - ";let n=e.nameCompositeEditor||e.name||"",r=e.columnGroup||"";if(this.gridOptions.enableTranslate&&this.translaterService){const a=e.nameCompositeEditorKey||e.nameKey;a&&(n=this.translaterService.translate(a)),e.columnGroupKey&&this.translaterService?.translate&&(r=this.translaterService.translate(e.columnGroupKey))}return Un(r?`${r}${t}${n}`:n,"innerHTML")}getLabelText(e,t,n){const r={...this.gridOptions.compositeEditorOptions?.labels,...this._options?.labels};if(this.gridOptions?.enableTranslate&&this.translaterService?.translate&&r.hasOwnProperty(`${e}Key`)){const s=r[`${e}Key`];return this.translaterService.translate(s||"")}return r?.[e]??this._locales?.[t]??n}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 t=e.target.name,n=this._editors?.[t];"function"==typeof n?.reset&&n.reset(),delete this._formValues?.[t]}handleMassSaving(e,t){var n=this;return yn(function*(){if(n.formValues&&0!==Object.keys(n.formValues).length){const r="mass-update"===e?"applySaveMassUpdateChanges":"applySaveMassSelectionChanges";n.executeOnSave(n[r].bind(n),t.bind(n))}else n.executeOnError({type:"warning",code:"NO_CHANGES_DETECTED",message:"Sorry we could not detect any changes."})})()}handleOnCompositeEditorChange(e,t){const n=t.column?.id??"";this._formValues={...this._formValues,...t.formValues};const r=this._editors?.[n],s=r?.isValueTouched?.()??r?.isValueChanged?.()??!1;this._itemDataContext=r?.dataContext??{};const a=this._modalElm.querySelector(`[data-editorid='${n}']`);a?.classList&&(s?a.classList.add("modified"):a.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 t=this._editors[e];t?.reset&&t.reset()}this._formValues=K$(this._formValues)}handleSaveClicked(){var e=this;return yn(function*(){const t=e._options?.modalType;switch(t){case"mass-update":e.handleMassSaving(t,()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveCell(0,0,!1),e._options.shouldClearRowSelectionAfterMassAction&&e.grid.setSelectedRows([])});break;case"mass-selection":e.handleMassSaving(t,()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveRow(e._lastActiveRowNumber),e._options.shouldClearRowSelectionAfterMassAction&&e.grid.setSelectedRows([])});break;case"clone":const n={...e._originalDataContext,...e.formValues},r=()=>{e.grid.getEditController()?.cancelCurrentEdit(),e.grid.setActiveCell(0,0,!1)};e.executeOnSave(e.insertNewItemInDataView.bind(e,n),r,e.resetCurrentRowDataContext.bind(e),n);break;default:let s=e.grid.getEditController()?.commitCurrentEdit();if(s&&"function"==typeof e._options?.onSave){const a="create"===t?e._originalDataContext:e.grid.getDataItem(e._lastActiveRowNumber);s=yield e._options?.onSave(e.formValues,e.getCurrentRowSelections(),a)}s&&e.dispose()}})()}insertNewItemInDataView(e){const t=this.dataView?.getItemCount()||0,n=this._options.insertNewId??t+1;return e[this.gridOptions.datasetIdPropertyName||"id"]=n,this.dataView.getItemById(n)?this.executeOnError({type:"error",code:"ITEM_ALREADY_EXIST",message:`The item object which you are trying to add already exist with the same Id:: ${n}`}):this.gridService?.addItem(e,this._options.insertOptions),e}parseText(e,t){return e.replace(/\{\{(.*?)\}\}/g,(n,r)=>void 0!==t[r]?t[r]:n)}resetCurrentRowDataContext(){const e=this.gridOptions.datasetIdPropertyName||"id";this.grid.getData().updateItem(this._originalDataContext[e],this._originalDataContext)}validateCompositeEditors(e){let t={valid:!0,msg:""};const n=this.grid.getCellEditor();return n&&(t=n.validate(e)),t}validateCurrentEditor(){const e=this.grid.getCellEditor();e?.validate&&e.validate()}}const Zpe=(i,e,t,n,r,s)=>(t=t??"",s.getOptions().editable&&n.editor?{text:t,addClasses:"editable-field"}:t),Jpe=(i,e)=>null!=i&&i.length||!(e.compositeEditorOptions&&"create"===e.compositeEditorOptions.modalType||"edit"===e.compositeEditorOptions.modalType)?/^(task\s\d+)*$/i.test(i)?{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 aM=class{http;_darkMode=!1;title="Example 30: Composite Editor Modal";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.)';angularGrid;compositeEditorInstance;gridOptions;columnDefinitions=[];dataset=[];editQueue=[];editedItems={};isGridEditable=!0;isCompositeDisabled=!1;isMassSelectionDisabled=!0;cellCssStyleQueue=[];complexityLevelList=[{value:0,label:"Very Simple"},{value:1,label:"Simple"},{value:2,label:"Straightforward"},{value:3,label:"Complex"},{value:4,label:"Very Complex"}];constructor(e){this.http=e,this.compositeEditorInstance=new jpe}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:M.string,minWidth:75,cssClass:"text-uppercase fw-bold",columnGroup:"Common Factor",filterable:!0,filter:{model:ee.compoundInputText},editor:{model:Ne.longText,massUpdate:!1,required:!0,alwaysSaveOnEnterKey:!0,maxLength:12,editorOptions:{cols:45,rows:6,buttonTexts:{cancel:"Close",save:"Done"}},validator:Jpe}},{id:"duration",name:"Duration",field:"duration",sortable:!0,filterable:!0,minWidth:75,type:M.number,columnGroup:"Common Factor",formatter:(e,t,n)=>null==n||""===n?"":n>1?`${n} days`:`${n} day`,editor:{model:Ne.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:M.number,columnGroup:"Analysis",filter:{model:ee.compoundInputNumber},formatter:G.dollar},{id:"percentComplete",name:"% Complete",field:"percentComplete",minWidth:100,type:M.number,sortable:!0,filterable:!0,columnGroup:"Analysis",filter:{model:ee.compoundSlider,operator:">="},editor:{model:Ne.slider,massUpdate:!0,minValue:0,maxValue:100},customTooltip:{position:"center"}},{id:"complexity",name:"Complexity",field:"complexity",minWidth:100,type:M.number,sortable:!0,filterable:!0,columnGroup:"Analysis",formatter:(e,t,n)=>this.complexityLevelList[n]?.label,exportCustomFormatter:(e,t,n)=>this.complexityLevelList[n]?.label,filter:{model:ee.multipleSelect,collection:this.complexityLevelList},editor:{model:Ne.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:M.date,outputType:M.dateUs,saveOutputType:M.dateUtc,filterable:!0,filter:{model:ee.compoundDate},editor:{model:Ne.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:ee.singleSelect},editor:{model:Ne.checkbox,massUpdate:!0}},{id:"finish",name:"Finish",field:"finish",sortable:!0,minWidth:100,formatter:G.dateUs,columnGroup:"Period",type:M.date,outputType:M.dateUs,saveOutputType:M.dateUtc,filterable:!0,filter:{model:ee.compoundDate},exportCustomFormatter:G.dateUs,editor:{model:Ne.date,editorOptions:{range:{min:"today"}},massUpdate:!0,validator:(e,t)=>{const n=t&&t.item;return n&&n.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:M.object,sortComparer:La.objectString,editor:{model:Ne.autocompleter,alwaysSaveOnEnterKey:!0,massUpdate:!0,editorOptions:{minLength:1,fetch:(e,t)=>{t(this.mockProducts().filter(r=>r.itemName.toLowerCase().includes(e.toLowerCase())))},renderItem:{layout:"fourCorners",templateCallback:e=>this.renderItemCallbackWith4Corners(e)}}},filter:{model:ee.inputText,type:M.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:M.object,sortComparer:La.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:Ne.autocompleter,massUpdate:!0,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get("assets/data/countries.json"),editorOptions:{minLength:0}},filter:{model:ee.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,t)=>{const n=t.dataContext;confirm(`Do you really want to delete row (${(t?.row??0)+1}) with "${n.title}"`)&&this.angularGrid.gridService.deleteItemById(n.id)}}]}}],this.gridOptions={enableAddRow:!0,enableCellNavigation:!0,asyncEditorLoading:!1,autoEdit:!0,autoCommitEdit:!0,editable:!0,autoAddCustomEditorFormatter:Zpe,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 xs,new HT,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,t,n)=>{const r=Array.isArray(n.prevSerializedValue)?n.prevSerializedValue:[n.prevSerializedValue],s=Array.isArray(n.serializedValue)?n.serializedValue:[n.serializedValue],a=this.columnDefinitions.filter(h=>void 0!==h.editor),d=[];r.forEach((h,p)=>{const g=r[p],v=s[p];if(g!==v||""===v){const y=Array.isArray(n.prevSerializedValue)?a[p]:t;this.editedItems[this.gridOptions.datasetIdPropertyName||"id"]=e,this.angularGrid.slickGrid.invalidate(),n.execute(),this.renderUnsavedCellStyling(e,y,n),d.push(y)}}),this.editQueue.push({item:e,columns:d,editCommand:n})},enableCellMenu:!0,cellMenu:{activateCellOnMenuClick:!0},gridMenu:{hideToggleDarkModeCommand:!1,onCommand:(e,t)=>{"toggle-dark-mode"===t.command&&(this._darkMode=!this._darkMode,this.toggleBodyBackground())}}}}loadData(e){const t=[];for(let n=0;n100?n>5?100:88:v,C=100===y;t[n]={id:n,title:"Task "+n,duration:Math.floor(100*Math.random())+10,percentComplete:y,analysis:{percentComplete:y},complexity:n%3?0:2,start:new Date(s,d,h,h,p,p,p),finish:C||n%3==0&&g>new Date&&n>3?C?new Date:g:"",cost:n%33==0?null:Math.round(1e4*Math.random())/100,completed:C||n%3==0&&g>new Date&&n>3,product:{id:this.mockProducts()[r]?.id,itemName:this.mockProducts()[r]?.itemName},origin:n%2?{code:"CA",name:"Canada"}:{code:"US",name:"United States"}},n%8||(delete t[n].finish,delete t[n].percentComplete)}return t}handleValidationError(e,t){if(t.validationResults){let n=t.validationResults.msg||"";if(t.editor&&t.editor instanceof Zj){if(t.validationResults.errors){n+="\n";for(const r of t.validationResults.errors){n+=`${r.editor.args.column.name.toUpperCase()}: ${r.msg}`}}console.log(n)}}else alert(t.validationResults.msg);return!1}handleItemDeleted(e){console.log("item deleted with id:",e)}handleOnBeforeEditCell(e,t){const{column:n,item:r,grid:s}=t;return!(n&&r&&!function Ype(i,e,t){const n=t?.getOptions(),r=e.editor;let a=!(!n.editable||!r);i&&e&&n&&n.editable&&"finish"===e.id&&(a=!!i?.completed);return a}(r,n,s))||(e.preventDefault(),!1)}handleOnCellChange(e,t){const n=t?.item;n&&!n.completed&&(n.finish=null,this.angularGrid.gridService.updateItem(n))}handleOnCellClicked(e,t){console.log(e,t)}handleOnCompositeEditorChange(e,t){const n=t.column,r=t.formValues;"percentComplete"===n.id&&100===r.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 t="";switch(e){case"create":t="Inserting New Task";break;case"clone":t="Clone - {{title}}";break;case"edit":t='Editing - {{title}} (id: {{id}})';break;case"mass-update":t="Mass Update All Records";break;case"mass-selection":t="Update Selected Records"}this.compositeEditorInstance?.openDetails({headerTitle:t,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:n=>alert(n.message),onRendered:n=>{n.dataset.bsTheme=this._darkMode?"dark":"light"},onSave:(n,r,s)=>"mass-update"===e||"mass-selection"===e?new Promise((d,h)=>{window.setTimeout(()=>{n.percentComplete>=50?d(!0):h("Unfortunately we only accept a minimum of 50% Completion...")},50)}):(console.log(`${e} item data context`,s),new Promise(d=>window.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,t,n){const r=`unsaved_highlight_${[t.id]}${n}`;this.angularGrid.slickGrid.removeCellCssStyles(r);const s=this.cellCssStyleQueue.findIndex(a=>a===r);s>=0&&this.cellCssStyleQueue.splice(s,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:t,columns:n,editCommand:r}=e;Array.isArray(n)&&n.forEach(s=>{this.renderUnsavedCellStyling(t,s,r)})}}renderUnsavedCellStyling(e,t,n){if(n&&e&&t){const r=this.angularGrid.dataView?.getRowByItem(e);if(void 0!==r&&r>=0){const s={[r]:{[t.id]:"unsaved-editable-field"}},a=`unsaved_highlight_${[t.id]}${r}`;this.angularGrid.slickGrid.setCellCssStyles(a,s),this.cellCssStyleQueue.push(a)}}}saveAll(){console.log(this.editQueue),console.log(this.editedItems),this.removeAllUnsavedStylingFromCell(),this.editQueue=[],this.editedItems={}}undoLastEdit(e=!1){const t=this.editQueue.pop(),n=t?.editCommand;if(t&&n&&Fc.cancelCurrentEdit()){n.undo();for(const r of t.columns)this.removeUnsavedStylingFromCell(t.item,r,n.row);this.angularGrid.slickGrid.invalidate(),e&&this.angularGrid.slickGrid.gotoCell(n.row,n.cell,!1)}}undoAllEdits(){for(const e of this.editQueue){const t=e?.editCommand;if(t&&Fc.cancelCurrentEdit()){t.undo();for(const n of e.columns)this.removeUnsavedStylingFromCell(e.item,n,t.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 t=["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"],n=Math.floor(Math.random()*t.length-1);return t[e??n]}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 ${wn(e.listPrice,2,2,!1,"$")}\n
\n
\n
\n
${e.itemNameTranslated}
\n Type: ${"I"===e.itemTypeName?"Item":"C"===e.itemTypeName?"PdCat":"Cat"}\n
`}static ctorParameters=()=>[{type:Mi}]};aM=Oe([We({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:Bt.None,styles:[Upe()]}),Xt("design:paramtypes",[Mi])],aM);var Qpe=z(94),eme=z.n(Qpe);const tme=(i,e,t,n,r)=>3===r.priority?'
Action
':'
Action
',ime=(i,e,t)=>{if(!t)return"";let n="";const r=+(t>=3?3:t),a=``;for(let d=1;d<=r;d++)n+=a;return n},nme=(i,e,t,n,r,s)=>{if(!t)return"";const d=s.getOptions().i18n,h=+(t>=3?3:t),p=3===h?"HIGH":2===h?"MEDIUM":"LOW";return d&&d.instant&&d.instant(p)},rme=(i,e,t,n,r,s)=>{const d=s.getOptions().i18n;return d&&d.instant&&d.instant("TASK_X",{x:t})};let lM=class{translate;title="Example 26: Cell Menu & Context Menu Plugins";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
';_darkModeGrid=!1;subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset;selectedLanguage;constructor(e){this.translate=e;this.translate.use("en"),this.selectedLanguage="en"}angularGridReady(e){this.angularGrid=e}get cellMenuInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(st.cellMenu)}get contextMenuInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(st.contextMenu)}ngOnInit(){this.prepareGrid(),this.dataset=this.getData(1e3)}ngOnDestroy(){Td(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:rme,sortable:!0,filterable:!0,params:{useFormatterOuputToFilter:!0}},{id:"percentComplete",nameKey:"PERCENT_COMPLETE",field:"percentComplete",minWidth:100,exportWithFormatter:!1,sortable:!0,filterable:!0,filter:{model:ee.slider,operator:">="},formatter:G.percentCompleteBar,type:M.number},{id:"start",name:"Start",field:"start",nameKey:"START",minWidth:100,formatter:G.dateIso,outputType:M.dateIso,type:M.date,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:G.dateIso,outputType:M.dateIso,type:M.date,minWidth:100,filterable:!0,filter:{model:ee.compoundDate}},{id:"priority",nameKey:"PRIORITY",field:"priority",exportCustomFormatter:nme,formatter:ime,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:1,labelKey:"LOW"},{value:2,labelKey:"MEDIUM"},{value:3,labelKey:"HIGH"}],model:ee.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:ee.singleSelect,enableTranslateLabel:!0}},{id:"action",name:"Action",field:"action",width:100,maxWidth:110,excludeFromExport:!0,formatter:tme,cellMenu:{hideCloseButton:!1,menuUsabilityOverride:e=>3===e.dataContext.priority,commandTitleKey:"COMMANDS",commandItems:[{command:"command2",title:"Command 2",positionOrder:62,action:(e,t)=>{console.log(t.dataContext,t.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,t)=>{},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 xs],enableContextMenu:!0,enableCellMenu:!0,cellMenu:{onCommand:(e,t)=>this.executeCommand(e,t),onOptionSelected:(e,t)=>{const n=t&&t.dataContext;n&&"completed"in n&&(n.completed=t.item.option,this.angularGrid.gridService.updateItem(n))},onBeforeMenuShow:(e,t)=>{console.log("Before the Cell Menu is shown",t)},onBeforeMenuClose:(e,t)=>console.log("Cell Menu is closing",t)},contextMenu:this.getContextMenuOptions()}}executeCommand(e,t){const n=t.command,r=t.dataContext;switch(n){case"contact-email":case"contact-chat":case"contact-meeting":alert("Command: "+t?.command);break;case"exports-csv":case"exports-txt":case"exports-xlsx":alert(`Exporting as ${t.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 ${t.row+1} with ${this.translate.instant("TASK_X",{x:r.id})}`)&&this.angularGrid.dataView.deleteItem(r.id)}}getData(e){const t=[];for(let n=0;n(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,t)=>{},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,t)=>{}},{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,t)=>{this.angularGrid.slickGrid.setActiveCell(t.row,t.cell,!1),console.log("Before the global Context Menu is shown",t)},onBeforeMenuClose:(e,t)=>console.log("Global Context Menu is closing",t),onCommand:(e,t)=>this.executeCommand(e,t),onOptionSelected:(e,t)=>{const n=t&&t.dataContext;n&&"priority"in n&&(n.priority=t.item.option,this.angularGrid.gridService.updateItem(n))}}}showContextCommandsAndOptions(e){const t=e?[]:["id","title","complete","start","finish","completed","action"];this.contextMenuInstance?.setOptions({commandShownOverColumnIds:t})}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 ctorParameters=()=>[{type:zt}]};lM=Oe([We({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:Bt.None,styles:[eme()]}),Xt("design:paramtypes",[zt])],lM);var ame=z(643),lme=z.n(ame);let cM=class{elm;_paginationElement;_subscriptions=[];_gridContainerElm;_grid;_paginationService;_pubSubService;currentPagination={};constructor(e){this.elm=e}init(e,t,n){this._grid=e,this._paginationService=t,this._pubSubService=n,this.currentPagination=this._paginationService.getFullPagination(),this._subscriptions.push(this._pubSubService.subscribe("onPaginationRefreshed",r=>{this.currentPagination.dataFrom=r.dataFrom,this.currentPagination.dataTo=r.dataTo,this.currentPagination.pageCount=r.pageCount,this.currentPagination.pageNumber=r.pageNumber,this.currentPagination.pageSize=r.pageSize,this.currentPagination.pageSizes=r.pageSizes,this.currentPagination.totalItems=r.totalItems}))}dispose(){this._pubSubService.unsubscribeAll(this._subscriptions),this.disposeElement()}disposeElement(){this._paginationElement.remove()}renderPagination(e,t="top"){this._gridContainerElm=e,this._paginationElement=this.elm.nativeElement,this._paginationElement.id="pager",this._paginationElement.className=`pagination-container pager ${this._grid.getUID()}`,this._paginationElement.style.width="100%","top"===t?(this._paginationElement.classList.add("top"),e.prepend(this._paginationElement)):(this._paginationElement.classList.add("bottom"),e.appendChild(this._paginationElement))}onFirstPageClicked(e){this.isLeftPaginationDisabled()||this._paginationService.goToFirstPage(e)}onLastPageClicked(e){this.isRightPaginationDisabled()||this._paginationService.goToLastPage(e)}onNextPageClicked(e){this.isRightPaginationDisabled()||this._paginationService.goToNextPage(e)}onPreviousPageClicked(e){this.isLeftPaginationDisabled()||this._paginationService.goToPreviousPage(e)}isLeftPaginationDisabled(){return 1===this.currentPagination.pageNumber||0===this.currentPagination.totalItems}isRightPaginationDisabled(){return this.currentPagination.pageNumber===this.currentPagination.pageCount||0===this.currentPagination.totalItems}static ctorParameters=()=>[{type:wi}]};cM=Oe([We({template:'
\n \n \n \n \n {{currentPagination?.dataFrom}}\n -\n \n {{currentPagination?.dataTo}}\n \n of\n \n \n {{currentPagination?.totalItems}}\n items\n \n \n \n
\n\n
\n Page\n {{currentPagination?.pageNumber}}\n of\n {{currentPagination?.pageCount}}\n
\n\n
\n
',styles:[lme()]}),Xt("design:paramtypes",[wi])],cM);function fE(i,e){return Math.floor(Math.random()*(e-i+1)+i)}let dM=class{angularUtilService;pageSize=50;columnDefinitions=[];gridContainerElm;gridOptions;dataset=[];paginationPosition="top";angularGrid;constructor(e){this.angularUtilService=e}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.defineGrid(),this.dataset=this.loadData(5e3)}defineGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"id",minWidth:100,sortable:!0,filterable:!0,formatter:(e,t,n)=>`Task ${n}`,params:{useFormatterOuputToFilter:!0}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,type:M.string},{id:"percentComplete",name:"% Complete",field:"percentComplete",minWidth:120,sortable:!0,customTooltip:{position:"center"},formatter:G.progressBar,type:M.number,filterable:!0,filter:{model:ee.sliderRange,maxValue:100,operator:te.rangeInclusive,filterOptions:{hideSliderNumbers:!1,min:0,step:5}}},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,minWidth:75,width:100,exportWithFormatter:!0,type:M.date,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,minWidth:75,width:120,exportWithFormatter:!0,type:M.date,filterable:!0,filter:{model:ee.dateRange}},{id:"duration",field:"duration",name:"Duration",maxWidth:90,type:M.number,sortable:!0,filterable:!0,filter:{model:ee.input,operator:te.rangeExclusive}},{id:"completed",name:"Completed",field:"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:ee.singleSelect,filterOptions:{autoAdjustDropHeight:!0}}}],this.gridOptions={autoResize:{container:"#demo-container",bottomPadding:"top"===this.paginationPosition?-1:38},enableExcelCopyBuffer:!0,enableFiltering:!0,customPaginationComponent:cM,enablePagination:!0,pagination:{pageSize:this.pageSize},rowHeight:40}}loadData(e){const t=[];for(let n=0,r=e;n[{type:Jo}]};dM=Oe([We({template:'
\n

\n Example 42: Custom Pagination\n \n \n code\n \n \n

\n
\n You can create a Custom Pagination by passing an Angular Custom Component and it must implements BasePaginationComponent.\n Any of the pagination controls could be moved anywhere on the page (for example we purposely moved the page size away from the rest of the pagination elements).\n
\n\n
\n \n\n \n Page Size\n \n \n
\n\n \n \n
',providers:[Jo]}),Xt("design:paramtypes",[Jo])],dM);var ume=z(271),hme=z.n(ume);let uM=class{title="Example 32: Regular & Custom Tooltips";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 ';angularGrid;columnDefinitions;editCommandQueue=[];gridOptions;dataset;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:M.string,editor:{model:Ne.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},filterable:!0,customTooltip:{position:"right-align",formatter:()=>'
loading...
',asyncProcess:()=>new Promise(e=>{window.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:Ne.float,decimal:2,valueStep:1,maxValue:1e4,alwaysSaveOnEnterKey:!0},formatter:(e,t,n)=>n>1?`${n} days`:`${n} day`,type:M.number},{id:"desc",name:"Description",field:"description",width:100,filterable:!0,editor:{model:Ne.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},formatter:(e,t,n,r,s)=>`${n||""}`,customTooltip:{useRegularTooltip:!0,useRegularTooltipFromCellTextOnly:!0}},{id:"desc2",name:"Description 2",field:"description",width:100,filterable:!0,editor:{model:Ne.longText,required:!0,alwaysSaveOnEnterKey:!0,minLength:5,maxLength:255},formatter:(e,t,n,r,s)=>`${n||""}`,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,t,n)=>`${n||""}`]},customTooltip:{useRegularTooltip:!0,useRegularTooltipFromFormatterOnly:!0},type:M.number},{id:"percentComplete",name:"% Complete",field:"percentComplete",type:M.number,editor:{model:Ne.slider,minValue:0,maxValue:100},formatter:G.percentCompleteBar,sortable:!0,filterable:!0,filter:{model:ee.slider,operator:">="},customTooltip:{position:"center",formatter:(e,t,n)=>"string"==typeof n&&n.includes("%")?n:`${n}%`,headerFormatter:void 0,headerRowFormatter:void 0}},{id:"start",name:"Start",field:"start",sortable:!0,type:M.date,outputType:M.dateIso,filterable:!0,filter:{model:ee.compoundDate},formatter:G.dateIso,editor:{model:Ne.date},customTooltip:{formatter:()=>"",asyncProcess:()=>new Promise(e=>{window.setTimeout(()=>e({}),this.serverApiDelay)}),asyncPostFormatter:this.tooltipFormatter.bind(this)}},{id:"finish",name:"Finish",field:"finish",sortable:!0,editor:{model:Ne.date,editorOptions:{range:{min:"today"}}},type:M.date,outputType:M.dateIso,formatter:G.dateIso,filterable:!0,filter:{model:ee.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:ee.singleSelect},exportWithFormatter:!1,formatter:G.checkmarkMaterial},{id:"prerequisites",name:"Prerequisites",field:"prerequisites",filterable:!0,formatter:(e,t,n)=>{if(n&&Array.isArray(n)){const r=n.map(s=>`Task ${s}`).join(", ");return`${r}`}return""},customTooltip:{useRegularTooltip:!0,maxWidth:500},exportWithFormatter:!0,sanitizeDataExport:!0,minWidth:100,sortable:!0,type:M.string,editor:{collectionAsync:new Promise(e=>{window.setTimeout(()=>{e(Array.from(Array(this.dataset.length).keys()).map(t=>({value:t,label:t,prefix:"Task",suffix:"days"})))},500)}),customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:Ne.multipleSelect},filter:{collectionAsync:new Promise(e=>{window.setTimeout(()=>{e(Array.from(Array(this.dataset.length).keys()).map(t=>({value:t,label:`Task ${t}`})))})}),customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:ee.multipleSelect,operator:te.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,t)=>{console.log(t.dataContext,t.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 HT,new xs],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,t,n)=>{this.editCommandQueue.push(n),n.execute()},enableCellMenu:!0,cellMenu:{onCommand:(e,t)=>this.executeCommand(e,t),onOptionSelected:(e,t)=>{const n=t&&t.dataContext;n&&"completed"in n&&(n.completed=t.item.option,this.angularGrid.gridService.updateItem(n))}}}}loadData(e){const t=[];for(let n=0;nCustom Tooltip - Header
\n
Column:
${r.name}
`}headerRowFormatter(e,t,n,r){return`
Custom Tooltip - Header Row (filter)
\n
Column:
${r.field}
`}tooltipFormatter(e,t,n,r,s,a){const h=G.checkmarkMaterial(e,t,s.effortDriven,r,s,a);return`
Custom Tooltip
\n
Id:
${s.id}
\n
Title:
${s.title}
\n
Effort Driven:
${h.outerHTML||""}
\n
Completion:
${this.loadCompletionIcons(s.percentComplete)}
\n `}tooltipTaskAsyncFormatter(e,t,n,r,s,a){return`
${`Task ${s.id} - (async tooltip)`}
\n
Completion:
${G.percentCompleteBarWithText(e,t,s.percentComplete,r,s,a).outerHTML||""}
\n
Lifespan:
${s.__params.lifespan.toFixed(2)}
\n
Ratio:
${s.__params.ratio.toFixed(2)}
\n `}loadCompletionIcons(e){let t="",n=0;e>5&&e<25?n=1:e>=25&&e<50?n=2:e>=50&&e<75?n=3:e>=75&&e<100?n=4:100===e&&(n=5);for(let r=0;r=3?"text-warning":"text-secondary"}">`}return t}};uM=Oe([We({template:'
\n

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

\n
\n\n
\n \n \n
\n\n \n \n
',encapsulation:Bt.None,styles:[hme()]})],uM);function uh(i,e,t){return e<=i&&i<=t}function hM(i){if(void 0===i)return{};if(i===Object(i))return i;throw TypeError("Could not convert argument to dictionary")}function oN(i){this.tokens=[].slice.call(i)}oN.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():-1},prepend:function(i){if(Array.isArray(i))for(var e=i;e.length;)this.tokens.unshift(e.pop());else this.tokens.unshift(i)},push:function(i){if(Array.isArray(i))for(var e=i;e.length;)this.tokens.push(e.shift());else this.tokens.push(i)}};function sN(i,e){if(i)throw TypeError("Decoder error");return e||65533}(function vme(){}).prototype={handler:function(i,e){}},function bme(){}.prototype={handler:function(i,e){}};var mM="utf-8";function gM(i,e){if(!(this instanceof gM))return new gM(i,e);if((i=void 0!==i?String(i).toLowerCase():mM)!==mM)throw new Error("Encoding not supported. Only utf-8 is supported");e=hM(e),this._streaming=!1,this._encoder=null,this._options={fatal:!!e.fatal},Object.defineProperty(this,"encoding",{value:"utf-8"})}function yme(i){var e=i.fatal,t=0,n=0,r=0,s=128,a=191;this.handler=function(d,h){if(-1===h&&0!==r)return r=0,sN(e);if(-1===h)return-1;if(0===r){if(uh(h,0,127))return h;if(uh(h,194,223))r=1,t=h-192;else if(uh(h,224,239))224===h&&(s=160),237===h&&(a=159),r=2,t=h-224;else{if(!uh(h,240,244))return sN(e);240===h&&(s=144),244===h&&(a=143),r=3,t=h-240}return t<<=6*r,null}if(!uh(h,s,a))return t=r=n=0,s=128,a=191,d.prepend(h),sN(e);if(s=128,a=191,t+=h-128<<6*(r-(n+=1)),n!==r)return null;var p=t;return t=r=n=0,p}}function Cme(i){i.fatal;this.handler=function(t,n){if(-1===n)return-1;if(uh(n,0,127))return n;var r,s;uh(n,128,2047)?(r=1,s=192):uh(n,2048,65535)?(r=2,s=224):uh(n,65536,1114111)&&(r=3,s=240);for(var a=[(n>>6*r)+s];r>0;){var d=n>>6*(r-1);a.push(128|63&d),r-=1}return a}}(function aN(i,e){if(!(this instanceof aN))return new aN(i,e);if((i=void 0!==i?String(i).toLowerCase():mM)!==mM)throw new Error("Encoding not supported. Only utf-8 is supported");e=hM(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,t){var n;n="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),t=hM(t),this._streaming||(this._decoder=new yme({fatal:this._fatal}),this._BOMseen=!1),this._streaming=!!t.stream;for(var a,r=new oN(n),s=[];!r.endOfStream()&&-1!==(a=this._decoder.handler(r,r.read()));)null!==a&&(Array.isArray(a)?s.push.apply(s,a):s.push(a));if(!this._streaming){do{if(-1===(a=this._decoder.handler(r,r.read())))break;null!==a&&(Array.isArray(a)?s.push.apply(s,a):s.push(a))}while(!r.endOfStream());this._decoder=null}return s.length&&-1!==["utf-8"].indexOf(this.encoding)&&!this._ignoreBOM&&!this._BOMseen&&(65279===s[0]?(this._BOMseen=!0,s.shift()):this._BOMseen=!0),function fme(i){for(var e="",t=0;t>10),56320+(1023&n)))}return e}(s)}},gM.prototype={encode:function(e,t){e=e?String(e):"",t=hM(t),this._streaming||(this._encoder=new Cme(this._options)),this._streaming=!!t.stream;for(var s,n=[],r=new oN(function gme(i){for(var e=String(i),t=e.length,n=0,r=[];n57343)r.push(s);else if(56320<=s&&s<=57343)r.push(65533);else if(55296<=s&&s<=56319)if(n===t-1)r.push(65533);else{var a=i.charCodeAt(n+1);if(56320<=a&&a<=57343){var d=1023&s,h=1023&a;r.push(65536+(d<<10)+h),n+=1}else r.push(65533)}n+=1}return r}(e));!r.endOfStream()&&-1!==(s=this._encoder.handler(r,r.read()));)Array.isArray(s)?n.push.apply(n,s):n.push(s);if(!this._streaming){for(;-1!==(s=this._encoder.handler(r,r.read()));)Array.isArray(s)?n.push.apply(n,s):n.push(s);this._encoder=null}return new Uint8Array(n)}};const wme={delimiter:kc.comma,filename:"export",format:Ii.csv,useUtf8WithBom:!0};class lN{constructor(){this._delimiter=",",this._exportQuoteWrapper="",this._fileFormat=Ii.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,t){if(this._grid=e,this._pubSubService=t.get("PubSubService"),this._locales=this._gridOptions&&this._gridOptions.locales||oe.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(t=>{this._pubSubService?.publish("onBeforeExportToTextFile",!0),this._exportOptions=en(!0,{},{...wme,...this._gridOptions.textExportOptions,...e}),this._delimiter=this._exportOptions.delimiterOverride||this._exportOptions.delimiter||"",this._fileFormat=this._exportOptions.format||Ii.csv;const n=this.getDataOutput();window.setTimeout(()=>{const r={filename:`${this._exportOptions.filename}.${this._fileFormat}`,format:this._fileFormat||Ii.csv,mimeType:this._exportOptions.mimeType||"text/plain",useUtf8WithBom:!this._exportOptions||!this._exportOptions.hasOwnProperty("useUtf8WithBom")||this._exportOptions.useUtf8WithBom};this.startDownloadFile({...r,content:n}),this._pubSubService?.publish("onAfterExportToTextFile",r),t(!0)},0)})}startDownloadFile(e){const t=P$(e.content);let n;n=e.format===Ii.csv?new gM("utf-8").encode(t):t;const r=new Blob([e.useUtf8WithBom?"\ufeff":"",n],{type:e.mimeType});if("function"==typeof navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(r,e.filename);else{const s=document.createElement("a"),a=URL.createObjectURL(r);s.textContent="download",s.href=a,s.setAttribute("download",e.filename),s.style.visibility="hidden",document.body.appendChild(s),s.click(),document.body.removeChild(s)}}getDataOutput(){const e=this._grid.getColumns()||[];let t=this._exportOptions.groupingColumnHeaderTitle;!t&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?t=this._translaterService.translate(`${Fl(this._gridOptions)}GROUP_BY`):t||(t=this._locales&&this._locales.TEXT_GROUP_BY),this._exportQuoteWrapper=this._fileFormat===Ii.csv?'"':"";let n="";const r=this._dataView.getGrouping();if(r&&Array.isArray(r)&&r.length>0?(this._hasGroupedItems=!0,n+=this._fileFormat===Ii.csv?`"${t}"${this._delimiter}`:`${t}${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)){n+=this._groupedColumnHeaders.map(a=>`${this._exportQuoteWrapper}${a.title}${this._exportQuoteWrapper}`).join(this._delimiter)+this._lineCarriageReturn}if(this._columnHeaders=this.getColumnHeaders(e)||[],this._columnHeaders&&Array.isArray(this._columnHeaders)&&this._columnHeaders.length>0){n+=this._columnHeaders.map(a=>_n(`${this._exportQuoteWrapper}${a.title}${this._exportQuoteWrapper}`)).join(this._delimiter)+this._lineCarriageReturn}return n+=this.getAllGridRowData(e,this._lineCarriageReturn),n}getAllGridRowData(e,t){const n=[],r=this._dataView.getLength();for(let s=0;s{let r="";r=n.columnGroupKey&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?this._translaterService.translate(n.columnGroupKey):n.columnGroup||"";const s=n.excludeFromExport||!1;(void 0===n.width||n.width>0)&&!s&&t.push({key:n.field||n.id,title:r||""})}),t}getColumnHeaders(e){const t=[];return e&&Array.isArray(e)&&e.forEach(n=>{let r="";r=(n.nameKey||n.nameKey)&&this._gridOptions.enableTranslate&&this._translaterService?.translate&&this._translaterService?.getCurrentLanguage?.()?this._translaterService.translate(n.nameKey||n.nameKey):Un(n.name||"","innerHTML")||Qs(n.field);const s=n.excludeFromExport||!1;(void 0===n.width||n.width>0)&&!s&&t.push({key:n.field||n.id,title:r||""})}),t}readRegularRowData(e,t,n){let r=0;const s=[],a=this._exportQuoteWrapper;let d=1;const h=this._dataView.getItemMetadata(t);for(let p=0,g=e.length;p1||"*"===d&&p>0||(d=k?.colspan??1),"*"!==d&&v.id in C&&(y=v.id)}if("*"===d&&p>0||!isNaN(d)&&+d>1&&v.id!==y)s.push(""),!isNaN(d)&&+d>1&&d--;else{let C=C9(t,p,v,n,this._grid,this._exportOptions);(v.sanitizeDataExport||this._exportOptions.sanitizeDataExport)&&(C=_n(C)),this._fileFormat===Ii.csv&&C&&(C=C.toString().replace(/"/gi,'""'));const k=v?.exportCsvForceToKeepAsString?"=":"";s.push(k+a+C+a)}r++}return s.join(this._delimiter)}readGroupedTitleRow(e){let t=_n(e.title);const n=this._exportQuoteWrapper;return t=ey(5*e.level)+t,this._fileFormat===Ii.csv&&(t=t.toString().replace(/"/gi,'""')),n+t+n}readGroupedTotalRow(e,t){const n=this._exportOptions.delimiter,r=this._exportOptions.format,s=this._exportOptions.groupingAggregatorRowText||"",a=this._exportQuoteWrapper,d=[`${a}${s}${a}`];return e.forEach(h=>{let p="";const g=h.excludeFromExport||!1;if(h.groupTotalsFormatter){const v=h.groupTotalsFormatter(t,h,this._grid);p=v instanceof HTMLElement?v.textContent||"":v}(h.sanitizeDataExport||this._exportOptions.sanitizeDataExport)&&(p=_n(p)),r===Ii.csv&&(p=p.toString().replace(/"/gi,'""')),(void 0===h.width||h.width>0)&&!g&&d.push(a+p+a)}),d.join(n)}}let fM=class{_darkMode=!1;title="Example 19: Draggable Grouping & Aggregators";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 ';angularGrid;columnDefinitions;dataset;dataviewObj;draggableGroupingPlugin;durationOrderByCount=!1;gridObj;gridOptions;processing=!1;selectedGroupingFields=["","",""];excelExportService=new xs;textExportService=new lN;constructor(){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 Ei_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"duration",name:"Duration",field:"duration",columnGroup:"Common Factor",width:70,sortable:!0,filterable:!0,editor:{model:Ne.float,decimal:2,valueStep:1,maxValue:1e4,alwaysSaveOnEnterKey:!0},filter:{model:ee.slider,operator:">="},type:M.number,groupTotalsFormatter:St.sumTotals,grouping:{getter:"duration",formatter:e=>`Duration: ${e.value} (${e.count} items)`,comparer:(e,t)=>this.durationOrderByCount?e.count-t.count:La.numeric(e.value,t.value,Li.asc),aggregators:[new Ei_Sum("duration"),new Ei_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"start",name:"Start",field:"start",columnGroup:"Period",minWidth:60,sortable:!0,filterable:!0,filter:{model:ee.compoundDate},formatter:G.dateIso,type:M.dateUtc,outputType:M.dateIso,exportWithFormatter:!0,grouping:{getter:"start",formatter:e=>`Start: ${e.value} (${e.count} items)`,aggregators:[new Ei_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"finish",name:"Finish",field:"finish",columnGroup:"Period",minWidth:60,sortable:!0,filterable:!0,filter:{model:ee.compoundDate},formatter:G.dateIso,type:M.dateUtc,outputType:M.dateIso,exportWithFormatter:!0,grouping:{getter:"finish",formatter:e=>`Finish: ${e.value} (${e.count} items)`,aggregators:[new Ei_Sum("cost")],aggregateCollapsed:!1,collapsed:!1}},{id:"cost",name:"Cost",field:"cost",columnGroup:"Analysis",width:90,sortable:!0,filterable:!0,filter:{model:ee.compoundInput},formatter:G.dollar,groupTotalsFormatter:St.sumTotalsDollar,type:M.number,grouping:{getter:"cost",formatter:e=>`Cost: ${e.value} (${e.count} items)`,aggregators:[new Ei_Sum("cost")],aggregateCollapsed:!0,collapsed:!0}},{id:"percentComplete",name:"% Complete",field:"percentComplete",columnGroup:"Analysis",minWidth:70,width:90,formatter:G.percentCompleteBar,type:M.number,filterable:!0,filter:{model:ee.compoundSlider},sortable:!0,groupTotalsFormatter:St.avgTotalsPercentage,grouping:{getter:"percentComplete",formatter:e=>`% Complete: ${e.value} (${e.count} items)`,aggregators:[new Ei_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:ee.singleSelect},formatter:G.checkmarkMaterial,grouping:{getter:"effortDriven",formatter:e=>`Effort-Driven: ${e.value?"True":"False"} (${e.count} items)`,aggregators:[new Ei_Sum("duration"),new Ei_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,t)=>{"toggle-preheader"===t.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,t)=>this.onGroupChanged(t),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 t=[];for(let n=0;nthis.selectedGroupingFields[t]="")}collapseAllGroups(){this.dataviewObj.collapseAllGroups()}expandAllGroups(){this.dataviewObj.expandAllGroups()}exportToExcel(){this.excelExportService.exportToExcel({filename:"Export",format:Ii.xlsx})}groupByDurationOrderByCount(e=!1){if(this.durationOrderByCount=e,this.clearGrouping(!1),this.draggableGroupingPlugin?.setDroppedGroups){this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups("duration");const t=e?[]:[{columnId:"duration",sortAsc:!0}];this.gridObj?.setSortColumns(t),this.gridObj?.invalidate()}}groupByDurationEffortDriven(){this.clearGrouping(!1),this.draggableGroupingPlugin?.setDroppedGroups&&(this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups(["duration","effortDriven"]),this.gridObj?.invalidate())}groupByFieldName(e,t){if(this.clearGrouping(),this.draggableGroupingPlugin&&this.draggableGroupingPlugin.setDroppedGroups){const n=this.selectedGroupingFields.filter(r=>""!==r);this.showPreHeader(),this.draggableGroupingPlugin.setDroppedGroups(n),this.gridObj.invalidate()}}onGroupChanged(e){const t=e&&e.caller||[],n=e&&e.groupColumns||[];Array.isArray(this.selectedGroupingFields)&&Array.isArray(n)&&n.length>0?this.selectedGroupingFields.forEach((r,s)=>this.selectedGroupingFields[s]=n[s]&&n[s].getter||""):0===n.length&&"remove-group"===t&&this.clearGroupingSelects()}onCellChanged(){this.angularGrid.dataView?.refresh()}showPreHeader(){this.gridObj.setPreHeaderPanelVisibility(!0)}selectTrackByFn(e,t){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.setTopHeaderPanelVisibility(!this.gridObj.getOptions().showTopHeaderPanel)}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 ctorParameters=()=>[]};fM=Oe([We({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
'}),Xt("design:paramtypes",[])],fM);var _me=z(530),Eme=z.n(_me);let vM=class{angularGrid;gridOptions;columnDefinitions;dataset;dragHelper;dragRows=[];dragMode="";ngOnInit(){this.defineGrids(),this.dataset=this.mockData()}angularGridReady(e){this.angularGrid=e}isBrowserDarkModeEnabled(){return window.matchMedia?.("(prefers-color-scheme: dark)").matches??!1}defineGrids(){this.columnDefinitions=[{id:"name",name:"Name",field:"name",width:300,cssClass:"cell-title",editor:{model:Ne.Text},validator:this.requiredFieldValidator},{id:"complete",name:"Complete",width:60,cssClass:"cell-effort-driven",field:"complete",cannotTriggerInsert:!0,formatter:G.checkmarkMaterial,editor:{model:Ne.Checkbox}}],this.gridOptions={enableAutoResize:!1,gridHeight:225,gridWidth:800,rowHeight:33,enableCellNavigation:!0,enableRowSelection:!0,enableRowMoveManager:!0,rowSelectionOptions:{selectActiveRow:!1},rowMoveManager:{columnIndexPosition:0,cancelEditOnDrag:!0,disableRowSelection:!0,hideRowMoveShadow:!1,onBeforeMoveRows:this.onBeforeMoveRows.bind(this),onMoveRows:this.onMoveRows.bind(this)}}}mockData(){return[{id:0,name:"Make a list",complete:!0},{id:1,name:"Check it twice",complete:!1},{id:2,name:"Find out who's naughty",complete:!1},{id:3,name:"Find out who's nice",complete:!1}]}onBeforeMoveRows(e,t){for(const n of t.rows)if(n===t.insertBefore||n===t.insertBefore-1)return e.stopPropagation(),!1;return!0}onMoveRows(e,t){const n=[],r=t.rows,s=t.insertBefore,a=this.dataset.slice(0,s),d=this.dataset.slice(s,this.dataset.length);r.sort((p,g)=>p-g);for(const p of r)n.push(this.dataset[p]);r.reverse();for(const p of r)pd==d))&&(r=[n],this.angularGrid.slickGrid?.setSelectedRows(r)),this.dragRows=r;const s=r.length,a=document.createElement("span");return a.className="drag-message",a.textContent=`Drag to Recycle Bin to delete ${s} selected row(s)`,this.dragHelper=a,document.body.appendChild(a),document.querySelector("#dropzone")?.classList.add("drag-dropzone"),a}handleOnDrag(e,t){if("recycle"!==this.dragMode)return;this.dragHelper instanceof HTMLElement&&(this.dragHelper.style.top=`${e.pageY+5}px`,this.dragHelper.style.left=`${e.pageX+5}px`);const n=document.querySelector("#dropzone");t.target instanceof HTMLElement&&("dropzone"===t.target.id||t.target===n)?n.classList.add("drag-hover"):n.classList.remove("drag-hover")}handleOnDragEnd(e,t){if("recycle"!=this.dragMode||(this.dragHelper?.remove(),document.querySelector("#dropzone")?.classList.remove("drag-dropzone","drag-hover"),"recycle"!=this.dragMode||"dropzone"!==t.target.id))return;const n=this.dragRows.sort().reverse();for(const r of n)this.dataset.splice(r,1);this.angularGrid.slickGrid?.invalidate(),this.angularGrid.slickGrid?.setSelectedRows([]),this.dataset=[...this.dataset]}requiredFieldValidator(e){return null!=e&&null!=e&&e.length?{valid:!0,msg:null}:{valid:!1,msg:"This is a required field"}}};vM=Oe([We({template:'
\n

\n Example 41: Drag & Drop\n \n \n code\n \n \n

\n\n
\n
    \n
  • Click to select, Ctrl-click to toggle selection(s).
  • \n
  • Drag one or more rows by the handle icon (1st column) to reorder.
  • \n
  • Drag one or more rows by selection (2nd or 3rd column) and drag to the recycle bin to delete.
  • \n
\n
\n\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n\n
\n
\n Recycle Bin\n
\n
\n
\n
\n',encapsulation:Bt.None,styles:[Eme()]})],vM);class xme{args;_lastInputEvent;inputElm;defaultValue;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||"",t=this.columnEditor?.title||"";this.inputElm=document.createElement("input"),this.inputElm.type="text",this.inputElm.className="editor-text",this.inputElm.placeholder=e,this.inputElm.title=t,this.args.container.appendChild(this.inputElm),this.inputElm.addEventListener("keydown",this.onKeydown.bind(this)),this.hasAutoCommitEdit&&this.inputElm.addEventListener("focusout",this.save.bind(this)),window.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,t){const n=this.validate(t);e[this.args.column.field]=n&&n.valid?t:""}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 t=void 0!==e?e:this.inputElm?.value;return this.validator(t,this.args)}return{valid:!0,msg:null}}}const Xj_timeout=5e3,Xj_jsonpCallback="callback",bM=i=>delete window[i],cN=i=>{const e=document.getElementById(i);e&&document.getElementsByTagName("head")[0].removeChild(e)};const Ame=function Dme(i,e={}){let t=i;const n=e.timeout||Xj_timeout,r=e.jsonpCallback||Xj_jsonpCallback;let s;return new Promise((a,d)=>{const h=e.jsonpCallbackFunction||`jsonp_${Date.now()}_${Math.ceil(1e5*Math.random())}`,p=`${r}_${h}`;window[h]=v=>{a({ok:!0,json:()=>Promise.resolve(v)}),s&&clearTimeout(s),cN(p),bM(h)},t+=-1===t.indexOf("?")?"?":"&";const g=document.createElement("script");g.setAttribute("src",`${t}${r}=${h}`),e.charset&&g.setAttribute("charset",e.charset),e.nonce&&g.setAttribute("nonce",e.nonce),e.referrerPolicy&&g.setAttribute("referrerPolicy",e.referrerPolicy),e.crossorigin&&g.setAttribute("crossorigin","true"),g.id=p,document.getElementsByTagName("head")[0].appendChild(g),s=setTimeout(()=>{d(new Error(`JSONP request to ${i} timed out`)),bM(h),cN(p),window[h]=()=>{bM(h)}},n),g.onerror=()=>{d(new Error(`JSONP request to ${i} failed`)),bM(h),cN(p),s&&clearTimeout(s)}})},Qj="assets/data/collection_100_numbers.json",eq="assets/data/countries.json",tq="assets/data/country_names.json",dN=(i,e)=>null!=i&&i.length?/^Task\s\d+$/.test(i)?{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"},Mme=(i,e,t)=>{if(t&&Array.isArray(t)){const r=t.map(s=>`Task ${s}`).join(", ");return`${r}`}return""};let yM=class{http;translate;title="Example 3: Editors / Delete";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 ';_commandQueue=[];angularGrid;columnDefinitions;gridOptions;dataset;gridObj;isAutoEdit=!0;alertWarning;updatedObject;selectedLanguage="en";duplicateTitleHeaderCount=1;constructor(e,t){this.http=e,this.translate=t}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,t)=>{console.log(t),this.alertWarning=`Editing: ${t.dataContext.title}`,this.angularGrid.gridService.highlightRow(t.row,1500),this.angularGrid.gridService.setSelectedRow(t.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:M.string,editor:{model:Ne.longText,required:!0,maxLength:12,editorOptions:{cols:42,rows:5,buttonTexts:{}},validator:dN},onCellChange:(e,t)=>{console.log(t),this.alertWarning=`Updated Title: ${t.dataContext.title}`}},{id:"title2",name:"Title, Custom Editor",field:"title",minWidth:70,filterable:!0,sortable:!0,type:M.string,editor:{model:xme,placeholder:"custom",validator:dN},filter:{model:rN,placeholder:"\u{1f50e}\ufe0e custom"}},{id:"duration",name:"Duration (days)",field:"duration",minWidth:100,filterable:!0,sortable:!0,formatter:G.complexObject,type:M.number,exportWithFormatter:!0,filter:{model:ee.slider,filterOptions:{hideSliderNumber:!1}},editor:{model:Ne.slider,minValue:0,maxValue:100}},{id:"complete",name:"% Complete",field:"percentComplete",minWidth:100,filterable:!0,formatter:G.multiple,type:M.number,editor:{model:Ne.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:te.notEqual},editorOptions:{maxHeight:400}},params:{formatters:[G.collectionEditor,G.percentCompleteBar]}},{id:"start",name:"Start",field:"start",minWidth:100,filterable:!0,filter:{model:ee.compoundDate},formatter:G.multiple,params:{formatters:[G.complexObject,G.dateIso]},exportWithFormatter:!0,sortable:!0,type:M.date,editor:{model:Ne.date}},{id:"finish",name:"Finish",field:"finish",minWidth:100,filterable:!0,sortable:!0,filter:{model:ee.compoundDate},formatter:G.dateIso,exportWithFormatter:!0,type:M.date,saveOutputType:M.dateUtc,editor:{model:Ne.date,editorOptions:{range:{min:"today"}}}},{id:"cityOfOrigin",name:"City of Origin",field:"cityOfOrigin",filterable:!0,minWidth:100,editor:{model:Ne.autocompleter,placeholder:"\u{1f50e}\ufe0e search city",editorOptions:{forceUserInput:!0,minLength:3,fetch:(e,t)=>{window.processJSONPResponse=a=>{t(a),(a=>{delete window[a]})("processJSONPResponse")};const s=document.createElement("script");s.src=`http://gd.geobytes.com/AutoCompleteCity?q=${e}&callback=processJSONPResponse`,document.getElementsByTagName("head")[0].appendChild(s)}}},filter:{model:ee.autocompleter,filterOptions:{minLength:3,fetch:(e,t)=>{Ame(`http://gd.geobytes.com/AutoCompleteCity?q=${e}`).then(n=>n.json()).then(n=>t(n)).catch(n=>console.log("invalid JSONP response",n))}}}},{id:"countryOfOrigin",name:"Country of Origin",field:"countryOfOrigin",formatter:G.complexObject,exportWithFormatter:!0,dataKey:"code",labelKey:"name",type:M.object,sortComparer:La.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:Ne.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get(eq)},filter:{model:ee.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get(eq)}},{id:"countryOfOriginName",name:"Country of Origin Name",field:"countryOfOriginName",filterable:!0,sortable:!0,minWidth:100,editor:{model:Ne.autocompleter,collectionAsync:this.http.get(tq)},filter:{model:ee.autocompleter,collectionAsync:this.http.get(tq)}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",minWidth:70,filterable:!0,type:M.boolean,filter:{model:ee.singleSelect,collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}]},formatter:G.checkmarkMaterial,editor:{model:Ne.checkbox}},{id:"prerequisites",name:"Prerequisites",field:"prerequisites",minWidth:100,filterable:!0,formatter:Mme,exportWithFormatter:!0,sanitizeDataExport:!0,sortable:!0,type:M.string,editor:{placeholder:"choose option",collectionAsync:this.http.get(Qj),collectionSortBy:{property:"label",sortDesc:!0},customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:Ne.multipleSelect,required:!0},filter:{collectionAsync:this.http.get(Qj),collectionSortBy:{property:"label",sortDesc:!0},customStructure:{label:"label",value:"value",labelPrefix:"prefix"},collectionOptions:{separatorBetweenTextLabels:" "},model:ee.multipleSelect,operator:te.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,t,n)=>{this._commandQueue.push(n),n.execute()},i18n:this.translate},this.dataset=this.mockData(100)}addItem(){const e=this.dataset.length,t=this.mockData(1,e);window.setTimeout(()=>{const n=this.columnDefinitions.find(r=>"prerequisites"===r.id);if(n){const r=n.filter.collectionAsync,s=n.editor.collection;Array.isArray(s)&&(this.angularGrid.gridService.addItem(t[0]),s.push({value:e,label:e,prefix:"Task"}),r instanceof mi&&r.next(s))}},250)}deleteItem(){const e=this.columnDefinitions.find(t=>"prerequisites"===t.id);if(e){const t=e.filter.collectionAsync,n=e.filter.collection;if(Array.isArray(n)){const r=this.sortCollectionDescending(n).pop();this.angularGrid.gridService.deleteItemById(r.value),t instanceof mi&&t.next(n)}}}sortCollectionDescending(e){return e.sort((t,n)=>t.value-n.value)}mockData(e,t=0){const n=[];for(let r=t;r[{type:Mi},{type:zt}]};yM=Oe([We({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
'}),Xt("design:paramtypes",[Mi,zt])],yM);let CM=class{_darkMode=!1;title="Example 37: Footer Totals Row";subTitle="Display a totals row at the end of the grid.";columnDefinitions=[];gridOptions;dataset;angularGrid;angularGridReady(e){this.angularGrid=e,this.updateAllTotals()}ngOnInit(){this.defineGrid(),this.dataset=this.loadData(100)}ngOnDestroy(){document.querySelector(".panel-wm-content").classList.remove("dark-mode"),document.querySelector("#demo-container").dataset.bsTheme="light"}defineGrid(){const e=[];for(let t=0;t<10;t++)e.push({id:t,name:String.fromCharCode(65+t),field:String(t),type:M.number,width:58,editor:{model:Ne.integer}});this.columnDefinitions=e,this.gridOptions={autoEdit:!0,autoCommitEdit:!0,editable:!0,darkMode:this._darkMode,gridHeight:450,gridWidth:800,enableCellNavigation:!0,rowHeight:30,createFooterRow:!0,showFooterRow:!0,footerRowHeight:28}}loadData(e){const t=[];for(let n=0;n\n

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

\n
\n\n \n \n
'})],CM);var Rme=z(674),Pme=z.n(Rme);const Bme=(i,e,t,n,r,s)=>{const a=function Nme(i,e,t){const n=t.getOptions(),r=e.editor;return n.editable&&r}(0,n,s);t=t??"";const d=document.createElement("div");return d.className="editing-field",t instanceof HTMLElement?d.appendChild(t):d.textContent=t,a?d:t};class uN{field;taxRate;_sum=0;_type="sum";constructor(e,t){this.field=e,this.taxRate=t}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 t=0;e.taxable&&(t=e.price*e.qty*(this.taxRate/100)),this._sum+=e.price*e.qty+t}}storeResult(e){(!e||void 0===e[this._type])&&(e[this._type]={}),e[this._type][this.field]=this._sum}}let wM=class{columnDefinitions=[];gridOptions;dataset=[];angularGrid;excelExportService;isDataGrouped=!1;taxRate=7.5;constructor(){this.excelExportService=new xs}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:M.number,editor:{model:Ne.float,decimal:2},sortable:!0,width:70,filterable:!0,formatter:G.dollar,groupTotalsFormatter:St.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:M.number,groupTotalsFormatter:St.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:Ne.integer},sortable:!0,width:60,filterable:!0},{id:"subTotal",name:"Sub-Total",field:"subTotal",cssClass:"text-sub-total",type:M.number,sortable:!0,width:70,filterable:!0,exportWithFormatter:!1,formatter:G.multiple,groupTotalsFormatter:St.sumTotalsDollarBold,params:{formatters:[(e,t,n,r,s)=>s.price*s.qty,G.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:G.checkmarkMaterial,exportCustomFormatter:(e,t,n)=>n?"\u2713":"",excelExportOptions:{style:{alignment:{horizontal:"center"}}}},{id:"taxes",name:"Taxes",field:"taxes",cssClass:"text-taxes",type:M.number,sortable:!0,width:70,filterable:!0,formatter:G.multiple,groupTotalsFormatter:St.sumTotalsDollarBold,params:{formatters:[(e,t,n,r,s)=>s.taxable?s.price*s.qty*(this.taxRate/100):null,G.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:M.number,sortable:!0,width:70,filterable:!0,cssClass:"text-total",formatter:G.multiple,groupTotalsFormatter:St.sumTotalsDollarBold,params:{formatters:[(e,t,n,r,s)=>{let a=s.price*s.qty;return s.taxable&&(a+=a*(this.taxRate/100)),a},G.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:Bme,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,t)=>{const n=e.getStyleSheet().createFormat({font:{size:18,fontName:"Calibri",bold:!0,color:"FFFFFFFF"},alignment:{wrapText:!0,horizontal:"center"},fill:{type:"pattern",patternType:"solid",fgColor:"FF203764"}});t.setRowInstructions(0,{height:40});const s=this.isDataGrouped?"H1":"G1";t.mergeCells("A1",s),t.data.push([{value:"Grocery Shopping List",metadata:{style:n.id}}])}}}}invalidateAll(){this.angularGrid.dataView?.refresh(),this.angularGrid.slickGrid?.invalidate()}updateTaxRate(){this.isDataGrouped&&this.groupByTaxable(),this.invalidateAll()}exportToExcel(){this.excelExportService.exportToExcel()}excelGroupCellParser(e,{columnDef:t,excelFormatId:n,dataRowIdx:r}){const d=this.angularGrid.slickGrid?.getColumnIndex("price")||0,h=this.angularGrid.slickGrid?.getColumnIndex("qty")||0,p=this.angularGrid.slickGrid?.getColumnIndex("taxes")||0,g=this.angularGrid.slickGrid?.getColumnIndex("subTotal")||0,v=this.angularGrid.slickGrid?.getColumnIndex("total")||0,y=e?.group?.count||0,C=`${String.fromCharCode(65+d-0)}`,k=`${String.fromCharCode(65+h-0)}`,E=`${String.fromCharCode(65+g-0)}`,x=`${String.fromCharCode(65+p-0)}`,S=`${String.fromCharCode(65+v-0)}`;let D="";switch(t.id){case"price":D=C;break;case"qty":D=k;break;case"subTotal":D=E;break;case"taxes":D=x;break;case"total":D=S}return{value:`SUM(${D}${r+3-y}:${D}${r+3-1})`,metadata:{type:"formula",style:n}}}excelRegularCellParser(e,{columnDef:t,excelFormatId:n,dataRowIdx:r,dataContext:s}){const a=this.isDataGrouped?0:1,h=this.angularGrid.slickGrid?.getColumnIndex("price")||0,p=this.angularGrid.slickGrid?.getColumnIndex("qty")||0,g=this.angularGrid.slickGrid?.getColumnIndex("taxes")||0,v=`${String.fromCharCode(65+h-a)}${r+3}`,y=`${String.fromCharCode(65+p-a)}${r+3}`,C=`${String.fromCharCode(65+g-a)}${r+3}`;let k="";switch(t.id){case"subTotal":k=`${v}*${y}`;break;case"taxes":k=s.taxable?`${v}*${y}*${this.taxRate/100}`:"";break;case"total":k=`(${v}*${y})+${C}`}return{value:k,metadata:{type:"formula",style:n}}}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:n=>`Taxable: (${n.count} items)`,comparer:(n,r)=>r.value-n.value,aggregators:[new Ei_Sum("price"),new Ei_Sum("qty"),new uN("subTotal",this.taxRate),new uN("taxes",this.taxRate),new uN("total",this.taxRate)],aggregateCollapsed:!1,lazyTotalsCalculation:!1}),this.angularGrid?.dataView?.refresh()}static ctorParameters=()=>[]};wM=Oe([We({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:Bt.None,styles:[Pme()]}),Xt("design:paramtypes",[])],wM);const Vme=(i,e,t)=>t?'':{text:'',addClasses:"lightblue",toolTip:"Freezing"},zme=(i,e,t)=>`\n \n `;let kM=class{title="Example 2: Grid with Formatters";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 ';columnDefinitions=[];gridOptions;dataset;angularGrid;resizerPaused=!1;angularGridReady(e){this.angularGrid=e}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,type:M.string,width:70},{id:"phone",name:"Phone Number using mask",field:"phone",sortable:!0,type:M.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:M.number,minWidth:90,exportWithFormatter:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,type:M.number,sortable:!0,minWidth:100},{id:"percent2",name:"% Complete",field:"percentComplete2",formatter:G.progressBar,type:M.number,sortable:!0,minWidth:100},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,type:M.date,minWidth:90,exportWithFormatter:!0},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,type:M.date,minWidth:90,exportWithFormatter:!0},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:Vme,type:M.number,sortable:!0,minWidth:100},{id:"completed",name:"Completed",field:"completed",type:M.number,sortable:!0,minWidth:100,formatter:zme,onCellClick:(t,n)=>{this.toggleCompletedProperty(n?.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 t=0;t<500;t++){const n=2e3+Math.floor(10*Math.random()),r=Math.floor(11*Math.random()),s=Math.floor(29*Math.random()),a=Math.round(100*Math.random());e[t]={id:t,title:"Task "+t,phone:this.generatePhoneNumber(),duration:t%33==0?null:100*Math.random()+"",percentComplete:a,percentComplete2:a,percentCompleteNumber:a,start:new Date(n,r,s),finish:new Date(n,r+1,s),effortDriven:t%5==0}}this.dataset=e}generatePhoneNumber(){let e="";for(let t=0;t<10;t++)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,window.setTimeout(()=>{this.angularGrid.gridService.updateItemById(e.id,e,{highlightRow:!1})},250))}};kM=Oe([We({template:'
\n

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

\n
\n\n \n\n \n \n
'})],kM);var $me=z(758),Wme=z.n($me);let _M=class{title="Example 20: Pinned (frozen) Columns/Rows";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 ';angularGrid;columnDefinitions;gridOptions;dataset;frozenColumnCount=2;frozenRowCount=3;isFrozenBottom=!1;gridObj;slickEventHandler;constructor(){this.slickEventHandler=new Pi}ngOnInit(){this.prepareDataGrid()}ngOnDestroy(){this.slickEventHandler.unsubscribeAll()}angularGridReady(e){this.angularGrid=e,this.gridObj=e.slickGrid,this.slickEventHandler.subscribe(this.gridObj.onMouseEnter,t=>this.colorizeHoveringRow(t,!0)),this.slickEventHandler.subscribe(this.gridObj.onMouseLeave,t=>this.colorizeHoveringRow(t,!1))}colorizeHoveringRow(e,t){const n=this.gridObj.getCellFromEvent(e),r=t?[n?.row??0]:[];this.gridObj.setSelectedRows(r),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:M.number,filterable:!0,filter:{model:ee.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:ee.compoundSlider},editor:{model:Ne.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:ee.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 t=0;t<500;t++)e[t]={id:t,title:"Task "+t,cost:t%33==0?null:1e4*Math.random(),duration:t%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:t%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,t,n,r,s){const a=this.isNullUndefinedOrEmpty(s.cost)?"n/a":wn(s.cost,0,2,!1,"$","",".",",");let d="n/a";return!this.isNullUndefinedOrEmpty(s.duration)&&s.duration>=0&&(d=`${s.duration} ${s.duration>1?"days":"day"}`),`${a} | ${d}`}isNullUndefinedOrEmpty(e){return""===e||null==e}onValidationError(e,t){alert(t.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 ctorParameters=()=>[]};_M=Oe([We({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:Bt.None,styles:[Wme()]}),Xt("design:paramtypes",[])],_M);class Am{constructor(e,t){if(this.queryFnName=e,this.head=[],"string"==typeof t)this.alias=t;else if("object"==typeof t)this.filter(t);else{if(void 0===t&&2===arguments.length)throw new TypeError('You have passed undefined as Second argument to "Query"');if(void 0!==t)throw new TypeError(`Second argument to "Query" should be an alias name(String) or filter arguments(Object). What was passed is: ${t}`)}}filter(e){for(const t of Object.keys(e)){if("function"==typeof e[t])continue;const n=this.getGraphQLValue(e[t]);"{}"!==n&&this.head.push(`${t}:${n}`)}return this}find(...e){if(!e||!Array.isArray(e)||0===e.length)throw new TypeError("find value can not be >>falsy<<");const t=1===e.length&&Array.isArray(e[0])?e[0]:e;return this.body=this.parceFind(t),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((n,r)=>{const s=e[r];if(s instanceof Am)return s.toString();if(Array.isArray(s)||"object"!=typeof s){if("string"==typeof s)return s;throw new RangeError(`cannot handle Find value of ${s}`)}{const a=Object.keys(s);if(1!==a.length)throw new RangeError(`Alias objects should only have one value. was passed: ${JSON.stringify(s)}`);const d=a[0],h=s[d];return Array.isArray(h)?new Am(d).find(h):`${d} : ${h} `}}).join(",")}getGraphQLValue(e){return"string"==typeof e?e=JSON.stringify(e):Array.isArray(e)?e=`[${e=e.map(t=>this.getGraphQLValue(t)).join()}]`:e instanceof Date?e=JSON.stringify(e):null!==e&&"object"==typeof e&&(e=this.objectToString(e)),e}objectToString(e){const t=[];for(const n of Object.keys(e))"function"!=typeof e[n]&&t.push(`${n}:${this.getGraphQLValue(e[n])}`);return`{${t.join()}}`}}class hN{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,t,n,r){this._grid=n,this.options=e||{datasetName:""},this.pagination=t,this._datasetIdPropName=this._gridOptions.datasetIdPropertyName||"id","function"==typeof n?.getColumns&&(this._columnDefinitions=r?.allColumns??n.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(g=>!g.excludeFromQuery);const t=new Am(`query ${this.options.operationName??""}`),n=new Am(this.options.datasetName),r=new Am("nodes"),s=[];if(Array.isArray(e))for(const g of e)g.excludeFieldFromQuery||s.push(g.field),g.fields&&s.push(...g.fields);-1===s.indexOf(this._datasetIdPropName)&&s.unshift(this._datasetIdPropName);const a=this.buildFilterQuery(s);let d=[];if(!1!==this._gridOptions.enablePagination||this.options.infiniteScroll){if(this.options.useCursor){const g=new Am("edges"),v=new Am("pageInfo");v.find("hasNextPage","hasPreviousPage","endCursor","startCursor"),r.find(a),g.find(["cursor"]),d=["totalCount",r,v,g]}else r.find(a),d=["totalCount",r];n.find(d)}else n.find(a);let h={};if(!1!==this._gridOptions.enablePagination||this.options.infiniteScroll)if(h={},this.options.useCursor&&this.options.paginationOptions)h={...this.options.paginationOptions};else{const g=this.options?.paginationOptions;h.first=this.options?.infiniteScroll?.fetchSize??this.options?.paginationOptions?.first??this.pagination?.pageSize??this.defaultPaginationOptions.first,h.offset=g&&"offset"in g?+g.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 g of this.options.extraQueryArguments)h[g.field]=g.value;n.filter(h),t.find(n);return this.trimDoubleQuotesOnEnumField(t.toString(),["direction:","field:","operator:"],this.options.keepArgumentFieldDoubleQuotes||!1)}postProcess(e){e.data&&this.pagination&&(this.pagination.totalItems=e.data[this.getDatasetName()]?.totalCount||0)}buildFilterQuery(e){const t=(r={},s)=>{const a=s.shift();return r[a]=s.length?t(r[a]??{},s):null,r},n=e.reduce((r,s)=>t(r,s.split(".")),{});return JSON.stringify(n).replace(/"|:|null/g,"").replace(/^\{/,"").replace(/\}$/,"")}clearFilters(){this._currentFilters=[],this.updateOptions({filteringOptions:[]})}clearSorters(){this._currentSorters=[],this.updateOptions({sortingOptions:[]})}getInitPaginationOptions(){const e=this.options?.infiniteScroll?.fetchSize??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||!("enablePagination"in this._gridOptions)||this.options?.infiniteScroll)&&this.updateOptions({paginationOptions:e})}updateOptions(e){this.options={...this.options,...e}}processOnFilterChanged(e,t){if(void 0===this._gridOptions.backendServiceApi)throw new Error('Something went wrong in the GraphqlService, "backendServiceApi" is not initialized');if(this._currentFilters=this.castFilterToColumnFilters(t.columnFilters),!t||!t.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(t.columnFilters,!1),this.resetPaginationOptions(),this.buildQuery()}processOnPaginationChanged(e,t){const n=+(this.options?.infiniteScroll?.fetchSize||t.pageSize||(this.pagination?this.pagination.pageSize:20));return"first"in t||"last"in t?this.updatePagination(t.newPage,n,t):this.updatePagination(t.newPage,n),this.buildQuery()}processOnSortChanged(e,t){const n=t.multiColumnSort?t.sortCols:new Array({columnId:t.sortCol?.id??"",sortCol:t.sortCol,sortAsc:t.sortAsc});return this.updateSorters(n),this.options?.infiniteScroll&&this.updateOptions({paginationOptions:{offset:0}}),this.buildQuery()}updateFilters(e,t){const n=[];let r;t&&(this._currentFilters=this.castFilterToColumnFilters(e));for(const s in e)if(s in e){const a=e[s];let d;if(d=t&&Array.isArray(this._columnDefinitions)?this._columnDefinitions.find(I=>I.id===a.columnId):a.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=_n(h.innerHTML));const p=d.type||M.string;let g=a?.searchTerms??[],v=Array.isArray(g)&&1===g.length?g[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||a.verbatimSearchTerms){n.push({field:Un(h),operator:a.operator,value:JSON.stringify(a.searchTerms)});continue}v=null==v?"":`${v}`;const C=!1!==(d.autoParseInputFilterOperator??this._gridOptions.autoParseInputFilterOperator)?v.match(/^((.*[^\\*\r\n])[*]{1}(.*[^*\r\n]))|^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/)||[]:[v,"","","","",v,""],k=C?.[2]||"",E=C?.[3]||"";let x=a.operator||C?.[4];r=C?.[1]||C?.[5]||"";const S=C?.[6]||"*z"===x||x===te.endsWith?"*":"";if(h&&""===r&&0===g.length)continue;let D;if("function"==typeof this.options?.filterQueryOverride&&(D=this.options?.filterQueryOverride({fieldName:Un(h),columnDef:d,operator:x,columnFilterOperator:a.operator,searchValues:g,grid:this._grid})),void 0!==D)n.push(D);else{if(k&&E?(g=[k,E],x=te.startsWithEndsWith):Array.isArray(g)&&1===g.length&&"string"==typeof g[0]&&g[0].indexOf("..")>=0&&(x!==te.rangeInclusive&&x!==te.rangeExclusive&&(x=this._gridOptions.defaultFilterRangeOperator??te.rangeInclusive),g=g[0].split("..",2),""===g[0]?(x=x===te.rangeInclusive?"<=":x===te.rangeExclusive?"<":x,g=g.slice(1),r=g[0]):""===g[1]&&(x=x===te.rangeInclusive?">=":x===te.rangeExclusive?">":x,g=g.slice(0,1),r=g[0])),"string"==typeof r&&("*"===x||"a*"===x||"*z"===x||"*"===S)&&(x="*"===x||"*z"===x?"EndsWith":"StartsWith"),!x&&d.filter&&d.filter.operator&&(x=d.filter.operator),!x&&Array.isArray(g)&&2===g.length&&g[0]&&g[1]&&(x=this._gridOptions.defaultFilterRangeOperator),(x===te.rangeInclusive||x===te.rangeExclusive)&&Array.isArray(g)&&1===g.length&&p===M.date&&(x=te.equal),r=this.normalizeSearchValue(p,r),Array.isArray(g)&&g.forEach((I,L)=>{g[L]=this.normalizeSearchValue(p,g[L])}),x===te.startsWithEndsWith&&Array.isArray(g)&&2===g.length){n.push({field:Un(h),operator:te.startsWith,value:k}),n.push({field:Un(h),operator:te.endsWith,value:E});continue}if(g?.length>1&&("IN"===x||"NIN"===x||"NOT_IN"===x))r=g.join(",");else if(2===g?.length&&(x===te.rangeExclusive||x===te.rangeInclusive)){n.push({field:Un(h),operator:x===te.rangeInclusive?"GE":"GT",value:g[0]}),n.push({field:Un(h),operator:x===te.rangeInclusive?"LE":"LT",value:g[1]});continue}x||(x=L_(p)),n.push({field:Un(h),operator:M$(x),value:r})}}this.updateOptions({filteringOptions:n})}updatePagination(e,t,n){this._currentPagination={pageNumber:e,pageSize:t};let r={};if(this.options?.useCursor)if(n&&n instanceof Object){const{pageSize:s,newPage:a,...d}=n;r=d}else r={first:t};else r={first:t,offset:e>1?(e-1)*t:0};this.updateOptions({paginationOptions:r})}updateSorters(e,t){let n=[];const r=[];if(!e&&t){n=t,n.forEach(a=>a.direction=a.direction.toUpperCase());const s=n.map(a=>{const d=this._columnDefinitions?.find(h=>h.id===a.columnId);return r.push({field:d?(d.queryFieldSorter||d.queryField||d.field)+"":a.columnId+"",direction:a.direction}),d?{columnId:a.columnId,sortAsc:a.direction.toUpperCase()===ar.ASC}:null});Array.isArray(s)&&this._grid&&this._grid.setSortColumns(s.filter(a=>a)||[])}else if(e&&!t&&Array.isArray(e)&&e.length>0)for(const s of e)if(s&&s.sortCol){n.push({columnId:s.sortCol.id+"",direction:s.sortAsc?ar.ASC:ar.DESC});const a=(s.sortCol.queryFieldSorter||s.sortCol.queryField||s.sortCol.field||"")+"";a&&r.push({field:a,direction:s.sortAsc?ar.ASC:ar.DESC})}this._currentSorters=n,this.updateOptions({sortingOptions:r})}trimDoubleQuotesOnEnumField(e,t,n){const r='s?((field:s*)?".*?")';let s=t.join(r+"|");s+=r;const a=new RegExp(s,"g");return e.replace(a,d=>{let h=!0;return d.startsWith("field:")&&n&&(h=!1),h?d.replace(/"/g,""):d})}castFilterToColumnFilters(e){const t="object"==typeof e?Object.keys(e).map(n=>e[n]):e;return Array.isArray(t)?t.map(n=>{const r={columnId:n.columnId||""};return n.operator&&(r.operator=n.operator),n.targetSelector&&(r.targetSelector=n.targetSelector),Array.isArray(n.searchTerms)&&(r.searchTerms=n.searchTerms),r}):[]}normalizeSearchValue(e,t){switch(e){case M.date:case M.string:case M.text:case M.readonly:"string"==typeof t&&(t=t.replace(/'/g,"''"));break;case M.integer:case M.number:case M.float:"string"==typeof t&&((""===(t=(t=(t=(t=(t=t.replace(/\.\./g,".")).replace(/\.+$/g,"")).replace(/^\.+/g,"0.")).replace(/^-+\.+/g,"-0.")).replace(/(?!^-)[^\d.]/g,""))||"-"===t)&&(t="0"))}return t}}const pN="users",rq="gridStateGraphql";let EM=class{cd;translate;title="Example 6: Grid connected to Backend Server with GraphQL";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 ';subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset=[];metrics;isWithCursor=!1;graphqlQuery="";processing=!0;status={text:"processing...",class:"alert alert-danger"};selectedLanguage;serverWaitDelay=250;constructor(e,t){this.cd=e,this.translate=t;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"name",field:"name",nameKey:"NAME",width:60,columnGroupKey:"CUSTOMER_INFORMATION",type:M.string,sortable:!0,filterable:!0,filter:{model:ee.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:ee.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:ee.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:M.number,columnGroupKey:"BILLING.INFORMATION",filterable:!0,sortable:!0,filter:{model:ee.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:M.date,columnGroupKey:"BILLING.INFORMATION",filterable:!0,filter:{model:ee.dateRange,filterShortcuts:[{titleKey:"NEXT_20_DAYS",iconCssClass:"mdi mdi-calendar",searchTerms:[vr(new Date,"YYYY-MM-DD"),vr(H_(new Date,20),"YYYY-MM-DD")]}]}}];const e=(new Date).getFullYear(),t=`${e}-01-01`,n=`${e}-02-15`;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:(r,s)=>{"reset-grid"===s.command&&(this.angularGrid.gridService.resetGrid(this.columnDefinitions),localStorage[rq]=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:te.equal},{columnId:"name",searchTerms:["Joh*oe"],operator:te.startsWithEndsWith},{columnId:"company",searchTerms:["xyz"],operator:"IN"},{columnId:"finish",searchTerms:[t,n],operator:te.rangeInclusive}],sorters:[{columnId:"name",direction:"asc"},{columnId:"company",direction:ar.DESC}],pagination:{pageNumber:this.isWithCursor?1:2,pageSize:20}},backendServiceApi:{service:new hN,options:{datasetName:pN,addLocaleIntoQuery:!0,extraQueryArguments:[{field:"userId",value:123}],filterQueryOverride:({fieldName:r,columnDef:s,columnFilterOperator:a,searchValues:d})=>{if(a===te.custom&&"name"===s?.id)return{field:r,operator:"Like",value:d[0]}},useCursor:this.isWithCursor,keepArgumentFieldDoubleQuotes:!0},preProcess:()=>this.displaySpinner(!0),process:r=>this.getCustomerApiCall(r),postProcess:r=>{this.metrics=r.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 t;if(this.angularGrid?.paginationService){const{paginationService:r}=this.angularGrid,s=r._initialized?r.getCurrentPageNumber():1,a=String.fromCharCode(65+s-1),d=String.fromCharCode(a.charCodeAt(0)+1);t={hasPreviousPage:0===r.dataFrom,hasNextPage:100===r.dataTo,startCursor:a,endCursor:d}}else t={hasPreviousPage:!1,hasNextPage:!0,startCursor:"A",endCursor:"B"};const n={data:{[pN]:{nodes:[],totalCount:100,pageInfo:t}}};return new Promise(r=>{window.setTimeout(()=>{this.graphqlQuery=this.angularGrid.backendService.buildQuery(),this.isWithCursor&&this.angularGrid?.paginationService?.setCursorPageInfo(n.data[pN].pageInfo),r(n)},this.serverWaitDelay)})}goToFirstPage(){this.angularGrid.paginationService.goToFirstPage()}goToLastPage(){this.angularGrid.paginationService.goToLastPage()}gridStateChanged(e){console.log("GraphQL Example, Grid State changed:: ",e),localStorage[rq]=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=(new Date).getFullYear(),t=`${e}-01-01`,n=`${e}-02-15`;this.angularGrid.filterService.updateFilters([{columnId:"gender",searchTerms:["female"],operator:te.equal},{columnId:"name",searchTerms:["Jane"],operator:te.startsWith},{columnId:"company",searchTerms:["acme"],operator:"IN"},{columnId:"billingAddressZip",searchTerms:["11"],operator:te.greaterThanOrEqual},{columnId:"finish",searchTerms:[t,n],operator:te.rangeInclusive}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"billingAddressZip",direction:"DESC"},{columnId:"company",direction:"ASC"}])}resetToOriginalPresets(){const e=(new Date).getFullYear(),t=`${e}-01-01`,n=`${e}-02-15`;this.angularGrid.filterService.updateFilters([{columnId:"gender",searchTerms:["male"],operator:te.equal},{columnId:"name",searchTerms:["Joh*oe"],operator:te.startsWithEndsWith},{columnId:"company",searchTerms:["xyz"],operator:"IN"},{columnId:"finish",searchTerms:[t,n],operator:te.rangeInclusive}]),this.angularGrid.sortService.updateSorting([{columnId:"name",direction:"asc"},{columnId:"company",direction:ar.DESC}]),window.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 t=this.gridOptions.backendServiceApi.service;this.angularGrid.paginationService.setCursorBased(e.useCursor),t.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 ctorParameters=()=>[{type:bn},{type:zt}]};EM=Oe([We({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
'}),Xt("design:paramtypes",[bn,zt])],EM);var Yme=z(612),Zme=z.n(Yme);const mN="https://countries.trevorblades.com/";let FM=class{http;title="Example 27: GraphQL Basic API without Pagination";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 ';angularGrid;columnDefinitions;gridOptions;dataset=[];metrics;graphqlQuery="";processing=!0;status={text:"processing...",class:"alert alert-danger"};isDataLoaded=!1;constructor(e){this.http=e}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:ee.multipleSelect,collectionAsync:this.getLanguages(),operator:te.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:ee.multipleSelect,collectionAsync:this.getLanguages(),operator:te.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:ee.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 hN,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(mN,{query:e})}getContinents(){return this.http.post(mN,{query:"query { continents { code, name }}"})}getLanguages(){return this.http.post(mN,{query:"query { languages { code, name, native }}"})}static ctorParameters=()=>[{type:Mi}]};FM=Oe([We({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:Bt.None,styles:[Zme()]}),Xt("design:paramtypes",[Mi])],FM);let xM=class{title="Example 14: Grouping & Aggregators";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 ';angularGrid;columnDefinitions;gridOptions;dataset;gridObj;dataviewObj;processing=!1;excelExportService=new xs;textExportService=new lN;ngOnInit(){this.initializeGrid()}initializeGrid(){const e=document.createElement("div"),t=document.createElement("button"),n=document.createElement("span");n.className="mdi mdi-help-circle no-padding",t.dataset.test="col1-hello-btn",t.className="btn btn-outline-secondary btn-xs btn-icon ms-1",t.textContent="Click me",t.title="simple column header test with a button click listener",t.addEventListener("click",()=>alert("Hello World")),t.appendChild(n),e.appendChild(document.createTextNode("Id ")),e.appendChild(t),this.columnDefinitions=[{id:"sel",name:e,field:"num",type:M.number,columnPickerLabel:"Custom Label",width:140,maxWidth:150,excludeFromExport:!0,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:ee.slider,operator:">="},sortable:!0,type:M.number,groupTotalsFormatter:St.sumTotals,params:{groupFormatterPrefix:"Total: "}},{id:"%",name:"% Complete",field:"percentComplete",minWidth:70,width:90,formatter:G.percentCompleteBar,filterable:!0,filter:{model:ee.compoundSlider},sortable:!0,type:M.number,groupTotalsFormatter:St.avgTotalsPercentage,params:{groupFormatterPrefix:"Avg: "}},{id:"start",name:"Start",field:"start",minWidth:60,filterable:!0,filter:{model:ee.compoundDate},sortable:!0,type:M.dateIso,formatter:G.dateIso,exportWithFormatter:!0},{id:"finish",name:"Finish",field:"finish",minWidth:60,filterable:!0,filter:{model:ee.compoundDate},sortable:!0,type:M.dateIso,formatter:G.dateIso,exportWithFormatter:!0},{id:"cost",name:"Cost",field:"cost",minWidth:70,width:80,sortable:!0,filterable:!0,filter:{model:ee.compoundInputNumber},type:M.number,formatter:G.currency,groupTotalsFormatter:St.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:ee.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 t=[];for(let n=0;n`Duration: ${e.value} (${e.count} items)`,aggregators:[new Ei_Avg("percentComplete"),new Ei_Sum("cost")],comparer:(e,t)=>La.numeric(e.value,t.value,Li.asc),aggregateCollapsed:!1,lazyTotalsCalculation:!0}),this.gridObj.invalidate()}groupByDurationOrderByCount(e){this.angularGrid.filterService.setSortColumnIcons([]),this.dataviewObj.setGrouping({getter:"duration",formatter:t=>`Duration: ${t.value} (${t.count} items)`,comparer:(t,n)=>t.count-n.count,aggregators:[new Ei_Avg("percentComplete"),new Ei_Sum("cost")],aggregateCollapsed:e,lazyTotalsCalculation:!0}),this.gridObj.invalidate()}groupByDurationEffortDriven(){this.angularGrid.filterService.setSortColumnIcons([{columnId:"duration",sortAsc:!0},{columnId:"effortDriven",sortAsc:!0}]),this.dataviewObj.setGrouping([{getter:"duration",formatter:t=>`Duration: ${t.value} (${t.count} items)`,aggregators:[new Ei_Sum("duration"),new Ei_Sum("cost")],aggregateCollapsed:!0,lazyTotalsCalculation:!0},{getter:"effortDriven",formatter:t=>`Effort-Driven: ${t.value?"True":"False"} (${t.count} items)`,aggregators:[new Ei_Avg("percentComplete"),new Ei_Sum("cost")],collapsed:!0,lazyTotalsCalculation:!0}]),this.gridObj.invalidate()}groupByDurationEffortDrivenPercent(){this.angularGrid.filterService.setSortColumnIcons([{columnId:"duration",sortAsc:!0},{columnId:"effortDriven",sortAsc:!0},{columnId:"percentComplete",sortAsc:!0}]),this.dataviewObj.setGrouping([{getter:"duration",formatter:t=>`Duration: ${t.value} (${t.count} items)`,aggregators:[new Ei_Sum("duration"),new Ei_Sum("cost")],aggregateCollapsed:!0,lazyTotalsCalculation:!0},{getter:"effortDriven",formatter:t=>`Effort-Driven: ${t.value?"True":"False"} (${t.count} items)`,aggregators:[new Ei_Sum("duration"),new Ei_Sum("cost")],lazyTotalsCalculation:!0},{getter:"percentComplete",formatter:t=>`% Complete: ${t.value} (${t.count} items)`,aggregators:[new Ei_Avg("percentComplete")],aggregateCollapsed:!0,collapsed:!0,lazyTotalsCalculation:!0}]),this.gridObj.invalidate()}};xM=Oe([We({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
'})],xM);var Xme=z(780),Qme=z.n(Xme);const oq="assets/data",SM="users";function gN(i){return i.replace(/^"/,"").replace(/"$/,"").toLowerCase()}let DM=class{cd;http;translate;subscriptions=[];angularGrid;backendService;columnDefinitions;gridOptions;dataset=[];metrics;tagDataClass="";graphqlQuery="...";processing=!1;selectedLanguage;status={text:"processing...",class:"alert alert-danger"};serverWaitDelay=250;constructor(e,t,n){this.cd=e,this.http=t,this.translate=n,this.backendService=new hN;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){this.initializeGrid()}angularGridReady(e){this.angularGrid=e}initializeGrid(){this.columnDefinitions=[{id:"name",field:"name",nameKey:"NAME",width:60,type:M.string,sortable:!0,filterable:!0,filter:{model:ee.compoundInput}},{id:"gender",field:"gender",nameKey:"GENDER",filterable:!0,sortable:!0,width:60,filter:{model:ee.singleSelect,collection:[{value:"",label:""},{value:"male",labelKey:"MALE"},{value:"female",labelKey:"FEMALE"}]}},{id:"company",field:"company",nameKey:"COMPANY",width:60,sortable:!0,filterable:!0,filter:{model:ee.multipleSelect,customStructure:{label:"company",value:"company"},collectionSortBy:{property:"company",sortDesc:!1},collectionAsync:this.http.get(`${oq}/customers_100.json`),filterOptions:{filter:!0}}}],this.gridOptions={enableAutoResize:!0,autoResize:{container:"#demo-container",rightPadding:10},enableAutoTooltip:!0,autoTooltipOptions:{enableForHeaderCells:!0},enableTranslate:!0,i18n:this.translate,enableFiltering:!0,enableCellNavigation:!0,multiColumnSort:!1,gridMenu:{resizeOnShowHeaderRow:!0},backendServiceApi:{disableInternalPostProcess:!0,service:this.backendService,options:{datasetName:SM,addLocaleIntoQuery:!0,extraQueryArguments:[{field:"userId",value:123}],infiniteScroll:{fetchSize:30}},preProcess:()=>this.displaySpinner(!0),process:e=>this.getCustomerApiCall(e),postProcess:e=>{this.metrics={endTime:new Date,totalItemCount:e.data[SM].totalCount||0},this.displaySpinner(!1),this.getCustomerCallback(e),this.cd.detectChanges()}}}}clearAllFiltersAndSorts(){this.angularGrid?.gridService&&this.angularGrid.gridService.clearAllFiltersAndSorts()}displaySpinner(e){this.processing=e,this.status=e?{text:"processing...",class:"alert alert-danger"}:{text:"finished",class:"alert alert-success"}}getCustomerCallback(e){const{nodes:t,totalCount:n}=e.data[SM];this.angularGrid&&(this.metrics.totalItemCount=n,e.infiniteScrollBottomHit?this.angularGrid.dataView?.addItems(t):(this.angularGrid.slickGrid?.scrollTo(0),this.dataset=t,this.metrics.itemCount=t.length))}getCustomerApiCall(e){return this.getCustomerDataApiMock(e)}getCustomerDataApiMock(e){return new Promise(t=>{let n=0,r=0,s="",a="";this.http.get(`${oq}/customers_100.json`).subscribe(d=>{let h=d;if(e.includes("first:")&&(n=+(e.match(/first:([0-9]+),/)||[])[1]),e.includes("offset:")&&(r=+(e.match(/offset:([0-9]+),/)||[])[1]),e.includes("orderBy:")){const[C,k,E]=/orderBy:\[{field:([a-zA-Z/]+),direction:(ASC|DESC)}\]/gi.exec(e)||[];s=k||"",a=E||""}if(e.includes("orderBy:")){const[C,k,E]=/orderBy:\[{field:([a-zA-Z/]+),direction:(ASC|DESC)}\]/gi.exec(e)||[];s=k||"",a=E||""}if(e.includes("filterBy:")){const C=/{field:(\w+),operator:(\w+),value:([0-9a-z',"\s]*)}/gi;let k;for(;null!==(k=C.exec(e));){const E=k[1]||"",x=k[2]||"",S=k[3]||"";let[D,I]=S.split(",");E&&x&&""!==S&&(h=h.filter(L=>{const R=L[E];switch(D=gN(D),I=gN(I||""),x){case"EQ":return R.toLowerCase()===D;case"NE":return R.toLowerCase()!==D;case"LE":return R.toLowerCase()<=D;case"LT":return R.toLowerCase()D;case"GE":return R.toLowerCase()>=D;case"EndsWith":return R.toLowerCase().endsWith(D);case"StartsWith":return R.toLowerCase().startsWith(D);case"Starts+Ends":return R.toLowerCase().startsWith(D)&&R.toLowerCase().endsWith(I);case"Contains":return R.toLowerCase().includes(D);case"Not_Contains":return!R.toLowerCase().includes(D);case"IN":const W=S.toLocaleLowerCase().split(",");for(const re of W)if(R.toLocaleLowerCase()===gN(re))return!0}}))}}let p=r;p>h.length&&(e=e.replace(`offset:${p}`,""),p=0);const g=C=>s?C[s]:C;switch(a.toUpperCase()){case"ASC":h=h.sort((C,k)=>g(C).localeCompare(g(k)));break;case"DESC":h=h.sort((C,k)=>g(k).localeCompare(g(C)))}const v=h.slice(p,p+n),y={data:{[SM]:{nodes:v,totalCount:h.length}}};window.setTimeout(()=>{this.graphqlQuery=this.gridOptions.backendServiceApi.service.buildQuery(),t(y)},this.serverWaitDelay)})})}refreshMetrics(e){e?.current>=0&&(this.metrics.itemCount=this.angularGrid.dataView?.getFilteredItemCount()||0,this.tagDataClass=this.metrics.itemCount===this.metrics.totalItemCount?"fully-loaded":"partial-load")}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e})),this.getCustomerApiCall(this.backendService.buildQuery()||"")}static ctorParameters=()=>[{type:bn},{type:Mi},{type:zt}]};DM=Oe([We({encapsulation:Bt.None,template:'
\n

\n Example 39: GraphQL Backend Service with Infinite Scroll\n \n \n code\n \n \n

\n\n
\n
    \n
  • \n Infinite scrolling allows the grid to lazy-load rows from the server when reaching the scroll bottom (end) position.\n In its simplest form, the more the user scrolls down, the more rows get loaded.\n If we reached the end of the dataset and there is no more data to load, then we\'ll assume to have the entire dataset loaded in memory.\n This contrast with the regular Pagination approach which will only hold a single page data at a time.\n
  • \n
  • NOTES
  • \n
      \n
    1. \n presets.pagination is not supported with Infinite Scroll and will revert to the first page,\n simply because since we keep appending data, we always have to start from index zero (no offset).\n
    2. \n
    3. \n Pagination is not shown BUT in fact, that is what is being used behind the scene whenever reaching the scroll end (fetching next batch).\n
    4. \n
    5. \n Also note that whenever the user changes the Sort(s)/Filter(s) it will always reset and go back to zero index (first page).\n
    6. \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 Locale:\n \n {{selectedLanguage + \'.json\'}}\n \n
\n
\n
\n
\n Metrics:\n \n {{metrics.endTime | date: \'dd MMM, h:mm:ssa\'}} \u2014\n {{metrics.itemCount}}\n of\n {{metrics.totalItemCount}}\n items\n \n All Data Loaded!!!\n
\n
\n\n
\n
\n GraphQL Query:\n
\n
\n
\n
\n\n \n \n
\n',styles:[Qme()]}),Xt("design:paramtypes",[bn,Mi,zt])],DM);let AM=class{angularGrid;columnDefinitions;dataset=[];gridOptions;metrics;shouldResetOnSort=!1;ngOnInit(){this.defineGrid(),this.dataset=this.loadData(0,50),this.metrics={itemCount:50,totalItemCount:50}}angularGridReady(e){this.angularGrid=e}defineGrid(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",sortable:!0,minWidth:100,filterable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,minWidth:100,filterable:!0,type:M.number},{id:"percentComplete",name:"% Complete",field:"percentComplete",sortable:!0,minWidth:100,filterable:!0,type:M.number},{id:"start",name:"Start",field:"start",formatter:G.dateIso,exportWithFormatter:!0,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,exportWithFormatter:!0,filterable:!0,filter:{model:ee.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",sortable:!0,minWidth:100,filterable:!0,formatter:G.checkmarkMaterial}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableAutoResize:!0,enableFiltering:!0,enableGrouping:!0,editable:!1,rowHeight:33}}handleOnScroll(e){const t=e.grid.getViewportNode();if(["mousewheel","scroll"].includes(e.triggeredBy||"")&&t.scrollTop>0&&Math.ceil(t.offsetHeight+e.scrollTop)>=e.scrollHeight){console.log("onScroll end reached, add more items");const n=this.angularGrid.dataView?.getItemCount()||0,r=this.loadData(n,50);this.angularGrid.dataView?.addItems(r)}}handleOnSort(){if(this.shouldResetOnSort){const e=this.loadData(0,50);this.angularGrid.slickGrid?.scrollTo(0),this.angularGrid.dataView?.setItems(e),this.angularGrid.dataView?.reSort()}}groupByDuration(){this.angularGrid?.dataView?.setGrouping({getter:"duration",formatter:e=>`Duration: ${e.value} (${e.count} items)`,comparer:(e,t)=>La.numeric(e.value,t.value,Li.asc),aggregators:[new Ei_Avg("percentComplete"),new Ei_Sum("cost")],aggregateCollapsed:!1,lazyTotalsCalculation:!0}),this.angularGrid?.slickGrid?.setSortColumns([{columnId:"duration",sortAsc:!0}]),this.angularGrid?.slickGrid?.invalidate()}loadData(e,t){const n=[];for(let r=e;r="}])}refreshMetrics(e){this.angularGrid&&e?.current>=0&&(this.metrics.itemCount=this.angularGrid.dataView?.getFilteredItemCount()||0,this.metrics.totalItemCount=e.itemCount||0)}setSortingDynamically(){this.angularGrid?.sortService.updateSorting([{columnId:"title",direction:"DESC"}])}};AM=Oe([We({template:'
\n

\n Example 40: Infinite Scroll from JSON data\n \n \n code\n \n \n

\n\n
\n
    \n
  • \n Infinite scrolling allows the grid to lazy-load rows from the server when reaching the scroll bottom (end) position.\n In its simplest form, the more the user scrolls down, the more rows get loaded.\n
  • \n
  • NOTES: presets.pagination is not supported with Infinite Scroll and will revert to the first page,\n simply because since we keep appending data, we always have to start from index zero (no offset).\n
  • \n
\n
\n\n
\n
\n \n \n \n \n\n \n \n \n
\n
\n\n
\n Metrics:\n \n {{metrics.endTime | date: \'dd MMM, h:mm:ssa\'}} \u2014\n {{metrics.totalItemCount}}\n items\n \n
\n\n \n \n
\n'})],AM);var nge=z(280),rge=z.n(nge);class sge{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(!0===this._odataOptions?.enableCount){const t=this._odataOptions.version&&this._odataOptions.version>=4?"$count=true":"$inlinecount=allpages";e.push(t)}if(this._odataOptions.top&&e.push(`$top=${this._odataOptions.top}`),this._odataOptions.skip&&e.push(`$skip=${this._odataOptions.skip}`),this._odataOptions.orderBy){let t="";t=Array.isArray(this._odataOptions.orderBy)?this._odataOptions.orderBy.join(","):this._odataOptions.orderBy,e.push(`$orderby=${t}`)}if(this._odataOptions.filterBy||this._odataOptions.filter){const t=this._odataOptions.filter||this._odataOptions.filterBy;if(t){this._filterCount=1,this._odataOptions.filterQueue=[];let n=t;Array.isArray(t)&&(this._filterCount=t.length,n=t.join(` ${this._odataOptions.filterBySeparator||"and"} `)),"string"==typeof n&&("("===n[0]&&")"===n.slice(-1)?this.addToFilterQueueWhenNotExists(n):this.addToFilterQueueWhenNotExists(`(${n})`))}}if(this._odataOptions.filterQueue.length>0){const t=this._odataOptions.filterQueue.join(` ${this._odataOptions.filterBySeparator||"and"} `);this._odataOptions.filter=t,e.push(`$filter=${t}`)}if(this._odataOptions.enableSelect||this._odataOptions.enableExpand){const t=this._columnDefinitions.flatMap(r=>r.fields??[r.field]);t.unshift(this._datasetIdPropName);const n=this.buildSelectExpand([...new Set(t)]);if(this._odataOptions.enableSelect){const r=n.selectParts.join(",");e.push(`$select=${r}`)}if(this._odataOptions.enableExpand){const r=n.expandParts.join(",");e.push(`$expand=${r}`)}}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&&e in this._columnFilters&&delete this._columnFilters[e]}saveColumnFilter(e,t,n){this._columnFilters[e]={search:n,value:t}}updateOptions(e){for(const t of Object.keys(e))if(t in e&&(this._odataOptions[t]=e[t]),"orderBy"===t||"sortBy"===t){let n=e[t];this._odataOptions.caseType===v1.pascalCase&&(Array.isArray(n)?n.forEach((r,s,a)=>{a[s]=Qs(r)}):n=Qs(e[t])),this._odataOptions.orderBy=n,this._defaultSortBy=n}}addToFilterQueueWhenNotExists(e){-1===this._odataOptions.filterQueue?.indexOf(e)&&this._odataOptions.filterQueue.push(e)}buildSelectExpand(e){const t={},n=new Set;for(const r of e){const s=r.split("/");if(1===s.length)n.add(r);else{const a=s[0],d=s.splice(1).join("/");t[a]||(t[a]=[]),t[a].push(d),this._odataOptions.enableExpand&&!(this._odataOptions.version&&this._odataOptions.version>=4)&&n.add(a)}}return{selectParts:[...n],expandParts:this._odataOptions.enableExpand?this.buildExpand(t):[]}}buildExpand(e){const t=[];for(const n of Object.keys(e))if(this._odataOptions.enableSelect&&this._odataOptions.version&&this._odataOptions.version>=4){const r=this.buildSelectExpand(e[n]);let s=r.selectParts.join(",");s.length>0&&(s="$select="+s),this._odataOptions.enableExpand&&r.expandParts.length>0&&(s+=(s.length>0?";":"")+"$expand="+r.expandParts.join(",")),s.length>0&&(s="("+s+")"),t.push(n+s)}else t.push(n);return t}}class aq{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:v1.pascalCase},this._odataService=new sge}init(e,t,n,r){this._grid=n;const s={...this.defaultOptions,...e};if(this._gridOptions.enablePagination||s?.infiniteScroll){const a=s.infiniteScroll?.fetchSize??t?.pageSize??this.defaultOptions.top;this._odataService.options={...s,top:a},this._currentPagination={pageNumber:1,pageSize:this._odataService.options.top||this.defaultOptions.top||20}}else this._odataService.options={...s,top:void 0},this._currentPagination=null;if(this.options=this._odataService.options,this.pagination=t,n?.getColumns){const a=r?.allColumns??n.getColumns()??[];this._columnDefinitions=a.filter(d=>!d.excludeFromQuery)}this._odataService.columnDefinitions=this._columnDefinitions,this._odataService.datasetIdPropName=this._gridOptions.datasetIdPropertyName||"id"}buildQuery(){return this._odataService.buildQuery()}postProcess(e){const t=this._odataService.options.version??2;if(this.pagination&&this._odataService.options.enableCount){const r=(this._odataService.options.countExtractor??t>=4?s=>s?.["@odata.count"]:3===t?s=>s?.__count:s=>s?.d?.__count)(e);"number"==typeof r&&(this.pagination.totalItems=r)}if(this._odataService.options.enableExpand){const r=(this._odataService.options.datasetExtractor??t>=4?s=>s?.value:3===t?s=>s?.results:s=>s?.d?.results)(e);if(Array.isArray(r)){const s=new Set(this._columnDefinitions.flatMap(a=>a.fields??[a.field]).filter(a=>a.includes("/")));if(s.size>0){const a=new Set;for(const d of r){for(const h of s){const p=h.split("/"),g=p[0];a.add(g);let v=d[g];for(let y=1;y":t="gt";break;case">=":t="ge";break;case"<>":case"!=":t="ne";break;default:t="eq"}return t}resetPaginationOptions(){this._odataService.updateOptions({skip:0})}saveColumnFilter(e,t,n){this._odataService.saveColumnFilter(e,t,n)}processOnFilterChanged(e,t){if(void 0===this._gridOptions.backendServiceApi)throw new Error('Something went wrong in the GridOdataService, "backendServiceApi" is not initialized');if(this._currentFilters=this.castFilterToColumnFilters(t.columnFilters),!t||!t.grid)throw new Error('Something went wrong when trying create the GridOdataService, it seems that "args" is not populated correctly');return this.updateFilters(t.columnFilters),this.resetPaginationOptions(),this._odataService.buildQuery()}processOnPaginationChanged(e,t){const n=+(this.options?.infiniteScroll?.fetchSize||t.pageSize||(this.pagination?this.pagination.pageSize:20));return this.updatePagination(t.newPage,n),this._odataService.buildQuery()}processOnSortChanged(e,t){const n=t.multiColumnSort?t.sortCols:new Array({columnId:t.sortCol?.id??"",sortCol:t.sortCol,sortAsc:t.sortAsc});return this.updateSorters(n),this.options?.infiniteScroll&&this._odataService.updateOptions({skip:void 0}),this._odataService.buildQuery()}updateFilters(e,t){let n="";const r=[],s=this._odataService.options.version??2;t&&(this._currentFilters=this.castFilterToColumnFilters(e));for(const a in e)if(e.hasOwnProperty(a)){const d=e[a];let h;if(h=t&&Array.isArray(this._columnDefinitions)?this._columnDefinitions.find(R=>R.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 p=h.filter?.queryField||h.queryFieldFilter||h.queryField||h.field||h.name||"";p instanceof HTMLElement&&(p=_n(p.innerHTML));const g=h.type||M.string;let v=(d?.searchTerms?[...d.searchTerms]:null)||[],y=Array.isArray(v)&&1===v.length?v[0]:"";if(typeof y>"u"&&(y=""),!p)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){r.push(`${p} ${d.operator} ${JSON.stringify(d.searchTerms)}`.trim());continue}y=null==y?"":`${y}`;const k=!1!==(h.autoParseInputFilterOperator??this._gridOptions.autoParseInputFilterOperator)?y.match(/^((.*[^\\*\r\n])[*]{1}(.*[^*\r\n]))|^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/)||[]:[y,"","","","",y,""],E=k?.[2]||"",x=k?.[3]||"";let S=d.operator||k?.[4],D=k?.[1]||k?.[5]||"";const I=k?.[6]||"*z"===S||S===te.endsWith?"*":"",L=d.bypassBackendQuery||!1;if(p&&""===D&&v.length<=1){this.removeColumnFilter(Un(p));continue}if(E&&x?(v=[E,x],S=te.startsWithEndsWith):Array.isArray(v)&&1===v.length&&"string"==typeof v[0]&&v[0].indexOf("..")>=0&&(S!==te.rangeInclusive&&S!==te.rangeExclusive&&(S=this._gridOptions.defaultFilterRangeOperator??te.rangeInclusive),v=v[0].split("..",2),""===v[0]?(S=S===te.rangeInclusive?"<=":S===te.rangeExclusive?"<":S,v=v.slice(1),D=v[0]):""===v[1]&&(S=S===te.rangeInclusive?">=":S===te.rangeExclusive?">":S,v=v.slice(0,1),D=v[0])),!S&&h.filter&&(S=h.filter.operator),!S&&Array.isArray(v)&&2===v.length&&v[0]&&v[1]&&(S=this._gridOptions.defaultFilterRangeOperator),(S===te.rangeInclusive||S===te.rangeExclusive)&&Array.isArray(v)&&1===v.length&&g===M.date&&(S=te.equal),S||(S=L_(g)),L)p&&this.saveColumnFilter(Un(p),y,v);else{let R;if(D=this.normalizeSearchValue(g,D,s),Array.isArray(v)&&v.forEach((W,re)=>{v[re]=this.normalizeSearchValue(g,v[re],s)}),n="",this._odataService.options.caseType===v1.pascalCase&&(p=Qs(Un(p||""))),"function"==typeof this._odataService.options.filterQueryOverride&&(R=this._odataService.options.filterQueryOverride({fieldName:Un(p),columnDef:h,operator:S,columnFilterOperator:d.operator,searchValues:v,grid:this._grid})),void 0!==R)n=R;else if(S===te.startsWithEndsWith&&Array.isArray(v)&&2===v.length){const W=[],[re,ie]=v;W.push(`startswith(${p}, ${re})`),W.push(`endswith(${p}, ${ie})`),n=W.join(" and ")}else if(v?.length>1&&("IN"===S||"NIN"===S||"NOTIN"===S||"NOT IN"===S||"NOT_IN"===S)){const W=[];if("IN"===S){for(let re=0,ie=v.length;re=4?`contains(${p}, ${D})`:`substringof(${D}, ${p})`,S===te.notContains&&(n=`not ${n}`));""!==n&&(r.push(n.trim()),this.saveColumnFilter(Un(p||""),y,D))}}this._odataService.updateOptions({filter:r.length>0?r.join(" and "):"",skip:void 0})}updatePagination(e,t){this._currentPagination={pageNumber:e,pageSize:t},this._gridOptions&&(this._gridOptions.enablePagination||!this._gridOptions.hasOwnProperty("enablePagination")||this.options?.infiniteScroll)&&this._odataService.updateOptions({top:t,skip:(e-1)*t})}updateSorters(e,t){let n=[];const r=[];if(!e&&t){n=t,n.forEach(d=>d.direction=d.direction.toLowerCase());const a=n.map(d=>{const h=this._columnDefinitions.find(p=>p.id===d.columnId);return r.push({field:h?(h.queryFieldSorter||h.queryField||h.field)+"":d.columnId+"",direction:d.direction}),h?{columnId:d.columnId,sortAsc:d.direction.toUpperCase()===ar.ASC}:null});Array.isArray(a)&&this._grid&&this._grid.setSortColumns(a)}else if(e&&!t&&0!==e?.length&&e)for(const a of e)if(a.sortCol){let d=(a.sortCol.queryFieldSorter||a.sortCol.queryField||a.sortCol.field)+"",h=(a.sortCol.field||a.sortCol.id)+"",p=(a.sortCol.queryFieldSorter||a.sortCol.queryField||a.sortCol.field||"")+"";this._odataService.options.caseType===v1.pascalCase&&(d=Qs(d),h=Qs(h),p=Qs(p)),n.push({columnId:a.sortCol.id,direction:a.sortAsc?ar.asc:ar.desc}),""!==p&&r.push({field:p,direction:a.sortAsc?ar.ASC:ar.DESC})}n=n||[];const s=r.map(a=>{let d="";return a&&a.field&&(d=`${this._odataService.options.caseType===v1.pascalCase?Qs(a.field):a.field} ${a&&a.direction&&a.direction.toLowerCase()||""}`),d}).join(",");return this._odataService.updateOptions({orderBy:s}),this._currentSorters=n,this._odataService.buildQuery()}castFilterToColumnFilters(e){const t="object"==typeof e?Object.keys(e).map(n=>e[n]):e;return Array.isArray(t)?t.map(n=>{const r={columnId:n.columnId||""};return n.operator&&(r.operator=n.operator),n.targetSelector&&(r.targetSelector=n.targetSelector),Array.isArray(n.searchTerms)&&(r.searchTerms=n.searchTerms),r}):[]}filterBySearchTermRange(e,t,n){let r="";return Array.isArray(n)&&2===n.length&&(t===te.rangeInclusive?(r=`(${e} ge ${n[0]}`,""!==n[1]&&(r+=` and ${e} le ${n[1]}`),r+=")"):t===te.rangeExclusive&&(r=`(${e} gt ${n[0]}`,""!==n[1]&&(r+=` and ${e} lt ${n[1]}`),r+=")")),r}normalizeSearchValue(e,t,n){switch(e){case M.date:t=wle(t),t=n>=4?t:`DateTime'${t}'`;break;case M.string:case M.text:case M.readonly:"string"==typeof t&&(t=t.replace(/'/g,"''"),t=`'${t=encodeURIComponent(t)}'`);break;case M.integer:case M.number:case M.float:"string"==typeof t&&((""===(t=(t=(t=(t=(t=t.replace(/\.\./g,".")).replace(/\.+$/g,"")).replace(/^\.+/g,"0.")).replace(/^-+\.+/g,"-0.")).replace(/(?!^-)[^\d.]/g,""))||"-"===t)&&(t="0"))}return t}}let TM=class{cd;http;angularGrid;backendService;columnDefinitions;gridOptions;dataset=[];isPageErrorTest=!1;metrics;tagDataClass="";odataQuery="";processing=!1;errorStatus="";errorStatusClass="hidden";status={text:"processing...",class:"alert alert-danger"};constructor(e,t){this.cd=e,this.http=t,this.backendService=new aq}ngOnInit(){this.initializeGrid()}angularGridReady(e){this.angularGrid=e}initializeGrid(){this.columnDefinitions=[{id:"name",name:"Name",field:"name",sortable:!0,type:M.string,filterable:!0,filter:{model:ee.compoundInput}},{id:"gender",name:"Gender",field:"gender",filterable:!0,sortable:!0,filter:{model:ee.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,formatter:(e,t,n,r,s)=>s.category?.name||""}],this.gridOptions={enableAutoResize:!0,autoResize:{container:"#demo-container",rightPadding:10},checkboxSelector:{hideInFilterHeaderRow:!1,hideInColumnTitleRow:!0},enableCellNavigation:!0,enableFiltering:!0,enableCheckboxSelector:!0,enableRowSelection:!0,enableGrouping:!0,headerMenu:{hideFreezeColumnsCommand:!1},presets:{},backendServiceApi:{service:this.backendService,options:{infiniteScroll:{fetchSize:30},enableCount:!0,version:4},onError:e=>{this.errorStatus=e.message,this.errorStatusClass="visible notification is-light is-danger is-small is-narrow",this.displaySpinner(!1,!0)},preProcess:()=>{this.errorStatus="",this.errorStatusClass="hidden",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,t){this.processing=e,this.status=t?{text:"ERROR!!!",class:"alert alert-danger"}:e?{text:"loading",class:"alert alert-warning"}:{text:"finished",class:"alert alert-success"},this.cd.detectChanges()}getCustomerCallback(e){const t=e["@odata.count"];this.metrics.totalItemCount=t,e.infiniteScrollBottomHit?this.angularGrid.dataView?.addItems(e.value):(this.angularGrid.slickGrid?.scrollTo(0),this.dataset=e.value,this.metrics.itemCount=e.value.length),this.odataQuery=e.query}getCustomerApiCall(e){return this.getCustomerDataApiMock(e)}getCustomerDataApiMock(e){return this.errorStatusClass="hidden",new Promise(t=>{const n=e.toLowerCase().split("&");let r=0,s=0,a="",d=100;const h={};if(this.isPageErrorTest)throw this.isPageErrorTest=!1,new Error("Server timed out trying to retrieve data for the last page");for(const p of n){if(p.includes("$top=")&&(r=+p.substring(5),5e4===r))throw new Error("Server timed out retrieving 50,000 rows");if(p.includes("$skip=")&&(s=+p.substring(6)),p.includes("$orderby=")&&(a=p.substring(9)),p.includes("$filter=")){const g=p.substring(8).replace("%20"," ");if(g.includes("matchespattern")){const v=new RegExp("matchespattern\\(([a-zA-Z]+),\\s'%5E(.*?)'\\)","i"),y=g.match(v)||[],C=y[1].trim();h[C]={type:"matchespattern",term:"^"+y[2].trim()}}if(g.includes("contains")){const v=g.match(/contains\(([a-zA-Z/]+),\s?'(.*?)'/)||[],y=v[1].trim();h[y]={type:"substring",term:v[2].trim()}}if(g.includes("substringof")){const v=g.match(/substringof\('(.*?)',\s([a-zA-Z/]+)/)||[],y=v[2].trim();h[y]={type:"substring",term:v[1].trim()}}for(const v of["eq","ne","le","lt","gt","ge"])if(g.includes(v)){const C=new RegExp(`([a-zA-Z ]*) ${v} '(.*?)'`).exec(g);if(Array.isArray(C)){const k=C[1].trim();h[k]={type:v,term:C[2].trim()}}}if(g.includes("startswith")&&g.includes("endswith")){const v=g.match(/startswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],y=g.match(/endswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],C=v[1].trim();h[C]={type:"starts+ends",term:[v[2].trim(),y[2].trim()]}}else if(g.includes("startswith")){const v=g.match(/startswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],y=v[1].trim();h[y]={type:"starts",term:v[2].trim()}}else if(g.includes("endswith")){const v=g.match(/endswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],y=v[1].trim();h[y]={type:"ends",term:v[2].trim()}}if(g.includes("company"))throw new Error('Server could not filter using the field "Company"')}}if(a.includes("company"))throw new Error('Server could not sort using the field "Company"');this.http.get("assets/data/customers_100.json").subscribe(p=>{let g=p;if(a?.length>0){const k=a.split(",");for(const E of k){const x=E.split(" "),S=x[0];let D=L=>L;for(const L of S.split("/")){const R=D;D=W=>R(W)[L]}switch((x[1]??"asc").toLocaleLowerCase()){case"asc":g=g.sort((L,R)=>D(L).localeCompare(D(R)));break;case"desc":g=g.sort((L,R)=>D(R).localeCompare(D(L)))}}}let v=s,y=g;if(h){for(const k in h)k in h&&(y=y.filter(E=>{const x=h[k].type,S=h[k].term;let D=k;if(-1!==k?.indexOf(" ")){const R=k.split(" ");D=R[R.length-1]}let I,L=E;for(const R of D.split("/"))I=L[R],L=I;if(I){const[R,W]=Array.isArray(S)?S:[S];switch(x){case"eq":return I.toLowerCase()===R;case"ne":return I.toLowerCase()!==R;case"le":return I.toLowerCase()<=R;case"lt":return I.toLowerCase()R;case"ge":return I.toLowerCase()>=R;case"ends":return I.toLowerCase().endsWith(R);case"starts":return I.toLowerCase().startsWith(R);case"starts+ends":return I.toLowerCase().startsWith(R)&&I.toLowerCase().endsWith(W);case"substring":return I.toLowerCase().includes(R);case"matchespattern":return new RegExp(R.replaceAll("%25",".*"),"i").test(I)}}}));d=y.length}v>y.length&&(e=e.replace(`$skip=${v}`,""),v=0);const C=y.slice(v,v+r);window.setTimeout(()=>{const k={query:e};k.value=C,k["@odata.count"]=d,t(k)},100)})})}groupByGender(){this.angularGrid?.dataView?.setGrouping({getter:"gender",formatter:e=>`Gender: ${e.value} (${e.count} items)`,comparer:(e,t)=>La.string(e.value,t.value),aggregators:[new Ei_Sum("gemder")],aggregateCollapsed:!1,lazyTotalsCalculation:!0}),this.angularGrid?.slickGrid.setSortColumns([{columnId:"duration",sortAsc:!0}]),this.angularGrid?.slickGrid.invalidate()}clearAllFiltersAndSorts(){this.angularGrid?.gridService&&this.angularGrid.gridService.clearAllFiltersAndSorts()}setFiltersDynamically(){this.angularGrid?.filterService.updateFilters([{columnId:"gender",searchTerms:["female"]}])}refreshMetrics(e){e?.current>=0&&(this.metrics.itemCount=this.angularGrid.dataView?.getFilteredItemCount()||0,this.tagDataClass=this.metrics.itemCount===this.metrics.totalItemCount?"fully-loaded":"partial-load")}setSortingDynamically(){this.angularGrid?.sortService.updateSorting([{columnId:"name",direction:"DESC"}])}static ctorParameters=()=>[{type:bn},{type:Mi}]};TM=Oe([We({encapsulation:Bt.None,template:'
\n

\n Example 38: OData (v4) Backend Service with Infinite Scroll\n \n \n code\n \n \n

\n\n
\n
    \n
  • \n Infinite scrolling allows the grid to lazy-load rows from the server when reaching the scroll bottom (end) position.\n In its simplest form, the more the user scrolls down, the more rows get loaded.\n If we reached the end of the dataset and there is no more data to load, then we\'ll assume to have the entire dataset loaded in memory.\n This contrast with the regular Pagination approach which will only hold a single page data at a time.\n
  • \n
  • NOTES
  • \n
      \n
    1. \n presets.pagination is not supported with Infinite Scroll and will revert to the first page,\n simply because since we keep appending data, we always have to start from index zero (no offset).\n
    2. \n
    3. \n Pagination is not shown BUT in fact, that is what is being used behind the scene whenever reaching the scroll end (fetching next batch).\n
    4. \n
    5. \n Also note that whenever the user changes the Sort(s)/Filter(s) it will always reset and go back to zero index (first page).\n
    6. \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\n
\n Metrics:\n \n {{metrics.endTime | date: \'dd MMM, h:mm:ssa\'}} \u2014\n {{metrics.itemCount}}\n of\n {{metrics.totalItemCount}}\n items\n \n All Data Loaded!!!\n
\n
\n
\n\n \n \n
\n',styles:[rge()]}),Xt("design:paramtypes",[bn,Mi])],TM);var uge=z(567),hge=z.n(uge);let MM={},IM={},LM=class{title="Example 7: Header Button Plugin";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 ';columnDefinitions1=[];columnDefinitions2=[];gridOptions1;gridOptions2;dataset1=[];dataset2=[];angularGrid1;angularGrid2;constructor(){MM={},IM={}}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,t)=>console.log("onCopyCells",e,t),onPasteCells:(e,t)=>console.log("onPasteCells",e,t),onCopyCancelled:(e,t)=>console.log("onCopyCancelled",e,t)},enableCellNavigation:!0,gridHeight:275,headerButton:{onCommand:(e,t)=>this.handleOnCommand(e,t,1)}},this.gridOptions2={...this.gridOptions1,enableHeaderMenu:!0,enableFiltering:!0,headerButton:{onCommand:(e,t)=>this.handleOnCommand(e,t,2)}}}handleOnCommand(e,t,n){const r=t.column,s=t.button;"toggle-highlight"===t.command&&("mdi mdi-lightbulb-on text-danger"===s.cssClass?(1===n?delete MM[r.id]:delete IM[r.id],s.cssClass="mdi mdi-lightbulb-outline text-warning faded",s.tooltip="Highlight negative numbers."):(1===n?MM[r.id]=!0:IM[r.id]=!0,s.cssClass="mdi mdi-lightbulb-on text-danger",s.tooltip="Remove highlight."),this[`angularGrid${n}`].slickGrid.invalidate())}loadData(e,t){for(let r=0;r<10;r++)this[`columnDefinitions${t}`].push({id:r,name:"Column "+String.fromCharCode(65+r),field:r+"",width:0===r?70:100,filterable:!0,sortable:!0,formatter:(s,a,d,h)=>1===t&&MM[h.id]&&d<0||2===t&&IM[h.id]&&d<0?`
${d}
`:d,header:{buttons:[{cssClass:"mdi mdi-lightbulb-outline text-warning faded",command:"toggle-highlight",tooltip:"Highlight negative numbers.",itemVisibilityOverride:s=>"Column E"!==s.column.name,itemUsabilityOverride:s=>"Column J"!==s.column.name,action:(s,a)=>{console.log(`execute a callback action to "${a.command}" on ${a.column.name}`)}}]}});this[`columnDefinitions${t}`][0].name="Resize me!",this[`columnDefinitions${t}`][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===t&&this.columnDefinitions2[0].header?.buttons?.reverse(),this[`columnDefinitions${t}`][1].name="Hover me!",this[`columnDefinitions${t}`][1].header={buttons:[{cssClass:"mdi mdi-help-circle",showOnHover:!0,tooltip:"This button only appears on hover.",handler:()=>{alert("Help")}}]};const n=[];for(let r=0;r[]};LM=Oe([We({encapsulation:Bt.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:[hge()]}),Xt("design:paramtypes",[])],LM);let fN=class{clickedTimes=0;clickMe(){this.clickedTimes++}};fN=Oe([We({template:'\n
You\'ve clicked me {{clickedTimes}} time(s)
',selector:"custom-footer"})],fN);let OM=class{title="Example 34: Custom header & footer Templates";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 ";columnDefinitions=[];gridOptions;dataset;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 t=[];for(let n=0;n\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'})],OM);var vge=z(154),bge=z.n(vge);let RM=class{translate;title="Example 8: Header Menu Plugin";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 ';subscriptions=[];columnDefinitions;gridOptions;dataset;selectedLanguage;constructor(e){this.translate=e;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(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:t=>!("title"===t.column.id||"completed"===t.column.id),itemVisibilityOverride:t=>"percentComplete"!==t.column.id,action:(t,n)=>{console.log("execute an action on Help",n)}},{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,t)=>{const n=t.item?.command;n.includes("hello-")?alert(t?.item.title):n.includes("sport-")?alert("Just do it, play "+t?.item?.title):n.includes("contact-")?alert("Command: "+t?.item?.command):"help"===t.command&&alert("Please help!!!")}},enableTranslate:!0,i18n:this.translate},this.getData()}getData(){const e=[];for(let t=0;t<1e3;t++)e[t]={id:t,title:"Task "+t,duration:Math.round(25*Math.random())+" days",percentComplete:Math.round(100*Math.random()),start:"01/01/2009",finish:"01/05/2009",completed:t%5==0};this.dataset=e}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}static ctorParameters=()=>[{type:zt}]};RM=Oe([We({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:Bt.None,styles:[bge()]}),Xt("design:paramtypes",[zt])],RM);const lq=(i,e,t,n,r,s)=>s.getOptions().i18n.instant("TASK_X",{x:t});let PM=class{translate;title="Example 12: Localization (i18n)";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 ';subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset;selectedLanguage;duplicateTitleHeaderCount=1;gridObj;excelExportService=new xs;textExportService=new lN;constructor(e){this.translate=e;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"id",nameKey:"TITLE",minWidth:100,formatter:lq,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:M.number,filter:{model:ee.slider,filterOptions:{hideSliderNumber:!0}}},{id:"start",name:"Start",field:"start",nameKey:"START",minWidth:100,formatter:G.dateIso,outputType:M.dateIso,type:M.date,exportWithFormatter:!0,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:G.dateIso,outputType:M.dateIso,type:M.date,minWidth:100,filterable:!0,filter:{model:ee.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:ee.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:ee.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,t)=>{const n="fr"===this.translate.currentLang?"Titre qui est suffisament long pour \xeatre coup\xe9":"My header that is long enough to wrap",a=e.getStyleSheet().createFormat({font:{size:12,fontName:"Calibri",bold:!0,color:"FF0000FF"},alignment:{wrapText:!0}});t.setRowInstructions(0,{height:30}),t.mergeCells("B1","D1");const d=[];d.push({value:""}),d.push({value:n,metadata:{style:a.id}}),t.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 t=[];for(let n=0;n{this.selectedLanguage=e}))}static ctorParameters=()=>[{type:zt}]};PM=Oe([We({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
'}),Xt("design:paramtypes",[zt])],PM);var kge=z(341),_ge=z.n(kge);let NM=class{translate;title="Example 9: Grid Menu Control";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 ';subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset;selectedLanguage;constructor(e){this.translate=e;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"title",nameKey:"TITLE",filterable:!0,type:M.string},{id:"duration",name:"Duration",field:"duration",nameKey:"DURATION",sortable:!0,filterable:!0,type:M.string},{id:"percentComplete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",sortable:!0,filterable:!0,type:M.number,formatter:G.percentCompleteBar,filter:{model:ee.compoundSlider,filterOptions:{hideSliderNumber:!1}}},{id:"start",name:"Start",field:"start",nameKey:"START",filterable:!0,type:M.string},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",filterable:!0,type:M.string},{id:"effort-driven",name:"Completed",field:"effortDriven",nameKey:"COMPLETED",maxWidth:80,formatter:G.checkmarkMaterial,type:M.boolean,minWidth:100,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:ee.singleSelect}}],this.gridOptions={columnPicker:{hideForceFitButton:!0,hideSyncResizeButton:!0,onColumnsChanged:(e,t)=>{console.log("Column selection changed from Column Picker, visible columns: ",t.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,t)=>alert(t.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,t)=>alert(t.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,t)=>{const n=t.item?.command;n.includes("exports-")?alert("Exporting as "+t?.item.title):n.includes("contact-")||"help"===n?alert("Command: "+t.command):console.log("onGridMenuCommand",t.command)},onColumnsChanged:(e,t)=>{console.log("Column selection changed from Grid Menu, visible columns: ",t.visibleColumns)}},enableTranslate:!0,i18n:this.translate},this.getData()}angularGridReady(e){this.angularGrid=e}getData(){const e=[];for(let t=0;t<500;t++)e[t]={id:t,title:"Task "+t,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:t%5==0};this.dataset=e}generatePhoneNumber(){let e="";for(let t=0;t<10;t++)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?.extensionService&&this.angularGrid.extensionService.getExtensionInstanceByName(st.gridMenu).showGridMenu(e,{dropSide:"right"})}isObjectEmpty(e){for(const t in e)if(t in e&&""!==e[t])return!1;return!0}static ctorParameters=()=>[{type:zt}]};NM=Oe([We({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:Bt.None,styles:[_ge()]}),Xt("design:paramtypes",[zt])],NM);let BM=class{cd;http;title="Example 5: Grid connected to Backend Server with OData";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 ';angularGrid;columnDefinitions;gridOptions;dataset=[];metrics;paginationOptions;isCountEnabled=!0;isSelectEnabled=!1;isExpandEnabled=!1;odataVersion=2;odataQuery="";processing=!0;errorStatus="";isPageErrorTest=!1;status={text:"processing...",class:"alert alert-danger"};constructor(e,t){this.cd=e,this.http=t}angularGridReady(e){this.angularGrid=e}ngOnInit(){this.columnDefinitions=[{id:"name",name:"Name",field:"name",sortable:!0,type:M.string,filterable:!0,filter:{model:ee.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:ee.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:te.equal}],sorters:[{columnId:"name",direction:"asc"}],pagination:{pageNumber:2,pageSize:20}},backendServiceApi:{service:new aq,options:{enableCount:this.isCountEnabled,enableSelect:this.isSelectEnabled,enableExpand:this.isExpandEnabled,filterQueryOverride:({fieldName:e,columnDef:t,columnFilterOperator:n,searchValues:r})=>{if(n===te.custom&&"name"===t?.id){let s=r[0].replace(/\*/g,".*");return s=s.slice(0,1)+"%5E"+s.slice(1),s=s.slice(0,-1)+"$'",`matchesPattern(${e}, ${s})`}},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,t){this.processing=e,this.status=t?{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 t=e.totalRecordCount;this.isCountEnabled&&(t=4===this.odataVersion?e["@odata.count"]:e.d.__count),this.metrics&&(this.metrics.totalItemCount=t),this.paginationOptions={...this.gridOptions.pagination,totalItems:t},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(t=>{const n=e.toLowerCase().split("&");let r,s=0,a="",d=100;const h={};if(this.isPageErrorTest)throw this.isPageErrorTest=!1,new Error("Server timed out trying to retrieve data for the last page");for(const p of n){if(p.includes("$top=")&&(r=+p.substring(5),5e4===r))throw new Error("Server timed out retrieving 50,000 rows");if(p.includes("$skip=")&&(s=+p.substring(6)),p.includes("$orderby=")&&(a=p.substring(9)),p.includes("$filter=")){const g=p.substring(8).replace("%20"," ");if(g.includes("matchespattern")){const v=new RegExp("matchespattern\\(([a-zA-Z]+),\\s'%5E(.*?)'\\)","i"),y=g.match(v)||[],C=y[1].trim();h[C]={type:"matchespattern",term:"^"+y[2].trim()}}if(g.includes("contains")){const v=g.match(/contains\(([a-zA-Z/]+),\s?'(.*?)'/),y=v[1].trim();h[y]={type:"substring",term:v[2].trim()}}if(g.includes("substringof")){const v=g.match(/substringof\('(.*?)',\s([a-zA-Z/]+)/),y=v[2].trim();h[y]={type:"substring",term:v[1].trim()}}for(const v of["eq","ne","le","lt","gt","ge"])if(g.includes(v)){const C=new RegExp(`([a-zA-Z ]*) ${v} '(.*?)'`).exec(g);if(Array.isArray(C)){const k=C[1].trim();h[k]={type:v,term:C[2].trim()}}}if(g.includes("startswith")&&g.includes("endswith")){const v=g.match(/startswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],y=g.match(/endswith\(([a-zA-Z ]*),\s?'(.*?)'/)||[],C=v[1].trim();h[C]={type:"starts+ends",term:[v[2].trim(),y[2].trim()]}}else if(g.includes("startswith")){const v=g.match(/startswith\(([a-zA-Z ]*),\s?'(.*?)'/),y=v[1].trim();h[y]={type:"starts",term:v[2].trim()}}else if(g.includes("endswith")){const v=g.match(/endswith\(([a-zA-Z ]*),\s?'(.*?)'/),y=v[1].trim();h[y]={type:"ends",term:v[2].trim()}}if(g.includes("company"))throw new Error('Server could not filter using the field "Company"')}}if(a.includes("company"))throw new Error('Server could not sort using the field "Company"');this.http.get("assets/data/customers_100.json").subscribe(p=>{let g=p;if(a?.length>0){const k=a.split(",");for(const E of k){const x=E.split(" "),S=x[0];let D=L=>L;for(const L of S.split("/")){const R=D;D=W=>R(W)[L]}switch((x[1]??"asc").toLocaleLowerCase()){case"asc":g=g.sort((L,R)=>D(L).localeCompare(D(R)));break;case"desc":g=g.sort((L,R)=>D(R).localeCompare(D(L)))}}}let v=s,y=g;if(h){for(const k in h)k in h&&(y=y.filter(E=>{const x=h[k].type,S=h[k].term;let D=k;if(-1!==k?.indexOf(" ")){const R=k.split(" ");D=R[R.length-1]}let I,L=E;for(const R of D.split("/"))I=L[R],L=I;if(I){const[R,W]=Array.isArray(S)?S:[S];switch(x){case"eq":return I.toLowerCase()===R;case"ne":return I.toLowerCase()!==R;case"le":return I.toLowerCase()<=R;case"lt":return I.toLowerCase()R;case"ge":return I.toLowerCase()>=R;case"ends":return I.toLowerCase().endsWith(R);case"starts":return I.toLowerCase().startsWith(R);case"starts+ends":return I.toLowerCase().startsWith(R)&&I.toLowerCase().endsWith(W);case"substring":return I.toLowerCase().includes(R);case"matchespattern":return new RegExp(R.replaceAll("%25",".*"),"i").test(I)}}}));d=y.length}v>y.length&&(e=e.replace(`$skip=${v}`,""),v=0);const C=y.slice(v,v+r);window.setTimeout(()=>{const k={query:e};this.isCountEnabled||(k.totalRecordCount=d),4===this.odataVersion?(k.value=C,this.isCountEnabled&&(k["@odata.count"]=d)):(k.d={results:C},this.isCountEnabled&&(k.d.__count=d)),t(k)},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 t=this.gridOptions.backendServiceApi.service;t.updateOptions(e),t.clearFilters(),this.angularGrid?.filterService.clearFilters()}static ctorParameters=()=>[{type:bn},{type:Mi}]};BM=Oe([We({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
'}),Xt("design:paramtypes",[bn,Mi])],BM);function bE(i,e){return Math.floor(Math.random()*(e-i+1)+i)}const Age=(i,e,t,n,r,s)=>s.getOptions().i18n.instant("TASK_X",{x:t});let HM=class{translate;title="Example 25: Filtering from Range of Search Values";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 ';subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset;selectedLanguage;metrics;filterList=[{value:"",label:""},{value:"currentYearTasks",label:"Current Year Completed Tasks"},{value:"nextYearTasks",label:"Next Year Active Tasks"}];selectedPredefinedFilter;constructor(e){this.translate=e;this.translate.use("en"),this.selectedLanguage="en"}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){this.columnDefinitions=[{id:"title",name:"Title",field:"id",nameKey:"TITLE",minWidth:100,formatter:Age,sortable:!0,filterable:!0,params:{useFormatterOuputToFilter:!0}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,type:M.string,filter:{model:rN,enableTrimWhiteSpace:!0}},{id:"percentComplete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",minWidth:120,sortable:!0,customTooltip:{position:"center"},formatter:G.progressBar,type:M.number,filterable:!0,filter:{model:ee.sliderRange,maxValue:100,operator:te.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:M.date,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",nameKey:"FINISH",formatter:G.dateIso,sortable:!0,minWidth:75,width:120,exportWithFormatter:!0,type:M.date,filterable:!0,filter:{model:ee.dateRange}},{id:"duration",field:"duration",nameKey:"DURATION",maxWidth:90,type:M.number,sortable:!0,filterable:!0,filter:{model:ee.input,operator:te.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:ee.singleSelect,filterOptions:{autoAdjustDropHeight:!0}}}];const e=new Date,t=vr(H_(new Date,-2),"YYYY-MM-DD"),n=vr(H_(new Date,e.getDate()<14?28: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:[t,n]}],sorters:[{columnId:"percentComplete",direction:"DESC"},{columnId:"duration",direction:"ASC"}]},externalResources:[new HT,new xs]},this.dataset=this.mockData(1500)}angularGridReady(e){this.angularGrid=e}mockData(e,t=0){const n=[];for(let r=t;r=0&&window.setTimeout(()=>{this.metrics={startTime:new Date,itemCount:t&&t.current||0,totalItemCount:this.dataset.length||0}})}setFiltersDynamically(){const e=vr(H_(new Date,-5),"YYYY-MM-DD"),t=vr(H_(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,t]}])}setSortingDynamically(){this.angularGrid.sortService.updateSorting([{columnId:"finish",direction:"DESC"},{columnId:"percentComplete",direction:"ASC"}])}usePredefinedFilter(e){let t=[];const n=(new Date).getFullYear();switch(e){case"currentYearTasks":t=[{columnId:"finish",operator:te.rangeInclusive,searchTerms:[`${n}-01-01`,`${n}-12-31`]},{columnId:"completed",operator:te.equal,searchTerms:[!0]}];break;case"nextYearTasks":t=[{columnId:"start",operator:">=",searchTerms:[`${n+1}-01-01`]}]}this.angularGrid.filterService.updateFilters(t)}switchLanguage(){const e="en"===this.selectedLanguage?"fr":"en";this.subscriptions.push(this.translate.use(e).subscribe(()=>{this.selectedLanguage=e}))}static ctorParameters=()=>[{type:zt}]};HM=Oe([We({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
'}),Xt("design:paramtypes",[zt])],HM);const Mge=(i,e,t,n,r)=>r&&r.brand&&r.brand.name||"",Ige=(i,e,t,n,r)=>{let s="";return r&&r.octopart_url&&r.mpn&&(s=`${r.mpn}`),s};let VM=class{_eventHandler=new Pi;title="Example 18: Octopart Catalog Search - Remote Model Plugin";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 ';angularGrid;columnDefinitions;customDataView;gridObj;gridOptions;dataset=[];loaderDataView;loading=!1;search="";constructor(){}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:Ige,width:100,sortable:!0},{id:"brand",name:"Brand",field:"brand.name",formatter:Mge,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,t)=>{this.loading=!0}),this._eventHandler.subscribe(this.loaderDataView.onDataLoaded,(e,t)=>{if(t&&this.gridObj&&this.gridObj.invalidateRow&&this.gridObj.updateRowCount&&this.gridObj.render){for(let n=t.from;n<=t.to;n++)this.gridObj.invalidateRow(n);this.gridObj.updateRowCount(),this.gridObj.render(),this.loading=!1}}))}onSort(e,t){if(this.gridObj&&this.gridObj.getViewport&&this.loaderDataView&&this.loaderDataView.ensureData&&this.loaderDataView.setSort){const n=this.gridObj.getViewport();t&&t.sortCol&&t.sortCol.field&&this.loaderDataView.setSort(t.sortCol.field,t.sortAsc?1:-1),this.loaderDataView.ensureData(n.top,n.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 t=this.gridObj.getViewport();this.loaderDataView.setSearch(e),this.loaderDataView.ensureData(t.top,t.bottom)}}static ctorParameters=()=>[]};VM=Oe([We({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
'}),Xt("design:paramtypes",[])],VM);var Oge=z(348),Rge=z.n(Oge);const Bge=(i,e,t,n,r,s)=>(t=t??"",s.getOptions().editable&&n.editor?{text:t,addClasses:"editable-field",toolTip:"Click to Edit"}:t),Hge=i=>null!=i&&i.length?/^(task\s\d+)*$/i.test(i)?{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 zM=class{http;title="Example 31: Columns Resize by Content";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.';angularGrid;gridOptions;columnDefinitions=[];dataset=[];editQueue=[];editedItems={};isUsingDefaultResize=!1;isGridEditable=!0;isMassSelectionDisabled=!0;complexityLevelList=[{value:0,label:"Very Simple"},{value:1,label:"Simple"},{value:2,label:"Straightforward"},{value:3,label:"Complex"},{value:4,label:"Very Complex"}];constructor(e){this.http=e}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:M.string,minWidth:65,resizeExtraWidthPadding:4,resizeCharWidthInPx:7.6,resizeCalcWidthRatio:1,resizeMaxWidthThreshold:200,columnGroup:"Common Factor",cssClass:"text-uppercase fw-bold",filterable:!0,filter:{model:ee.inputText,filterPredicate:(e,t)=>{const n=t.parsedSearchTerms||[];if(n?.length){const r=t.columnId,s=n[0],a=e[r].toLowerCase(),d=s.matchAll(/^%([^%\r\n]+)[^%\r\n]*$|(.*)%(.+)%(.*)|(.+)%(.+)|([^%\r\n]+)%$/gi),h=Array.from(d),p=h.length?h[0]:[],[g,v,y,C,k,E,x,S]=p;return v?a.endsWith(v.toLowerCase()):y&&C?a.startsWith(y.toLowerCase())&&a.includes(C.toLowerCase()):C&&k?a.includes(C)&&a.endsWith(k.toLowerCase()):C&&!k?a.includes(C.toLowerCase()):E&&x?a.startsWith(E.toLowerCase())&&a.endsWith(x.toLowerCase()):S?a.startsWith(S.toLowerCase()):a.includes(s.toLowerCase())}return!0}},editor:{model:Ne.longText,required:!0,alwaysSaveOnEnterKey:!0,maxLength:12,editorOptions:{cols:45,rows:6,buttonTexts:{cancel:"Close",save:"Done"}},validator:Hge}},{id:"duration",name:"Duration",field:"duration",sortable:!0,filterable:!0,minWidth:65,type:M.number,columnGroup:"Common Factor",formatter:(e,t,n)=>null==n||""===n?"":n>1?`${n} days`:`${n} day`,editor:{model:Ne.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:M.number,columnGroup:"Analysis",filter:{model:ee.compoundInputNumber},formatter:G.dollar},{id:"percentComplete",name:"% Complete",field:"percentComplete",minWidth:100,type:M.number,sortable:!0,filterable:!0,columnGroup:"Analysis",filter:{model:ee.compoundSlider,operator:">="},editor:{model:Ne.slider,minValue:0,maxValue:100}},{id:"complexity",name:"Complexity",field:"complexity",resizeCalcWidthRatio:.82,sortable:!0,filterable:!0,columnGroup:"Analysis",formatter:(e,t,n)=>this.complexityLevelList[n]?.label,exportCustomFormatter:(e,t,n)=>this.complexityLevelList[n]?.label,filter:{model:ee.multipleSelect,collection:this.complexityLevelList},editor:{model:Ne.singleSelect,collection:this.complexityLevelList}},{id:"start",name:"Start",field:"start",sortable:!0,formatter:G.dateUs,columnGroup:"Period",exportCustomFormatter:G.dateUs,type:M.date,outputType:M.dateUs,saveOutputType:M.dateUtc,filterable:!0,filter:{model:ee.compoundDate},editor:{model:Ne.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:ee.singleSelect},editor:{model:Ne.checkbox}},{id:"finish",name:"Finish",field:"finish",sortable:!0,formatter:G.dateUs,columnGroup:"Period",type:M.date,outputType:M.dateUs,saveOutputType:M.dateUtc,filterable:!0,filter:{model:ee.compoundDate},exportCustomFormatter:G.dateUs,editor:{model:Ne.date,editorOptions:{range:{min:"today"}},validator:(e,t)=>{const n=t&&t.item;return n&&n.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:M.object,sortComparer:La.objectString,editor:{model:Ne.autocompleter,alwaysSaveOnEnterKey:!0,editorOptions:{minLength:1,fetch:(e,t)=>{t(this.mockProducts().filter(r=>r.itemName.toLowerCase().includes(e.toLowerCase())))},renderItem:{layout:"fourCorners",templateCallback:e=>this.renderItemCallbackWith4Corners(e)}}},filter:{model:ee.inputText,type:M.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:M.object,sortComparer:La.objectString,filterable:!0,sortable:!0,minWidth:100,editor:{model:Ne.autocompleter,customStructure:{label:"name",value:"code"},collectionAsync:this.http.get("assets/data/countries.json")},filter:{model:ee.inputText,type:M.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,t)=>{const n=t.dataContext;confirm(`Do you really want to delete row (${(t?.row??0)+1}) with "${n.title}"`)&&this.angularGrid.gridService.deleteItemById(n.id)}}]}}],this.gridOptions={editable:!0,autoAddCustomEditorFormatter:Bge,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 xs],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,t,n)=>{const r=Array.isArray(n.prevSerializedValue)?n.prevSerializedValue:[n.prevSerializedValue],s=Array.isArray(n.serializedValue)?n.serializedValue:[n.serializedValue],a=this.columnDefinitions.filter(h=>void 0!==h.editor),d=[];r.forEach((h,p)=>{if(r[p]!==s[p]){const y=Array.isArray(n.prevSerializedValue)?a[p]:t;this.editedItems[this.gridOptions.datasetIdPropertyName||"id"]=e,this.angularGrid.slickGrid.invalidate(),n.execute(),this.renderUnsavedCellStyling(e,y,n),d.push(y)}}),this.editQueue.push({item:e,columns:d,editCommand:n})},enableCellMenu:!0}}loadData(e){const t=[];for(let n=0;n100?n>5?100:88:v,C=100===y;t[n]={id:n,title:"Task "+n,duration:Math.floor(100*Math.random())+10,percentComplete:y,analysis:{percentComplete:y},complexity:n%3?0:2,start:new Date(s,d,h,h,p,p,p),finish:C||n%3==0&&g>new Date&&n>3?C?new Date:g:"",cost:n%33==0?null:Math.round(1e4*Math.random())/100,completed:C||n%3==0&&g>new Date&&n>3,product:{id:this.mockProducts()[r]?.id,itemName:this.mockProducts()[r]?.itemName},origin:n%2?{code:"CA",name:"Canada"}:{code:"US",name:"United States"}},n%8||(delete t[n].finish,delete t[n].percentComplete)}return t}handleValidationError(e,t){return t.validationResults&&alert(t.validationResults.msg),!1}handleItemDeleted(e,t){console.log("item deleted with id:",t.itemId)}handleOnBeforeEditCell(e,t){const{column:n,item:r,grid:s}=t;return n&&r&&!function Nge(i,e,t){const n=t.getOptions(),r=e.editor;let a=!(!n.editable||!r);i&&e&&n&&n.editable&&"finish"===e.id&&(a=!!i?.completed);return a}(r,n,s)&&e.preventDefault(),!1}handleOnCellChange(e,t){const n=t?.item;n&&!n.completed&&(n.finish=null,this.angularGrid.gridService.updateItem(n))}handlePaginationChanged(){this.removeAllUnsavedStylingFromCell(),this.renderUnsavedStylingOnAllVisibleCells()}handleDefaultResizeColumns(){const e=this.angularGrid.slickGrid.getColumns();e.forEach(t=>t.width=t.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,t,n){this.angularGrid.slickGrid.removeCellCssStyles(`unsaved_highlight_${[t.id]}${n}`)}removeAllUnsavedStylingFromCell(){for(const e of this.editQueue){const t=e?.editCommand;if(t)for(const n of e.columns)this.removeUnsavedStylingFromCell(e.item,n,t.row)}}renderUnsavedStylingOnAllVisibleCells(){for(const e of this.editQueue)if(e){const{item:t,columns:n,editCommand:r}=e;Array.isArray(n)&&n.forEach(s=>{this.renderUnsavedCellStyling(t,s,r)})}}renderUnsavedCellStyling(e,t,n){if(n&&e&&t){const r=this.angularGrid.dataView.getRowByItem(e);if(r>=0){const s={[r]:{[t.id]:"unsaved-editable-field"}};this.angularGrid.slickGrid.setCellCssStyles(`unsaved_highlight_${[t.id]}${r}`,s)}}}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 t=this.editQueue.pop(),n=t?.editCommand;if(t&&n&&Fc.cancelCurrentEdit()){n.undo();for(const r of t.columns)this.removeUnsavedStylingFromCell(t.item,r,n.row);this.angularGrid.slickGrid.invalidate(),e&&this.angularGrid?.slickGrid.gotoCell(n.row,n.cell,!1)}}undoAllEdits(){for(const e of this.editQueue){const t=e?.editCommand;if(t&&Fc.cancelCurrentEdit()){t.undo();for(const n of e.columns)this.removeUnsavedStylingFromCell(e.item,n,t.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 t=["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"],n=Math.floor(Math.random()*t.length-1);return t[e??n]}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 ${wn(e.listPrice,2,2,!1,"$")}\n
\n
\n
\n
${e.itemNameTranslated}
\n Type: ${"I"===e.itemTypeName?"Item":"C"===e.itemTypeName?"PdCat":"Cat"}\n
`}static ctorParameters=()=>[{type:Mi}]};zM=Oe([We({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:Bt.None,styles:[Rge()]}),Xt("design:paramtypes",[Mi])],zM);var zge=z(785),Gge=z.n(zge),$ge=z(297),Wge=z.n($ge);let GM=class{model;addon;grid;dataView;parent;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}`)}};GM=Oe([We({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',styles:[Gge(),Wge()]})],GM);let $M=class{};$M=Oe([We({template:'

\n \n Loading...\n

'})],$M);let WM=class{_darkMode=!1;title="Example 21: Row Detail View";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 ';angularGrid;columnDefinitions=[];gridOptions;dataset=[];detailViewRowCount=9;flashAlertType="info";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:M.string,width:70,filterable:!0,editor:{model:Ne.text}},{id:"duration",name:"Duration (days)",field:"duration",formatter:G.decimal,params:{minDecimal:1,maxDecimal:2},sortable:!0,type:M.number,minWidth:90,filterable:!0},{id:"percent2",name:"% Complete",field:"percentComplete2",editor:{model:Ne.slider},formatter:G.progressBar,type:M.number,sortable:!0,minWidth:100,filterable:!0,filter:{model:ee.slider,operator:">"}},{id:"start",name:"Start",field:"start",formatter:G.dateIso,sortable:!0,type:M.date,minWidth:90,exportWithFormatter:!0,filterable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,sortable:!0,type:M.date,minWidth:90,exportWithFormatter:!0,filterable:!0,filter:{model:ee.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",minWidth:100,formatter:G.checkmarkMaterial,type:M.boolean,filterable:!0,sortable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ee.singleSelect}}],this.gridOptions={autoResize:{container:"#demo-container",rightPadding:10},enableFiltering:!0,enableRowDetailView:!0,darkMode:this._darkMode,datasetIdPropertyName:"rowId",rowDetailView:{process:e=>this.simulateServerAsyncCall(e),loadOnce:!0,singleRowExpand:!1,useRowClick:!0,panelRows:this.detailViewRowCount,preloadComponent:$M,viewComponent:GM,parent:this,onBeforeRowDetailToggle:(e,t)=>(console.log("before toggling row detail",t.item),!0)},rowSelectionOptions:{selectActiveRow:!0}},this.getData()}getData(){const e=[];for(let t=0;t<1e3;t++){const n=2e3+Math.floor(10*Math.random()),r=Math.floor(11*Math.random()),s=Math.floor(29*Math.random()),a=Math.round(100*Math.random());e[t]={rowId:t,title:"Task "+t,duration:t%33==0?null:100*Math.random()+"",percentComplete:a,percentComplete2:a,percentCompleteNumber:a,start:new Date(n,r,s),finish:new Date(n,r+1,s),effortDriven:t%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?.extensionService&&this.rowDetailInstance.collapseAll()}showFlashMessage(e,t="info"){this.message=e,this.flashAlertType=t}simulateServerAsyncCall(e){const t=["John Doe","Jane Doe","Chuck Norris","Bumblebee","Jackie Chan","Elvis Presley","Bob Marley","Mohammed Ali","Bruce Lee","Rocky Balboa"];return new Promise(n=>{window.setTimeout(()=>{const r=e;r.assignee=t[this.randomNumber(0,10)],r.reporter=t[this.randomNumber(0,10)],n(r)},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,t){return Math.floor(Math.random()*(t-e+1)+e)}};WM=Oe([We({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 {{message}}\n
\n
\n\n
\n\n \n \n
'})],WM);let UM=class{title="Example 17: Row Move & Checkbox Selector";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 ';angularGrid;columnDefinitions;gridOptions;dataset;angularGridReady(e){this.angularGrid=e}get rowMoveInstance(){return this.angularGrid?.extensionService?.getExtensionInstanceByName(st.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:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",filterable:!0,sortable:!0,filter:{model:ee.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:ee.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 t=0;t<500;t++)e[t]={id:t,title:"Task "+t,duration:Math.round(25*Math.random())+" days",percentComplete:Math.round(100*Math.random()),start:"01/01/2009",finish:"01/05/2009",effortDriven:t%5==0};this.dataset=e}onBeforeMoveRow(e,t){for(const n of t.rows)if(n===t.insertBefore||n===t.insertBefore-1&&t.insertBefore-1!==this.angularGrid.dataView.getItemCount())return e.stopPropagation(),!1;return!0}onMoveRows(e,t){const n=t.rows,r=t.insertBefore,s=[];this.angularGrid.dataView.sort(void 0,!0);const a=this.angularGrid.dataView.getItems(),d=this.angularGrid.dataView.getFilteredItems(),h=this.angularGrid.dataView.getItem(r),p=h?this.angularGrid.dataView.getIdxById(h.id):this.angularGrid.dataView.getItemCount(),g=[];n.forEach(E=>g.push(d[E]));const v=g.map(E=>this.angularGrid.dataView.getIdxById(E.id)),y=a.slice(0,p),C=a.slice(p,a.length);n.sort((E,x)=>E-x);for(const E of v)void 0!==E&&s.push(a[E]);v.reverse();for(const E of v)void 0!==E&&void 0!==p&&(E{alert(`Technically we should Edit "Task ${n.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:(t,n)=>{confirm("Are you sure?")&&this.angularGrid.gridService.deleteItemById(n.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()}};UM=Oe([We({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
'})],UM);var Yge=z(293),Zge=z.n(Yge),Jge=z(898),Xge=z.n(Jge);let jM=class{cd;title="Example 10: Multiple Grids with Row Selection";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 ';angularGrid1;angularGrid2;columnDefinitions1;columnDefinitions2;gridOptions1;gridOptions2;dataset1;dataset2;gridObj1;gridObj2;isGrid2WithPagination=!0;selectedTitles="";selectedTitle="";selectedGrid2IDs;constructor(e){this.cd=e}ngOnInit(){this.prepareGrid()}angularGridReady1(e){this.angularGrid1=e,this.gridObj1=e?.slickGrid||{}}angularGridReady2(e){this.angularGrid2=e,this.gridObj2=e?.slickGrid||{}}prepareGrid(){this.columnDefinitions1=[{id:"title",name:"Title",field:"title",sortable:!0,type:M.string,filterable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:M.number,filterable:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,type:M.number,filterable:!0,sortable:!0},{id:"start",name:"Start",field:"start",formatter:G.dateIso,exportWithFormatter:!0,type:M.date,filterable:!0,sortable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,exportWithFormatter:!0,type:M.date,filterable:!0,sortable:!0,filter:{model:ee.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:G.checkmarkMaterial,type:M.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:ee.singleSelect}}],this.columnDefinitions2=[{id:"title",name:"Title",field:"title",sortable:!0,type:M.string,filterable:!0},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:M.number,filterable:!0},{id:"complete",name:"% Complete",field:"percentComplete",formatter:G.percentCompleteBar,type:M.number,filterable:!0,sortable:!0},{id:"start",name:"Start",field:"start",formatter:G.dateIso,exportWithFormatter:!0,type:M.date,filterable:!0,sortable:!0,filter:{model:ee.compoundDate}},{id:"finish",name:"Finish",field:"finish",formatter:G.dateIso,exportWithFormatter:!0,type:M.date,filterable:!0,sortable:!0,filter:{model:ee.compoundDate}},{id:"effort-driven",name:"Effort Driven",field:"effortDriven",formatter:G.checkmarkMaterial,type:M.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"true"},{value:!1,label:"false"}],model:ee.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 t=[];for(let n=0;nt-n),this.selectedTitles=this.selectedGrid2IDs.map(t=>`Task ${t}`).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,t){Array.isArray(t.rows)&&this.gridObj1&&(this.selectedTitle=t.rows.map(n=>this.gridObj1.getDataItem(n).title||""))}static ctorParameters=()=>[{type:bn}]};jM=Oe([We({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:[Zge(),Xge()]}),Xt("design:paramtypes",[bn])],jM);function A1(i,e){return Math.floor(Math.random()*(e-i+1)+i)}const qM="gridState";let KM=class{translate;title="Example 16: Grid State & Presets using Local Storage";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 ';subscriptions=[];angularGrid;columnDefinitions;gridOptions;dataset;selectedLanguage;constructor(e){this.translate=e,this.selectedLanguage=this.translate.getDefaultLang()}angularGridReady(e){this.angularGrid=e}ngOnDestroy(){Td(this.subscriptions)}ngOnInit(){const e=JSON.parse(localStorage[qM]||null);this.defineGrid(e);this.translate.use("en"),this.selectedLanguage="en"}clearGridStateFromLocalStorage(){this.angularGrid.gridService.resetGrid(this.columnDefinitions),this.angularGrid.paginationService.changeItemPerPage(25),window.setTimeout(()=>localStorage[qM]=null)}defineGrid(e){const t=[];for(let n=0;n<500;n++)t.push({value:n,label:n});this.columnDefinitions=[{id:"title",name:"Title",field:"title",nameKey:"TITLE",filterable:!0,sortable:!0,type:M.string,minWidth:45,width:100,filter:{model:ee.compoundInput}},{id:"description",name:"Description",field:"description",filterable:!0,sortable:!0,minWidth:80,width:100,type:M.string,filter:{model:ee.input,filterShortcuts:[{titleKey:"BLANK_VALUES",searchTerms:["< A"],iconCssClass:"mdi mdi-filter-minus-outline"},{titleKey:"NON_BLANK_VALUES",searchTerms:["> A"],iconCssClass:"mdi mdi-filter-plus-outline"}]}},{id:"duration",name:"Duration (days)",field:"duration",sortable:!0,type:M.number,exportCsvForceToKeepAsString:!0,minWidth:55,width:100,nameKey:"DURATION",filterable:!0,filter:{collection:t,model:ee.multipleSelect,filterOptions:{maxHeight:250,width:175}}},{id:"complete",name:"% Complete",field:"percentComplete",nameKey:"PERCENT_COMPLETE",minWidth:70,type:M.number,sortable:!0,width:100,formatter:G.percentCompleteBar,filterable:!0,filter:{model:ee.slider,operator:">"}},{id:"start",name:"Start",field:"start",nameKey:"START",formatter:G.dateIso,sortable:!0,minWidth:75,exportWithFormatter:!0,width:100,type:M.date,filterable:!0,filter:{model:ee.compoundDate,filterShortcuts:[{titleKey:"PAST",searchTerms:[vr(new Date,"YYYY-MM-DD")],operator:"<",iconCssClass:"mdi mdi-calendar"},{titleKey:"FUTURE",searchTerms:[vr(new Date,"YYYY-MM-DD")],operator:">",iconCssClass:"mdi mdi-calendar-clock"}]}},{id:"completed",field:"completed",nameKey:"COMPLETED",minWidth:85,maxWidth:85,formatter:G.checkmarkMaterial,width:100,type:M.boolean,sortable:!0,filterable:!0,filter:{collection:[{value:"",label:""},{value:!0,label:"True"},{value:!1,label:"False"}],model:ee.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 t=(new Date).getFullYear(),n=[];for(let r=0;r